`
wangleide414
  • 浏览: 590641 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

TCP状态变化总结

 
阅读更多

在开发和维护过程中总是离不开网络,网络几乎总是离不开TCP的知识。

经过平时的实践和看书的收获。

在这里总结一下TCP协议的各个状态的含义。

ps: 通过netstat 命令可以看到当前TCP所处于的状态。

一、 网上的一张TCP状态变迁图如下,它描述了所有的TCP状态已经可能的状态变化。

二、可以分成服务器和客户端来描述TCP状态的变化。

三、服务器端调用listen系统调用后处于 LISTEN状态。此时等待客户端主动连接的到来。

四、当服务器端接受到客户端的SYN连接报文,并且回复了SYN的确认(ACK)报文后就变为SYN RCVD状态。表示客户端来的SYN已经接收到。

五、在四的基础上,服务端收到刚才确认的确认报文后就进入ESTABLISHED状态。此时三次握手完成。

六、服务器端收到客户端发来的主动关闭连接请求时,也就是收到FIN报文后进入CLOSE_WAIT状态,然后发给客户端FIN报文后就进入LAST_ACK状态。

==================

七、客户端发出SYN包,主动连接服务器后,就进入SYN_SENT状态。这个状态理论上不会太长。如果一直处于SYN_SENT状态,说明服务端没有响应,请检查配置的服务器端的IP和端口是否正确。

八、在SYN_SENT基础上,收到服务器端发回来的SYN后,并且发生出去ACK确认后就进入ESTABLISHED状态。连接已经建立。

九、客户端执行主动关闭,发出FIN包后首先进入FIN_WAIT1状态,收到SYN确认后进步FIN_WAIT2状态,继续收到FIN包后进入TIME_WAIT状态。

 

备注:之所以进入TIME_WAIT状态,而不是直接关闭有两个原因:可靠终止TCP连接,保证迟来的TCP报文有足够时间别识别并且丢失。

 

下边说一下两个容易混淆状态的区别。

CLOSE_WAIT : 被动关闭、 收到对方发来的FIN包后进入该状态。回复FIN给对方后变为LAST_ACK状态。

TIME_WAIT    : 主动关闭、主动发送FIN包并且收到对方的FIN包后进入该状态。

 

 

下边聊聊复位报表段:

在某些条件下,TCP会向另一端发送RST标志的报文段,也就是复位报文段。用来通知对方关闭连接或者重新连接,讨论三种情况:

a. 访问不存在端口时

b. 异常终止连接,TCP提供了异常终止一个连接的方法,即给对方发送一个复位报文段。一旦发送了复位报文段,发送端所有排队等待发送的数据都将丢弃。

c.处理半打开连接

   服务器(客户端)关闭或者异常终止了连接,而对方没有接受到结束报文(可能发送网络故障),这时候客户端(服务端)还在保持了原有的状态,但是服务端(客户端)即使重启也没有了该连接的信息了,这种状态称为半打开状态。 这时,客户端(服务端)往半打开状态的连接写入数据,对方将回应一个复位报文段。
 

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

相关推荐

    基于 TCP 的拥塞控制策略及改进

    行参照对比,得出各协议的拥塞窗口变化、吞吐量、稳定性、TCP 友好性、RTT 公平性等方面的比较 和分析结果,并从中找到契合点,对总体表现更好些的 CUBIC 协议实施改进。在众多实验结果中我 们发现:基于 CUBIC 协议...

    TCP_IP详解卷1

    18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3 FIN_WAIT_2状态 186 18.7 复位报文段 186 18.7.1 到不存在的端口的连接请求 187 18.7.2 异常终止一个连接 187 18.7.3 检测半...

    TCP/IP详解part_2

    18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3 FIN_WAIT_2状态 186 18.7 复位报文段 186 18.7.1 到不存在的端口的连接请求 187 18.7.2 异常终止一个连接 187 18.7.3 检测半...

    TCPIP详解卷[1].part04

    18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3 FIN_WAIT_2状态 186 18.7 复位报文段 186 18.7.1 到不存在的端口的连接请求 187 18.7.2 异常终止一个连接 187 18.7.3 检测半...

    TCPIP详解卷[1].part09

    18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3 FIN_WAIT_2状态 186 18.7 复位报文段 186 18.7.1 到不存在的端口的连接请求 187 18.7.2 异常终止一个连接 187 18.7.3 检测半...

    TCPIP详解卷[1].part03

    18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3 FIN_WAIT_2状态 186 18.7 复位报文段 186 18.7.1 到不存在的端口的连接请求 187 18.7.2 异常终止一个连接 187 18.7.3 检测半...

    TCPIP详解卷[1].part05

    18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3 FIN_WAIT_2状态 186 18.7 复位报文段 186 18.7.1 到不存在的端口的连接请求 187 18.7.2 异常终止一个连接 187 18.7.3 检测半...

    TCPIP详解卷[1].part07

    18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3 FIN_WAIT_2状态 186 18.7 复位报文段 186 18.7.1 到不存在的端口的连接请求 187 18.7.2 异常终止一个连接 187 18.7.3 检测半...

    TCPIP详解卷[1].part10

    18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3 FIN_WAIT_2状态 186 18.7 复位报文段 186 18.7.1 到不存在的端口的连接请求 187 18.7.2 异常终止一个连接 187 18.7.3 检测半...

    TCPIP详解卷[1].part06

    18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3 FIN_WAIT_2状态 186 18.7 复位报文段 186 18.7.1 到不存在的端口的连接请求 187 18.7.2 异常终止一个连接 187 18.7.3 检测半...

    TCPIP详解卷[1].part08

    18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3 FIN_WAIT_2状态 186 18.7 复位报文段 186 18.7.1 到不存在的端口的连接请求 187 18.7.2 异常终止一个连接 187 18.7.3 检测半...

    TCPIP详解卷[1].part11

    18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3 FIN_WAIT_2状态 186 18.7 复位报文段 186 18.7.1 到不存在的端口的连接请求 187 18.7.2 异常终止一个连接 187 18.7.3 检测半...

    TCPIP详解卷[1].part12

    18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3 FIN_WAIT_2状态 186 18.7 复位报文段 186 18.7.1 到不存在的端口的连接请求 187 18.7.2 异常终止一个连接 187 18.7.3 检测半...

    深入解析Windows操作系统中文.part2.rar

    TCP/IP的扩展 824 13.6 NDIS驱动程序 828 NDIS小端口的变化形式 832 面向连接的NDIS 832 外接NDIS(Remote NDIS) 835 QOS 836 13.7 绑定 838 13.8 分层的网络服务 839 远程访问(Remote Access) 839 活动目录 840 ...

    网络驱动程序设计指南

    8.4.3.3 设置广域网小段口驱动程序的状态 122 8.4.3.4 在广域网微端口驱动程序上发送数据 123 8.4.4 广域网微端口驱动程序做出的指示 125 8.4.4.1 指示从标准广域网微端口驱动程序接收数据 125 8.5 广域网包的组帧 ...

    win2000驱动程序设计指南

    PNP_QUERY_POWER 104 6.5 处理OID_PNP_SET_POWER 104 6.5.1 转入睡眠状态 104 6.5.2 转入工作状态 104 6.6 早期微端口的电源管理 105 第七章 重置,停止和关闭 106 7.1 硬件重置(Reset) 106 ...

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    【基础】当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 17 【基础】重载(Overload)和重写(Override)的区别。重载的方法能否...

    IIS6.0 IIS,互联网信息服务

    请在其上单击右键,选“属性”,再进入“安全”窗口,看列表中是不是默认的允许“Everyone”组完全控制的状态,如不是,请改回 。 [编辑本段]IIS之FTP服务器  第二篇 IIS之FTP服务器 一、建立你的FTP站点 第一个FTP...

    【RT-Thread作品秀】多功能气压计设计-电路方案

    本章主要阐述多功能气压计的应用背景,包括根据大气压强判断和确定建筑工人的楼层位置、帮助建筑工人感知周围环境温度变化等,同时也可根据大气压强判断无人机的GPS定位。其次着重介绍气压计的具体功能,如可以通过...

    PHP程序开发范例宝典III

    实例055 带颜色变化的动态链接按钮 82 实例056 设置图片的样式 83 实例057 设置表格的样式 84 实例058 模拟的进度条 86 3.3 超链接样式 87 实例059 鼠标单击文字超链接样式 87 实例060 鼠标滑过图片...

Global site tag (gtag.js) - Google Analytics