TCP状态机
在下图中,可以看到有很多异常的状态变迁,其中有同时打开(两个服务器之间互相请求建立连接);还有同时关闭(进入 CLOSING 状态);
并不是所有系统都能够实现同时打开的功能,比如早期的内核版本并不支持 LISTEN 到 SYN_SENT 的变迁;
SYN_RCVD 变迁到 LISTEN 状态是有条件的:只有正常的进入到 SYN_RCVD 状态时(即蓝色粗虚线,从 LISTEN 进入 SYN_RCVD),然后收到 RST 段,就又可以回到 LISTEN 状态;
- 绿色粗实线和蓝色粗虚线表示正常的状态变迁。
- 红色细实线表示异常变迁。
- 顶层的 CLOSED 状态是一个假想的起点和终点,并不是一个真正的状态。