`

TCP状态转换图

阅读更多
    TCP 涉及连接建立和终止的操作可用如下的状态转换图来说明。

    TCP 为一个连接定义了 11 种状态,这些状态可使用 netstat 显示,并且 TCP 规则规定如何基于当前状态及在该状态下所接收的分节从一个状态转换到另一种状态。比如,当某个应用进程在 CLOSED 状态下执行主动打开时,TCP 将发送一个 SYN,且新的状态是 SYN_SENT。如果这个 TCP 接着接收到一个带 ACK 的 SYN,它将发送一个 ACK,且新的状态是 ESTABLISHED。这个最终状态是绝大多数数据传送发生的状态。自 ESTABLISHED 状态引出的两个箭头处理连接的终止。如果某个应用进程在接收到一个 FIN 之前调用 close(主动关闭),那就转换到 FIN_WAIT_1 状态。但如果某个应用进程在 ESTABLISHED 状态期间接收到一个 FIN(被动关闭),那就转换到 CLOSE_WAIT 状态。
    下图展示一个完整的 TCP 连接所发生的实际分组交换情况,包括连接建立、数据传送和连接终止 3 个阶段,以及每个端点所历经的 TCP 状态。本例中的客户通告一个值为 536 的 MSS(表明该客户只实现了最小重组缓冲区大小),服务器通告一个值为 1460 的 MSS(以太网上 IPv4 的典型值),不同方向上的 MSS 值可以不相同。

    图中有个 TIME_WAIT 状态,一般执行主动关闭的那端在该状态的持续时间是 2MSL(maximum segment liftime, MSL),即 1 分钟到 4 分钟之间(RFC 1122 建议 MSL 值是 2 分钟,而源自 Berkeley 的实现传统上改用 30 秒)。MSL 是任何 IP 数据报能够在因特网中存活的最长时间。该值是有限的,因为每个数据报都含有一个称为跳限(hop limit)的 8 位字段,其最大值为 255。尽管这是一个跳数限制而非真正的时间限制,不过我们仍然假设:具有最大跳限的分组在网络中存在的时间不可能超过 MSL 秒。TIME_WAIT 状态有两个存在的理由:
    1、可靠地实现 TCP 全双工连接的终止。
    2、允许老的重复分节在网络中消逝。
    第一个理由可假设丢失了上图中的最后一个 ACK 来解释。此时服务器将重新发送它的那个 FIN,因此客户必须维护状态信息,以允许它重发最终那个 ACK,否则它将相应以一个 RST,该分节将被服务器解释成一个错误。若 TCP 要彻底执行全双工关闭,则必须正确处理连接终止序列 4 个分节中的任何一个丢失的情况。本例子也说明了处于 TIME_WAIT 状态的是执行主动关闭的那一端的原因,因为可能不得不重传最终那个 ACK 的就是那一端。
    而对于第二个理由,我们可假设打算先正常关闭一个连接,之后再在同一个套接字上重新建立一个连接(后一个连接称为前者的化身(incarnation))。TCP 必须防止来自某个连接的老的重复分组在该连接已终止后再现。为此,TCP 将不给处于 TIME_WAIT 状态的连接发起新的化身。既然 TIME_WAIT 状态的持续时间是 2MSL,那就足以让某个方向上的分组最多存活 MSL 秒即被丢弃,另一个方向上的应答也最多存活 MSL 秒。因此就能保证每成功建立一个 TCP 连接时,来自该连接向前化身的重复分组都已在网络中消逝了(不过有一个例外:如果到达的 SYN 的序列号大于前一个化身的结束序列号,源自 Berkeley 的实现将给当前处于 TIME_WAIT 状态的连接启动新的化身。它要求服务器执行主动关闭,因为接收下一个 SYN 的那一端必须处于 TIME_WAIT 状态)。
  • 大小: 56.2 KB
  • 大小: 41.1 KB
分享到:
评论

相关推荐

    TCP状态转换图1

    本文将详细阐述TCP状态转换图中的关键状态,主要关注三次握手和四次挥手过程。 首先,TCP连接的建立过程,也就是著名的三次握手: 1. **CLOSED**: 所有连接的起始和结束状态,表示没有任何连接活动。 2. **LISTEN*...

    TCP状态转换图详解.pdf

    TCP状态转换图详解.pdf

    TCP网络关闭的状态变换时序图

    TCP共有11个网路状态,其中涉及到关闭的状态有5个。 在我们编写网络相关程序的时候,这5个状态经常出现。因为这5个状态相互关 联,相互纠缠,... 下是是根据W.Richard Stevens的《TCP/IP详解》一书的TCP状态转换图。

    TCP协议状态图

    用VISSO画的TCP协议状态图,用于表示TCp的状态的转换.

    tcp状态转换

    tcp状态图,高清,可以收藏多年。

    tcp-词典 for linux

    7. **TCP状态转换图**:展示TCP连接从建立到结束期间经历的各种状态,如CLOSED、LISTEN、SYN_SENT、SYN_RECEIVED、ESTABLISHED等。 8. **应用层协议与TCP的交互**:如HTTP、FTP、SMTP等如何利用TCP进行数据传输。 ...

    f5 会话处理流程描述(参数说明)及q&a_0120资料.pdf

    一、TCP 状态转换图 在 F5 会话处理流程中,TCP 状态转换图是非常重要的一部分。 TCP 状态转换图描述了客户端与服务器之间的连接建立和终止过程。 1. 建立连接协议(三次握手) * 客户端发送一个带 SYN 标志的 ...

    tcp.rar_tcp类

    七、TCP状态转换图 TCP连接有多种状态,如CLOSED、LISTEN、SYN_SENT、SYN_RECEIVED、ESTABLISHED、FIN_WAIT_1、FIN_WAIT_2、CLOSE_WAIT、CLOSING、LAST_ACK、TIME_WAIT等。理解这些状态和它们之间的转换对于诊断TCP...

    TCP状态变迁图-描述各个状态之间变迁

    以下将详细解析TCP状态变迁图及其各个状态之间的转换。 1. **CLOSED**: 这是TCP连接的初始状态,表示连接未建立,没有活动的数据传输。 2. **LISTEN**: 当一个服务器端进程准备接收客户端连接请求时,它会进入...

    TCP状态转换 作者文章电子版 需要的下载

    TCP的状态转换图是理解TCP工作原理的重要工具,它详细描绘了两个通信端点之间的连接建立、数据交换和连接关闭的整个过程。下面我们将详细探讨TCP状态转换的各个阶段。 1. **CLOSED**: 这是TCP连接的初始和最终状态...

    TCP-IP详解前2卷高清版

    8. **TCP状态转换图**:描述TCP连接在不同状态之间的转换,如SYN_SENT、ESTABLISHED、FIN_WAIT_2等。 9. **DNS域名系统**:解析域名与IP地址的对应关系,包括DNS查询和应答的过程。 卷二《TCP/IP详解:实现》则...

    TCP/IP(下)

    #### 九、TCP状态转换图 - **客户端路径**:正常情况下客户端发起连接的过程。 - **服务器端路径**:正常情况下服务器响应客户端的过程。 - **不常见事件**:如超时、异常断开等情况下的状态转换。 #### 十、确认重...

    TCPIP状态转换图.vsdx

    博客《TCP/IP 状态转换图》中图片的原版文档,网址:https://blog.csdn.net/itworld123/article/details/102927949 。

    13、第六单元-传输层v21

    【TCP状态转换图】描述了TCP连接在不同阶段的状态变化,包括CLOSED、LISTEN、SYN_SENT、SYN_RECEIVED、ESTABLISHED、FIN_WAIT_1、FIN_WAIT_2、CLOSE_WAIT、CLOSING、LAST_ACK和TIME_WAIT等状态,展示了TCP连接建立、...

    Qt TCP通信发送图片

    首先,创建一个`QTcpSocket`对象,并连接其信号到相应的槽函数,以便处理连接状态改变、数据接收等事件。例如: ```cpp QTcpSocket *socket = new QTcpSocket(this); connect(socket, &QTcpSocket::connected, this...

    Basic unix socket programming

    ### TCP状态转换图 TCP连接的状态转换图展示了从建立连接到关闭连接的过程,包括LISTEN、SYN_SENT、SYN_RCVD、ESTABLISHED、FIN_WAIT_1、FIN_WAIT_2、TIME_WAIT、CLOSE_WAIT、LAST_ACK和CLOSED等状态。 ### UDP缓冲...

    计算机网络备战面试笔记1

    3. **TCP状态转换图**:TCP连接的建立和关闭涉及多个状态,包括CLOSED、LISTEN、SYN_SENT、SYN_RECEIVED、ESTABLISHED、FIN_WAIT_1、FIN_WAIT_2、CLOSE_WAIT、CLOSING、LAST_ACK和TIME_WAIT。这些状态代表了连接的...

    13、第六单元-传输层1

    6. **TCP状态转换图**: 描述了TCP连接从建立到结束期间可能经历的各种状态,如SYN_SENT、SYN_RCVD、ESTABLISHED、FIN_WAIT_1、FIN_WAIT_2、CLOSE_WAIT、CLOSING、LAST_ACK和TIME_WAIT等。 7. **TCP滑动窗口**: ...

Global site tag (gtag.js) - Google Analytics