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 

  • 相关阅读:
    RTC驱动程序分析
    Linux下的RTC子系统
    [置顶] 谈EXPORT_SYMBOL使用
    《Linux内核修炼之道》精华分享与讨论(5)——Kernel地图:Kconfig与Makefile
    写出高效优美的单片机C语言代码
    哈夫曼树
    如何提高浮点数变整数的精度
    CF798C Mike and gcd problem
    CF822C Hacker, pack your bags!
    CF821C Okabe and Boxes
  • 原文地址:https://www.cnblogs.com/nzbbody/p/4320925.html
Copyright © 2011-2022 走看看