Допустим, есть N устройств, которые могут общаться друг с другом через общий радиоканал. Вполне очевидно, что в каждый момент времени передавать данные может только один, а остальные должны его слушать. Если это условие не будет соблюдено, то данные будут повреждены.
В централизованных вариантах типа Wi-Fi или GSM всё очень просто - есть базовая станция (базовые станции связанны проводами или радиоканалом типа «точка-точка», где проблем меньше), которая всё регулирует. Она может либо опрашивать клиентские устройства по очереди (в таком случае самовольная передача данных клиентом исключена, а поскольку запросить за раз можно данные лишь с одного клиента, проблем никаких нет), либо вводить понятия всяких тайм-слотов и прочего, делая так, чтобы каждый клиент мог передавать лишь в определённое время.
Но что делают в случае децентрализованных систем? Можно сделать так:
while (ЭфирЗанят()) НичегоНеДелать(); ПередатьПакет();
Но тут возникает классическая ситуация гонки. Если производительность устройств соизмерима, то при свободном эфире каждое из них выполнит проверку эфира и пойдёт на ветвление передачи данных. Хотя в ситуации малой загрузки сети может и прокатить.
Можно слушать эфир во время передачи и вычитать из сигнала то, что передаём мы сами. В таком случае если устройств только 2, то можно получить полнодуплексный канал и не париться. Но если устройств больше двух, то такой метод уже не подходит.
Можно выбрать главное устройство (по какому принципу?) и использовать классические схемы, но ещё надо быстро среагировать на его уход из зоны приёма (при этом само главное устройство может и не узнать об этом, так что никого не предупредит). К тому же нормальная сеть должна давать возможность связаться узлам, которые не видят друг-друга напрямую, а лишь через несколько посредников. В итоге при достаточной удалённости узлов не будет ни одного узла, который бы видел все остальные, а значит «главных» потребуется несколько, но при этом они не должны друг-другу мешать (и встаёт задача построения таки одноранговой сети, просто уже из «главных»). В общем, тоже не то.
Так что делают то? Меня уже давно мучает этот вопрос и я решил спросить у ЛОРа.