TCP与半开连接,如何传输数据?

网络工程 tcp 半双工
2022-02-15 13:12:28

TCP 的发送方在没有收到已发送数据包的 ACK 数据包的情况下无法完成数据传输。

但是我想的情况是服务器关闭了连接,所以在这种情况下状态是“半打开(客户端)连接”,客户端无法从服务器获得确认,那么客户端如何传输数据?或者客户做什么?

2个回答

客户端然后执行它被指示做的事情......通常有一些限制来处理所谓的“胚胎连接”,因为在协商连接时通常会达到半开连接状态。没有限制和超时端点暴露于 SYN 洪水 DoS 攻击。您可以阅读 RFC 793,第 33 页,关于“半开连接和其他异常”

https://www.rfc-editor.org/rfc/rfc793

基本上有两种方法可以关闭主机 A 和 B 之间的 TCP 连接:

  1. 正确的方法:A 正在发送一个FIN,告诉它不再发送新的 TCP 段。但它会继续发送ACK连接是半封闭的,可以永远保持这种状态。当 B 发送完数据后,他也可以用FIN关闭他的部分连接当他收到最后一个 ACK​​ 时,连接将完全关闭。
  2. 出于各种原因,A 可以发送一个RST数据包,告诉该连接不考虑在内。收到RST消息后,B会立即停止连接。

AFAIK,哪个主机是服务器或客户端不会改变基础。