第2章 传输层:TCP和UDP

1 TCP状态转移

译自:http://www.tcpipguide.com/free/t_TCPOperationalOverviewandtheTCPFiniteStateMachineF-2.htm

第2章 传输层:TCP和UDP_第1张图片
图1 TCP的状态转移图

表1 TCP的有限状态机的状态,事件,及其它们之间的转换

状态 状态描述 下一个转移状态及其状态转移间的事件
CLOSED
这表示在建立连接之前的缺省状态,这种状态也称为“虚构状态”,因为其表示在设备之间没有连接的状态(如,客服端和服务端压根没建立连接,或者先建立连接然后连接被销毁之后的状态)
被动打开:服务器端通过被动打开一个TCP端口建立起连接进程,同时需要创建一个用于管理连接的数据结构transmission control block or TCB;然后状态从CLOSED转换到LISTEN
主动打开:客服端通过发送SYN消息建立主动连接,同时设置连接的TCB,然后从状态CLOSED转化为SYN-SENT
LISTEN 服务端在等待客户端发送同步消息(SYN)时的状态,此时服务端并没有发出SYN同步消息 接受客服端的SYN消息,同时向客户端发送SYN+ACK消息:服务器从客户端接收到一个SYN消息,同时向客户端也发送一条SYN消息,并告知客户端它已经收到了客户端发送的SYN消息。然后状态从LISTEN转换为SYN-RECEIVED
SYN-SENT 设备(通常是客服端)发送一个SYN同步消息,同时等待其他设备(通常是服务器)返回一个SYN同步消息 接受SYN发送ACK:如果一个设备发送出去一个SYN,然后接收到一个SYN,但是没有接受到对方的ACK,则该设备接受对方设备发过来的SYN,然后转换到状态SYN-RECEIVED,等待对方设备发送ACK消息,对方设备发送过来的ACK是对本设备发出的SYN消息的响应。
接受SYN+ACK,发送ACK:如果设备发送一条SYN消息,然后接收到对方设备发送的SYN+ACK,接着会通知对方设备,其发送的SYN已经接收到;然后将状态转化为ESTABLISHED
SYN-RECEIVED 设备双方都接受到对方的连接请求,即双方的SYN后处于SYN-RECEIVED状态,如果此时任何一方还没接受到对方发送过来的ACK消息时,则这一方会处于SYN-RECEIVED状态,处于SYN-RECEIVED状态的一方在等待对方发送与自己方已发出的SYN对应的ACK消息 接受ACK:当设备接收到自己发出的SYN消息的响应消息ACK时,设备转化为ESTABLISHED
ESTABLISHED 此状态是打开TCP连接后的稳定状态。一旦双方设备都进入这种状态,则双方就可以自由的进行数据交换了。这种状态将一直持续到连接关闭。 关闭连接,发送FIN:设备通过发出一个FIN消息来关闭自己的连接,同时设备由状态ESTABLISHED转化为FIN-WAIT-1状态。
一个设备可以从它的已连接设备上接收到一个FIN消息,这表明对方设备已经关闭,己方设备接受FIN消息,并将状态转化为CLOSE-WAIT
CLOSE-WAIT 当设备接受到其他设备的FIN关闭请求时,将处于CLOSE-WAIT状态,它将一直等待本设备上的应用接受了FIN请求并作出回应。 Close, Send FIN: The application using TCP, having been informed the other process wants to shut down, sends a close request to the TCP layer on the machine upon which it is running. TCP then sends a FIN to the remote device that already asked to terminate the connection. This device now transitions to LAST-ACK.
LAST-ACK 一个设备接受到其它设备的关闭请求,并接受了这个关闭请求,然后它向对方发送了一个FIN消息,等待对方的ACK应答 接收与FIN的响应消息ACK:设备发送出一个FIN并接受到其他设备发送回来的ACK响应,同时接收到对方的FIN,并发送给对方ACK;然后状态转化为CLOSED
FIN-WAIT-1 当设备在等待它发出的FIN的应答消息ACK或者在等待其它设备发送回来的连接中断的响应时,会处于FIN-WAIT-1 接收与FIN的响应消息ACK当设备接受到自己发出的关闭请求的响应时,设备从FIN-WAIT-1转化为FIN-WAIT-2.
接受FIN,发送ACK:设备发出FIN但是还没有接受到ACK,不过接收到其他设备的FIN,则该设备接收了其它设备的FIN,并发出应答ACK,同时状态转变为CLOSING.
FIN-WAIT-2 一个设备发出关闭请求并得到对方响应,但是还没有接受到对方发来的FIN,则此设备会处于FIN-WAIT-2状态。 接受到FIN,并发出ACK:设备从其它设备接收到FIN并发出ACK应答。然后状态变为TIME-WAIT
CLOSING 设备接受到其他设备的FIN,并发出应答ACK,但是没有收到从其它设备发给自己的ACK应答,则此时设备处于CLOSING 接受到FIN的应答ACK:设备接受到一个自已发出的FIN应答ACK,然后状态转化为TIME-WAIT
TIME-WAIT 设备双方分别发送和接收到FINACK,We are done, except for waiting to ensure the ACK is received and prevent potential overlap with new connections. (See the topic describing connection termination for more details on this state.) 超时设置:当超时后,状态转化为CLOSED

2 TCP同时终止

译自:http://www.tcpipguide.com/free/t_TCPConnectionTermination-4.htm

第2章 传输层:TCP和UDP_第2张图片
图2 TCP连接与终止

TCP连接与终止描述

客服端 服务器端
开始状态 变化过程 转移状态 开始状态 变化过程 转移状态
ESTABLISHED centered $12
CLOSING are neat $1
TIME-WAIT are neat $1
TIME-WAIT are neat $1
CLOSED are neat $1

你可能感兴趣的:(Uinx网络编程)