tcp 11种状态转换图:

tcp 11种状态含义:

LISTEN:等待从任何远端TCP 和端口的连接请求。SYN_SENT:发送完一个连接请求后等待一个匹配的连接请求。SYN_RECEIVED:发送连接请求并且接收到匹配的连接请求以后等待连接请求确认。ESTABLISHED:表示一个打开的连接,接收到的数据可以被投递给用户。连接的数据传输阶段的正常状态。FIN_WAIT_1:等待远端TCP 的连接终止请求,或者等待之前发送的连接终止请求的确认。FIN_WAIT_2:等待远端TCP 的连接终止请求。CLOSE_WAIT:等待本地用户的连接终止请求。CLOSING:等待远端TCP 的连接终止请求确认。LAST_ACK:等待先前发送给远端TCP 的连接终止请求的确认(包括它字节的连接终止请求的确认)TIME_WAIT:等待足够的时间过去以确保远端TCP 接收到它的连接终止请求的确认。
TIME_WAIT 两个存在的理由:1.可靠的实现tcp全双工连接的终止;2.允许老的重复分节在网络中消逝。CLOSED:不在连接状态(这是为方便描述假想的状态,实际不存在)

tcp连接的建立3次握手
服务器端通常处于监听状态即LISTEN,accept()处于阻塞状态
当客户端连接服务器端时此时客户端的connect()刚刚调用并处于阻塞状态,
将会触发以下事件:
首先客户端的应用程序将会使tcp进程发送SYN,MSS,此时客户端将会处于SYN_SENT
网络传输给服务器端后,服务器端tcp接收到后服务器端将会由LISTEN状态变为SYN_RCVD
然后服务器端也会发送一个SYN,MSS还有一个ACK,注意这个ACK是客户端发送的SYN值加1
客户端在接收到服务器端的SYN,MSS,ACK核对无误后将会由SYN_SENT状态变为ESTABLILSHED
此时客户端的connect()函数将会返回不再处于阻塞状态,同时客户端发送ACK,此ACK是服务器端
发送的SYN值加1,服务器端在接收到客户端的ACK核对无误后,accept()将从阻塞状态返回,
同时read()处于阻塞状态。此时连接已经建立

tcp断开连接4次挥手
当一端数据已经发送完了,就会将本端的tcp断开掉通常是客户端主动断开
这种情况同时是客户端应用程序调用close(fd)关闭套接字,这将触发tcp进程发送
FIN,此时客户端将会处于FIN_WAIT_1,服务器端在接收到这个FIN后将会处于close_wait()状态
同时read()return 0,然后服务器端将会发送ACK 值为客户端发送的FIN值加1,客户端在接收到
服务器端发送给它的ACK后将会处于FIN_WAIT_2然后服务器端将
客户端的文件描述符读端关闭,此时服务器端可能还会有未发送的数据,通常会悄悄丢弃掉,然后
关闭客户端描述符close(),然后服务器端tcp进程将会发送FIN此时服务器端将会处于LAST_ACK状态
客户端在接收到服务器端发送的FIN后将会由FIN_WAIT_2状态变为TIME_WAIT状态,同时发送ACK值为
客户端发送的FIN值加1,服务器端在接收到客户端发送的ACK后核对无误后将由LAST_ACK状态变为
CLOSED状态。注意客户端在处于TIME_WAIT状态时要经历2个MSL时间才会将状态变为CLOSED通常这个
等待的时间为60秒

tcp 11种状态转换图相关推荐

  1. TCP协议连接的11种状态浅谈

    了解TCP的协议可以在很大程度上帮助我们分析服务器当前的TCP连接状态,同时也是排查一些网络故障的基础,首先来看一下TCP协议的三次握手与四次断开. TCP协议三次握手   1.客户端首先发起连接,也 ...

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

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

  3. go 监测tcp 连接断开_TCP三次握手和四次挥手以及11种状态

    三次握手 置位概念:根据TCP的包头字段,存在3个重要的标识ACK.SYN.FIN ACK:表示验证字段 SYN:位数置1,表示建立TCP连接 FIN:位数置1,表示断开TCP连接 三次握手过程说明: ...

  4. java tcp ack_TCP三次握手和四次挥手以及11种状态

    Java面试笔试面经.Java技术每天学习一点 作者:IT_外卖小哥 来源:https://blog.51cto.com/jinlong 1.三次握手 置位概念:根据TCP的包头字段,存在3个重要的标 ...

  5. 重学TCP协议(8) TCP的11种状态

    TCP的11种状态 为了逻辑更加清晰,假设主动打开连接和关闭连接皆为客户端,被动打开连接和关闭连接皆为服务端 客户端独有的:(1)SYN_SENT (2)FIN_WAIT1 (3)FIN_WAIT2 ...

  6. TCP三次握手四次断开及11种状态转变

    TCP三次握手四次断开及11种状态转变 置位概念: 根据TCP的包头字段,存在三个重要的标识ACK.SYN.FIN ACK: 表示验证字段 SYN: 位数置为1,表示建立TCP连接 FIN: 位数置为 ...

  7. TCP/IP 协议簇 端口 三次握手 四次挥手 11种状态集

    第1章 概念介绍 1.1 VLAN 1.1.1 什么是VLAN VLAN(Virtual LAN),翻译成中文是"虚拟局域网".LAN可以是由少数几台家用计算机构成的网络,也可以是 ...

  8. Linux命令:netstat【监控TCP/IP网络,可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息】【TCP的11种状态】

    netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表.实际的网络连接以及每一个网络接口设备的状态信息. netstat [选项] 选项 描述 -a 显示所有网络连接和监听的所 ...

  9. TCP连接的状态转换图深度剖析

    在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,如图1所示. (1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待 ...

  10. TCP连接的状态详解以及故障排查

    转载于https://blog.csdn.net/hguisu/article/details/38700899 我们通过了解TCP各个状态,可以排除和定位网络或系统故障时大有帮助.(总结网络上的内容 ...

最新文章

  1. C/C++笔记(04):GB2312字符串和UTF-8之间的转换
  2. 《快速软件开发——有效控制与完成进度计划》
  3. sqlserver2008 获取最后插入的id_Python3操作SQL Server2008数据库
  4. python入门常用代码
  5. Java回顾之多线程同步
  6. JPA @Embeddable和@Embedded
  7. .net pdf转图片_PDF转图片怎么做?PDF一键转图片!
  8. 程序猿的爱情--2011-01-05
  9. 使用maven搭建ssm项目配置+tomact
  10. python画正切函数_在matplotlib中绘制tan
  11. 备战数学建模22-数学建模论文写作规范总结
  12. 基于Matlab系统的HVDC系统
  13. java面试英语自我介绍_程序员面试英文自我介绍
  14. 等分频率法模拟随机波列(线性波叠加原理)
  15. sencha touch 相机,相册调用
  16. 看考研视频如何屏蔽键盘(锁定键盘)
  17. 【转】人家在美国怎么过的,7年,我无比惭愧
  18. 打开CHM文件内部中文乱码问题的解决
  19. c语言outl函数,Outlook MAPI开发指南
  20. 现代IT项目中的需求管理如何做?

热门文章

  1. ADB常用命令及其用法大全
  2. VC++6显示行号插件+VC6LineNumberAddin.dll+注册机
  3. sql代码格式化_使用SQL格式化程序选项管理SQL代码格式化
  4. 【Linux】ubuntu锐捷客户端连接四川大学校园网
  5. Struts框架命名空间问题答疑
  6. 2021年下半年软考网络工程师真题答案解析
  7. uat环境是什么环境_什么是开发环境、测试环境、UAT环境、仿真环境、生产环境(收集整理)...
  8. 手机号码归属地查询App
  9. visio 2010 激活方法
  10. 电脑集成显卡莫名消失与重新恢复的过程,以华硕Z97-K主板为例说明