TCP连接的建立与拆除

来源:互联网 发布:windows安装git服务器 编辑:程序博客网 时间:2024/04/28 04:26

TCP连接的建立

解决重复连接的办法是建立连接时采用三次握手(three-way handshaking)。该方法要求对所有的报文进行编号(32位),建立连接前,服务器端首先被动打开其熟悉的端口,对端口进行侦听,当客户端要和服务器建立连接时,发起一个主动打开端口的请求(一般为临时端口),然后进入三次握手的过程:

第一次握手:客户向服务器发出连接请求,该段首部的同步标志SYN被置为1,并在首部中填入本次连接的客户端的初始端序号SEQ,(如SEQ=26500)

第二次握手:服务器受到请求后,发回连接确认(SYN+ACK),该段首部中的同步标识SYN被置为1,表示认可连接,ACK被置1,表示对所接收的段的确认,与ACK相配合的是准备接收的下一序号(ACK 26501),该段还给出了自己的初始序号(例如,SEQ=29010)。对请求段的确认完成了一个方向上的连接。

第三次握手:客户向服务器发出的确认段,段首部中的确认标识ACK被置1,表示对所接收到的段的确认,与ACK相配合的准备接收的下一个序号被设置为收到的段序号加1(ACK 29011),对服务器初始化序号的确认,完成了另一个方向上的连接。

完成三次握手,客户端与服务器开始传送数据。

TCP连接的拆除

当前连接的双方都可以发起拆除连接操作,但简单的拆除连接可能会造成数据丢失。为此,TCP采用四次握手的方式拆除连接。

四次握手与三次握手类似:

①1发拆除请求

②2收到请求,并发确认,1收到该确认后,不再发送数据,但任然会接收数据(半连接)

③2发拆除请求

④1收到请求,并确认,到此拆除完成