Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 为什么要在发送确认之前等待SIFS时间?_Macos_Network Protocols_Wifi_Protocols - Fatal编程技术网

Macos 为什么要在发送确认之前等待SIFS时间?

Macos 为什么要在发送确认之前等待SIFS时间?,macos,network-protocols,wifi,protocols,Macos,Network Protocols,Wifi,Protocols,关于802.11 Wifi的MAC协议的问题 我们了解到,当一个站点收到数据时,它会等待SIFS时间。然后它发送数据包。在线搜索时,经常提到的原因是给予ACK数据包更高的优先级。这是可以理解的,因为当站点想要发送正常数据时,首先必须等待DIFS时间(DIFS比SIFS大) 但为什么要等待呢?为什么不立即发送ACK?站点知道数据已经到达并且CRC是正确的,那么为什么要等待呢?我不能肯定,但这听起来像是一种类似于IP的优化策略。如果您不需要每个数据包都有一个ACK,那么延迟一点是有意义的,这样,如果

关于802.11 Wifi的MAC协议的问题

我们了解到,当一个站点收到数据时,它会等待SIFS时间。然后它发送数据包。在线搜索时,经常提到的原因是给予ACK数据包更高的优先级。这是可以理解的,因为当站点想要发送正常数据时,首先必须等待DIFS时间(DIFS比SIFS大)


但为什么要等待呢?为什么不立即发送ACK?站点知道数据已经到达并且CRC是正确的,那么为什么要等待呢?

我不能肯定,但这听起来像是一种类似于IP的优化策略。如果您不需要每个数据包都有一个ACK,那么延迟一点是有意义的,这样,如果有更多的数据包到达,您就可以用一个ACK确认所有数据包

示例:客户机向服务器发送400个数据包的速度非常快。与服务器发回400个ACK不同,它可以简单地等待客户机休息一下,然后再发回一个ACK。再加上客户机即使在重载情况下也会喘息的可能性(它必须在未确认的数据包缓冲区填满时喘息),这是可行的

这在系统中是可能的,
ACK(n)
表示“我已经收到了所有数据包35;
n


通过使用这种策略,您将获得更好的性能和更少的通信量。只要在接收器上发送ack之前的等待时间小于在发送器上没有ack之前的重发时间(考虑传输延迟),应该没有问题。

从理论上可以知道,CRC在从导线接收的数据的准确端是正确的,但在实践中,您需要累积最后一个块中的所有样本,以便运行IFFT、反褶积、FEC,最后,在最后一个端,在最终从导线中取出输入数据之后波形,你知道CRC是正确的吗?此外,你有时需要打开发送电路来发送ACK,这会影响接收性能。如果处理链中的每个步骤都是瞬时的,并且发送电路肯定不会干扰接收电路,并且如果没有必要的前置时间或者为ACK生成波形,可以在获取波形的最后一位后立即发送ACK。但是,虽然此链中的每个元素都需要一些确定的时间,但它不是瞬时的。SIFS为接收器提供从PHY获取数据、验证数据和发送响应的时间


免责声明:与802.11相比,我更熟悉Homeplug。

这是因为分布式协调功能(DCF)和点协调功能(PCF)模式可以在一个小区内共存。也就是说,基站可以使用轮询,而小区可以使用CSMA/CA进行分布式协调

因此,在SIFS期间,可以发送控制帧或下一个片段。在PIFS期间,可以发送PCF帧,在DIFS期间,可以发送DCF帧。在SIFS和PIFS期间,PCF可以发挥其神奇作用

尽管并非所有基站都支持PCF,但所有基站都必须等待,因为有些基站可能支持PCF

更新:

我现在的理解是,在SIFS期间,电台可能会发送RTS、CTS或ACK,并且在发送方开始发送之前有足够的时间切换回接收模式。如果这是正确的,它将在SIFS期间发送ACK。然后它将切换到接收模式,直到SIFS结束。当SIFS结束时,发送方将开始发送ng

此外,PCF由在SIFS之后和DIFS之前的PIFS控制,因此与本次讨论无关(我的错误)。也就是说,SIFS
来源:和

802.11快速速成课程:

802.11本质上是一个庞大的计时器系统。802.11最常见的实现方式是利用分布式协调功能DCF。DCF允许节点进出用于802.11的无线信道范围,并以分布式方式协调应发送和接收数据的节点(忽略此讨论中隐藏和暴露的节点问题)。在任何节点开始在信道上发送数据之前,它们都必须等待一段DIFS时间,在此期间,如果信道在DIFS时间段内空闲,则第一个获取信道的节点开始传输。在标准802.11中,即非802.11e实现和非802.11n中,每个被传输的数据包需要通过物理层、PHY、确认包进行确认,不考虑所使用的上层协议。在发送数据包后,SIFS时间段需要到期,在SIFS到期后,发送给已“接收”节点的控制帧到期"在这种情况下,可以发送对信道的控制,并发送确认帧。SIFS允许发送数据包的节点从发送模式切换到接收模式。如果数据包确实丢失,并且在SIFS/ACK超时后没有收到ACK,则调用指数退避。指数退避,也称为争用窗口(CW),从值CWmin开始,在某些linux实现中,这是15个时隙时间,其中时隙时间根据所使用的802.11协议而变化。然后,从1到为CW计算的上限中选择CW值。如果当前数据包丢失,则CW从15增加到30,然后是一个随机变量lue选择在1和30之间。每次连续丢失时,CW将加倍到1023,此时它将达到一个极限。一旦成功接收到数据包,CW将重置回CWmin

关于802.11n/802.11e: 每个数据包仍然需要确认,但当使用802.11e(在802.11n中实现)时,可以通过两种不同的方式A-MSDU或A-MP将多个数据包聚合在一起