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