首页 > 编程知识 正文

tcp三次握手四次挥手面试题,tcp的四次挥手

时间:2023-05-06 14:40:03 阅读:32696 作者:816

另一方面,TCP握手的MSL为TCP消息中的最大生存时间,这是在哪个消息段被丢弃之前处于网络中的最长时间。

第一次挥手: A-B、a向b发出释放连接请求的信息。 其中,FIN (停止位)=1,seq )序列号)=u; 发送a后,a的TCP客户端处于FIN-WAIT-1(等待退出1 )的状态。 此时,a还可以接收数据

第二次手势: B-A:B在收到来自a的连接释放请求后,立即向a发送确认信息。 其中,ACK=1、seq=v、ack (确认号码)=u 1; b发送完成后,b的服务器端进入CLOSE_WAIT(等待关闭)状态。 此时,a接受该确认,变为FIN-WAIT-2(等待结束2 )的状态,等待b发出解除连接的请求。 此时b还可以发送数据。

(b直接行驶时,进入A 永远处和该状态。 TCP协议中没有对此状态的处理。但 Linux 有,可以调整 tcp_fin_timeout 这个参数,设置一个超时时间)

第三次挥手:当b-a:b已经没有要发送的数据时,b向a发送释放连接信息。 其中,FIN=1、ACK=1、seq=w、ack=u 1在b发送后,b为LAST-ACK(最后确认)状态。

第四次挥手: A-B; a收到b的断开连接请求时,必须确认这一点。 其中,ACK=1、seq=u 1、ack=w 1; a发送完成后,进入TIME-WAIT(等待时间)状态。 b在得到a的确认后,进入CLOSED(关闭)状态。 到计时器设置为止经过一段时间后,a变为CLOSED状态。

二、为什么需要挥手4次,其实是客户端和服务端的2次手,即客户端和服务端分别释放连接的过程。 如您所见,客户端发送最后一次确认后需要等待2MSL的时间。 主要有两个原因。一个是为了使b能够遵循正常步骤进入CLOSED的状态。二是是为了防止http://www

说明:

1 )、由于已经失效,b无法正常进入关闭状态。 因此,b重新发送请求释放的消息,但此时如果a关闭,则无法接收来自b的重发请求,客户端最后一个ACK可能会丢失另一方面,如果a还在等待时间内,则从b接受重发并进行响应,从而b关闭

2 )在此2MSL的等待时间内,此次连接的所有消息均已为导致B不能正常释放,不会出现在下次连接中。

三、挥手过三次吗? 这种情况在协商中实现了吗? 挥手三次会怎么样? 在三种情况下,被动关闭在收到FIN消息后,如果从网络中消失Server端不需要在该连接上处理Pending消息,则可以。 如果服务器端关闭其他方向的连接需要时间的话,这样的3次挥手也不能满足条件。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。