美文网首页
TCP状态图

TCP状态图

作者: smallmuou | 来源:发表于2017-05-05 17:33 被阅读209次

在使用netstat发现有个State字段,于是脑补了下,发现水还是蛮深的,以前只了解三次握手、四次握手,并没有了解其中的状态,现在有幸能够接触,大家可以直接Google搜索TCP状态图,会出现经典的状态图,如下:

image

我这里将对其进行整理,方便大家理解,看图前,先看下后面用到的术语:

  • S - 表示发送
  • R - 表示接收

连接建立阶段(三次握手)

CLOSED                                 ESTABLISH
  |                                        |
  |---------------- CLIENT ----------------|
  |                                        |
  |           SYN_SEND                     |
  |              |                         |
  |              |       R: SYN ACK        |
  |------------->|------------------------>|
  |    S: SYN    |          S: ACK         |
  |              |                         |
  |                                        |
  |                                        |
  |                                        |
  |---------------- SERVER ----------------|
  |                                        |
  |           LISTEN        SYN_RECV       |
  |              |              |          |
  |     OPEN     |    R: SYN    |  R: ACK  |
  |------------->|------------->|--------->|
  |              |  S: SYN ACK  |          |
  |              |              |          |
  |              |    R: RST    |          |
  |              |<-------------|          |
  |              |              |          |

  • CLIENT - 客户端
  • SERVER - 服务端
  • CLOSED - 关闭态
  • ESTABLISH - 连接态
  • LISTEN - 监听态(被动打开)
  • SYN_SEND - SYN发送态(已发送SYN)
  • SYN_RECV - SYN接收态(已接收SYN,并发送ACK)
  • 三次握手: 客户端发送SYN -> 服务端接收SYN,并发送SYN、ACK --> 客户端接收SYN、ACK,并发送ACK
  • RST - 复位指令,SYN_RECV在接收到RST可以回到LISTEN,主要用于处理异常连接,至于什么情况会出现RST,可以点击此传送门

连接释放阶段(四次握手)

ESTABLISH                                        CLOSED
  |                                                 |
  |--------------------- ACTIVE --------------------|
  |                                                 |
  |         FIN_WAIT_1   FIN_WAIT_2  TIME_WAIT      |
  |              |            |          |          |
  |              |   R: ACK   |  R: FIN  |   2MSL   |
  |------------->|----------->|--------->|--------->|
  |    S: FIN    |            |  S: ACK  |          |
  |              |            |          |          |
  |              |            |          |          |
  |              |     R: FIN ACK        |          |
  |              |---------------------->|          |
  |              |       S: ACK          |          |
  |              |                       |          |
  |              |                       |          |
  |              |         CLOSING       |          |
  |              |   R: FIN   |  R:ACK   |          |
  |              |----------->|--------->|          |
  |              |   S: ACK   |          |          |
  |                                                 |
  |                                                 |
  |-------------------- PASSIVE --------------------|
  |                                                 |
  |          CLOSE_WAIT     LAST_ACK                |
  |              |              |                   |
  |    R: FIN    |              |      R: ACK       |
  |------------->|------------->|------------------>|
  |    S: ACK    |    S: FIN    |                   |
  |              |              |                   |

  • ACTIVE - 主动方
  • PASSIVE - 被动方
  • CLOSED - 关闭态
  • ESTABLISH - 连接态
  • FIN_WAIT_1 - 主动发送FIN
  • CLOSE_WAIT - 收到FIN,并发送ACK
  • FIN_WAIT_2 - 主动发送FIN后,并接收到ACK
  • LAST_ACK - 被动方进入CLOSE_WAIT后,再次发送FIN
  • CLOSING - 当发出FIN的时候同时收到FIN,则进入CLOSING态(同时关闭)
  • TIME_WAIT - 等待结束态
  • 2MSL - 2倍报文最大生存时间,为什么需要2倍,因为当被动方发现收不到ACK,则会重发FIN,因此需要等待2倍MSL来预留需要再次发送ACK的时间
  • 四次握手:主动方发送FIN -> 被动方接收FIN,并发送ACK -> 被动方发送FIN -> 主动方接收FIN,并发送ACK

其他

另外,分享一篇文章《TCP 那些事

相关文章

  • TCP状态装换图知识详解(图)

    TCP状态装换图 [TOC] 状态图 状态解释 tcp连接的建立3次握手 tcp断开连接4次挥手 TCP正常连接建...

  • tcp三次握手四次挥手

    tcp三次握手四次挥手 TCP状态图 TCP状态时序图 tcp三次握手 流程图: TCP握手状态说明: TCP_S...

  • TCP状态图

    在使用netstat发现有个State字段,于是脑补了下,发现水还是蛮深的,以前只了解三次握手、四次握手,并没有了...

  • TCP状态图

  • TCP状态图解

    原文链接TCP状态

  • TCP状态图

    1、服务端并不知道是否有客户端发起连接请求,所以调用accept()可以出现在任何阶段,如果有完成三次握手的连接则...

  • 2020-05-04 基础知识和网络传输协议

    TCP tcp是一种全双工链接,tcp的建连时是三次握手:client端和server端: 状态图: 在断连的时候...

  • TCP/IP状态图理解

    TCP/IP一直是一知半解的,这段时间终于是看了有关知识的,然后被里面的各种概念给搞的很糊涂,仅以此篇文章记录我对...

  • UML建模之状态图(Statechart Diagram)

    一、状态图简介(Brief introduction) 状态图(Statechart Diagram)主要用于描述...

  • uml设计

    如何绘制状态图

网友评论

      本文标题:TCP状态图

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