tcp 状态转移图详解
虚线表示服务端的状态转移,实现表示客户端的状态转移。
初始的close状态并不是真是的状态,只是为了方便描述开始和终止状态而构造出来的。
从服务端的状态转移开始说:
服务端打开后处于listen状态,等待客户端的连接请求。当服务端收到客户端发来的SYN时,服务端回复SYN和ACK进入SYNRECEIVE状态,这里对应三次握手的第一次和第二次,即 客户端发送请求,服务端回复ACK并发送SYN。服务端再次受到ACK时,服务端认为连接已经建立,进入ESTABLISHED状态。服务端收到FIN时,表明客户端要关闭连接,这时服务端进入CLOSE_WAIT状态,此时,服务端不再接收数据,但是可以继续发生数据,当服务端的数据发送完成后,服务端发送FIN,进入LASK_ACK状态,在LASK_ACK状态下,收到客户端发来的针对FIN的ACK后,服务端关闭连接,进入CLOSE状态。
客户端的状态转移:
客户端发送SYN进入SYNSNED 状态,当收到服务端发来的SYN和ACK后,发送ACK, 这里是三次握手中,第三次的过程。客户端发送完ACK进入连接建立状态ESTABLISHED。客户端发送FIN主动关闭连接,进入FIN_WAIT_1,在这个状态下,服务可能回复:
1.ACK(表明服务端还要继续发送数据), 此时,客户端进入FIN_WAIT_2状态,等待服务端关闭连接。
2.或者收到FIN(服务端刚好也要关闭连接),此时,客户端发送ACK,并进入CLOSING状态,等待接收之前发送FIN 对应的ACK。
3.或者收到FIN+ACK(服务端收到关闭连接请求同时也发生关闭连接),此时,客户端发送ACK,进入TIME_WAIT状态。
对于1和2情况,当收到服务端发来的FIN回复ACK(1的情况)或收到ACK(2的情况)后,客户端进入TIME_WAIT状态。
TIME_WAIT 状态是在服务端发送FIN后,客户回复ACK后,客户端需要等待2MSL时间,此时若是客户端回复的ACK因为网络的原因,服务端没有收到,服务端要重发FIN,客户端此时处于TIME_WAIT状态,可以继续发送ACK。 总体来说TIME_WAIT状态时为了保证最后一个ACK因丢失,而等待重发的时间。
上面的解释 仅仅是正常状态的变迁。(粗实线和粗的虚线) 当SYNRECEIVE状态是由LISTEN状态进入时,(收到RST)才能变迁至LISTEN状态。
转载于:https://www.cnblogs.com/williamjie/p/9390194.html
tcp 状态转移图详解相关推荐
- TCP/IP详解学习笔记(9)-TCP协议概述
终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读.前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西. TCP和UDP处在同一层---运输 ...
- 《TCP/IP详解卷1:协议》第6章 ICMP:Internet控制报文协议-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- IPv6时代的《TCP/IP详解》!
点击我,试试看吧! 点击我,试试看吧! ...
- TCP/IP详解--第十七章
第17章 TCP:传输控制协议 17.1 引言 本章将介绍 TCP为应用层提供的服务,以及 TCP首部中的各个字段.随后的几章我们在了 解TCP的工作过程中将对这些字段作详细介绍. 对TC ...
- TCP/IP详解--第十五章
第15章 TFTP:简单文件传送协议 15.1 引言 TFTP(Trivial File Transfer Protocol) 即简单文件传送协议,最初打算用于引导无盘系统 (通常是工作站 ...
- TCP/IP详解--第五章
第5章 RARP:逆地址解析协议 5.1 引言 具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取 I P地址.但是无盘机, 如X终端或无盘工作站,则需要采用其他方法来获得 IP地址. ...
- TCP/IP详解--第一章
说明:专栏中的内容是<TCP/IP详解>这本书,博主分享在此. 第1章概 述 1.1 引言 很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但 TCP/IP协 ...
- TCP/IP详解--学习笔记(9)-TCP协议概述
终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读.前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西. TCP和UDP处在同一层---运输 ...
- TCP/IP详解--学习笔记(5)-IP选路,动态选路,和一些细节
1.静态IP选路 1.1.一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据包的IP地址来选择路由.这里就不重复了.首先来看看一个简单的系统 ...
- 《TCP/IP详解》
明天又开新课了,用到的课本是<TCP/IP详解 卷2:实现>,TCP/IP论著中的the Bible. 分享一下百度百科里关于这三卷书内容的简介: <TCP/IP详解,卷1:协议&g ...
最新文章
- 去哪面试都会问的HashMap
- GDCM:gdcm::StrictScanner的测试程序
- SAP BPC最佳实践-BPC安装及配置的常见问题
- python绘图-增加子区域
- 网络邻居没有查看工作组计算机,为什么网上邻居内看不到计算机工作组
- PhpStorm2017破解版
- 如何在Windows 10上控制多个显示器的功能
- 四/八电极测脂技术做蓝牙八电极脂肪秤方案
- pythonxy是什么东西_无状态以太坊:二进制状态树实验
- 大开眼界的4款电脑软件,其中3款大小不到10M,功能却逆天
- maven的使用-很全
- 增加/删除临时IP地址
- 【车流量预测论文】(2020)GMAN: A Graph Multi-Attention Network for Traffic Prediction-20201213
- 阿里员工感慨:涂鸦和阿里之间选了阿里,涂鸦上市了,小丑竟是我自己
- Hibernate入门5持久化对象关系和批量处理技术
- 基于jsp+servler+css的登录界面
- Oracle 表空间迁移
- 智慧校园:学校机房如何实现科学化管理?
- Threejs 拓展之二进制数组
- 浙江大学 远程教育 计算机科学,浙江大学远程教育2014-计算机科学--操作系统原理 在线作业答案...
热门文章
- IntelliJ IDEA上创建Maven Spring MVC项目
- mysql 清空二进制日志
- Java 匿名内部类、Java 中 == 与 equals 的区别
- python学习笔记(十二)-- if __name__ == '__main__'
- kickstart_2018_round_H_C Let Me Count The Ways
- 详解C# 匿名对象(匿名类型)、var、动态类型 dynamic
- Scrapy框架——CrawlSpider爬取某招聘信息网站
- mysql的engine不同,导致事物回滚失败的问题
- tomcat 多实例的Sys V风格脚本
- 关于ajax请求controller返回中文乱码的解决方法!