TCP 有限状态机

177 阅读2分钟

TCP 状态机.png

TCP标志位:

  1. SYN(synchronous) ,同步序号标识,用来发起一个连接。SYN=1表示这是一个连接请求或连接接受请求。
  2. ACK(acknowledgement),同步序号标识,用来发起一个连接。SYN=1表示这是一个连接请求或连接接受请求。
  3. PSH(push),标识接收方应该尽快将这个报文段交给应用层。接收到PSH = 1的TCP报文段,应尽快的交付接收应用进程,而不再等待整个缓存都填满了后再向上交付。
  4. FIN(finish),发端完成发送任务标识。用来释放一个连接。FIN=1表明此报文段的发送端的数据已经发送完毕,并要求释放连接。
  5. RST(reset),重建连接标识。当RST=1时,表明TCP连接中出现严重错误(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立连接。
  6. URG(urgent),紧急指针有效标识。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。

两个序号:

  1. Sequence number(顺序号码),序号字段。TCP链接中传输的数据流中每个字节都编上一个序号。序号字段的值指的是本报文段所发送的数据的第一个字节的序号。
  2. Acknowledge number(确认号码),确认号,是期望收到对方的下一个报文段的数据的第1个字节的序号,即上次已成功接收到的数据字节序号加1。只有ACK标识为1,此字段有效。

状态

状态描述
LISTEN等待来自远程TCP应用程序的请求
SYN_SENT发送连接请求后等待来自远程端点的确认。TCP第一次握手后客户端所处的状态
SYN-RECEIVED该端点已经接收到连接请求并发送确认。该端点正在等待最终确认。TCP第二次握手后服务端所处的状态
ESTABLISHED代表连接已经建立起来了。这是连接数据传输阶段的正常状态
FIN_WAIT_1等待来自远程TCP的终止连接请求或终止请求的确认
FIN_WAIT_2在此端点发送终止连接请求后,等待来自远程TCP的连接终止请求
CLOSE_WAIT该端点已经收到来自远程端点的关闭请求,此TCP正在等待本地应用程序的连接终止请求
CLOSING等待来自远程TCP的连接终止请求确认
LAST_ACK等待先前发送到远程TCP的连接终止请求的确认
TIME_WAIT等待足够的时间来确保远程TCP接收到其连接终止请求的确认

参考

  1. TCP状态转换图
  2. 三次握手和四次挥手以及TCP标志位的详细介绍
  3. TCP报文格式