TCP传输连接有限状态机转换机制

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介:

 10.3.5 TCP连接的状态转移

   从表10-6中可以看出,TCP Socket服务原语只有8个,比OSI/RM中定义的传输层服务原语还要少,但是在这8TCP Socket服务原语中,有的原语又可以有不同的状态,如表10-8所示。我们把在TCP传输连接的建立和释放中的通信双方主机的这些状态称之为“有限状态机”(Finite State MachineFSM)。下面我们来具体阐述一下在TCP传输连接建立、释放过程中这些原语状态的变化。

10-8  TCP连接状态

 

 

CLOSED

呈阻塞、关闭状态,表示主机当前没有活动的传输连接或正在进行传输连接

LISTEN

呈监听状态,表示服务器正在等待新的传输连接进入

SYN RCVD

表示主机已收到一个传输连接请求,但尚未确认

SYN SENT

表示主机已经发出一个传输连接请求,等待对方确认

ESTABLISHED

传输连接建立,通信双方进入正常数据传输状态

FIN WAIT 1

(主动关闭)主机已经发送关闭连接请求,等待对方确认

FIN WAIT 2

(主动关闭)主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求

TIMED WAIT

完成双向传输连接关闭,等待所有分组消失

CLOSING

双方同时尝试关闭传输连接,等待对方确认

CLOSE WAIT

(被动关闭)收到对方发来的关闭传输连接请求,并已确认

LAST ACK

(被动关闭)等待最后一个关闭传输连接确认,并等待所有分组消失

    图10-37描述了TCP通信主机在传输连接建立和释放过程中的各种有限状态机,图中的方框中表示的是通信主机在不同时期的状态,箭头表示状态之间的转换,旁边的注释表示状态转换过程中所需进行动作(包括调用Socket服务原语和TCP数据段的发送和接收等)。图中用粗线表示客户端主动和被动的服务器端连接建立的正常过程,其中客户端的状态转移用带箭头的粗实线表示,服务器端的状态转换用带箭头的粗虚线表示。带箭头的细线表示一些不常见的事件,如复位、同时打开、同时关闭等。

10-37  TCP传输连接有限状态机转换流程

    每个连接均开始于 CLOSED 状态。当一方执行了被动的连接原语(LISTEN )或主动的连接原语( CONNECT)时,它便会离开CLOSED状态。如果此时另一方执行了相对应的连接原语,连接便建立了,并且状态变为ESTABLISHED 。任何一方均可以首先请求释放连接,当连接被释放后,状态又回到了CLOSED 

   为了看清楚客户端和服务器各自的状态转移流程,我们先沿着带箭头的粗实线路径来看客户端的状态转移过程,然后再沿着带箭头的虚实线路径来看服务器的状态转移过程。  

   (1)一开始,服务器应用层首先调用LISTEN原语从CLOSED状态进入被动打开状态(LISTEN ),等待客户端的连接;

   (2)当客户端的一个应用程序调用CONNECT原语后,本地的TCP实体为其创建一个连接记录并标记为SYN SENT状态,然后给服务器发送一个SYN数据段(SYN字段置1)。这是TCP传输连接建立的第一次握手。

   (3)服务器在收到一个客户端的SYN数据段后,其TCP实体给客户端发送确认ACK数据段(ACK字段置1),同时发送一个SYN数据段(SYN字段置1,表示接受同步请求),进入SYN RCVD状态。这是TCP传输连接的第2次握手。

   【说明】这里可能有一个非正常事件发生,那就是如果此时服务器不想建立传输连接,由其应用层调用CLOSE原语,向客户端发送一个FIN数据段(FIN字段置1),然后进入到FIN WAIT 1状态,等待客户端确认。当客户端收到服务器发来的FIN数据段后,向服务器发送一个ACK确认数据段后进入到CLOSING状态,表示双方同时尝试关闭传输连接,等待对方确认。在服务器收到客户端发来的ACK数据段后即进入到TIMED WAIT状态,在超时后双方即关闭连接。这是一种突发、非正常的连接关闭事件。

   (4)客户端在收到服务器发来的SYNACK数据段后,其TCP实体给服务器端发送一个ACK数据段,并进入ESTABLISHED状态。这是TCP连接的第3次握手。

   (5)服务器在收到来自客户端的ACK确认数据段后,完成整个TCP传输连接的全部三次握手过程,也进入ESTABLISHED状态。

   此时,双方可以自由进行数据传输了。当一个应用程序完成数据传输任务后,它需要关闭TCP连接。假设仍由客户端发起主动关闭连接。

   (6)客户端应用层调用CLOSE原语,本地的TCP实体发送一个FIN数据段(FIN字段置1),并等待服务器的确认响应,进入到FIN WAIT 1状态。

    【说明】这里又可能有一个非正常的事件发生,那就是客户端在FIN WAIT 1状态收到服务器的FINACK数据段后(而不是像从FIN WAIT 2状态进入那样只收到服务器的ACK确认数据段),向服务器发送一个ACK数据段,直接就进入了TIMED WAIT状态。在超时后双方即关闭连接。

   (7)服务器在收到来自客户端的FIN数据段后,它给客户端发回一个ACK数据段(ACK字段置1)进入CLOSE WAIT状态。

   (8)客户端在收到来自服务器的ACK确认数据段后就进入到了FIN WAIT 2状态,此时连接在一个方向上就断开了,但仍可以接收服务器端发来的数据段。

   (9)当服务器收到客户端发来的FIN数据段时就知道客户端已有数据发送了,在本端已接收完全部的数据后,也由应用层调用CLOSE原语,请求关闭另一个方向的连接,其本地TCP实体向客户端发送一个FIN数据段,并进入LAST ACK状态,等待最后一个ACK确认数据段。

   (10)在客户端收到来自服务器的FIN数据段后,向服务器发送最后一个ACK确认数据段,进入TIMED WAIT状态。此时双方连接均已经断开,但TCP实体仍要等待一个2倍数据段MSLMaximum Segment Lifetime,最大数据段生存时间),以确保该连接的所有分组全部消失,防止出现确认丢失的情况。当定时器超时后,TCP删除该连接记录,返回到初始状态(CLOSED )。

   (11)服务器收到客户端最后一个ACK确认数据段后,其TCP实体便释放该连接,并删除连接记录,也返回到初始状态(CLOSED)。

   注:以上内容摘自新书《深入理解计算机网络》中,目前该书已可以京东网、卓越网、当当网上全面预订,并全部附有完整的目录信息(京东网上将于本月25号首先到货)。

 

京东网上的链接:http://book.360buy.com/11165825.html

卓越网上的链接:http://www.amazon.cn/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C-%E7%8E%8B%E8%BE%BE/dp/B00B0S7LDU/ref=sr_1_1?s=books&ie=UTF8&qid=1358153421&sr=1-1

当当网上的链接:http://product.dangdang.com/main/product.aspx?product_id=23166396

本文转自王达博客51CTO博客,原文链接http://blog.51cto.com/winda/1121078如需转载请自行联系原作者


茶乡浪子

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
11天前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
46 3
|
22天前
|
网络协议 算法 网络性能优化
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
|
域名解析 缓存 网络协议
传输方式的分类【图解TCP/IP(笔记五)】
传输方式的分类【图解TCP/IP(笔记五)】
226 0
|
缓存 网络协议 算法
四十一、TCP可靠传输、流量控制、拥塞控制
四十一、TCP可靠传输、流量控制、拥塞控制
四十一、TCP可靠传输、流量控制、拥塞控制
|
缓存 网络协议 网络架构
四十、TCP协议的特点、TCP报文段格式和TCP的连接管理
四十、TCP协议的特点、TCP报文段格式和TCP的连接管理
四十、TCP协议的特点、TCP报文段格式和TCP的连接管理
|
网络协议
计算机网络学习27:TCP连接与连接释放
客户端和服务端都是先建立传输控制模块
计算机网络学习27:TCP连接与连接释放
|
缓存 网络协议 算法
计算机网络学习26:TCP/UDP对比区别、TCP流量控制、拥塞控制、超时重传时间的选择、可靠传输的实现
UDP: User Datagram Protocol 用户数据报协议 TCP: Transmission Control Protocol 传输控制协议 同时这里指的连接是指逻辑连接,而不是物理连接。
计算机网络学习26:TCP/UDP对比区别、TCP流量控制、拥塞控制、超时重传时间的选择、可靠传输的实现
|
缓存 网络协议 Java
在项目中使用Curator的Java 客户端搭建后进行长TCP连接和TCP权限配置【Zookeeper】
在项目中使用Curator的Java 客户端搭建后进行长TCP连接和TCP权限配置【Zookeeper】
292 0
在项目中使用Curator的Java 客户端搭建后进行长TCP连接和TCP权限配置【Zookeeper】
|
网络协议
Netty之第一次 TCP 连接时发生了什么
Netty之第一次 TCP 连接时发生了什么
178 0
|
网络协议