关于 UDP 发送接收缓冲区和网络的一些问题

关于 UDP 发送接收缓冲区和网络的一些问题

我有两台 Debian 服务器位于同一子网。它们通过交换机连接。我知道 UDP 不可靠。

问题 1:我假设链路层是以太网。标准以太网的 MTU 为 1500 字节。那么不被分段的最大数据报是 1500-20-8 = 1472 字节?我可以说,因为这两个服务器之间没有路由器,所以 IP 数据报不会被分段。

问题 2:由于两台服务器直接通过交换机连接,我可以假设所有数据报都按顺序到达并且路径上没有丢失吗?

问题 3:如何确定数据报在服务器上丢失的可能性是否是由于缓冲区溢出。应将接收缓冲区设置为多大,以使数据报不会溢出接收缓冲区。

答案1

1) 不。实际上,即使设置了不分段 (DF) 位也不能保证 UDP 上层不会发生分段。UDP 根本就不会向其上层提供这种保证。UDP 上层不应该关心这一点。

2)不可以。UDP 根本就不向其上层提供这种保证。

3) 唯一可靠的方法是在您计划使用的实际条件下进行测量。

从根本上讲,你试图做的是通过推理你无法想到任何违反保证的方式,来合成保证。你不能用这种方式合成保证。你只能获得协议实际提供的保证。虽然在实践中,大多数情况下都会以这种方式发生,但它并不能保证,就是这样。

答案2

  1. IP 数据包当然可以被发送它们的设备分割;它们知道其媒体的 MTU 低于它们发送的数据包,因此它们会相应地分割 IP 数据包。在当今时代,许多主机都实现了路径 MTU 发现,它明确告诉路由器根本不要处理碎片,而是告诉主机调整其该路径的有效 MTU,以便它处理任何必要的碎片。

  2. 不 - 使用单交换机拓扑您可能可以假设它们会按顺序到达,但不能假设没有损失。

  3. 这完全取决于所使用的设备、其性能以及传输的数据量。

相关内容