zoukankan      html  css  js  c++  java
  • Tcp状态机

    1、为什么建立连接需要三次握手,断开连接需要四次握手?

         举例来说,C与S要可靠的沟通,沟通之前要又准备工作,沟通完了,要有清理工作。

         沟通之前的准备工作

        C:我要跟你说话,你注意听(SYN)

        S:好的(ACK),我也要跟你说话,你注意听(SYN)

        C:好的(ACK) 

        ........

        交流过程中

        .......

         沟通完了的清理工作

        C:我说完了(FIN)

        S:我知道了(ACK)

        S 再说一些...... 

        S:我说完了(FIN)

        C:我知道了(ACK)

        tcp是全双工的, 建立连接,ACK的同时可以SYN,而断开连接,往往不满足条件,C说完了,S可能还要再说一会。

    2、为什么,TIME_WAIT要经过2个MSL(Maximum Segment Lifetime),才进入CLOSED?
         考虑下面的情况,C回了ACK立即进入CLOSED,假如S没有收到ACK,站在S的角度,S认为:C还不知道我已经说完了,我要再说一遍。但是这个时候C已经CLOSED,怎么解决这个问题?

         站在C的角度考虑,如果我回了ACK,S没有收到,那么S会重发FIN,从C回ACK,到C再次收到S的FIN,最多需要两个报文段周期。如果在两个报文段周期没有收到FIN,则说明,S肯定收到了我了ACK,进入CLOSED 

  • 相关阅读:
    gdb typeid 详解
    make报错
    期末作业验收
    个人作业——软件工程实践总结作业
    原型设计(结对第一次)
    团队展示(团队)
    第二次作业——个人项目实战(sudoku)
    软件工程实践第一次作业--准备
    C++第一次课堂作业 circle
    第四次作业 计算器第二部分(未完)
  • 原文地址:https://www.cnblogs.com/nzbbody/p/4320925.html
Copyright © 2011-2022 走看看