TCP连接状态学习

来源:互联网 发布:香港淘宝网电话 编辑:程序博客网 时间:2024/06/05 13:06
一、客户端的状态可以用如下的流程来表示:
CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED
以上流程是在程序正常的情况下应该有的流程,从书中的图中可以看到,在建立连接时,当客户端收到SYN报文的ACK以后,客户端就打开了数据交互地连接。而结束连接则通常是客户端主动结束的,客户端结束应用程序以后,需要经历FIN_WAIT_1,FIN_WAIT_2等状态,这些状态的迁移就是前面提到的结束连接的四次握手。
二、服务器的状态迁移图
服务器的状态可以用如下的流程来表示:
CLOSED->LISTEN->SYN-RECEIVED->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED
在建立连接的时候,服务器端是在第三次握手之后才进入数据交互状态,而关闭连接则是在关闭连接的第二次握手以后(注意不是第四次)。而关闭以后还要等待客户端给出最后的ACK包才能进入初始的状态。
三、各个状态的详细解释
CLOSED:初始化状态,没有任何链接状态。
LISTEN:表示服务器端的某个SOCKET处于监听状态,可以接受连接
SYN-SENT:在服务端监听后,客户端SOCKET执行CONNECT连接时,客户端发送SYN报文,此时客户端就进入
SYN_SENT状态,等待服务端的确认
SYN-RECEIVED:服务端等待对方对连接请求的确认
ESTABLISHED:代表一个打开的连接
FIN-WAIT-1:关闭方(客户端)主动请求终止连接,等待被关闭方(服务端)的ACK和FIN报文
CLOSE-WAIT:等待关闭方(客户端)发来的连接中断请求,并立即发送带ACK的报文给关闭方(客户端)
FIN-WAIT-2:收到了被关闭方(服务端)ACK标志的报文
TIME-WAIT:收到了被关闭方(服务端FIN标志的报文
LAST-ACK:等待关闭方(客户单)的确认
CLOSED:没有任何链接状态
0 0