您的位置:首页 > 理论基础 > 计算机网络

TCP建立连接与拆除连接过程详解

2009-10-21 23:48 483 查看
TCP的六个控制位分别是:

URG:报文段紧急。

ACK:确认号有效。

PSH:建议计算机立即将数据交给应用程序。
RST:连接复位。作用:快速关闭连接,无确认。
SYN:进程同步。在握手完成后SYN为1,表示TCP建立已连接。此后的所有报文段中,SYN都被置0。
FIN:源主机不再有待发送的数据。如果源主机数据发送完毕,将把该连接下要发送的最后一个报文段的报头中的FIN位置1,或将该报文段后面发送的报头中该位置1。
TCP连接的建立

TCP的连接是一个全双工的连接,要在两个方向上建立连接。该方法要求对所有的报文进行编号(32位),建立连接前,服务器端首先被动打开其熟悉的端口,对端口进行侦听,当客户端要和服务器建立连接时,发起一个主动打开端口的请求(一般为临时端口),然后进入三次握手的过程:

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

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

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

第二次握手时,客户端收到服务器的ACK,client-server的连接已经建立。第三次握手时,服务器收到客户端的ACK,server-client的连接建立起来。三次握手发送的都是TCP报文的首部,没有数据段。第三次握手的时候,如果有数据发送可以加上数据段。三次握手过程中,不光建立连接,还进行了窗口比例的协商,MSS大小的协商等信息交换。



TCP连接的拆除

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

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

①1发拆除请求

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

③2发拆除请求

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



连接拆除过程中,为何不把第二次握手和第三次握手和在一起,就像建立连接的工程那样?这是因为当client端拆除连接时,它还可以接收数据,而server端可能还有数据向client发送。这是连接建立与拆除过程中的一个区别。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: