• CLOSED:TCP起始状态
  • LISTEN:绑定端口后进入listen状态,一般是服务端
  • SYN_SENT:发送SYN连接请求,主动打开连接的一方进入SYN_SENT
  • SYN_RCVD:接收到SYN连接请求后进入SYN_RCVD,同时发送SYN,ACK。TCP可从LISTEN和SYN_SENT两个状态进入SYN_RCVD
  • ESTABLISHED:三次握手成功后进入ESTABLISHED状态
  • CLOSE_WAIT:被动关闭的一方接收到FIN包后,发送ACK响应,进入CLOSE_WAIT状态
  • LAST_ACK:顾名思义,在等待最后一个ACK包。CLOSE_WAIT发送FIN包关闭连接后进入该状态
  • FIN_WAIT_1:主动关闭的一方先发送FIN包,从ESTABLISHED状态进入FIN_WAIT_1
  • CLOSING:FIN_WAIT_1下是在等待对方的ACK响应和对方的FIN包,FIN包先到的话,两端是同时关闭,FIN_WAIT_1发送ACK响应后进入CLOSING状态,等待一个ACK,然后进入TIME_WAIT状态
  • FIN_WAIT_2:FIN_WAIT_1下是在等待对方的ACK响应和对方的FIN包,如果ACK先到,进入FIN_WAIT_2状态。这时候的连接处于半连接状态,有一方已经断开连接,但另一方还有数据要传。继续等待FIN包,FIN包到了后,发送ACK,进入TIME_WAIT状态
  • TIME_WAIT:FIN_WAIT_1下是在等待对方的ACK响应和对方的FIN包,FIN包和ACK包都到了,发送ACK响应后,进入TIME_WAIT状态,等待2MSL然后关闭

TIME_WAIT状态解释

  1. 主动关闭连接的一方会进入TIME_WAIT状态,等待2MSL然后彻底关闭
  2. MSL是任何IP数据报能够在因特网中存活的最长时间
  3. 为什么要等待2MSL?
  • 可靠地实现TCP全双工连接的终止
  • 允许老的重复分节在网络中消逝

《UNP》学习之TCP状态转换的更多相关文章

  1. TCP状态转换(图解+文字解说)

    <深入分析 javaweb 技术内幕>P38 读书扩展 作者:淮左白衣 写于2018年4月12日20:58:36 目录 TCP状态转换图解 图解三次握手 文字讲解三次握手: 图解四次挥手 ...

  2. TCP状态转换

    最近笔试遇到一个题目:如果tcp建立连接时第三次握手失败,tcp会做何操作?该问题的本质是判断我们对tcp的状态转换是否能有比较深刻的理解.只要理解了下面的状态转换图,很容易回答上述问题. 在此,将& ...

  3. zabbix4.2学习笔记--TCP状态监控

    Tcp的连接状态对于我们web服务器来说是至关重要的,尤其是并发量ESTAB:或者是syn_recv值,假如这个值比较大的话我们可以认为是不是受到了攻击(例如SYN攻击),或是是time_wait值比 ...

  4. TCP 连接建立和断开,以及状态转换

    1. TCP报文结构 TCP是一种可靠.面向连接.全双工的传输层协议,其报文格式如下所示:      源端口.目的端口:16位长.标识出远端和本地的端口号.     顺序号:32位长.表明了发送的数据 ...

  5. TCP的状态转换

    TCP的状态转换图 手写的状态转换图 一.服务端状态变迁:​ 服务端创建套接字之后调用listen函数将套接字有一个未连接的主动套接字转换为被动套接字,指示内核应接受指向该套接字的连接请求,套接字状态 ...

  6. 传输控制协议(TCP) -- TCP状态转换图

    TCP状态转换图 在<UNIX网络编程 卷1>一书中,作者给出了TCP状态转换图(如下).本文也将围绕此图进行阐释. 注:上图红框表示比较特殊的地方. TCP状态转换两条主线 图2-4中的 ...

  7. TCP状态转换图解析

    本文参考Unix网络编程卷1,对TCP状态转换进行总结,方便掌握TCP链接中各个状态及故障分析. 1.Linux下TCP相关工具 基于Linux系统查看网络状态,首先了解几个基本查看指令. Linux ...

  8. Zabbix学习之路(六)TCP状态监控

    TCP状态监控 Tcp的连接状态对于我们web服务器来说是至关重要的,尤其是并发量ESTAB:或者是syn_recv值,假如这个值比较大的话我们可以认为是不是受到了***,或是是time_wait值比 ...

  9. TCP连接建立与终止,及状态转换

    TCP连接建立 三路握手 三路握手发生在客户端发起connect请求到服务端accept返回中,在三路握手发生前,服务端必须准备好接受外来连接,这通常通过服务端调用 (socket.bind.list ...

随机推荐

  1. SVN如何commit(提交)项目代码

    在本地代码做出变更之后,我们就需要通过svn commit命令提交到远程服务端 工具/原料   SVN客户端 方法/步骤   选中需要更新的代码文件夹或目录,点击右键,选择"Tortoise ...

  2. mysql基础知识点

    /* 启动MySQL */net start mysql /* 连接与断开服务器 */mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录MySQL */mysqld ...

  3. UWP 显示图片到Image控件

    要想显示图片,前提是要有一个空间的啦 <Image x:Name="imageHidden"/> 然后一个响应选择图片得事件,注意使用asynchronous方法哦 F ...

  4. java基础部分的简单应用

    牛刀小试,MMP:嘿嘿,如有转载,请声明地址http://www.cnblogs.com/jinmoon/: 图形类,点类,三角形类,汽车类,接口:运用继承,抽象类,接口,多态:已知点类三点,输出三点 ...

  5. 大数据学习系列之三 ----- HBase Java Api 图文详解

    版权声明: 作者:虚无境 博客园出处:http://www.cnblogs.com/xuwujing CSDN出处:http://blog.csdn.net/qazwsxpcm 个人博客出处:http ...

  6. 编写高质量代码—javascript的分层—base层

    base层的功能是为common层和page层提供接口.封装不同浏览器下javaScript的差异,提供统一的接口 1.用getNextNode 函数封装IE和Firefox的差异: 2.透明度:封装 ...

  7. C#_表达式目录树的应用

    使用表达式目录树实现两个不同类型的属性赋值: public class People { public int Age { get; set; } public string Name { get; ...

  8. C++ map multimap

    map multimap map,multimap key-value对容器,也叫字典,map中不能存放key相同的元素,而multimap可以,容器中元素默认按升序排序 map multimap的相 ...

  9. Navicat for Mysql 暴力破解教程

    关于破解Navicat for MySQL的教程有很多 ,但是比较繁琐, 这里推荐一种比较简单的办法~ 网盘地址:链接: https://pan.baidu.com/s/1kVHyShL 密码: ws ...

  10. KafkaManager中Group下不显示对应Topic的解决方案

    一.软件版本 Kafka:0.8.2.1 KafkaManager:1.2.9.10 二.问题现象 点击Consumer下某个组,显示如下图所示的异常,查看KafkaManager的Applicati ...