我必须实现一个伪 TCP 握手,然后才能进行文件传输。我可以轻松完成文件传输:简单的发送-确认。我无法理解的是,假设在 3 个步骤之一中会出现数据包丢失,如何进行三次握手。
例如:我的客户端发送一个 SYN 数据包。如果等待 SYN-ACK 超时(数据包丢失或速度太慢),它会重新发送。服务器发送 SYN-ACK。如果等待 ACK 超时,则重新发送 SYN-ACK。现在客户端如何知道他的 ACK 已收到?
答案1
客户端不知道他的 ACK 是否已收到,但他为什么要关心呢?无论是否收到 ACK,连接都会建立。您永远无法确切知道发送的最后一个数据包是否已收到,因此您必须设计一个不需要这一点的协议。