【问题标题】:Should I use UDP or TCP in this case?在这种情况下我应该使用 UDP 还是 TCP?
【发布时间】:2019-01-20 17:54:18
【问题描述】:

P2P 网络:

最大的消息约为 300KB。大多数消息较小(5-50kb)。如果他们没有收到消息是完全可以的,因为他们会启动引导(重新发送)。

我倾向于 UDP,你猜对了,它是一个区块链软件!但是,我们目前的设计是 TCP。

【问题讨论】:

    标签: networking tcp network-programming udp p2p


    【解决方案1】:

    UDP 数据包的最大大小为 65,535 字节(包括 8 字节 UDP 标头和 20 字节 IP 标头),因此对于最大的消息,您必须实现一种“分块”形式,将消息分成更小的部分(除非您使用的是 IPv6 Jumbograms),其中包含应用程序生成的标头,其中包含数据包的顺序以及可能的数据大小。当您超过 MTU 大小时,您还会遇到碎片问题(尽管您提到的可靠性机制可能不是这样的问题)。

    我想你必须问问自己,与当前的 TCP 设计相比,UDP 会给你带来什么好处。使用 UDP 的主要原因是当您需要具有非常小的网络延迟的轻量级协议,或者您需要能够通过 LAN 广播或多播数据包时。如果你没有这些需求,而 TCP 正在做这项工作,为什么要改变?

    【讨论】:

    • 我的共识算法最多可以容忍 1/3 的节点没有响应。这意味着我已经有了应用层故障处理。通过使用 TCP,在网络慢的情况下阻塞线头会导致我的系统性能下降。这就是我研究 UDP 的原因。
    • 您究竟关心什么线头阻塞方案?数以千计的互联网服务器能够通过 TCP 为数以万计的慢速网络客户端提供服务,而不会导致服务器性能下降。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 2017-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 2023-03-04
    相关资源
    最近更新 更多