0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TCP状态流转图详解

麦辣鸡腿堡 来源:盼盼编程 作者:盼盼编程 2023-10-08 17:11 次阅读

接下来再看一下著名的 TCP 状态流转图。

图片

CLOSED状态:表示初始状态。

LISTEN状态:表示服务器端的某个 socket 处于监听状态,可以接受连接。

SYN_SENT状态:在服务端监听后,客户端 socket 执行 CONNECT 连接时,客户端发送 SYN 报文,此时客户端就进入 SYN_SENT
状态,等待服务端的确认。

SYN_RCVD状态:表示服务端接收到了SYN 报文,在正常情况下,这个状态是服务器端的 socket 在建立 TCP连接时的三次握手会话过程中的一个中间状态,很短暂,基本上用网络查询工具 netstat 是很难看到这种状态的。因此这种状态时,当收到客户端的 ACK报文后,它会进入到 ESTABLISHED 状态。

ESTABLISHED状态:表示连接已经建立了。

FIN_WAIT_1状态:这个是已经建立连接之后,其中一方请求终止连接,等待对方的 FIN 报文 。

FIN_WAIT_1 状态是当 socket 在 ESTABLISHED 状态时,它想主动关闭连接,向对方发送了 FIN 报文,此时该 socket即进入到 FIN_WAIT_1 状态。而当对方回应 ACK 报文后,则进入到 FIN_WAIT_2 状态。

当然在实际的正常情况下,无论对方处于何种情况,都应该马上回应 ACK 报文,所以 FIN_WAIT_1 状态一般是比较难见到的,而FIN_WAIT_2 状态还可以用 netstat 看到。

FIN_WAIT_2状态:实际上 FIN_WAIT_2 状态下的 socket,表示半连接,即有一方要求关闭连接,但另外还告诉对方:我暂时还有点数据需要传送给你,请稍后关闭连接。

TIME_ WAIT状态:表示收到了对方的 FIN 报文,并发送出了 ACK 报文,就等 2MSL 后即可回到 CLOSED 可用状态了。如果在FIN_WAIT_1 状态下,收到了对方同时带 FIN 标志和 ACK 标志的报文时,可以直接进入到 TIME_WAIT 状态,而无需经过 FIN_WAIT_2状态。

CLOSING状态:这种状态比较特殊,实际情况中应该是很少见。正常情况下,当发送 FIN 报文后,按理来说是应该先收到(或同时收到)对方的ACK报文,再收到对方的 FIN 报文 。但是 CLOSING 状态表示你发送 FIN 报文后,并没有收到对方的 ACK 文,反而收到了对方的 FIN 报文。

如果双方几乎在同时关闭一个 socket 的话,那么就出现了双方同时发送 FIN 报文的情况,就会出现 CLOSING 状态,表示双方都正在关闭
socket 连接。

CLOSE_WAIT状态:表示在等待关闭。当对方关闭一个 socket 后发送 FIN 报文给自己时,系统将毫无疑问地会回应 ACK报文给对方,此时则进入到 CLOSE_WAIT 状态。

接下来呢,实际上你真正需要考虑的事情是察看你是否还有数据发送给对方,如果没有,那么你也就可以关闭这个socket了,发送 FIN报文给对方,即关闭连接 。CLOSE _WAIT 状态下,需要完成的事情是等待你去关闭连接。

LAST_ACK状态:这个状态还是比较好理解的,它是被动关闭 方在发送 FIN 报文后,最后等待对方的 ACK 报文。

CLOSED状态:当收到 ACK 报文后,也即可以进入到 CLOSED 可用状态了。

2MSL 等待状态:在 FIN_WAIT_2 发送了最后一个 ACK 数据报以后,要进入 TIME_WAIT
态,这个状态是防止最后一次握手的数据报没有传送到对方那里而准备的。

由于 socket 2MSL 状态,使得应用程序在 2MSL 时间内无法再次使用同一个 socket ,对于客户程序还好些,但是对于服务程序(httpd),它总是要使用同一个端口来进行服务,而在 2MSL 时间内,启动 httpd 就会出现错误(插口被使用)。

为了避免这个错误,服务器给出了一个平静时间的概念,这是说在 2MSL的时间内,虽然可以重新启动服务器,但是这个服务器还是要平静地等待 2MSL的时间才能进行下一次连接。

FIN WAIT_2 状态:这就是著名的半关闭状态了,这是在关闭连接时,客户端和服务器两次握手之后的状态 。

在这个状态下,应用程序还有接收数据的能力。已经无法发送数据,但是也有一种可能是,客户端处于FIN_WAIT_2 状态,而服务器则一直处于WAIT_CLOSE 状态,直到应用层来决定关闭这个状态。

RST 同时打开和同时关闭:RST 是另一种关闭连接的方式,应用程序应该可以判断RST 包的真实性,即是否为异常中止而同时打开和同时关闭则是两种特殊的 TCP 状态,发生的概率很小。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    8116

    浏览量

    82511
  • 网络
    +关注

    关注

    14

    文章

    7251

    浏览量

    87441
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1271

    浏览量

    78297
  • 连接
    +关注

    关注

    2

    文章

    91

    浏览量

    20813
收藏 人收藏

    评论

    相关推荐

    TCP-IP详解

    Stevens关于TCP/IP的经典著作(共3卷)的中译本。其中的卷3:《TCP/IP详解 卷3:TCP事务协议、HTTP、NNTP、UNIX域协议》。  
    发表于 08-08 17:30

    TCP-IP详解_卷3_TCP事务协议,HTTP,NNTP

    TCP-IP详解_卷3_TCP事务协议,HTTP,NNTP和UNIX域协议》
    发表于 03-24 22:42 39次下载

    TCP-IP详解_卷1_协议》

    TCP-IP详解_卷1_协议》
    发表于 03-24 22:45 50次下载

    TCPv3-TCP-IP详解

    TCPv3-TCP-IP详解.rar 第1章T/TCP 概述1.1 概述本章首先介绍客户-服务器事务概念。我们从使用U D P的客户-服务器应用开始,这是最简单的情形。接着我们编
    发表于 03-16 14:56 17次下载

    tcp ip协议详解卷三 下载

    tcp ip协议详解卷三:第三卷的内容细节覆盖了当今TCP/IP编程人员和网络管理员必须熟练掌握的四个基本方面:    T/TCP (
    发表于 05-19 11:52 437次下载
    <b class='flag-5'>tcp</b> ip协议<b class='flag-5'>详解</b>卷三 下载

    tcp ip协议详解卷一

    tcp ip协议详解卷一:《TCP/IP详解,卷1:协议》是一本完整而详细的TCP/IP协议指南。描述了属于每一层的各个协议以及它们如何在不
    发表于 05-19 12:02 711次下载

    TCP-IP详解卷2_插口选项

    学习TCP很好的资料,电子书:TCP-IP详解卷2 。
    发表于 05-09 14:33 0次下载

    TCP-IP详解卷2_插口层

    学习TCP很好的资料,电子书:TCP-IP详解卷2 。
    发表于 05-09 14:33 0次下载

    TCP-IP详解卷2_域和协议

    学习TCP很好的资料,电子书:TCP-IP详解卷2 。
    发表于 05-09 14:33 0次下载

    TCP-IP详解卷2部分习题的解答

    学习TCP很好的资料,电子书:TCP-IP详解卷2 。
    发表于 05-09 14:33 0次下载

    TCP实现:TCP概要

    学习TCP-IP的很好的书。TCP-IP详解卷3。
    发表于 05-09 16:07 0次下载

    TCP实现:TCP函数

    学习TCP-IP的很好的书。TCP-IP详解卷3。
    发表于 05-09 16:07 0次下载

    TCP-IP详解卷1附录D_部分习题解答

    学习TCP-IP的很好的书。TCP-IP详解卷1。
    发表于 05-11 16:26 0次下载

    TCP IP协议有什么样的状态

    首先介绍一下TCP连接建立与关闭过程中的状态TCP连接过程是状态的转换,促使状态发生转换的因素包括用户调用、特定数据包以及超时等,具体
    的头像 发表于 02-24 14:31 2960次阅读
    <b class='flag-5'>TCP</b> IP协议有什么样的<b class='flag-5'>状态</b>

    TCP状态机设计与实现

    TCP状态机是TCP连接的变化过程。TCP在三次握手和四次挥手的过程,就是一个TCP状态说明,
    的头像 发表于 04-21 11:47 1146次阅读
    <b class='flag-5'>TCP</b><b class='flag-5'>状态</b>机设计与实现