精华内容
下载资源
问答
  • TCP状态转换图

    2014-04-26 19:50:11
    最全的TCP状态转换图
    展开全文
  • TCP状态转换图详解.pdf

    2021-10-09 00:38:20
    TCP状态转换图详解.pdf
  • TCP状态转换图文解说

    千次阅读 2020-10-28 19:30:46
    文章目录一、TCP状态转换图说明状态转换图二、名次解释2MSL半关闭补充:Linux命令:查看网络相关状态补充:端口复用FIN_WAIT2TIME_WAIT 一、TCP状态转换图 说明 状态转换图 TCP初始化时从CLOSED状态启动,通常...

    一、TCP状态转换图

    说明

    在这里插入图片描述

    状态转换图

    在这里插入图片描述

    • TCP初始化时从CLOSED状态启动,通常根据是执行主动打开操作(客户端请求)还是被动打开操作(服务器接收请求),TCP将分别转换到SYN_SENT或LISTEN状态。正常情况下处于这两个状态下的两者由此建立了连接,这就是三次握手过程。
    • 左下方的FIN_WAIT_1、FIN_WAIT_2以及TIME_WAIT是“主动关闭”过程的状态转换,而CLOWSE_WAIT和LAST_ACK则是“被动关闭”过程涉及的状态转换。
    • 从LISTEN到SYN_SENT的状态转换只有在WYN_RCVD状态是由LISTEN状态而非WYN_SENT状态转换而来的情况下才会发生。这意味着,如果我们执行一个被动打开操作(进入LISTEN状态),接收一个SYN,发送一个带有ACK确认的SYN(进入SYN_RCVD状态),然后收到一个重置消息而非ACK,套接字就会返回到LISTEN状态,等待另一个连接请求的到来。

    • 结合TCP连接从建立到终止的过程,可以得到下图:

    在这里插入图片描述
    两张图一一对应,同志们可按照流程对照

    二、名次解释

    2MSL

    a. 等待时长
    b. 主动关闭连接的一方, 处于TIME_WAIT状态
    c. 有的地方: 2分钟, 30s, 一般时候是30s(MSL)
    

    半关闭

    理解

    • A给B发送是FIN(A调用了close函数), 但是B没有给
      A发送FIN(B没有调用close)
    • A断开了与B的连接, B没有断开与A的连接

    特点

    • A不能给B发送数据, A可以收B发送的数据
    • B可以给A发送数据

    函数: int shutdown(int sockfd, int how);

    • sockfd: 要半关闭的一方对应的通信文件描述符
    • how:
      • SHUT_RD - 0 - 读
      • SHUT_WR - 1 - 写
      • SHUT_RDWR - 2 - 读写

    补充:Linux命令:查看网络相关状态

    命令:netstat

    • 参数:
      –a (all)显示所有选项,默认不显示LISTEN相关
      -p 显示建立相关链接的程序名
      -n 拒绝显示别名,能显示数字的全部转化成数字。
      -t (tcp)仅显示tcp相关选项
      -u (udp)仅显示udp相关选项
      -l 仅列出有在 Listen (监听) 的服务状态

    补充:端口复用

    端口复用最常用的用途是:

    • 防止服务器重启时之前绑定的端口还未释放
    • 程序突然退出而系统没有释放端口

    设置方法:

    int opt = 1; 
     SO_REUSEADDR, 
    setsockopt(sockfd, SOL_SOCKET, 
     (const void *)&opt, sizeof(opt)); `
    

    注意事项:

    • 绑定之前设置端口复用的属性

    FIN_WAIT2

    在FIN_WAIT2状态,TCP连接的主动关闭方已发送一个FIN报文段并得到另一端确认。除非出现半关闭的情况,否则主动关闭方将会等待另一端识别出自己已接收到一个文件末尾的通知并执行关闭连接操作。只有主动关闭方接收到另一端的FIN报文段,才会从FIN_WAIT2状态转移至TIME_WAIT状态。

    TIME_WAIT

    TIME_WAIT状态也称为2MSL等待状态。在该状态中,TCP套接字将会等待两倍于最大段生存期(Maximum Segment Lifetime,MSL)的时间。它代表任何报文段在被丢弃前在网络中允许存在的最长时间。虽然允许设置这个数值,但同时也受到网络层中IP数据报TTL字段的影响,因为TCP报文是以IP数据报的形式传输的。

    当TCP连接主动关闭方接收到被动关闭方发送的FIN和最终的ACK后,连接的主动关闭方必须处于TIME_WAIT状态并持续2MSL时间。这样就能够让TCP连接的主动关闭方在它发送的ACK丢失的情况下重新发送最终的ACK。主动关闭方重新发送的最终ACK并不是因为被动关闭方重传了ACK(它们并不消耗序列号,被动关闭方也不会重传),而是因为被动关闭方重传了它的FIN。事实上,被动关闭方总是重传FIN直到它收到一个最终的ACK。

    假设没有TIME_WAIT状态,如果被动关闭方没有收到主动关闭方回复的ACK,它就会重新发送FIN,但此时主动关闭方已经处于CLOSED状态,因此会响应一个RST报文段,让被动关闭方误认为发生了错误。因此TIME_WAIT状态存在的其中一个原因就是为实现TCP连接的可靠释放。

    使用TIME_WAIT状态的另一个原因是为使旧的数据包在网络因过期而消失。假设TCP协议中不存在TIME_WAIT状态的限制,再假设当前有一条TCP连接:(local_ip, local_port, remote_ip,remote_port)。因某些原因,我们先关闭,接着很快以相同的四元组建立一条新连接。由于一个连接仅由两对socket唯一标识,因此TCP协议栈是无法区分前后两条TCP连接的不同的,在它看来,这根本就是同一条连接,中间先释放再建立的过程对其来说是“感知”不到的。这样就可能发生这样的情况:前一条TCP连接由local peer发送的数据到达remote peer后,会被该remot peer的TCP传输层当做当前TCP连接的正常数据接收并向上传递至应用层(而事实上,在我们假设的场景下,这些旧数据到达remote peer前,旧连接已断开且一条由相同四元组构成的新TCP连接已建立,因此,这些旧数据是不应该被向上传递至应用层的),从而引起数据错乱进而导致各种无法预知的现象。作为一种可靠的传输协议,TCP必须在协议层面考虑并避免这种情况的发生,这正是TIME_WAIT状态存在的第2个原因。

    出于第2个原因的考虑,TCP协议规定在TIME_WAIT状态时,通信双方将连接(客户端IP地址、客户端端口号、服务器IP地址、服务器端口号)置于不可用状态。只有当2MSL等待结束时,或一条新连接使用的初始序列号超过了连接之前的实例所使用的最高序列号时[RFC1122],或者允许使用时间戳选项来区分之前连接实例的报文段以避免混淆时[RFC6191],这条连接才能重新使用。

    展开全文
  • TCP状态转换图详解 tcp协议讲解

    万次阅读 2018-09-27 15:38:28
    如下所示,TCP通信过程包括三个步骤:建立TCP连接通道(三次握手)、数据传输、断开TCP连接通道(四次挥手)。          &...

    在前面,已经介绍了TCP协议的三路握手和四次挥手。如下图所示,TCP通信过程包括三个步骤:建立TCP连接通道(三次握手)、数据传输、断开TCP连接通道(四次挥手)。

                                                   

    这里进一步探究TCP三路握手和四次挥手过程中的状态变迁以及数据传输过程。先看TCP状态状态转换图。

                                                                                         

    上半部分是TCP三路握手过程的状态变迁,下半部分是TCP四次挥手过程的状态变迁。

    1. CLOSED:起始点,在超时或者连接关闭时候进入此状态,这并不是一个真正的状态,而是这个状态图的假想起点和终点。
    2. LISTEN:服务器端等待连接的状态。服务器经过 socket,bind,listen 函数之后进入此状态,开始监听客户端发过来的连接请求。此称为应用程序被动打开(等到客户端连接请求)。
    3. SYN_SENT:第一次握手发生阶段,客户端发起连接。客户端调用 connect,发送 SYN 给服务器端,然后进入 SYN_SENT 状态,等待服务器端确认(三次握手中的第二个报文)。如果服务器端不能连接,则直接进入CLOSED状态。
    4. SYN_RCVD:第二次握手发生阶段,跟 3 对应,这里是服务器端接收到了客户端的 SYN,此时服务器由 LISTEN 进入 SYN_RCVD状态,同时服务器端回应一个 ACK,然后再发送一个 SYN 即 SYN+ACK 给客户端。状态图中还描绘了这样一种情况,当客户端在发送 SYN 的同时也收到服务器端的 SYN请求,即两个同时发起连接请求,那么客户端就会从 SYN_SENT 转换到 SYN_REVD 状态。
    5. ESTABLISHED:第三次握手发生阶段,客户端接收到服务器端的 ACK 包(ACK,SYN)之后,也会发送一个 ACK 确认包,客户端进入 ESTABLISHED 状态,表明客户端这边已经准备好,但TCP 需要两端都准备好才可以进行数据传输。服务器端收到客户端的 ACK 之后会从 SYN_RCVD 状态转移到 ESTABLISHED 状态,表明服务器端也准备好进行数据传输了。这样客户端和服务器端都是 ESTABLISHED 状态,就可以进行后面的数据传输了。所以 ESTABLISHED 也可以说是一个数据传送状态。

    上面就是 TCP 三次握手过程的状态变迁。结合第一张三次握手过程图,从报文的角度看状态变迁:SYN_SENT 状态表示已经客户端已经发送了 SYN 报文,SYN_RCVD 状态表示服务器端已经接收到了 SYN 报文。


    下面看看TCP四次挥手过程的状态变迁。结合第一张四次挥手过程图来理解。

    1. FIN_WAIT_1:第一次挥手。主动关闭的一方(执行主动关闭的一方既可以是客户端,也可以是服务器端,这里以客户端执行主动关闭为例),终止连接时,发送 FIN 给对方,然后等待对方返回 ACK 。调用 close() 第一次挥手就进入此状态。
    2. CLOSE_WAIT:接收到FIN 之后,被动关闭的一方进入此状态。具体动作是接收到 FIN,同时发送 ACK。之所以叫 CLOSE_WAIT 可以理解为被动关闭的一方此时正在等待上层应用程序发出关闭连接指令。前面已经说过,TCP关闭是全双工过程,这里客户端执行了主动关闭,被动方服务器端接收到FIN 后也需要调用 close 关闭,这个 CLOSE_WAIT 就是处于这个状态,等待发送 FIN,发送了FIN 则进入 LAST_ACK 状态。
    3. FIN_WAIT_2:主动端(这里是客户端)先执行主动关闭发送FIN,然后接收到被动方返回的 ACK 后进入此状态。
    4. LAST_ACK:被动方(服务器端)发起关闭请求,由状态2 进入此状态,具体动作是发送 FIN给对方,同时在接收到ACK 时进入CLOSED状态。
    5. CLOSING:两边同时发起关闭请求时(即主动方发送FIN,等待被动方返回ACK,同时被动方也发送了FIN,主动方接收到了FIN之后,发送ACK给被动方),主动方会由FIN_WAIT_1 进入此状态,等待被动方返回ACK。
    6. TIME_WAIT:从状态变迁图会看到,四次挥手操作最后都会经过这样一个状态然后进入CLOSED状态。共有三个状态会进入该状态
    • 由CLOSING进入:同时发起关闭情况下,当主动端接收到ACK后,进入此状态,实际上这里的同时是这样的情况:客户端发起关闭请求,发送FIN之后等待服务器端回应ACK,但此时服务器端同时也发起关闭请求,也发送了FIN,并且被客户端先于ACK接收到。
    • 由FIN_WAIT_1进入:发起关闭后,发送了FIN,等待ACK的时候,正好被动方(服务器端)也发起关闭请求,发送了FIN,这时客户端接收到了先前ACK,也收到了对方的FIN,然后发送ACK(对对方FIN的回应),与CLOSING进入的状态不同的是接收到FIN和ACK的先后顺序。
    • 由FIN_WAIT_2进入:这是不同时的情况,主动方在完成自身发起的主动关闭请求后,接收到了对方发送过来的FIN,然后回应 ACK。

    下面来看看这个看似有点多余的TIME_WAIT状态:从上面进入TIME_WAIT状态的三个状态动作来看(可以直接看状态变迁图)都是主动方最后回应一个ACK(CLOSING实际上前面的那个FIN_WAIT_1状态就已经回应了ACK)。

    先考虑这样的一个情况,假如这个最后回应的ACK丢失了,也就是服务器端接收不到这个ACK,那么服务器将继续发送它最终的那个FIN,因此客户端必须维护状态信息(TIME_WAIT)允许它重发最后的那个ACK。如果没有这个TIME_WAIT状态,客户端处于CLOSED状态(开头就说了CLOSED状态实际并不存在,是我们为了方便描述假想的),那么客户端将响应RST,服务器端收到后会将该RST分节解释成一个错误,也就不能实现最后的全双工关闭了(可能是主动方单方的关闭)。所以要实现TCP全双工连接的正常终止(两方都关闭连接),必须处理终止过程中四个分节任何一个分节的丢失情况,那么主动关闭连接的主动端必须维持TIME_WAIT状态,最后一个回应ACK的是主动执行关闭的那端。从变迁图可以看出,如果没有TIME_WAIT状态,我们将没有任何机制来保证最后一个ACK能够正常到达。前面的FIN,ACK正常到达均有相应的状态对应。

    还有这样一种情况,如果目前的通信双方都已经调用了 close(),都到达了CLOSED状态,没有TIME_WAIT状态时,会出现这样一种情况,现在有一个新的连接被建立起来,使用的IP地址和端口和这个先前到达了CLOSED状态的完全相同,假定原先的连接中还有数据报残存在网络之中,这样新的连接建立以后传输的数据极有可能就是原先的连接的数据报,为了防止这一点,TCP不允许从处于TIME_WAIT状态的socket 建立一个连接。处于TIME_WAIT状态的 socket 在等待了两倍的MSL时间之后,将会转变为CLOSED状态。这里TIME_WAIT状态持续的时间是2MSL(MSL是任何IP数据报能够在因特网中存活的最长时间),足以让这两个方向上的数据包被丢弃(最长是2MSL)。通过实施这个规则,我们就能保证每成功建立一个TCP连接时,来自该连接先前化身的老的重复分组都已经在网络中消逝了。

      综上来看:TIME_WAIT存在的两个理由就是

    1. 可靠地实现TCP全双工连接的终止;
    2. 允许老的重复分节(数据报)在网络中消逝。


    参考资料《UNP》《TCP/IP Vol.1》



    展开全文
  • TCP状态转换图详解

    千次阅读 2018-06-08 20:02:29
    在前面,已经介绍了TCP协议的三路握手和四次挥手。如下图所示,TCP通信过程包括三个步骤:建立TCP连接通道(三次握手)、数据传输、断开TCP连接通道(四次挥手)。...先看TCP状态状态转换图。 ...

    在前面,已经介绍了TCP协议的三路握手和四次挥手。如下图所示,TCP通信过程包括三个步骤:建立TCP连接通道(三次握手)、数据传输、断开TCP连接通道(四次挥手)。

                                                   

    这里进一步探究TCP三路握手和四次挥手过程中的状态变迁以及数据传输过程。先看TCP状态状态转换图。

                                                                                         

    上半部分是TCP三路握手过程的状态变迁,下半部分是TCP四次挥手过程的状态变迁。

    1. CLOSED:起始点,在超时或者连接关闭时候进入此状态,这并不是一个真正的状态,而是这个状态图的假想起点和终点。
    2. LISTEN:服务器端等待连接的状态。服务器经过 socket,bind,listen 函数之后进入此状态,开始监听客户端发过来的连接请求。此称为应用程序被动打开(等到客户端连接请求)。
    3. SYN_SENT:第一次握手发生阶段,客户端发起连接。客户端调用 connect,发送 SYN 给服务器端,然后进入 SYN_SENT 状态,等待服务器端确认(三次握手中的第二个报文)。如果服务器端不能连接,则直接进入CLOSED状态。
    4. SYN_RCVD:第二次握手发生阶段,跟 3 对应,这里是服务器端接收到了客户端的 SYN,此时服务器由 LISTEN 进入 SYN_RCVD状态,同时服务器端回应一个 ACK,然后再发送一个 SYN 即 SYN+ACK 给客户端。状态图中还描绘了这样一种情况,当客户端在发送 SYN 的同时也收到服务器端的 SYN请求,即两个同时发起连接请求,那么客户端就会从 SYN_SENT 转换到 SYN_REVD 状态。
    5. ESTABLISHED:第三次握手发生阶段,客户端接收到服务器端的 ACK 包(ACK,SYN)之后,也会发送一个 ACK 确认包,客户端进入 ESTABLISHED 状态,表明客户端这边已经准备好,但TCP 需要两端都准备好才可以进行数据传输。服务器端收到客户端的 ACK 之后会从 SYN_RCVD 状态转移到 ESTABLISHED 状态,表明服务器端也准备好进行数据传输了。这样客户端和服务器端都是 ESTABLISHED 状态,就可以进行后面的数据传输了。所以 ESTABLISHED 也可以说是一个数据传送状态。

    上面就是 TCP 三次握手过程的状态变迁。结合第一张三次握手过程图,从报文的角度看状态变迁:SYN_SENT 状态表示已经客户端已经发送了 SYN 报文,SYN_RCVD 状态表示服务器端已经接收到了 SYN 报文。


    下面看看TCP四次挥手过程的状态变迁。结合第一张四次挥手过程图来理解。

    1. FIN_WAIT_1:第一次挥手。主动关闭的一方(执行主动关闭的一方既可以是客户端,也可以是服务器端,这里以客户端执行主动关闭为例),终止连接时,发送 FIN 给对方,然后等待对方返回 ACK 。调用 close() 第一次挥手就进入此状态。
    2. CLOSE_WAIT:接收到FIN 之后,被动关闭的一方进入此状态。具体动作是接收到 FIN,同时发送 ACK。之所以叫 CLOSE_WAIT 可以理解为被动关闭的一方此时正在等待上层应用程序发出关闭连接指令。前面已经说过,TCP关闭是全双工过程,这里客户端执行了主动关闭,被动方服务器端接收到FIN 后也需要调用 close 关闭,这个 CLOSE_WAIT 就是处于这个状态,等待发送 FIN,发送了FIN 则进入 LAST_ACK 状态。
    3. FIN_WAIT_2:主动端(这里是客户端)先执行主动关闭发送FIN,然后接收到被动方返回的 ACK 后进入此状态。
    4. LAST_ACK:被动方(服务器端)发起关闭请求,由状态2 进入此状态,具体动作是发送 FIN给对方,同时在接收到ACK 时进入CLOSED状态。
    5. CLOSING:两边同时发起关闭请求时(即主动方发送FIN,等待被动方返回ACK,同时被动方也发送了FIN,主动方接收到了FIN之后,发送ACK给被动方),主动方会由FIN_WAIT_1 进入此状态,等待被动方返回ACK。
    6. TIME_WAIT:从状态变迁图会看到,四次挥手操作最后都会经过这样一个状态然后进入CLOSED状态。共有三个状态会进入该状态
    • 由CLOSING进入:同时发起关闭情况下,当主动端接收到ACK后,进入此状态,实际上这里的同时是这样的情况:客户端发起关闭请求,发送FIN之后等待服务器端回应ACK,但此时服务器端同时也发起关闭请求,也发送了FIN,并且被客户端先于ACK接收到。
    • 由FIN_WAIT_1进入:发起关闭后,发送了FIN,等待ACK的时候,正好被动方(服务器端)也发起关闭请求,发送了FIN,这时客户端接收到了先前ACK,也收到了对方的FIN,然后发送ACK(对对方FIN的回应),与CLOSING进入的状态不同的是接收到FIN和ACK的先后顺序。
    • 由FIN_WAIT_2进入:这是不同时的情况,主动方在完成自身发起的主动关闭请求后,接收到了对方发送过来的FIN,然后回应 ACK。

    下面来看看这个看似有点多余的TIME_WAIT状态:从上面进入TIME_WAIT状态的三个状态动作来看(可以直接看状态变迁图)都是主动方最后回应一个ACK(CLOSING实际上前面的那个FIN_WAIT_1状态就已经回应了ACK)。

    先考虑这样的一个情况,假如这个最后回应的ACK丢失了,也就是服务器端接收不到这个ACK,那么服务器将继续发送它最终的那个FIN,因此客户端必须维护状态信息(TIME_WAIT)允许它重发最后的那个ACK。如果没有这个TIME_WAIT状态,客户端处于CLOSED状态(开头就说了CLOSED状态实际并不存在,是我们为了方便描述假想的),那么客户端将响应RST,服务器端收到后会将该RST分节解释成一个错误,也就不能实现最后的全双工关闭了(可能是主动方单方的关闭)。所以要实现TCP全双工连接的正常终止(两方都关闭连接),必须处理终止过程中四个分节任何一个分节的丢失情况,那么主动关闭连接的主动端必须维持TIME_WAIT状态,最后一个回应ACK的是主动执行关闭的那端。从变迁图可以看出,如果没有TIME_WAIT状态,我们将没有任何机制来保证最后一个ACK能够正常到达。前面的FIN,ACK正常到达均有相应的状态对应。

    还有这样一种情况,如果目前的通信双方都已经调用了 close(),都到达了CLOSED状态,没有TIME_WAIT状态时,会出现这样一种情况,现在有一个新的连接被建立起来,使用的IP地址和端口和这个先前到达了CLOSED状态的完全相同,假定原先的连接中还有数据报残存在网络之中,这样新的连接建立以后传输的数据极有可能就是原先的连接的数据报,为了防止这一点,TCP不允许从处于TIME_WAIT状态的socket 建立一个连接。处于TIME_WAIT状态的 socket 在等待了两倍的MSL时间之后,将会转变为CLOSED状态。这里TIME_WAIT状态持续的时间是2MSL(MSL是任何IP数据报能够在因特网中存活的最长时间),足以让这两个方向上的数据包被丢弃(最长是2MSL)。通过实施这个规则,我们就能保证每成功建立一个TCP连接时,来自该连接先前化身的老的重复分组都已经在网络中消逝了。

      综上来看:TIME_WAIT存在的两个理由就是

    1. 可靠地实现TCP全双工连接的终止;
    2. 允许老的重复分节(数据报)在网络中消逝。


    参考资料《UNP》《TCP/IP Vol.1》
    展开全文
  • 一、tcp状态转换图 下图对排除和定位网络或系统故障时大有帮助,也帮助我们更好的编写Linux程序,对嵌入式开发也有指导意义。    先回顾一下TCP建立连接的三次握手过程,以及关闭连接的四次握手过程:   1、...
  • TCP连接的建立和终止可用状态转换图来说明,如下图,这些状态可以用netstat显示,它他是一个在调试客户服务器应用时很有用的工具。 在一文真正了解TCP三次握手和四次挥手-wireshark抓包分析中详解讲到了TCP三次握手...
  • 一、TCP状态转换图 图中的状态用椭圆表示,而状态之间的转换则用箭头表示 TCP连接的每一端都可以在这些状态中进行转换: 有些转换是由于接收到某个控制位字段置位的报文段而引发的(例如,SYN,ACK,FIN) 而...
  • TCP状态转换图(state transition diagram)

    千次阅读 2014-07-07 14:22:41
    TPC总共有11个状态,状态转换图: 转换转换的要素 状态: tcp定义的11个状态 事件: 触发TCP状态迁移。事件可以是:本地应用层调用;收到TCP消息(incoming segment);超时时间(timeout) 动作: 主要指针对远程...
  • 【Unix 网络编程】TCP状态转换图详解

    万次阅读 多人点赞 2014-10-21 21:50:35
    在前面,已经介绍了TCP协议的三路握手和四次挥手。如下所示,TCP通信过程包括三个步骤:建立TCP连接通道(三次握手)、数据传输、断开TCP连接通道(四次挥手)。
  • CLOSE_WAIT状态出现时机有一端主动关闭socket链接, 在没有关闭socket链接的一端出现CLOSE_WAIT状态, 主动关闭socket的一端出现了FIN_WAIT_2状态, 在主动关闭socket一端没有收到被动关闭一端的响应会等待73秒后关闭, ...
  • 详细的介绍了TCP状态转换以及TCP状态。并且给出了TCP状态转换图
  • TCP状态转换

    千次阅读 2018-09-17 21:57:55
    TCP状态转换图  TCP连接的建立与终止,以及在连接的不同阶段需要发送的各种类型的报文段,实质上都是由TCP所属的状态决定的。当前的状态会在各种触发条件下改变,状态转换规则可以概括为如下所示的TCP状态转换图:...
  • TCP状态转换详解

    2017-07-02 13:54:29
    1.TCP状态转换图TCP状态转换图)上图截取自UNIX网络编程卷1 TCP的11种状态: CLOSED :起始点,在连接关闭或超时的时候变成此状态LISTEN : 监听来自网络节点上其他主机的TCP端口连接请求,服务端需要调用...
  • TCP状态转换与libnids状态深入分析

    千次阅读 2018-03-13 16:35:50
    1、TCP状态转换 图 1.1 图1.1所示的为11个TCP状态之间的转换图,包括了六部分:主动打开、被动打开、主动关闭、被动关闭、同时打开、同时关闭;下面逐个解释一下每个状态所代表的含义: CLOSED:表示初始状态...
  • tcp状态转换

    2018-03-13 11:58:15
    tcp状态图,高清,可以收藏多年。
  • tcp 11种状态转换图

    千次阅读 2016-04-23 14:57:00
    tcp 11种状态转换

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 97,803
精华内容 39,121
关键字:

tcp状态转换图