5.8.4 TCP连接管理(二)TCP链接释放
在数据传输结束之后,通信双方都可以发出释放连接的请求,如图
图中所示的主机A192.168.1.100与百度服务器B:119.75.218.70之间TCP连接释放的过程。文章来源:https://www.toymoban.com/news/detail-518279.html
- 主机B的TCP通知对方要释放从B到A方向上的连接,将发往主机A的TCP报文段首部的终止比特FIN置1,序号Seq为50,此时的确认号Ack=248,表示期望接收来自主机A的下一个序号是248。一共传输了247个字节数据给主机A。
- 主机A的TCP收到释放连接通知后,激发出ACK=1,因为之前主机B发出的报文段,FIN=1,需要消耗掉一个序号,所以序号Ack=51。这样从B到A的连接就释放了,此时的连接处于半关闭状态。此时如果主机A还有数据要发送,主机B仍然接收。
- 当主机A向服务器B的数据发送结束后,TCP释放主机A到服务器B的连接。主机A发出的连接释放报文段必须将终止比特FIN置1,因为之前发送的ACK确认并不需要消耗序号,所以此时的序号仍然是序号Seq=248。
- 服务器B还必须对此发出确认,因为FIN需要消耗掉一个序号,所以给出的一个确认号Ack=249。最终双方的连接释放全部完成。
由于TCP连接是双向建立的,所以连接的释放也需要在两个方向上进行,当ACK和FIN同时置1被认为是一个FIN包,然而由于连接没有关闭,所以FIN包总是要打上一个Ack的标记,在实际的网络中,传输的FIN包如果没有打上ACK标记,通常会被认为是一个恶意的数据报。文章来源地址https://www.toymoban.com/news/detail-518279.html
到了这里,关于5.8.4 TCP连接管理(二)TCP链接释放的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!