zoukankan      html  css  js  c++  java
  • Title

    第二次和第三次都是为了保证连接是可靠的
        假设只有一次握手,而A的包无法发到B那里去,那A就是自顾自的建立了连接,傻傻的发信息,却不知道对方其实根本收不到。所以第二次握手是为了告诉A,B收到了你的信息。
        假设只有两次握手,那么对B来说,B是不知道A是否收到了自己的信息的,第三次握手是为了告诉B,A收到了B的信息了,并且可以互发信息了。 B真的需要知道 A是否收到了自己发出的第二次握手的信息吗?是的,如果A的第一次握手因为某些原因延迟很久才到B,而其实现在A和B已经聊完天,关闭连接了,这时B发出第二次握手,而A已经没什么想跟B说的,就不会发出第三次握手,这样B就不会建立连接消耗资源。

        若是只有二次握手的这种情况,B会直接建立连接消耗资源。

    四次挥手

        第一次。A跟B说,我要断开连接了。
        第二次。B跟A说,好的,我知道了,我不再接收你的信息了。
        第三次。B跟A说,我传给你的信息传完了,你可以关闭连接了。
        第四次。A跟B说,好的,我关闭连接了。
        第二次挥手是为了告诉A,B知道你不再发送信息了,且B不再接收信息。但B仍可以向A发送信息。因为A是主动关闭的一方,但B可能仍然有信息未发送完。
        第三次挥手是为了告诉A,B的信息发完了,A你可以关闭连接了。
        第四次挥手是为了告诉B,A我知道可以关闭连接了,你也可以关闭了。对B来说,第四次挥手B才知道A成功关闭连接了,不关闭很耗费资源,所以要保证关闭了。若B接收不到第四次挥手信息,将会继续第三次挥手,直到收到确认信息为止。
        注意:对A来说,第四次挥手后2MSL内未接收到B的第三次挥手信息才会关闭连接,否则会继续第四次挥手。防止B接收不到第四次挥手信息。(若B接收不到第四次挥手信息,将重复发送第三次挥手信息,这个2MSL就是如果真的有重复发送的第三次挥手信息,在这个时间内肯定到达A了(路由不出问题的话),就是为了保证B收到第四次挥手信息)

    链接:传送门

  • 相关阅读:
    论文阅读:Deep Attentive Tracking via Reciprocative Learning
    Paper Read: Convolutional Image Captioning
    论文笔记: Mutual Learning to Adapt for Joint Human Parsing and Pose Estimation
    Macro-Micro Adversarial Network for Human Parsing
    论文笔记:Mask R-CNN
    算法——贝叶斯
    算法——递推算法
    跟我一起云计算(5)——Shards
    跟我一起云计算(4)——lucene
    跟我一起云计算(3)——hbase
  • 原文地址:https://www.cnblogs.com/guotianbao/p/8539115.html
Copyright © 2011-2022 走看看