美文网首页Fuck iOS EveryDay
4.为什么TCP为什么是三次握手,为什么不是2次或者4次;四次挥

4.为什么TCP为什么是三次握手,为什么不是2次或者4次;四次挥

作者: 未知的证明 | 来源:发表于2019-04-20 19:31 被阅读0次

如果是两次:
C发送请求,S应答并分配资源
若S的应答没有到达C端,C认为连接未建立,而S认为建立了
S会在一段时间内保留分配的资源
如果大量C这样请求,S会崩溃

如果是4次
而三次握手后,C和S至少可以确认之前的通信情况,但无法确认之后的情况。
在这个道理上说,无论是四次还是五次或是更多次都是徒劳的

为什么需要“四次挥手”?
  试想一下,假如现在你是客户端你想断开跟Server的所有连接该怎么做?第一步,你自己先停止向Server端发送数据,并等待Server的回复。但事情还没有完,虽然你自身不往Server发送数据了,但是因为你们之前已经建立好平等的连接了,所以此时他也有主动权向你发送数据;故Server端还得终止主动向你发送数据,并等待你的确认。其实,说白了就是保证双方的一个合约的完整执行!

为什么挥手之后客户端是2ms的等待时间?

  1. 为了保证客户端发送的最后一个ACK报文段能够到达服务器。因为这个ACK有可能丢失,从而导致处在LAST-ACK状态的服务器收不到对FIN-ACK的确认报文。服务器会超时重传这个FIN-ACK,接着客户端再重传一次确认,重新启动时间等待计时器。最后客户端和服务器都能正常的关闭。假设客户端不等待2MSL,而是在发送完ACK之后直接释放关闭,一但这个ACK丢失的话,服务器就无法正常的进入关闭连接状态。

  2. 他还可以防止已失效的报文段。客户端在发送最后一个ACK之后,再经过经过2MSL,就可以使本链接持续时间内所产生的所有报文段都从网络中消失。从保证在关闭连接后不会有还在网络中滞留的报文段去骚扰服务器。

注意:在服务器发送了FIN-ACK之后,会立即启动超时重传计时器。客户端在发送最后一个ACK之后会立即启动时间等待计时器。

相关文章

  • TCP三次握手、四次挥手漫画

    乔戈里大神的漫画TCP连接为什么是三次握手,而不是两次握手,也不是四次握手?TCP断开连接为什么是四次挥手,不是二...

  • 网络相关面试题

    网络 1. TCP和UDP的区别 2. TCP的三次握手 3. TCP的四次挥手 4. TCP为什么需要三次握手...

  • TCP 三次握手与四次挥手

    目录 TCP与UDP的区别TCP 三次握手为什么需要三次握手?而不是两次TCP 四次挥手为什么需要等待 2MSL为...

  • TCP的三次握手和四次挥手

    目录 名词解释 TCP的三次握手TCP建立链接的步骤TCP的三次握手步骤思考:TCP握手为什么不是两次 or 四次...

  • tcp为什么是三次握手

    参考 TCP 为什么是三次握手,而不是两次或四次? 1. tcp三次握手流程 由图可知,tcp三次握手的关键在于,...

  • 2、tcpdump抓包分析三次握手和四次挥手

    TCP为什么需要三次握手、四次挥手 三次握手 三次握手 四次挥手 SYN flood攻击

  • 三次握手与四次挥手图文详解

    本文介绍TCP的三次握手与四次挥手,以及TCP 为什么是三次握手,而不是两次或四次?TCP名为传输控制协议,是一种...

  • TCP三次握手

    什么是tcp/ip协议?TCP的三次握手指的是什么,为什么一定要三次握手,而不是四次或者是两次? 1.背景介绍 网...

  • TCP的三次握手和四次挥手

    参考资料:[1].【TCP】详解TCP 三次握手和四次挥手[2]. iOS:为什么TCP连接要三次握手,四次挥手[...

  • TCP详解+wireshark抓包演示

    简介 TCP理论 TCP报文格式 三次握手三次握手图解为什么要三次握手 四次分手四次分手图解TCP的半关闭 实战抓...

网友评论

    本文标题:4.为什么TCP为什么是三次握手,为什么不是2次或者4次;四次挥

    本文链接:https://www.haomeiwen.com/subject/mmglgqtx.html