什么是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个状态中,某些特定事件是合法的。对于每个事件,它可能会采取某些操作,但如果发生其他事件,则会报告错误。有限状态机如图所示。(此处应插入状态机图)
广告