`

TCP状态转移

 
阅读更多

TCP状态转移,一共存在11个状态,请看下图

1.CLOSED:起始点,在超时或者连接关闭时候进入此状态。

 

2.LISTEN:svr端在等待连接过来时候的状态,svr端为此要调用socket, bind,listen函数,就能进入此状态。此称为应用程序被动打开(等待客户端来连接)。

 

3.SYN_SENT:客户端发起连接,发送SYN给服务器端。如果服务器端不能连接,则直接进入CLOSED状态。

 

4.SYN_RCVD:跟3对应,服务器端接受客户端的SYN请求,服务器端由LISTEN状态进入SYN_RCVD状态。同时服务器端要回应一个ACK,同时发送一个SYN给客户端;另外一种情况,客户端在发起SYN的同时接收到服务器端得SYN请求,客户端就会由SYN_SENT到SYN_RCVD状态。

 

5.ESTABLISHED:服务器端和客户端在完成3次握手进入状态,说明已经可以开始传输数据了。

 

以上是建立连接时服务器端和客户端产生的状态转移说明。相对来说比较简单明了,如果你对三次握手比较熟悉,建立连接时的状态转移还是很容易理解。

 

接下来服务器端和客户端就进行数据传输。。。。,当然,里面也大有学问,就此打住,稍后再表。

 

下面,我们来看看连接关闭时候的状态转移说明,关闭需要进行4次双方的交互,还包括要处理一些善后工作(TIME_WAIT状态),注意,这里主动关闭的一方或被动关闭的一方不是指特指服务器端或者客户端,是相对于谁先发起关闭请求来说的:

 

6.FIN_WAIT_1:主动关闭的一方,由状态5进入此状态。具体的动作时发送FIN给对方。

 

7.FIN_WAIT_2:主动关闭的一方,接收到对方的FIN ACK,进入此状态。由此不能再接收对方的数据。但是能够向对方发送数据。

 

8.CLOSE_WAIT:接收到FIN以后,被动关闭的一方进入此状态。具体动作时接收到FIN,同时发送ACK。

 

9.LAST_ACK:被动关闭的一方,发起关闭请求,由状态8进入此状态。具体动作时发送FIN给对方,同时在接收到ACK时进入CLOSED状态。

 

10.CLOSING:两边同时发起关闭请求时,会由FIN_WAIT_1进入此状态。具体动作是,接收到FIN请求,同时响应一个ACK。

 

11.TIME_WAIT:最纠结的状态来了。从状态图上可以看出,有3个状态可以转化成它,我们一一来分析:

 

a.由FIN_WAIT_2进入此状态:在双方不同时发起FIN的情况下,主动关闭的一方在完成自身发起的关闭请求后,接收到被动关闭一方的FIN后进入的状态。

 

b.由CLOSING状态进入:双方同时发起关闭,都做了发起FIN的请求,同时接收到了FIN并做了ACK的情况下,由CLOSING状态进入。

 

c.由FIN_WAIT_1状态进入:同时接受到FIN(对方发起),ACK(本身发起的FIN回应),与b的区别在于本身发起的FIN回应的ACK先于对方的FIN请求到达,而b是FIN先到达。这种情况概率最小。

 

关闭的4次连接最难理解的状态是TIME_WAIT,存在TIME_WAIT的2个理由:

 

1.可靠地实现TCP全双工连接的终止。

 

2.允许老的重复分节在网络中消逝。

  • 大小: 33.5 KB
分享到:
评论

相关推荐

    Linux高性能服务器编程清晰PDF+源码

    3.4.1 TCP状态转移总图 3.4.2 TIME_WAIT状态 3.5 复位报文段 3.5.1 访问不存在的端口 3.5.2 异常终止连接 3.5.3 处理半打开连接 3.6 TCP交互数据流 3.7 TCP成块数据流 3.8 带外数据 3.9 TCP超时...

    Linux高性能服务器编程

    3.2.3 使用tcpdump观察TCP头部信息 3.3 TCP连接的建立和关闭 3.3.1 使用tcpdump观察TCP连接的建立和关闭 3.3.2 半关闭状态 3.3.3 连接超时 3.4 TCP状态转移 3.4.1 TCP状态转移总图 3.4.2 TIME_WAIT状态 3.5...

    车载通信网中基于跨层的TCP拥塞控制机制 (2011年)

    本文针对车载通信网的特点,首先分析传统TCP在VANET环境下存在的问题,给出四状态转移图,在此基础上提出一种新的基于跨层设计的TCP拥塞控制机制:VC-TCP。通过向传输层提供有用的路由信息及车辆运动信息,预测分组...

    基于状态相关字段识别的未知二进制协议状态机逆向方法* (2015年)

    针对截获的未知二进制协议的通信数据,提出了一种二进制协议状态机逆向方法,该方法能够根据通信数据逆构协议状态转移图。在该方法中,设计了针对通信数据帧的基于多序列比对的对应字段对齐算法以及基于字段统计量...

    雨林木风工具箱终结版

    个人资料转移器.exe——转移我的文档、桌面、Cookies、虚拟内存等到D盘 恢复WinXP默认服务.bat——将XP的系统服务恢复到默认状态 驱动精灵2006.exe——备份和还原本机硬件驱动 系统服务备份恢复.exe——设置、...

    高可用推送集群Quick-Know.zip

    易部署使用Etcd做故障转移及配置文件的分享多数据库支持默认MongoDB提供快速的离线消息存储基于Mqtt协议的推送多个App用户每个App下可以拥有多个Client支持对App内所用用户广播消息支持对App内用户私信推送支持App内...

    网络安全技术习题库..doc

    攻击者不易转移证据 C. 容易处理加密的会话过程 D. 检测速度快 19. 下面不属于入侵检测系统分类的是( )。 A. 基于主机型入侵检测系统 B. 基于网络型入侵检测系统 C. 基于代理型入侵检测系统 D. 基于病毒型入侵检测...

    worker:工人源代码分析与解释

    6,了解tcp,udp,ip,了解应用层,传输层,数据传输层【网卡驱动原理】,ARP这些,了解tcp和udp的区别,了解tcp和udp连接时的状态转移情况,了解如何抓包,如何监听tcp数据包传输,了解相关的socket api 7,了解...

    GroupData:使用JGroup实现分布式数据结构(堆栈和集合)

    这些复制的数据结构将使用状态转移来处理新成员加入的情况,并使用消息传递功能来广播最近执行的操作。 建筑学 下图描述了在我们的复制数据结构生命周期中执行的活动。 解释: 首先,刚创建的数据结构连接到其...

    网络编程教程,很好的一本写linux网络编程书,这是我上传的源码

     3.4.4 TCP连接的状态转移过程  3.5 IP数据包格式  3.6 Internet消息控制协议  本章小结 第二篇 初级应用篇  第四章 基本套接字编程实践  4.1 基本套接字函数族  4.1.1 socket编程的基本流程 ...

    lksctp-rs:Rust 的 Linux 内核 SCTP 低级绑定

    lksctp-rs Rust 绑定到 Linux 内核的 ... 端点的多宿主:一个端点可以有多个 IP 地址,允许网络故障转移/可靠性(注意:它需要是一台机器,或者复制端点的状态信息,这可能很难)。 消息边界的保留:如果您发现自己编

    dnslb:具有healtchecks的DNS服务器

    平衡许多客户端时,没有源端口耗尽某些实现(例如F5 NAT负载平衡)可能每秒大约有6k个connectios问题,这与TIME_WAIT和类似的TCP状态处理有关。 没有其他NAT问题(隐藏客户端IP地址,不对称路由等)。 没有二级...

    introductionToAlgorithms

    最短路径,深度搜索(完成一题),光度搜索(进行中))动态规划(需要多尝试一些场景,遇见更多的转移方程)贪心算法并查集 lru,lfu网路http基本握手讲解(完成) https讲解http2 网络套接字tcp / udp(tcp / ip...

    IPv6详解[中文高清]

    第2章 TCP/IP网络互联简介 8 2.1 网络互联问题 8 2.2 分层网络互联模型 9 2.2.1 OSI模型 10 2.2.2 Internet模型 10 2.2.3 封装 11 2.3 IP 12 2.3.1 IP寻址 13 2.3.2 IP头 15 2.3.3 数据报的转移 17 2.4 ICMP 18 2.5 ...

    IPv6详解

    TCP/IP网络互联简介 8 2.1 网络互联问题 8 2.2 分层网络互联模型 9 2.2.1 OSI模型 10 2.2.2 Internet模型 10 2.2.3 封装 11 2.3 IP 12 2.3.1 IP寻址 13 2.3.2 IP头 15 2.3.3 数据报的...

    雨杰网络工具箱6.0

    资料转移 = 转移我的文档、桌面、Cookies、虚拟内存等到D盘 服务备份恢复 = 设置、备份、还原本机系统服务状态 驱动精灵2006 = 备份和还原本机硬件驱动 恢复默认服务 = 将XP的系统服务恢复到默认状态 杀毒防毒 ...

    IPV6 ip 详解

    第2章 TCP/IP网络互联简介 8 2.1 网络互联问题 8 2.2 分层网络互联模型 9 2.2.1 OSI模型 10 2.2.2 Internet模型 10 2.2.3 封装 11 2.3 IP 12 2.3.1 IP寻址 13 2.3.2 IP头 15 2.3.3 数据报的转移 17 2.4 ICMP 18 2.5 ...

    OSEICQ即时通讯软件(开源例子)

    不参与客户之间的信息交换(类似BT),服务器可以为分布式集群,如果数据库为SQL SERVER 2000以上版本可以使用故障转移(负载均衡)大大增强服务端的并发和负载,服务端用户登录数并发为1秒300。 服务器负载说明: ...

    雨林木风工具箱3.6 Single[正式版]

    个人资料转移器.exe——转移我的文档、桌面、Cookies、虚拟内存等到D盘 恢复WinXP默认服务.bat——将XP的系统服务恢复到默认状态 驱动精灵2006.exe——备份和还原本机硬件驱动 系统服务备份恢复.exe——设置、...

Global site tag (gtag.js) - Google Analytics