Networking 本地主机上的多播数据包顺序

Networking 本地主机上的多播数据包顺序,networking,multicast,Networking,Multicast,由于多播数据包通常是基于udp的,因此不可靠 在本地主机上,我假设一个数据包只是从一个进程的缓冲区复制到另一个进程的缓冲区,因此它会按照发送方传输的顺序排队,对吗 我不确定的是: 对于多播(或udp),我能否在本地主机上假定正确的包顺序?如果没有,为什么 不同的操作系统(win、mac、linux)在处理方面有哪些具体区别 谢谢我可以在本地主机上为多播(或udp)假定正确的包顺序吗?如果没有,原因是什么? 没有,因为数据包没有编目。另外,正如您可能已经知道的那样,不能保证环回连接将保持UDP有序

由于多播数据包通常是基于udp的,因此不可靠

在本地主机上,我假设一个数据包只是从一个进程的缓冲区复制到另一个进程的缓冲区,因此它会按照发送方传输的顺序排队,对吗

我不确定的是:

  • 对于多播(或udp),我能否在本地主机上假定正确的包顺序?如果没有,为什么
  • 不同的操作系统(win、mac、linux)在处理方面有哪些具体区别

  • 谢谢

    我可以在本地主机上为多播(或udp)假定正确的包顺序吗?如果没有,原因是什么?

    没有,因为数据包没有编目。另外,正如您可能已经知道的那样,不能保证环回连接将保持UDP有序

    不同的操作系统(win、mac、linux)处理的具体区别是什么?

    协议没有区别(请参阅),但细节细节很可能取决于平台(和版本),我相信没有人会马上知道(有些是近距离的)。这是最有可能无法保证有序性的另一个原因。即使您进行了测试,并且数据包是按顺序排列的,但依赖类似于环回连接中UDP数据包的顺序也是一个非常糟糕的想法(tm)


    同样:UDP“不可靠”的说法虽然正确,但可能会产生误导。很多有安全意识的软件都是通过UDP工作的,通常只有一小部分数据包被丢弃。在适当的意外情况下,如果使用UDP(为了性能,比方说)并且数据包丢失,软件不应该崩溃。但是,如果您对此很担心,为什么不使用TCP呢?

    我可以在本地主机上为多播(或udp)假定正确的包顺序吗?如果没有,原因是什么?

    没有,因为数据包没有编目。另外,正如您可能已经知道的那样,不能保证环回连接将保持UDP有序

    不同的操作系统(win、mac、linux)处理的具体区别是什么?

    协议没有区别(请参阅),但细节细节很可能取决于平台(和版本),我相信没有人会马上知道(有些是近距离的)。这是最有可能无法保证有序性的另一个原因。即使您进行了测试,并且数据包是按顺序排列的,但依赖类似于环回连接中UDP数据包的顺序也是一个非常糟糕的想法(tm)


    同样:UDP“不可靠”的说法虽然正确,但可能会产生误导。很多有安全意识的软件都是通过UDP工作的,通常只有一小部分数据包被丢弃。在适当的意外情况下,如果使用UDP(为了性能,比方说)并且数据包丢失,软件不应该崩溃。但是如果您对此很担心,为什么不使用TCP?

    我问的原因只是出于好奇,因为如果传入udp数据包的内核数据结构是向量或fifo,那么数据包将按顺序传递,但是,如果它像一个堆栈,则数据包可以按不同的顺序推送/弹出,这是由于推送时的处理时间不同造成的/poping@JohnDoe没有理由认为它会是一个堆栈,因此您可以合理地假设接收端有某种FIFO,但这与此无关。您不能假设发送和接收之间存在任何顺序,因为协议特别小心,不保证任何此类事情。我问的原因只是出于好奇,因为如果传入udp数据包的内核数据结构是向量或fifo,则数据包将按顺序传递,但是,如果它像一个堆栈,则数据包可以按不同的顺序推送/弹出,这是由于推送时的处理时间不同造成的/poping@JohnDoe没有理由认为它会是一个堆栈,因此您可以合理地假设接收端有某种FIFO,但这与此无关。您不能假设发送和接收之间存在任何顺序,因为协议特别小心,不保证任何此类事情。