1 TCP状态转移
译自:http://www.tcpipguide.com/free/t_TCPOperationalOverviewandtheTCPFiniteStateMachineF-2.htm
状态 | 状态描述 | 下一个转移状态及其状态转移间的事件 |
---|---|---|
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 | 设备双方分别发送和接收到FIN和ACK,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
客服端 | 服务器端 | ||||
---|---|---|---|---|---|
开始状态 | 变化过程 | 转移状态 | 开始状态 | 变化过程 | 转移状态 |
ESTABLISHED | centered | $12 | |||
CLOSING | are neat | $1 | |||
TIME-WAIT | are neat | $1 | |||
TIME-WAIT | are neat | $1 | |||
CLOSED | are neat | $1 |