计算机网络教程-TCP状态转换 - STEMHA's Blog

计算机网络教程-TCP状态转换

TCP状态表

状态 说明 状态 说明
CLOSED 没有连接存在 FIN-WAIT-2 首个FIN 的ACK 已被接收;等待第二个FIN
LISTEN 接收到被动打开;等待SYN CLOSE-WAIT 首个FIN 被接收,ACK 被发送;等待应用关闭
SYN-SENT SYN已被发送;等待ACK TIME-WAIT 第二个FIN 被接收,ACK 被发送;等待2MSL 超时
SYN-RCVD SYN + ACK 已被发送;等待ACK LAST-ACK 第二个FIN 被发送;等待ACK
ESTABLISHED 连接建立;数据传输正在进行 CLOSING 双端决定同时关闭
FIN-WAIT-1 首个FIN 已被发送;等待ACK

示例

TCP状态转换
客户进程向它的TCP 发出主动打开命令来请求连接到特定套接字地址。

  • TCP 发送一个SYN 段并转移到SYN-SENT 状态。
  • 在收到SYN + ACK 段后,TCP 发送了一个ACK 段并且进入ESTABLISHED状态。
  • 数据被传输,可能是双向的,并且被确认。

当客户进程没有数据要发送了,它发出称为主动关闭的命令。

  • TCP 发送FIN 段并进入FIN-WAIT-1状态。
  • 当它接收到ACK 段,它进入FIN-WAIT-2状态。
  • 当客户接收到FIN 段时,它发送一个ACK 段并进入TIME-WAIT状态。
  • 客户保持这种状态2MSL秒(TCP 计时器)。
  • 当相应计时器超时,客户进入CLOSED状态。

服务器进程发出被动打开命令。

  • 服务器TCP 进入LISTEN 状态并且保持这种状态直到它接收到一个SYN 段。
  • TCP 之后发送一个SYN + ACK 段并且进入SYN-RCVD 状态,等待客户发送ACK段。
  • 在接收到ACK 段后,TCP 进入ESTABLISHED 状态,这就开始了数据传输。

TCP 保持这种状态直到它接收到一个来自客户的FIN 段,这表示没有其他数据要被交换且连接可以被关闭。

  • 一旦服务器接收到FIN 段,那么它就向客户发送带有虚拟EOF 标记的排队中所有的数据,这意味连接必须被关闭。
  • 它发送一个ACK 段且进入CLOSE-WAIT状态,但是推迟确认来自客户的FIN 段,直到它接收到来自进程的被动关闭命令。
  • 在接收到被动关闭命令后,服务器向客户发送FIN 段并进入LAST-ACK状态,等待最终ACK。
  • 当ACK 段从客户发送后被服务器接收,服务器进入CLOSE 状态。

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×