CLOSED: 这个表示初始状态。

LISTEN(服务器): 这个也是非常容易理解的一个状态,表示服务器端的某个SOCKET处于监听状态,可以接受连接了。

SYN_RCVD(服务器): 这个状态表示接受到了SYN报文,在正常情况下,这个状态是服务器端的SOCKET在建立TCP连接时的三次握手会话过程中的一个中间状态,很短暂,基本上用netstat你是很难看到这种状态的,除非你特意写了一个客户端测试程序,故意将三次TCP握手过程中最后一个ACK报文不予发送。因此这种状态时,当收到客户端的ACK报文后,它会进入到ESTABLISHED状态。

SYN_SENT: 这个状态与SYN_RCVD呼应,当客户端SOCKET执行CONNECT连接时,它首先发送SYN报文,因此也随即它会进入到了SYN_SENT状态,并等待服务端的发送三次握手中的第2个报文。SYN_SENT状态表示客户端已发送SYN报文。

ESTABLISHED:这个容易理解了,表示连接已经建立了。

FIN_WAIT_1: 这个状态要好好解释一下,其实FIN_WAIT_1和FIN_WAIT_2状态的真正含义都是表示等待对方的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,表示半连接,也即有一方要求close连接,但另外还告诉对方,我暂时还有点数据需要传送给你,稍后再关闭连接。

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

注:MSL(最大分段生存期)指明TCP报文在Internet上最长生存时间,每个具体的TCP实现都必须选择一个确定的MSL值.RFC 1122建议是2分钟,但BSD传统实现采用了30秒.TIME_WAIT 状态最大保持时间是2 * MSL,也就是1-4分钟

结论:在TIME_WAIT下等待2MSL,只是为了尽最大努力保证四次握手正常关闭。确保老的报文段在网络中消失,不会影响新建立的连接.

CLOSING: 这种状态比较特殊,实际情况中应该是很少见,属于一种比较罕见的例外状态。正常情况下,当你发送FIN报文后,按理来说是应该先收到(或同时收到)对方的ACK报文,再收到对方的FIN报文。但是CLOSING状态表示你发送FIN报文后,并没有收到对方的ACK报文,反而却也收到了对方的FIN报文。什么情况下会出现此种情况呢?其实细想一下,也不难得出结论:那就是如果双方几乎在同时close一个SOCKET的话,那么就出现了双方同时发送FIN报文的情况,也即会出现CLOSING状态,表示双方都正在关闭SOCKET连接。

CLOSE_WAIT: 这种状态的含义其实是表示在等待关闭。怎么理解呢?当对方close一个SOCKET后发送FIN报文给自己,你系统毫无疑问地会回应一个ACK报文给对方,此时则进入到CLOSE_WAIT状态。接下来呢,实际上你真正需要考虑的事情是察看你是否还有数据发送给对方,如果没有的话,那么你也就可以close这个SOCKET,发送FIN报文给对方,也即关闭连接。所以你在CLOSE_WAIT状态下,需要完成的事情是等待你去关闭连接。

LAST_ACK: 这个状态还是比较容易好理解的,它是被动关闭一方在发送FIN报文后,最后等待对方的ACK报文。当收到ACK报文后,也即可以进入到CLOSED可用状态了。

Tcp网络通信中各个状态的含义相关推荐

  1. 【网络通信与信息安全】之深入解析TCP连接中如何确定客户端的端口号

    一.前言 在 TCP 连接中,客户端在发起连接请求前会先确定一个客户端的端口,然后用这个端口去和服务器端进行握手建立连接.那么在 Linux 上,客户端的端口到底是如何被确定下来的呢? 事实上,我们平 ...

  2. 网络基础2-3(TCP协议,三次握手,四次挥手,TIME_WAIT状态的作用,TCP如何保证可靠传输,TCP连接中状态转化,滑动窗口,流量控制,快速重传,拥塞窗口,延迟应答,捎带应答,粘包问题)

    TCP协议 TCP协议概念 TCP全称为 "传输控制协议(Transmission Control Protocol"). 人如其名, 要对数据的传输进行一个详细的控制 TCP协议 ...

  3. 清楚了解TCP三次握手和四次挥手的过程中各标志的含义

    本次内容:首先要了解什么是三次握手四次挥手,以及为什么是三次握手和四次挥手,并且观察TCP协议中各标志,并说明. 构建合适的拓扑结构:搭建出客户端(client)-服务器(server) 配置好基本的 ...

  4. 查看tcp 请求中的各个状态数据

    查看tcp请求中的各个状态数据 文章目录 查看tcp请求中的各个状态数据 查看tcp请求中的各个状态数据,如timewait netstat -n |awk '/^tcp/ {++S[$NF]} EN ...

  5. Linux 查看tcp 请求 中 的各个 状态 数据 ,如timewait

    netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}' ...

  6. 计算机网络之TCP中TIME_WAIT状态意义详解

    文章目录 为什么需要TIME_WAIT 一.何为TIME_WAIT? 二.为什么需要TIME_WAIT 原因一:防止被动关闭方的延迟数据被人窃取 原因二:防止被动关闭方没有收到最后的ACK 为什么需要 ...

  7. 网络原理 | TCP/IP中的连接管理机制 重要协议与核心机制

    应用层.传输层.网络层.数据链路层.物理层 一.应用层协议 应用层 是程序猿最最经常打交道的一层 其他四层,都是操作系统.驱动.硬件,实现好了的,咱们不需要管 (除非你是系统工程师,驱动开发工程师-- ...

  8. 几种TCP连接中出现RST的情况

    UNIX网络编程上说:产生RST的三个条件是:目的地为某端口的SYN到达,然而在该端口上并没有正在监听 的服务器:TCP想取消一个已有链接:TCP接收到一个根本不存在的连接上的分节. 几种TCP连接中 ...

  9. 实时监测tcp链接状态_终于搞懂了 TCP 的 11 种状态,太不容易了…

    后台回复"666",获取新资料 本来想写运维过程中,nginx 服务器中 time_wait 的相关测试及解决方法的,然后发现TCP 的状态需要先铺垫一下,于是就整理了这篇文章. ...

  10. Python常见面试题:TCP 协议中的三次握手与四次挥手相关概念详解

    今天来聊聊Python常见面试题中面试频率特别高的一个题目:TCP 协议中的三次握手与四次挥手. 涉及到的知识点有: 1.TCP.UDP 协议的区别 2.TCP 头部结构 3.三次握手与四次挥手过程详 ...

最新文章

  1. arcgis xml 下载 切片_vue/cli3整合Cesium,加载离线arcgis 切片
  2. (五)Docker镜像和容器
  3. 彩蛋还是陷阱?我所经历的期权往事
  4. 【软件工程】CMMI 能力成熟度模型集成 ( 简介 | 相关术语 | CMMI 等级评估次序 )
  5. WebStorm 使用经验
  6. 怎么在android中定义泛型,android – 如何在GSON TypeToken类中使用自定义泛型?
  7. 【密码学】CSP的概念
  8. 希尔排序听起来有点难,其实很简单
  9. Unhandled exception: org.springframework.beans.factory.BeanDefinitionStoreException
  10. mysql查询时间段内的数据
  11. (干货!)Tomcat性能优化
  12. python基础教程廖雪峰云-Python 基础教程
  13. python画超长图-python—networkx:求图的平均路径长度并画出直方图
  14. Bzoj4542--Hnoi2016大数
  15. java8时间类的好处_Java8——时间类
  16. 04.electron-(使用remove模块及安全策略)
  17. 台式计算机打字标准手法,电脑打字技巧口诀
  18. r9270公版bios_R9280,R9270,HD7000,VBE7007.系显卡全套修改超频刷BIOS工具
  19. 大型门户网站的商业计划书(包括技术解决方案)
  20. Ureport2源码启动

热门文章

  1. 基于javaweb酒店管理系统
  2. Zigbee智能开关和单火取电技术
  3. 人体计算机原理,人体静力学
  4. 如何设置变更Word页面颜色?干货经验!怎样操作更改word背景颜色?
  5. 医学影像技术要学计算机吗,医学影像学和医学影像技术的区别
  6. 【python + FFmpeg】对视频进行分辨率改变,(带音频)
  7. AC_automaton 模板
  8. 人脸识别应用在美国受禁,因噎废食还是以人为本?
  9. 奶奶说标题不能起的太长要不然会有憨憨跟着读之Linux简述及常用命令
  10. 最新《java互联网架构师全套课程》附带代码资料(完整)