【问题标题】:How to guarantee the transmission of data over the network?如何保证数据在网络上的传输?
【发布时间】:2017-03-29 16:44:27
【问题描述】:

想象两台机器 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 会反过来将问题推进 1 步。

【问题讨论】:

    标签: networking data-transfer


    【解决方案1】:

    这是一个已经研究多年的大问题。了解 TCP 协议,该协议保证数据将被传递或发送方(最终)知道传递可能失败。

    您可以从这里开始阅读:https://en.wikipedia.org/wiki/Transmission_Control_Protocol 但是网络上有更多关于 TCP 的有用和有趣的页面。

    或者您可以只使用 TCP 并利用已经完成的工作。

    【讨论】:

    • 我实际上已经阅读了该页面,但不清楚 TCP 协议是否/如何在交付时做出这样的保证。
    • 最终归结为等待接收方 ACK 的超时。 [大体简化]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 2014-06-05
    • 2019-12-12
    • 1970-01-01
    相关资源
    最近更新 更多