tcp协议四次挥手过程及原因

描述

TCP协议的四次挥手过程如下:

第一次挥手:客户端发送一个FIN报文段给服务器,关闭客户端到服务器的数据传送,客户端进入FIN_WAIT_1状态。

第二次挥手:服务器收到FIN报文段后,发送一个ACK报文段给客户端,确认序号为收到序号+1,服务器进入CLOSE_WAIT状态。

第三次挥手:服务器发送一个FIN报文段给客户端,关闭服务器到客户端的数据传送,服务器进入LAST_ACK状态。

第四次挥手:客户端收到FIN报文段后,客户端进入TIME_WAIT状态,接着发送一个ACK报文段给服务器,确认序号为收到序号+1,服务器进入CLOSED状态。完成四次挥手。

其中,第二次挥手和第三次挥手都是为了确认双方都已经完成数据的发送和接收。在第二次挥手后,客户端可以继续向服务器发送数据,直到收到服务器的FIN报文段。同样地,在第三次挥手后,服务器也可以继续向客户端发送数据,直到收到客户端的ACK报文段。

连接释放(四次挥手)

①A,B都处于ESTABLISHED状态; ​

②客户进程A主动关闭连接,向B发送连接释放请求报文段(报文段不挟带数据),FIN=1,序列号=u,进入FIN-WAIT-1(终止等待1)状态; ​

③B收到A的连接释放报文段后,应答确认,ACK=1,确认号=u+1,序号=v,进入CLOSE-WAIT (关闭等待)状态,B仍然可以向A发送数据,A进入FIN-WAIT-2(终止等待2)状态; ​

④若B已经没有向A的数据,其应用进程通知TCP连接释放,B向A发送连接释放报文段,FIN=1,ACK=1,确认号=u+1,序号=w,进入LAST-ACK(最后确认)状态;

​ ⑤A收到B的链接释放报文段后,应答确认,ACK=1,确认号=w+1,序号=u+1,进入TIME-TIME-WAIT(时间等待)状态,B收到A的确认后,进入CLOSED状态。

TCP协议

A必须经过时间等待计时器设置的时间2MSL(默认2分钟)后,进入CLOSED状态:确保A发送的最后一个ACK报文段能够到达B;防止“已失效的连接请求报文段”出现在本连接中。

tcp协议为什么四次挥手

TCP协议的四次挥手是用于关闭连接的过程,与建立连接的三次握手不同。其原因可以总结为以下几点:

1. 全双工通信:TCP连接是全双工的,意味着双方都可以同时发送和接收数据。因此,在关闭连接时,客户端和服务端都需要发送一个报文来表示自己没有数据要发送了。

2. 确保数据完整性:TCP协议致力于可靠的数据传输,即使在连接关闭时也不例外。在关闭连接之前,双方需要确保对方已经接收到了所有的数据,以避免数据丢失或不完整。

3. 等待延迟数据:关闭连接时可能存在延迟的数据,这些数据可能还在传输中。通过四次挥手,每一方可以告知对方自己已经没有数据要发送,同时等待对方的确认,以确保关闭连接之前已经传输完所有的数据。

4. 保持连接的可靠性:在TCP连接关闭后,可能还会继续有来自网络中的延迟报文到达。发送方需要等待一个固定的时间,以确保自己收到了对方的确认,并且确认对方已经关闭了连接。

因此,四次挥手的过程主要是为了确保双方都能够正确地关闭连接,保证数据的完整性和可靠性。通过经过四次挥手,连接才能真正地关闭,并释放双方所占用的资源。

审核编辑:黄飞

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分