TCP状态描述

TCP的有限状态机用来管理一个连接,当第一次运行时,连接从一个初始状态CLOSED开始,当两个应用程序开始通信时,经过一系列的TCP段交换和状态变迁,直到成功建立连接,两端都处于ESTABLISHED状态,正常的数据发送和接收都发生在这一状态。TCP的大部分时间也处于这一状态,当发生错误或程序退出通信时,关闭连接,经历一系列相关的状态变迁,返回到最初的CLOSED状态。

标准给出了在TCP连接的各个状态中,发生某些事件要执行的动作和状态转移行为。下表对TCP各个状态进行简单的描述。

状态

描述

CLOSED

连接的起始状态,这是一个“虚构”的状态,实际上此时还没有连接存在,也没有传输控制块(TCB)

LISTEN

等待客户端的连接请求,只有服务器才会处于这个状态

SYN-SENT

主机已经发起了一个连接请求,发送了SYN报文,正在等待与之匹配的连接确认,即对方发来的SYN和ACK

SYN-RECEIVED

主机接收了对方的连接请求,带有SYN的报文,并向对方回应了SYN和ACK。正在等待对方的确认,一旦收到相应的ACK,连接就建立成功

ESTABLISHED

成功建立连接,双方可以自由交换数据,收到的数据可以提交给应用程序

FIN-WAIT-1

应用程序主动关闭连接,发送了FIN,正在等待对方对FIN的确认或对方的终止连接请求FIN

FIN-WAIT-2

收到了主机关闭连接请求FIN的确认ACK,正在等待对方终止连接请求FIN

CLOSE-WAIT

已经收到对方关闭连接的请求FIN,并发送了ACK,正在等待本地应用程序关闭连接

CLOSING

已经发送了FIN,并且收到了对方发来的终止连接请求FIN,向对方发送ACK,双方同时关闭了连接,正在等待对方确认本机发送的连接关闭请求

LAST-ACK

本地应用程序已经关闭了连接,发送了FIN,正在等待对方对FIN的ACK

TIME-WAIT

双方都已经关闭了连接,本机发送的最后一个报文是ACK,这个状态要等待2倍的MSL(Maximum Segment Lifetime)时间,确保对方收到了ACK,防止与新连接发生重叠

TCP的状态机比较复杂,它是整个TCP工作的基础,理解TCP的状态机,对掌握TCP协议很有用处。

【学习资料】 《Winsock网络编程经络》

 

posted on 2012-12-31 12:17  zhuyf87  阅读(499)  评论(0编辑  收藏  举报

导航