什么是TCP连接释放?


TCP连接是全双工连接。为了理解连接释放,我们可以将其视为一对单工连接。然后,我们可以想象每个单工连接都是独立释放的。释放TCP连接是对称的。任何端口都可以发送带有FIN位的TCP段,这意味着当FIN在该方向被确认时,它没有更多信息要发送,该方向将关闭。但是,数据仍然可以继续在另一个方向持续流动。

如果在两次最大分组寿命内没有收到FIN响应,则FIN的发起方将释放连接。接收方最终会注意到它不再接收数据,并且也会超时。通常,释放连接需要四个TCP段,即每个方向一个FIN和一个ACK。

连接建立和释放的有限状态机

可以使用有限状态机来表示TCP连接建立和释放所涉及的步骤。此类状态机中的11个状态在表中给出。

TCP连接的不同状态

下表列出了TCP连接的不同状态:

状态
描述
          关闭(Closed)
没有活动的或未决的连接。
          监听(Listen)
服务器正在等待传入连接。
     SYN已收到(SYN Received)
已收到连接请求。等待ACK。
     SYN已发送(SYN SENT)
应用程序已启动打开连接。
     已建立(Established)
正常的速率数据传输。
     FIN等待1(FIN wait-1)
应用程序发送方已完成。
     FIN等待2(FIN wait-2)
另一方已同意等待所有分组过期。
     计时等待(Timed Wait)
等待所有分组过期。
     关闭(Closing)
双方都同时尝试关闭。
     关闭等待(Close wait)
另一方已提出释放。
     最后ACK(Last ACK)
等待先前关闭的fin的ack。

在上表所示的11个状态中,某些特定事件是合法的。对于每个事件,它可能会采取某些操作,但如果发生其他事件,则会报告错误。有限状态机如图所示。(此处应插入状态机图)

更新于:2021年5月5日

5K+ 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告