什么';当只有一个WIFI客户端连接时,通过WIFI向IP地址发送UDP数据报和通过WIFI广播有什么区别?

什么';当只有一个WIFI客户端连接时,通过WIFI向IP地址发送UDP数据报和通过WIFI广播有什么区别?,udp,wifi,broadcast,multicast,Udp,Wifi,Broadcast,Multicast,我正在尝试使用树莓PIs作为客户端进行WIFI多播和广播。如果我通过WIFI进行子网广播或多播,那么我会丢失很多数据包。如果我“广播”到接收器的特定IP,那么我不会丢失任何数据包。我只有1个接收器/客户端连接到我的WIFI AP。我正在使用QT框架的QUDPSocket::writeDatagram。所以我只需要在那里设置IP,广播/子网广播/多播是固有的选择。我已经验证了使用Wireshark设置了适当的MAC地址,并且一切似乎都是正确的。我不明白为什么我的表现会有如此大的差异。这都是UDP,

我正在尝试使用树莓PIs作为客户端进行WIFI多播和广播。如果我通过WIFI进行子网广播或多播,那么我会丢失很多数据包。如果我“广播”到接收器的特定IP,那么我不会丢失任何数据包。我只有1个接收器/客户端连接到我的WIFI AP。我正在使用QT框架的QUDPSocket::writeDatagram。所以我只需要在那里设置IP,广播/子网广播/多播是固有的选择。我已经验证了使用Wireshark设置了适当的MAC地址,并且一切似乎都是正确的。我不明白为什么我的表现会有如此大的差异。这都是UDP,只有一个WIFI客户端。有什么想法吗

编辑以响应Sam Mason:
QUDPSocket::writeDatagram接受IP地址。该IP地址指示您是单播、多播、广播还是子网广播。我在这个电话上循环,以实现1.5Mbps的固定发送速度。(与我应该能够在WIFI网络上推送的东西相比,这是很慢的,所以我没有要求太多)。我的问题是,为什么单播要丢弃零个数据包,而所有其他方法都要丢弃大量数据包。我知道非单播的“最低公分母”方面,但我只有一个连接的客户端,所以…这意味着什么?)。我真的很想详细解释UDP单播和UDP广播在单客户端连接的情况下的真正区别。

假设我正确地解释了您的问题,那是因为单播比广播/多播运行得快得多。有关更多信息,请参阅,链接问题也与此相关

引用相关部分:

通过Wi-Fi的任何类型的多播/广播都会很慢,因为Wi-Fi要求多播和广播以一种“最低公分母”的传输速度发送


如果您包含几行相关的代码就好了,因为您的措辞有些含糊不清。e、 g.你所说的“广播”到接收器的特定IP是什么意思?我想你是说发送

简单的回答是:您正在看到特定WLAN路由器的实现细节的工件。其他路由器的行为可能不同,也可能不同

详情:

WLAN在链路层上使用两种通用通信模式:单独寻址或组寻址

对于1:1通信,它使用单独寻址的通信,这通过链路层上的确认和重传而变得健壮。这用于单播UDP和TCP等

对于一对多通信,它使用组地址帧,在链路层上根本没有防止数据包丢失的保护。此外,在这种模式下,路由器可能会退回到最慢的WLAN传输速率(1Mbit/s),以确保每个STA都能接收到它

现在,WLAN路由器可以自由选择其用于哪个IP数据包的模式:

从发送方到WLAN路由器的任何数据包(单播/多播/广播):单独寻址。这始终是1:1关系(一个发送方到一个路由器)

UDP单播和TCP等:它使用单独寻址的帧发送到目标STA。没有数据包丢失。高速

UDP多播:一些WLAN路由器(实际上这很常见)是智能的,当只有一个客户端注册通过IGMP接收此多播组时,仍然使用单独寻址的帧。当多个STA想要接收多播帧时,它最有可能使用组地址(具有可见的数据包丢失)。路由器可以自由选择数据速率。通常,它将使用高数据速率,而不是1Mbs回退

UDP广播:大多数WLAN路由器将盲目使用组寻址(具有可见的数据包丢失),并将1MB/s回退数据速率用作最低公分母

WLAN上的UDP多播和UDP广播的行为与以太网上的UDP多播和UDP广播非常不同。你必须期待大量的工件,数据包丢失,重新排序的数据包,非常慢的数据速率


上面解释了为什么在使用1 MB/s回退数据速率通过较慢的1MB/s组地址链路发射1.5 MB/s广播时,会看到丢失的数据包丢失。

另一个区别是,广播会传送到子网中的每台主机,中断内核直至UDP层。广播的真实情况与此无关。我只对从服务器到我唯一的WiFi客户端的路由感兴趣。广播是否比单播更能中断内核?答案很可能在您的初始语句中,即UDP单播仍然使用ACK并在链路层重新发送。我不知道这件事。无线是不可预测的,这可能/将带来一切不同。我尝试了3种不同的路由器,使用了IGMP选项并限制了广播速率,但我仍然得到了比我预期的更多的丢失数据包。带有acks+重发的UDP单播可能会混淆根本不可靠的WIFI连接。谢谢你的解释。是的,没错:当我无意中发现一个完全可靠的多播UDP WLAN连接时,我也很困惑。但您可以在WLAN数据包跟踪中看到这方面的证据(当您看不到任何组地址帧,并且只看到多播流的单个地址帧时)。令人困惑的是,STA中的IGMP实现通常有5分钟左右的长时间超时,因此无法以逻辑方式进行推理。对于一个系统的分析来说是非常可怕的。您必须始终关闭所有电源才能确保。:-)