TCP状态转移图学习总结 (转)

转载 2015年07月07日 11:11:36

这是网络编程的基础,tcp的状态转移图说到底就是一个状态机的不同状态之间的转换关系以及触发这些状态需要的条件,一共存在11个状态,我们来逐一分析:

090310142823

1.CLOSED:起始点,在超时或者连接关闭时候进入此状态。

2.LISTEN:svr端在等待连接过来时候的状态,svr端为此要调用socket, bind,listen函数,就能进入此状态。此称为应用程序被动打开(等待客户端来连接)。

3.SYN_SENT:客户端发起连接,发送SYN给服务器端。如果服务器端不能连接,则直接进入CLOSED状态。

4.SYN_RCVD:跟3对应,服务器端接受客户端的SYN请求,服务器端由LISTEN状态进入SYN_RCVD状态。同时服务器端要回应一个ACK,同时发送一个SYN给客户端;另外一种情况,客户端在发起SYN的同时接收到服务器端得SYN请求,客户端就会由SYN_SENT到SYN_RCVD状态。

5.ESTABLISHED:服务器端和客户端在完成3次握手进入状态,说明已经可以开始传输数据了。

以上是建立连接时服务器端和客户端产生的状态转移说明。相对来说比较简单明了,如果你对三次握手比较熟悉,建立连接时的状态转移还是很容易理解。

接下来服务器端和客户端就进行数据传输。。。。,当然,里面也大有学问,就此打住,稍后再表。

下面,我们来看看连接关闭时候的状态转移说明,关闭需要进行4次双方的交互,还包括要处理一些善后工作(TIME_WAIT状态),注意,这里主动关闭的一方或被动关闭的一方不是指特指服务器端或者客户端,是相对于谁先发起关闭请求来说的:

6.FIN_WAIT_1:主动关闭的一方,由状态5进入此状态。具体的动作时发送FIN给对方。

7.FIN_WAIT_2:主动关闭的一方,接收到对方的FIN ACK,进入此状态。由此不能再接收对方的数据。但是能够向对方发送数据。

8.CLOSE_WAIT:接收到FIN以后,被动关闭的一方进入此状态。具体动作时接收到FIN,同时发送ACK。

9.LAST_ACK:被动关闭的一方,发起关闭请求,由状态8进入此状态。具体动作时发送FIN给对方,同时在接收到ACK时进入CLOSED状态。

10.CLOSING:两边同时发起关闭请求时,会由FIN_WAIT_1进入此状态。具体动作是,接收到FIN请求,同时响应一个ACK。

11.TIME_WAIT:最纠结的状态来了。从状态图上可以看出,有3个状态可以转化成它,我们一一来分析:

a.由FIN_WAIT_2进入此状态:在双方不同时发起FIN的情况下,主动关闭的一方在完成自身发起的关闭请求后,接收到被动关闭一方的FIN后进入的状态。

b.由CLOSING状态进入:双方同时发起关闭,都做了发起FIN的请求,同时接收到了FIN并做了ACK的情况下,由CLOSING状态进入。

c.由FIN_WAIT_1状态进入:同时接受到FIN(对方发起),ACK(本身发起的FIN回应),与b的区别在于本身发起的FIN回应的ACK先于对方的FIN请求到达,而b是FIN先到达。这种情况概率最小。

关闭的4次连接最难理解的状态是TIME_WAIT,存在TIME_WAIT的2个理由:

1.可靠地实现TCP全双工连接的终止。

2.允许老的重复分节在网络中消逝。

详解TCP状态转移图

转载自http://www.cnblogs.com/qlee/archive/2011/07/12/2104089.html注:主动、被动 与 服务器、客户端没有明确的对应关系。这个图N多人都知道,它...
  • xionghuixionghui
  • xionghuixionghui
  • 2017年04月22日 22:14
  • 364

TCP状态转换图详解

1.CLOSED:起始点,在超时或者连接关闭时候进入此状态。 2.LISTEN:svr端在等待连接过来时候的状态,svr端为此要调用socket, bind,listen函数,就能进入此状态。此称为...
  • lingfengtengfei
  • lingfengtengfei
  • 2013年06月06日 14:20
  • 6977

【Unix 网络编程】TCP状态转换图详解

在前面,已经介绍了TCP协议的三路握手和四次挥手。如下图所示,TCP通信过程包括三个步骤:建立TCP连接通道(三次握手)、数据传输、断开TCP连接通道(四次挥手)。...
  • yeswenqian
  • yeswenqian
  • 2014年10月21日 21:50
  • 5297

TCP状态转换图详解

以下对几个guan'jia
  • zjsyhjh
  • zjsyhjh
  • 2014年07月05日 18:01
  • 1312

TCP的状态迁移图

TCP的状态迁移不复杂。 TCP有11个状态,这些状态在TCP的三次握手和四次挥手里面都牵涉到。这些状态之间的迁移就是三次握手和四次挥手的过程。 再回顾一下三次握手和四次挥手的过程吧http://...
  • u010902721
  • u010902721
  • 2015年05月24日 22:18
  • 2286

基于状态机State Machine的程序设计技巧②状态转移图和简单通信协议

基于状态机进行程序设计的第一步是要设计状态机的状态设计,然后基于设计的状态画状态转移图,所谓状态转移图就是用于描述说明状态机中各个状态之间的转移条件以及操作。下面使用状态机设计一个之前常用的通信协议,...
  • tq384998430
  • tq384998430
  • 2016年12月30日 11:40
  • 704

状态转换图简介

状态转换图(简称为状态图)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。此外,状态图还指明了作为特定事件的结果系统将做哪些动作。 (一)状态 状态是任何可以被观察到的系统行为模式,一个...
  • qq_15037231
  • qq_15037231
  • 2017年03月05日 15:24
  • 1983

TCP状态转移图学习总结

上两周无意中讨论起这个话题,发现andy同学对此甚为熟悉,于是叫他给大家分享了一下,在这里做一个沉淀。 这是网络编程的基础,tcp的状态转移图说到底就是一个状态机的不同状态之间的转换关系以及触发...
  • AAA20090987
  • AAA20090987
  • 2014年05月07日 11:25
  • 649

TCP状态转移图学习总结

上两周无意中讨论起这个话题,发现andy同学对此甚为熟悉,于是叫他给大家分享了一下,在这里做一个沉淀。 这是网络编程的基础,tcp的状态转移图说到底就是一个状态机的不同状态之间的转换关系以及触发这些...
  • tanglanting12
  • tanglanting12
  • 2013年10月03日 23:32
  • 676

TCP状态转移图学习总结

这是网络编程的基础,tcp的状态转移图说到底就是一个状态机的不同状态之间的转换关系以及触发这些状态需要的条件,一共存在11个状态,我们来逐一分析: 1.CLOSED:起始点,在超时或者连接关闭时候进...
  • lidna242
  • lidna242
  • 2015年08月21日 11:18
  • 190
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TCP状态转移图学习总结 (转)
举报原因:
原因补充:

(最多只允许输入30个字)