TCP的四次挥手(TCP的连接释放)

来源:互联网 发布:淘宝直通车规则 编辑:程序博客网 时间:2024/06/06 03:57

在上一篇博客中,我们已经解析过TCP的连接建立(TCP的三次握手),今天我们说说TCP建立之后的释放
这里写图片描述

通信的双方都可以启动释放连接,即客户或者服务器哪一方都可以启动释放连接

假设客户的应用进程主动启动释放连接,客户的应用进程先向其TCP发出释放连接报文段,并停止发送数据,主动关闭TCP连接

第一步:客户给服务器发送报文

客户把连接释放报文段的首部的FIN=1,其序号seq=u,等待B的确认

第二步:服务器给客户发送报文

服务器收到客户发来的报文段后,给客户发出确认,在确认报文段中应使ACK=1,自己选择的序号seq=v,其确认号ack=u+1注意:客户到服务器方向的数据传送,已经关闭,此时TCP连接处于半关闭状态但是,如果服务器还要给客户传送数据,还是可以的,所以,在本阶段中服务器还可以给客户发送数据

第三步:服务器给客户发送报文

若服务器没有要给客户传送的数据,其应用进程就通知TCP释放连接发送报文,在报文中使ACK=1,FIN=1,确认号ack=u+1,自己选择的序号seq=w

第四步:客户给服务器发送报文

客户收到服务器发来的报文后,再给服务器发送确认报文,在报文中使FIN=1,自己选择的序号seq=u+1,确认号ack=w+1

TCP连接必须经过2MSL的时间后才真正释放掉

TCP连接释放的过程:
A:我不想跟你联系了
B:好的,但是我还想给你送个礼物
B:礼物送完了,我们断了联系吧
A :好的,我们以后都不要再联系啦!

哈哈哈,致此TCP的连接释放都已经解析完了,TCP的连接在上一篇文章中:http://blog.csdn.net/dangzhangjing97/article/details/78407031

解释

FIN和ACK都是TCP首部的内容FIN  终止FIN,用来释放一个连接,FIN=1,表明此报文段的发送端的数据已经发送完毕,并要求释放连接。ACK  确认ACK,只有当ACK=1时,确认号字段才有效,当ACK=0时,确认号无效
阅读全文
0 0