【发布时间】:2020-06-23 05:46:48
【问题描述】:
我在接收大于最大安全 UDP 大小的 UDP 数据包时遇到问题。我将 python 与 asyncio 一起使用,我在其中创建了一个 UdpReceiver 类,该类实现了用于实现数据报 (UDP) 协议 (asyncio.DatagramProtocol) 的基类。数据通过以下方式接收:
def datagram_received(self, raw_data: bytes, addr: Tuple[str, int]) -> None
但是,如果发送的数据超过最大安全 UDP 有效负载,它会被分成不同的包。有谁知道是否有可能克服网络上的最大安全 UDP 有效负载?我不需要收到每条消息,所以我不需要接收所有正在发送的包裹。如果没有,如何缓冲数据以组合单个消息中的所有片段?
最大有效负载大小:最大安全 UDP 有效负载为 508 字节,而数据包大小为 576,IP 标头最大为 60 字节,UDP 标头最大为 8 字节。
【问题讨论】:
-
您不必重新组装碎片。如果所有片段都到达,IP 层就会这样做。但是限制就是限制。不清楚你在问什么。
-
@user207421 仅在书籍中)
-
@eri 仅在书籍、RFC 和 Internet 主机中。你的观点?
-
您是否有主机托管或其他提供商?试试你自己。分段 udp 在本地网络中有效,但在 Internet 中无效。
-
这与我写的到底有什么不一致?
标签: python sockets udp python-asyncio datagram