我有一个关于 UDP 传输的问题:如果数据报作为广播或单播发送(相同的数据报包和网络),数据报的传输时间有何不同。哪些条件会影响广播/单播数据包的传输时间?socket.send(packet) 调用所花费的时间有何不同?
谢谢
PS:Wifi是我正在使用的网络
我有一个关于 UDP 传输的问题:如果数据报作为广播或单播发送(相同的数据报包和网络),数据报的传输时间有何不同。哪些条件会影响广播/单播数据包的传输时间?socket.send(packet) 调用所花费的时间有何不同?
谢谢
PS:Wifi是我正在使用的网络
在传输帧方面,它取决于底层的 MAC 层。
对于以太网,我们使用 CSMA/CD,它基本上传输帧,如果遇到冲突,它会停止发送并丢弃帧。
对于 802.11(无线),我们使用 CSMA/CA。在这种方法中,发送单播更昂贵(并且需要更多时间),因为它在发送单播帧之前会进行 RTS/CTS(请求发送/清除发送)交换。对于广播,802.11 不做任何此类事情,因此速度更快。但是,与单播帧相比,它也更不可靠。
这取决于网络,并且取决于您认为“传输时间”的一部分。对于在以太网 LAN 上发送(有线或无线),大多数发送堆栈都是相同的——唯一的区别是在确定要使用的以太网地址时,广播可能更快(因为它使用固定的广播地址),而单播可能必须进行 ARP 查找才能找到地址。但如果地址在 ARP 缓存中,则可能没有区别。
接下来在以太网本身上,如果它的无线或桥接(共享)有线,没有区别 - 它只是一个发送到地址的数据包。但是,如果它是交换以太网,则广播更有可能遭受冲突(如果任何交换机端口忙,而不仅仅是目标端口,它将发生冲突),这可能会减慢它的速度。
最后在接收端,广播有多个接收器,而单播只有一个。广播接收器很可能具有不同的速度和负载水平,因此它们处理数据包所需的时间不同。因此,如果您需要等待所有这些处理它,它可能会更慢,但如果您只需要一个,它可能会更快。