UDP数据包保持浮动多长时间?

时间:2015-11-15 03:45:01

标签: sockets routing udp

我们一直听到udp的不可靠性,它可能达到或未达到或只是无序(表示延迟)。

在交付之前它一直持有什么?

由于连接较少,如果你继续发送没有网络连接的数据包,它会去哪里?驱动缓冲区?

同样,当接收器无法访问时,数据包是否会立即丢失,或者它是否会在预计主机即将可用的情况下浮动?如果是,那么在哪里?

2 个答案:

答案 0 :(得分:0)

在从一个设备到另一个设备的直接连接上,没有中间设备,不应该是一个问题。你遇到问题的地方就是经过一堆交换机和路由器(比如互联网)。

有几个原因:

  • 如果交换机丢帧,则无法重新发送帧。​​
  • 路由器会在数据包拥塞时缓冲数据包,而数据包也可以 如果缓冲区已满,则被丢弃,或者可能故意丢弃它们以防止拥塞。
  • 负载均衡可能导致数据包无序传递。

您无法控制网络外的任何内容。

答案 1 :(得分:0)

  

在交付之前它一直持有什么?

如果数据包到达的速度超过设备可读取的速度,则可能会发生数据包缓冲。缓冲可以是设备的NIC或设备驱动程序的软件队列,也可以是驱动程序和堆栈之间的软件队列。但是,如果到达率 如果它不能被这些缓冲机制处理得更高,那么它将被丢弃在那些适当的层/位置(基于设计)。

  

由于连接较少,如果你继续发送没有的数据包   网络连接它会去哪里?驱动程序缓冲区?

如果没有网络,可能没有其他中间网络设备,因此不会出现重大问题。但是,它还取决于您的架构/设计/配置。如果超出内部OS接收缓冲区限制/套接字缓冲区大小(SO_RCVBUF,rmem_max,rmem_default)的配置值,则此处可能会丢弃。并且,如果各个设备驱动程序中的软件队列溢出或者设备驱动程序和设备之间的软件队列溢出。设备堆栈溢出,这里可以有丢弃。此外,如果CPU忙于寻址另一个优先级任务,它暂停接收,这里可能会丢失。

  

类似地,当接收器不可达时,立即是分组   丢失或者它是否有点浮动,希望主机可用   不久?如果是,那么在哪里?

如果没有可到达的目的地,则应由路由器丢弃。 另请注意,如果数据包到达此路由器时TTL / hoplimit计数(在IP中)为零,则特定路由器也应丢弃数据包。