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

TCP连接关闭过程笔记

2013-10-10 15:09 344 查看
前言:

TCP协议的连接是全双工连接,一个TCP连接存在双向的读写通道。 

简单说来是 “先关读,后关写”,一共需要四个阶段。以客户机发起关闭连接为例:

1.服务器读通道关闭

2.客户机写通道关闭

3.客户机读通道关闭

4.服务器写通道关闭

关闭行为是在发起方数据发送完毕之后,给对方发出一个FIN(finish)数据段。直到接收到对方发送的FIN,且对方收到了接收确认ACK之后,双方的数据通信完全结束,过程中每次接收都需要返回确认数据段ACK。

详细过程:

    第一阶段   客户机发送完数据之后,向服务器发送一个FIN数据段,序列号为i

    1.服务器收到FIN(i)后,返回确认段ACK,序列号为i+1关闭服务器读通道

    2.客户机收到ACK(i+1)后,关闭客户机写通道

   (此时,客户机仍能通过读通道读取服务器的数据,服务器仍能通过写通道写数据)

    第二阶段 服务器发送完数据之后,向客户机发送一个FIN数据段,序列号为j;

    3.客户机收到FIN(j)后,返回确认段ACK,序列号为j+1关闭客户机读通道

    4.服务器收到ACK(j+1)后,关闭服务器写通道

这是标准的TCP关闭两个阶段,服务器和客户机都可以发起关闭,完全对称。

FIN标识是通过发送最后一块数据时设置的,标准的例子中,服务器还在发送数据,所以要等到发送完的时候,设置FIN(此时可称为TCP连接处于[b]半关闭状态,因为数据仍可从被动关闭一方向主动关闭方传送)。如果在服务器收到FIN(i)时,已经没有数据需要发送,可以在返回ACK(i+1)的时候就设置FIN(j)标识,这样就相当于可以合并第二步和第三步。[/b]

转自:http://blog.csdn.net/fbysss/article/details/2230527
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: