美文网首页
TCP三次握手四次挥手

TCP三次握手四次挥手

作者: 张慕侠 | 来源:发表于2020-03-21 18:21 被阅读0次
    1.为什么要三次握手,而不是两次?
    (1)B资源浪费问题(先发后至导致的)

    a. A主动和B建立TCP连接,A的第一个SYN=1消息拥塞,超时后发出第二个SYN=1消息;
    b. B收到第二个SYN=1消息,响应SYN=1、ACK=1消息,建立连接,传输数据,然后断开;
    c. 此时,第一个SYN=1消息到达B,B响应,发出SYN=1、ACK=1消息;
    d. A会忽略这条响应消息,而B会以为连接建立成功了,造成B的资源浪费。

    (2)可能的死锁问题

    a. A主动和B建立TCP连接,A的SYN=1消息到达B,B响应SYN=1、ACK=1消息;
    b. B响应消息丢包了。此时B以为连接建立,A等待B的确认;
    c. B会开始发送数据消息;A仍然等待确认、或者超时之后重新发送SYN=1消息;
    d. B认为连接建立了,会忽略A的SYN消息,狂发数据;A认为连接没建立,会等待、或重发。此时一定会有带宽资源浪费,有可能死锁。

    2.断开连接,主动方为何要等待2MSL?

    a. A发FIN=1请求断开,B响应ACK=1确认;
    b. B继续发送“剩余”数据;
    c. B发FIN=1、ACK=1断开,A响应ACK=1确认;
    d. 如果主动方A,响应之后立即CLOSED,当上步的“ACK=1消息”丢失,会导致B重发FIN=1、ACK=1消息,而A已经不能接收了。
    因此,需要等一段;目前约定的是等2*MSL(MSL=报文最大寿命=2min)。

    参考资料:
    (1)https://zhidao.baidu.com/question/1830997910635735340.html
    (2)https://www.cnblogs.com/cenglinjinran/p/8482412.html

    相关文章

      网友评论

          本文标题:TCP三次握手四次挥手

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