美文网首页
为什么tcp要三次握手四次分手

为什么tcp要三次握手四次分手

作者: 蒲编 | 来源:发表于2017-05-19 20:49 被阅读0次
    来自http://www.jellythink.com/archives/705

    我用自己的话总结一下吧。

    三次握手

    客户端发起请求,服务端确认收到请求,客户端再次确认收到服务器的确认,服务器收到客户端的确认后三次握手结束。

    • 原因:一开始也以为两次就可以了,但因为很可能客户端的第一次请求因为网络问题,到服务端的时候,客户端已经出现关机等状态了,然后服务器发出确认后就会一直等着。
      但假如三次握手就不会出现这种状况。
      当然更多的握手会更安全,但会因此牺牲效率。

    四次分手

    tcp是全双工,所以任何一方都可能发起结束请求的信号。
    A方发出结束请求的信号fin,表示自己不会再发送数据了,但可能还会接收数据,B方马上确认,发出信号ack,同时假如它不需要再发出数据了,就紧接着发出结束的信号fin。最后A发出确认信号ack,等待2mls后结束连接。

    我也思考过,为什么B不在发出fin后直接断开连接,为什么A发出ack后还要等2mls?

    答案很简单,因为发出的信号可能到达不了对面,假如你直接就关闭了,对面又一直在等你,那就gg了。

    • 所以B要确认一下对面收到自己的fin了,同理,A最后等2mls的意义在于,B要是没收到自己的ack会再次发送fin,A等了2mls都没收到第二个fin,那就说明B收到了自己的ack。

    相关文章

      网友评论

          本文标题:为什么tcp要三次握手四次分手

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