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