因为多播数据包通常是基于 udp 的,所以它是不可靠的
在本地主机上,我会假设一个数据包只是从一个进程的缓冲区复制到另一个,因此它会按照发送者传输的顺序排队,对吗?
我不确定的是:
- 我可以在本地主机上为多播(或 udp)假设正确的包顺序吗?如果没有,为什么?
- 不同操作系统处理(win,mac,linux)的具体区别是什么?
谢谢你
因为多播数据包通常是基于 udp 的,所以它是不可靠的
在本地主机上,我会假设一个数据包只是从一个进程的缓冲区复制到另一个,因此它会按照发送者传输的顺序排队,对吗?
我不确定的是:
谢谢你
我可以在本地主机上为多播(或 udp)假设正确的包顺序吗?如果没有,为什么?
不,因为这些数据包没有编目。另外,您可能已经知道,不能保证环回连接将保持 UDP 有序。
不同操作系统处理(win、mac、linux)的具体区别是什么?
协议没有区别(请参阅RFC),但细节很可能取决于平台(和版本),我敢肯定没有人会立即知道它们(无论如何有些是封闭的)。这是很可能无法保证有序性的另一个原因。即使您确实对此进行了测试并且数据包按顺序排列,但在环回连接中依赖诸如 UDP 数据包顺序之类的东西也是一个非常糟糕的主意 (tm)。
另外:UDP“不可靠”的论点虽然是真的,但可能会产生误导。许多具有安全意识的软件通过 UDP 工作,并且通常只有一小部分数据包被丢弃。有了适当的应急措施,如果使用 UDP(假设是为了性能)并且数据包丢失,一个软件不应该崩溃。但是,如果您对此感到担心,为什么不使用 TCP 呢?