如何保证数据在网络上的传输?
How to guarantee the transmission of data over the network?
假设有2台机器A和B,A想确保B在网络出现故障的情况下也能收到一个数据包P,如何实现?
场景 1:
1) A通过网络将P发送给B.
问题:如果网络在第 1 步出现故障,B 将不会收到 P,A 也不会知道。
场景 2 确认:
1) A通过网络将P发送给B.
2) B如果收到P就发回ACK。
问题:如果网络在第2步出现故障,A将收不到ACK,所以A无法可靠地知道B是否收到了P。
拥有 ACK 的 ACK 反过来将问题进一步推进。
这是一个研究多年的大问题。了解 TCP 协议,该协议保证数据将被传递或发送者将(最终)知道传递可能失败。
您可以从这里开始阅读:https://en.wikipedia.org/wiki/Transmission_Control_Protocol
但是网上有很多关于 TCP 的有用和有趣的页面。
或者您可以只使用 TCP 并利用已经完成的工作。
假设有2台机器A和B,A想确保B在网络出现故障的情况下也能收到一个数据包P,如何实现?
场景 1:
1) A通过网络将P发送给B.
问题:如果网络在第 1 步出现故障,B 将不会收到 P,A 也不会知道。
场景 2 确认:
1) A通过网络将P发送给B.
2) B如果收到P就发回ACK。
问题:如果网络在第2步出现故障,A将收不到ACK,所以A无法可靠地知道B是否收到了P。
拥有 ACK 的 ACK 反过来将问题进一步推进。
这是一个研究多年的大问题。了解 TCP 协议,该协议保证数据将被传递或发送者将(最终)知道传递可能失败。
您可以从这里开始阅读:https://en.wikipedia.org/wiki/Transmission_Control_Protocol 但是网上有很多关于 TCP 的有用和有趣的页面。
或者您可以只使用 TCP 并利用已经完成的工作。