TCP协议连接的11种状态浅谈-阿里云开发者社区

开发者社区> 技术小胖子> 正文

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

简介:
+关注继续查看
  了解TCP的协议可以在很大程度上帮助我们分析服务器当前的TCP连接状态,同时也是排查一些网络故障的基础,首先来看一下TCP协议的三次握手与四次断开。
 
TCP协议三次握手
 
TCP连接三次握手
 
  1.客户端首先发起连接,也就是第一次握手,处于SYN_SENT状态。
 
  2.服务器端收到SYS 数包,立即发送ACK 应答,并发送自己的SYN(第二次握手);状态被置为SYN_RECEIVED。
 
  3.客户端接收到服务器端的应答,将自己置于ESTABLISHED,表示已经准备就绪,同时发出ACK 应答(第三次握手)。
 
  4.服务器端接收到应答,立即将自己置于ESTABLISHED 状态,开始发送数据。
 
数据传输keepalive
 
  中间的这段时间可以称之为连接保持阶段,既服务器端与数据段正在传输数据。
 
TCP协议四次挥手
 
TCP连接四次挥手
 
   1.客户端接收完数据后,发送FIN,同时将自己置于FIN_WAIT_1 状态,等待服务器端的应答。
 
  2.服务器端收到关闭请求,将自己置于CLOSE_WAIT,等待本地用户(进程)的关闭命令。同时发送应答告诉客户端可以关闭,并且自己也向客户端请求关闭,发出后将自己从CLOSE_WAIT 变迁到LAST_ACK 状态,等待客户端应答后由本地用户(进程)执行关闭操作。
 
  3.客户端在接到服务的应答后,将自己的状态置于FIN_WAIT_2,等到服务器段发出FIN( 关闭请求), 当接收到服务器端发来的FIN 之后, 将自己置于TIME_WAIT(因为是客户端发起的关闭所以是TIME_WAIT,如果是服务器端发起的关闭,那么我们看到的将是CLOSE_WAIT。CLOSE_WAIT 是我们在浏览网页时经常看到的状态,因为网页传输完成后通常由服务器发起关闭命令),等待一定的时间以确保服务器接收到应答。
 
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 接收到它的连接终止请求的确认。
 
CLOSED:不在连接状态(这是为方便描述假想的状态,实际不存在)
 
写在最后
 
  熟悉掌握TCP/IP协议是作为一名出色的网络工程师必备的技能,等有时间我也要好好温习下这门功课了,因为不管是在平时管理网络当中,还是在处理系统错误的过程中,掌握这些协议真的是很有用。
 
  原创文章首发自阿布的博客,转载请注明,本文地址:http://www.abuve.com/294.html


     本文转自阿布ve 51CTO博客,原文链接:http://blog.51cto.com/abuve/611468,如需转载请自行联系原作者




版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
python+soket实现 TCP 协议的客户/服务端中文(自动回复)聊天程序
【吐槽】 网上的代码害死人,看着都写的言之凿凿,可运行就是有问题。 有些爱好代码、喜欢收藏代码的朋友,看到别人的代码就粘贴复制过来。可是起码你也试试运行看啊大哥   【正文】 昨日修改运行了UDP协议的C/S聊天程序,可是TCP协议的怎么都不行。
1168 0
python中TCP协议中的粘包问题
1.粘包现象 基于TCP实现一个简易远程cmd功能 复制代码 服务端 import socketimport subprocesssever = socket.socket()sever.bind(('127.
2836 0
TCP的几个状态对于我们分析所起的作用SYN, FIN, ACK, PSH,
TCP的几个状态对于我们分析所起的作用。 在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG. 其中,对 于我们日常的分析有用的就是前面的五个字段。
624 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
12034 0
21119
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载