首先看一张图片:

虚线表示服务端的状态转移,实现表示客户端的状态转移。

初始的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 状态转移图详解相关推荐

  1. TCP/IP详解学习笔记(9)-TCP协议概述

    终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读.前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西. TCP和UDP处在同一层---运输 ...

  2. 《TCP/IP详解卷1:协议》第6章 ICMP:Internet控制报文协议-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

  3. IPv6时代的《TCP/IP详解》!

    点击我,试试看吧!                                                    点击我,试试看吧!                              ...

  4. TCP/IP详解--第十七章

     第17章 TCP:传输控制协议 17.1    引言   本章将介绍 TCP为应用层提供的服务,以及 TCP首部中的各个字段.随后的几章我们在了 解TCP的工作过程中将对这些字段作详细介绍. 对TC ...

  5. TCP/IP详解--第十五章

     第15章 TFTP:简单文件传送协议 15.1    引言   TFTP(Trivial File Transfer Protocol) 即简单文件传送协议,最初打算用于引导无盘系统 (通常是工作站 ...

  6. TCP/IP详解--第五章

    第5章 RARP:逆地址解析协议 5.1   引言   具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取  I P地址.但是无盘机, 如X终端或无盘工作站,则需要采用其他方法来获得 IP地址. ...

  7. TCP/IP详解--第一章

    说明:专栏中的内容是<TCP/IP详解>这本书,博主分享在此. 第1章概     述 1.1   引言 很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但  TCP/IP协 ...

  8. TCP/IP详解--学习笔记(9)-TCP协议概述

    终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读.前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西. TCP和UDP处在同一层---运输 ...

  9. TCP/IP详解--学习笔记(5)-IP选路,动态选路,和一些细节

    1.静态IP选路 1.1.一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据包的IP地址来选择路由.这里就不重复了.首先来看看一个简单的系统 ...

  10. 《TCP/IP详解》

    明天又开新课了,用到的课本是<TCP/IP详解 卷2:实现>,TCP/IP论著中的the Bible. 分享一下百度百科里关于这三卷书内容的简介: <TCP/IP详解,卷1:协议&g ...

最新文章

  1. 去哪面试都会问的HashMap
  2. GDCM:gdcm::StrictScanner的测试程序
  3. SAP BPC最佳实践-BPC安装及配置的常见问题
  4. python绘图-增加子区域
  5. 网络邻居没有查看工作组计算机,为什么网上邻居内看不到计算机工作组
  6. PhpStorm2017破解版
  7. 如何在Windows 10上控制多个显示器的功能
  8. 四/八电极测脂技术做蓝牙八电极脂肪秤方案
  9. pythonxy是什么东西_无状态以太坊:二进制状态树实验
  10. 大开眼界的4款电脑软件,其中3款大小不到10M,功能却逆天
  11. maven的使用-很全
  12. 增加/删除临时IP地址
  13. 【车流量预测论文】(2020)GMAN: A Graph Multi-Attention Network for Traffic Prediction-20201213
  14. 阿里员工感慨:涂鸦和阿里之间选了阿里,涂鸦上市了,小丑竟是我自己
  15. Hibernate入门5持久化对象关系和批量处理技术
  16. 基于jsp+servler+css的登录界面
  17. Oracle 表空间迁移
  18. 智慧校园:学校机房如何实现科学化管理?
  19. Threejs 拓展之二进制数组
  20. 浙江大学 远程教育 计算机科学,浙江大学远程教育2014-计算机科学--操作系统原理 在线作业答案...

热门文章

  1. IntelliJ IDEA上创建Maven Spring MVC项目
  2. mysql 清空二进制日志
  3. Java 匿名内部类、Java 中 == 与 equals 的区别
  4. python学习笔记(十二)-- if __name__ == '__main__'
  5. kickstart_2018_round_H_C Let Me Count The Ways
  6. 详解C# 匿名对象(匿名类型)、var、动态类型 dynamic
  7. Scrapy框架——CrawlSpider爬取某招聘信息网站
  8. mysql的engine不同,导致事物回滚失败的问题
  9. tomcat 多实例的Sys V风格脚本
  10. 关于ajax请求controller返回中文乱码的解决方法!