《UNP》学习之TCP状态转换

- 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状态解释
- 主动关闭连接的一方会进入TIME_WAIT状态,等待2MSL然后彻底关闭
- MSL是任何IP数据报能够在因特网中存活的最长时间
- 为什么要等待2MSL?
- 可靠地实现TCP全双工连接的终止
- 允许老的重复分节在网络中消逝
《UNP》学习之TCP状态转换的更多相关文章
- TCP状态转换(图解+文字解说)
<深入分析 javaweb 技术内幕>P38 读书扩展 作者:淮左白衣 写于2018年4月12日20:58:36 目录 TCP状态转换图解 图解三次握手 文字讲解三次握手: 图解四次挥手 ...
- TCP状态转换
最近笔试遇到一个题目:如果tcp建立连接时第三次握手失败,tcp会做何操作?该问题的本质是判断我们对tcp的状态转换是否能有比较深刻的理解.只要理解了下面的状态转换图,很容易回答上述问题. 在此,将& ...
- zabbix4.2学习笔记--TCP状态监控
Tcp的连接状态对于我们web服务器来说是至关重要的,尤其是并发量ESTAB:或者是syn_recv值,假如这个值比较大的话我们可以认为是不是受到了攻击(例如SYN攻击),或是是time_wait值比 ...
- TCP 连接建立和断开,以及状态转换
1. TCP报文结构 TCP是一种可靠.面向连接.全双工的传输层协议,其报文格式如下所示: 源端口.目的端口:16位长.标识出远端和本地的端口号. 顺序号:32位长.表明了发送的数据 ...
- TCP的状态转换
TCP的状态转换图 手写的状态转换图 一.服务端状态变迁: 服务端创建套接字之后调用listen函数将套接字有一个未连接的主动套接字转换为被动套接字,指示内核应接受指向该套接字的连接请求,套接字状态 ...
- 传输控制协议(TCP) -- TCP状态转换图
TCP状态转换图 在<UNIX网络编程 卷1>一书中,作者给出了TCP状态转换图(如下).本文也将围绕此图进行阐释. 注:上图红框表示比较特殊的地方. TCP状态转换两条主线 图2-4中的 ...
- TCP状态转换图解析
本文参考Unix网络编程卷1,对TCP状态转换进行总结,方便掌握TCP链接中各个状态及故障分析. 1.Linux下TCP相关工具 基于Linux系统查看网络状态,首先了解几个基本查看指令. Linux ...
- Zabbix学习之路(六)TCP状态监控
TCP状态监控 Tcp的连接状态对于我们web服务器来说是至关重要的,尤其是并发量ESTAB:或者是syn_recv值,假如这个值比较大的话我们可以认为是不是受到了***,或是是time_wait值比 ...
- TCP连接建立与终止,及状态转换
TCP连接建立 三路握手 三路握手发生在客户端发起connect请求到服务端accept返回中,在三路握手发生前,服务端必须准备好接受外来连接,这通常通过服务端调用 (socket.bind.list ...
随机推荐
- SQL面试题:有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列
.请教一个面试中遇到的SQL语句的查询问题 表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列. ------------------- ...
- PHP扩展代码结构详解
PHP扩展代码结构详解: 这个是继:使用ext_skel和phpize构建php5扩展 内容 (拆分出来) Zend_API:深入_PHP_内核:http://cn2.php.net/manual/ ...
- 守护进程VS守护线程
守护(daemon)进程 引入: join()方法可以使一个进程运行完之后再执行下一个进程,而daemon()方法就是主进程的代码执行完毕之后,不需要等待子进程,立即终止子进程. join()方法和d ...
- C# 把Div变为滚动条
<div runat="server" style="overflow:auto;width:350px;height:200px" > <a ...
- QWT与QT Designer
QWT是一套非常不错的开发库,它能结合QT开发,做出非常好的曲线,刻度,表盘等效果来. qwt的下载以及动态链接库的编译等这里就不做介绍了.在源码目录下可以找到designer目录,其中有插件的源码 ...
- 使用python处理excle表格
# -*- coding: utf-8 -*- import xlrd ########################### #通用功能,读取excel表格中所有数据 #返回一个包含所有单元格名和对 ...
- Excel大写和小写转换函数
Excel中的大写和小写转换函数 (1).转换为所有小写字母:lower函数 (2).转换为所有大写字母:upper函数 (3).转换为首字母大写,其余小写字母:proper函数 三种函数的使用方式. ...
- AbstractFactory抽象工厂模式
#include <iostream> using namespace std; class ProductAbase { public: ProductAbase(){} virtual ...
- chrome解决http自动跳转https问题
1.地址栏输入: chrome://net-internals/#hsts 2.找到底部Delete domain security policies一栏,输入想处理的域名,点击delete. 3.搞 ...
- java实现播放mp3功能
1.首先引入jlayer.jar <!-- https://mvnrepository.com/artifact/javazoom/jlayer --> <dependency> ...