gpt4 book ai didi

java - 我选择 UDP 作为我的 peer 2 peer 服务,我如何证明它在我的情况下是可靠的

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:41:30 34 4
gpt4 key购买 nike

我有两个位于同一子网上的 debian 服务器。它们通过开关连接。我知道 UDP 不可靠。

Question 1: I assume the link layer is ethernet. And MTU from a standard Ethernet is 1500 bytes. However, when I did a ping from one server to another, I found out that the maximum packet size can be sent is 65507. Shouldn't it be 1500 bytes? Can I say, because there's no router in between these two servers, therefore, the IP datagram will not be fragmented.

Question 2: Because two servers are directly connected with a switch, can I assume that all datagrams arrives in order and no loss on the path?

Question 3: How can I determine that the chances of datagram dropped at the server because of buffer overflow. What size to set the receive buffer so that datagram will not overflow receive buffer.

最佳答案

没有。 UDP 甚至在同一台机器上的进程之间也不可靠。如果数据包被发送到套接字而没有给接收进程时间来读取它们,缓冲区将溢出并且数据包将丢失。

  1. 您在启用分段的情况下进行了 ping 测试。除此之外,ping 不使用 UDP,而是使用 ICMP,因此结果没有任何意义。小于MTU的UDP包不会被分片,但是MTU取决于更多的因素,比如IP选项和VLAN头,所以它可能不会大于1500。

  2. 没有。交换机执行缓冲,内部缓冲区可能会溢出。考虑一个 24 端口交换机,其中 23 个节点都以尽可能快的速度传输到最后一个节点。很明显,到最后一个节点的连接无法处理其他 23 个链路的总流量,交换机将尝试缓冲数据包,但最终会丢弃它们。

    除此之外,电噪声会破坏传输中的数据包,导致它们在校验和失败时被丢弃。

  3. 要分析缓冲区溢出的可能性,您可以使用排队论来计算数据包在缓冲区已满时到达的概率。您将需要一些关于数据包传输速率和处理时间的概率分布的假设。缓冲区中的数据包数量然后形成一个有限链,希望是马尔可夫链,您可以求解链中每个状态的稳态概率。要了解更多信息,可以使用“排队论”、“马尔可夫链”、“调用容量”、“电路容量”、“负载因子”等搜索关键字。


编辑:您更改了问题的标题。您的新问题的答案是:“您无法证明不正确的事情。”如果您想使用 UDP 制作可靠的应用程序,您应该添加自己的确认和丢失处理逻辑。

关于java - 我选择 UDP 作为我的 peer 2 peer 服务,我如何证明它在我的情况下是可靠的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8548246/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com