Warum lösen RTS/CTS das Problem des versteckten Terminals und das Problem des exponierten Terminals nicht vollständig?

Ich habe online und in Lehrbüchern über das RTS/CTS-Protokoll für die drahtlose Übertragung gelesen. Obwohl das Lehrbuch, das ich gelesen habe, besagt, dass das versteckte Terminal (und das exponierte Terminal) von RTS/CTS gelöst wird, habe ich online gesehen, dass das RTS/CTS-Protokoll das Problem nicht vollständig löst. Aber nur reduziert ist.

Das Protokoll scheint ziemlich ordentlich und für mich sieht es so aus, als ob das Problem gelöst ist. Was übersehe ich hier, warum mehrere Quellen behaupten, dass das Problem nicht gelöst ist?!

Gibt es harte Annahmen unter dem ganzen Protokoll?

Häh? Wie sollen wir Ihrer Meinung nach wissen, was dieses "versteckte/exponierte Terminalproblem" ist?
Hidden-Terminal-Problem und Exposed-Terminal-Problem sind besonders bekannte Themen auf dem Gebiet der drahtlosen Kommunikation, insbesondere wenn MAC-Layer-Protokolle betrachtet werden. Oder liege ich falsch?
Diese Frage würde wahrscheinlich besser auf Serverfault oder Superuser SE passen.
Ich sehe nicht, wie ein MAC-Layer-Protokoll mit Severfault oder Superuser zusammenhängt, die SE-orientiert auf der praktischen Seite von Computersachen sind
Ich verstehe nicht, warum die Frage auf Eis gelegt wird, wenn sie offensichtlich eine Antwort hat. Das Problem des versteckten Terminals und des exponierten Terminals ist auf dem Gebiet der drahtlosen Kommunikation weit verbreitet und wurde beim Design von zellularen Systemen und 802.11-Standards stark angegangen

Antworten (1)

Zunächst ist anzumerken, dass RTS/CTS, auf die in der Frage Bezug genommen wird, nichts mit Hardwarekabeln zu tun haben, wie sie häufig für UART-Handshaking verwendet werden. Abgesehen davon handelt es sich um ein Low-Level-Funkkommunikationsproblem, das hier ungefähr so ​​aktuell zu sein scheint wie Fragen zu Dingen wie XBee.

Das "versteckte/offengelegte" Terminalproblem bezieht sich auf die Tatsache, dass es möglich ist, drei Knoten X, Y und Z zu haben, so dass Y nahe genug an X ist, um Daten zu empfangen, wenn Z still ist, und Z gleichzeitig nahe genug an Y ist um die Kommunikation von X zu stören, aber weit genug von X entfernt, dass X es nicht erkennen kann.

Im allgemeinen Fall hat Z keine Möglichkeit zu wissen, wann jemand Informationen an Y senden könnte, und somit hat Z keine Möglichkeit zu wissen, wann seine Übertragungen die von jemand anderem stören würden. Wenn X ein kleines Paket an Y sendet, ist es für X billiger, es einfach zu senden und darauf vorbereitet zu sein, es erneut zu übertragen, wenn es blockiert wird, als zu versuchen, eine solche Blockierung zu verhindern. Wenn X jedoch ein größeres Paket sendet, ist es sinnvoll, X mit einem kleinen Paket beginnen zu lassen, das Y mitteilt, dass es ein größeres Paket erwartet, und Y mit einem kleinen Paket antworten zu lassen, das anzeigt, dass es den Empfang des größeren Pakets erwartet. Dies hat einige nützliche Effekte. Die wichtigsten unter ihnen:

  1. Wenn Y ein kleines Paket von X nicht hören kann, gibt es für X keinen Grund, ein großes Paket zu senden. Wenn X davon absieht, ein großes Paket zu senden, wird vermieden, dass die Luftwellen mit nutzlosen Daten überladen werden, die möglicherweise andere Übertragungen blockieren oder mit ihnen kollidieren würden.

  2. Wenn Z Y sagen hört, dass es Daten von X erwartet, dann weiß Z, dass es vermeiden sollte, auf diesem bestimmten Kanal während der Zeit zu senden, in der die Übertragung erwartet wird.

Das RTS/CTS-Protokoll ist kein Allheilmittel. Es kann es so machen, dass Kollisionen bei größeren Datenblöcken unwahrscheinlich sind, aber es tut nichts, um das Problem von Kollisionen mit kleineren Datenblöcken zu lösen [glücklicherweise sind kleine Blockkollisionen im Allgemeinen weniger kostspielig]. Selbst wenn sowohl X als auch Y die Tatsache ankündigen, dass X Daten an Y senden wird, und selbst wenn Z nahe genug bei X und Y ist, um ihre Übertragungen zu stören, gibt es keine Garantie dafür, dass Z die Ankündigung von X oder tatsächlich hört Y. Zum Beispiel könnte Z mit dem Knoten Q kommunizieren, der sich außerhalb der Reichweite von X und Y befindet, und Q könnte Daten an Z senden, während X und Y ihre Ankündigungen senden. Da Z in diesem Fall X und Y nicht sagen gehört hätte, dass sie erwarteten, miteinander zu sprechen, hätte Z keinen Grund, seine Übertragungen in ihrem Namen zu unterbrechen.

Grundsätzlich ist drahtlose Kommunikation mit einer gewissen Asymmetrie behaftet: Wenn A etwas von B hört, kann es wissen, dass B es gesendet hat, aber wenn A nichts hört, bedeutet das nicht, dass B nichts gesendet hat. Konzeptionell sollte es einem Empfänger möglich sein, zwischen "Stille" und "nicht entzifferbarem Rauschen" zu unterscheiden und sich vorzustellen, dass B nichts gesendet haben kann, wenn A Stille (im Gegensatz zu Rauschen) erhält, aber mir sind keine Protokolle bekannt das Nutzen Sie solche Unterscheidungen.