【问题标题】:Udp broadcast vs unicast: which is faster?udp 广播与单播:哪个更快?
【发布时间】:2013-09-05 16:07:42
【问题描述】:

我有一个关于 UDP 传输的问题:如果数据报以广播或单播形式发送(相同的数据报包和网络),数据报的传输时间有何不同。哪些条件会影响广播/单播数据包的传输时间? socket.send(packet) 调用所花费的时间有何不同?

谢谢

PS:Wifi 是我正在使用的网络

【问题讨论】:

    标签: networking udp


    【解决方案1】:

    在传输帧方面,它取决于底层的 MAC 层。

    对于以太网,我们使用 CSMA/CD,它基本上传输帧,如果遇到冲突,它会停止发送并丢弃帧。

    对于 802.11(无线),我们使用 CSMA/CA。在这种方法中,发送单播更昂贵(并且需要更多时间),因为它在发送单播帧之前会进行 RTS/CTS(请求发送/清除发送)交换。对于广播,802.11 不做任何此类事情,因此速度更快。但是,与单播帧相比,它也更不可靠。

    【讨论】:

    • 所以如果我想发送一个数据包到例如wifi 网络中的 5 个设备,我必须发送一个广播包或 5 个特定的单播包。那么单播变体所需的时间大约是广播变体时间的 5 倍,对吧?
    • 大概是的。 802.11 中的单播传输分四个步骤进行:RTS/CTS/DATA/ACK。由于 RTS、CTS 和 ACK 是较小的数据包,因此使用广播时实际节省的总传输时间可能不是 5 倍。但是,如果发生拥塞(高流量),则站点会进行退避,在这种情况下,时间节省可能会超过 5 倍!因此,当出现拥塞时,单播所需的时间可能会以非线性方式增加。
    • 那么为什么“它也比单播帧更不可靠”?
    【解决方案2】:

    这取决于网络,也取决于您认为“传输时间”的一部分。对于在以太网 LAN 上发送(有线或无线),大多数发送堆栈都是相同的——唯一的区别是在确定要使用的以太网地址时,广播可能更快(因为它使用固定的广播地址),而单播可能必须进行 ARP 查找才能找到地址。但如果地址在 ARP 缓存中,则可能没有区别。

    接下来是以太网本身,如果是无线或桥接(共享)有线,则没有区别——它只是一个发送到某个地址的数据包。但是,如果它是交换式以太网,则广播更有可能发生冲突(如果任何交换端口忙,而不仅仅是目标端口,它就会发生冲突),这可能会减慢它的速度。

    最后在接收端,广播有多个接收器,而单播只有一个。广播接收器可能具有不同的速度和负载水平,因此它们处理数据包所需的时间不同。因此,如果您需要等待所有这些处理它,它可能会更慢,但如果您只需要一个,它可能会更快。

    【讨论】:

      猜你喜欢
      • 2017-04-05
      • 1970-01-01
      • 1970-01-01
      • 2017-04-19
      • 2014-05-11
      • 1970-01-01
      • 2010-10-22
      • 2020-04-29
      • 2010-09-28
      相关资源
      最近更新 更多