文档章节

TCP state transform

markqk
 markqk
发布于 2016/07/11 11:30
字数 552
阅读 18
收藏 0

TCP state:

Client: 

    SYN_SENT (发送连接请求后等待匹配的连接请求) ->  ESTABLISHED(代表一个打开的连接) -> FIN_WAIT_1(发送关闭连接请求后等待对方确认) -> FIN_WAIT_2(收到服务器的ACK后客户端进入fin_wait_2,此时客户端已经完成关闭,等待服务器发来关闭请求) ->

TIME_WAIT(收到服务器的关闭请求FIN,给服务器发个ACK后进入time_wait) -> CLOSED(time_wait过了2MSL时间后进入closed)

Server:

    LISTEN -> SYN_RCVD(收到和发送一个连接请求后等待对方对连接请求确认) -> ESTABLISHED(代表一个打开的连接) -> CLOSE_WAIT(服务器收到客户端的FIN后向客户端发送ACK,之后进入close_wait) -> LAST_ACK(当服务器不需要继续发送数据,就发送FIN,进入last_ack) -> CLOSED(收到客户端的最后ACK后进入close)

 

当客户端开始连接时,服务器还处于LISTENING,

客户端发一个SYN包后,他就处于SYN_SENT状态,服务器就处于SYS收到状态,

然后互相确认进入连接状态ESTABLISHED.

 

当客户端请求关闭连接时,客户端发送一个FIN包后,客户端就进入FIN_WAIT_1状态,等待对方的确认包,

服务器发送一个ACK包给客户,客户端收到ACK包后结束FIN_WAIT_1状态,进入FIN_WAIT_2状态,等待服务器发过来的关闭请求,

服务器发一个FIN包后,进入CLOSE_WAIT状态,

当客户端收到服务器的FIN包,FIN_WAIT_2状态就结束,然后给服务器端的FIN包给以一个确认包,客户端这时进入TIME_WAIT,

当服务器收到确认包后,CLOSE_WAIT状态结束了,

这时候服务器端真正的关闭了连接.但是客户端还在TIME_WAIT状态下,

 

什么时候结束呢.我在这里再讲到一个新名词:2MSL等待状态,其实TIME_WAIT就是2MSL等待状态,

为什么要设置这个状态,原因是有足够的时间让ACK包到达服务器端,如果服务器端没收到ACK包,超时了,然后重新发一个FIN包,直到服务器收到ACK包.

© 著作权归作者所有

共有 人打赏支持
markqk
粉丝 0
博文 133
码字总数 60565
作品 0
朝阳
程序员
关于Kinect结合U3D开发体感游戏-菜鸟

@地瓜儿 你好,想跟你请教个问题: 我看了你的第一篇例子,但是GetJointPos函数不存在,然后看到论坛里有替换的函数,试了一下还是不行,求助! using UnityEngine; using System.Collection...

走在渣渣的路上
2015/04/01
722
5
有關Kinect结合Unity3D引擎开发体感游戏(二)

@地瓜儿 你好,想跟你请教个问题: 依照您定義的我建立kinectMoving.cs Kinect结合Unity3D引擎开发体感游戏(二) 我建立一個terrain的scene, 拉入一個Hierarchy組件(如cubes, 內包含階層cub...

Treesun
2014/08/22
292
1
css3 marquee

HTML结构如下: 原本一层DIV足够,又加了一层是为了增加左右的空白间隙。 然后就可以应用transform动画了: 方案源于stackoverflow:css3-marquee-effect...

一点灵犀
2016/07/18
122
0
/etc/sysconfig/iptables 正常运行

# Generated by iptables-save v1.4.7 on Fri Oct 13 15:37:45 2017 *filter :INPUT DROP [210:56954] :FORWARD DROP [0:0] :OUTPUT ACCEPT [113:8354] -A INPUT -p tcp -m state --state NE......

zancun
2017/10/13
0
0
ipsec高可用性试验

最近一段时间在搞ipsec,反向路由注入的那部分书上介绍的很少,而且网上的文章介绍的也不是很深入,于是就查了一下cisco的文档,总结了一下并做了实验。以下是实验过程。 RRI+HSRP+OSPF实验:...

范堡
2009/05/05
362
0

没有更多内容

加载失败,请刷新页面

加载更多

Web系统大规模并发:电商秒杀与抢购

一、大规模并发带来的挑战 在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在这个过程中,整个Web系统遇到了很多的问题和挑战。如果Web系统不做针对性的优化,会轻而易举地陷入到异常...

xtof
今天
1
0
代码质量管理平台-sonarqube

在工作中,往往开发的时候会不怎么注重代码质量的人很多,存在着很多的漏洞和隐患等问题,sonarqube可以进行代码质量的审核,而且十分的残酷。。。。。接下来我们说下怎么安装 进入官网下载:...

落叶清风
今天
6
0
在Ubuntu安装和配置Sphinx

Ubuntu系统默认是配置有sphinx的,先检查一下,别多此一举。。。。。 在开始本指南之前,您需要: 一个Ubuntu 16.04服务器。 sudo的一个非root用户,您可以通过以下设置本教程 。 安装在服务...

阿锋zxf
今天
1
0
Qt编写输入法V2018超级终结版

对于qt嵌入式linux开发人员来说,输入法一直是个鸡肋问题,要么不支持实体键盘同步,要么不能汉字输入,要么不支持网页输入等,这几年通过陆续接触大量的各种输入法应用场景客户,得到真实需...

飞扬青云
今天
2
0
TypeScript基础入门之高级类型的多态的 this类型

转发 TypeScript基础入门之高级类型的多态的 this类型 高级类型 多态的this类型 多态的this类型表示的是某个包含类或接口的子类型。 这被称做F-bounded多态性。 它能很容易的表现连贯接口间的...

durban
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部