TCP 连接状态详解



一个TCP连接的过程中,会经历一系列的状态变化,这些变化包括:

LISTENSYN_SENTSYN-RECEIVEDESTABLISHEDFIN-WAIT-1FIN-WAIT-2CLOSE-WAITCLOSINGLAST-ACKTIME-WAITCLOSED。其中CLOSED是一个虚构的状态,因为CLOSEDTCP连接的TCBTransmission Control Block)已经释放掉了,所以此时这个TCP连接已经不存在了。关于各个状态的一个简要说明:

  1. LISTEN:侦听并等待对端的TCP连接请求
  2. SYN-SENT:发送SYN连接请求后,等待对端回复SYN请求
  3. SYN-RECEIVED:收到来自对端的SYN请求,并回复SYN请求后,等待对端响应SYN请求的ACK消息
  4. ESTABLISHED:代表连接建立,双方在这个状态下进行TCP数据交互
  5. FIN-WAIT-1:发送FIN关闭连接请求后,等待对方响应FINACK消息或者对端的FIN关闭请求
  6. FIN-WAIT-2:等待对方FIN关闭请求
  7. CLOSE-WAIT:等待本地用户(进程)发送FIN关闭请求给对端
  8. CLOSING:当双方同时发送FIN关闭请求时,会进入CLOSING状态,等待对端发送FIN报文的响应ACK消息
  9. LAST-ACK:收到对端FIN请求后,回复ACKFIN并等待对方回复FIN的响应ACK消息,此时进入此状态
  10. TIME-WAIT:该状态是为了确保对端收到了FIN请求的ACK响应,默认会等待两倍MSL时长(MSLMaximum Segment Lifetime,即报文最大生存时间,超过这个时间的报文会被丢弃)

 

对于上面的状态之间的变化关系,可以参考RFC-793中的TCP连接状态变化图:

Transmission Control Protocol anal Specification act I ve OPEN create TCB snd SYN CLOSE del ete pa s s I ve create rcv SYN OPEN RCVD CLOSE snd FIN FIN WAIT-I rcv ACK I FINV7AIT-2 1 CLOSED LISTEN SYN ACK CLOSING FIN delete TCB snd SYN, rcv ACK of ACK FIN FIN ACK snd snd SYN SYN,ACK FIN ACK of FIN rcv ACK of rcv FIN ACK Ime o ut =2MSL — ——+delete TCB SYN SENT CLOSE CLOSE I snd FIN V LAST—ACK I rcv ACK of FIN I CLOSED TIME TCP Connection State Figure 6 . DI agram

注:

图中“---------”上下的内容表示状态变换的条件(例如snd SYN,ACK表示发送SYNACK报文,rcv FIN表示收到FIN报文等等)

图中“+-------+”中框起来的是各个TCP连接的状态

图中“-------->”这类箭头表示状态之间变换的顺序(还有各种折线箭头)

 

 

TCP三次握手的过程以及状态切换过程说明:

    TCP A                                               TCP B

1.  CLOSED                                              LISTEN

2.  SYN-SENT    --> <SEQ=100><FLAGS=SYN>                 --> SYN-RECEIVED

3.  ESTABLISHED <-- <SEQ=300><ACK=101><FLAGS=SYN,ACK>    <-- SYN-RECEIVED

4.  ESTABLISHED --> <SEQ=101><ACK=301><FLAGS=ACK>       --> ESTABLISHED

5.  ESTABLISHED --> <SEQ=101><ACK=301><FLAGS=ACK><DATA> --> ESTABLISHED

过程说明:

  1. B作为服务器端处于
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值