Что общего у Wi-Fi и новогоднего утренника?
Вот ведь забавно: почти у каждого дома есть роутер с Wi-Fi — а знают, как там в нём что работает, единицы. Оно, конечно, и правильно: сумрачная магия связи без проводов и тем, кто ей по долгу службы занимается, едва ведома — что уж тут говорить про обычного пользователя. Между тем, стоит чуть поглубже зарыться в тему работоспособности этого протокола — и загадок становится ещё больше: я вот, например, знаю этот стандарт достаточно глубоко, чтобы прозаниматься им больше десяти лет, и тем не менее до конца не понимаю, как эта шаткая конструкция до сих пор работает и что-то как-то передаёт. Сейчас вы поймёте, что к чему.
Основной проблемой Wi-Fi являются два краеугольных ограничения радио: во-первых, орут все куда громче, чем могут расслышать (что вроде бы хорошо), во-вторых, на одном и том же канале нельзя никак скрыться от чужих разговоров (поэтому это и называется общей средой). Следствием из первого ограничения становится невозможность одновременно говорить и слушать (да и как иначе, если громкость передачи может быть в МИЛЛИАРД раз больше чувствительности приёмника — если мы попробуем что-то услышать в момент работы нашего передатчика, то больше одной попытки у нас не будет). Следствие второго — невозможность одновременной работы нескольких передатчиков: никто не сможет разобрать несколько сигналов, пришедших на приёмник одновременно. Как в такой ситуации вообще решить, кто когда передаёт, и не заглушить друг друга? Очень просто — на помощь придёт традиционный детский конкурс с стульями (не теми) и музыкой!
Правила помните? У нас есть определённое количество детей, стульев на один меньше, чем число детей, и цикл расстройств и страданий, когда по очереди кому-то не хватает стула, и он выбывает из игры. Для того, чтобы из этой игры получился Wi-Fi, нужно поменять правила совсем чуть-чуть: стул мы оставим один для всех (это как раз и есть право на доступ к эфиру), а детей (клиентов сети) заставим кидать кубик. Для начала кинем d16, и каждый отойдёт от стула на столько шагов, сколько выпало. По хлопкам ведущего (таймер) все начинают делать по одному шагу в сторону стула. Первый, кто дошёл, получает право передавать свои данные, ура! — а все остальные снова бросают кубик (на этот раз d32), и цикл повторяется заново. Если у самого несчастливого из всех кубик достигнет d2048, и стула он всё равно не достигнет — этот ребёнок получает право заплакать, отказаться от игры и выкинуть данные пользователя в окно.
Как быть в ситуации, когда стула достигли одновременно двое детей? Мы помним, что усадить их на один стул нельзя — поэтому сорян, дети, победила дружба, удваивайте свои кубики и кидайте заново. Это называется коллизия, и весь механизм, описанный в этой заметке, специально зовётся Collision Avoidance, «избежание коллизий» — мы всеми силами стремимся этой ситуации не допустить (и увеличиваем количество вариантов, разводя детей подальше друг от друга с помощью чистых вероятностей).
Конечно, не всё так просто: дети воспитателей (приоритетный трафик) тоже участвуют в игре, и нам бы очень хотелось, чтобы они выигрывали почаще. Им мы в первом раунде вручим кубики d16, а вот остальным, ребятишкам попроще, достанутся, к примеру, d64. Чисто статистически выиграть имеют возможность все (и это правильно, потому что любой трафик должен быть доставлен), но кто-то будет явно выигрывать чаще. Поздравляю, мы научились управлять качеством сервиса (QoS, Quality of Service) в Wi-Fi!
Теперь вы сами можете сделать вывод, почему скорость в эфире делиться между всеми устройствами на одном канале, даже если они относятся к разным сетям (стул-то остался один!), почему в офисе не нужно выбирать каналы шире 20 МГц, хоть они и вроде как быстрее (потому что мы тогда приводим в свою игру больше детей, чем нам хочется), и так далее. Кстати, если заменить стул на какой-то весёлый напиток — то теперь у вас есть отличная игра на ближайшие посиделки в дружеской компании в длинном помещении с массой свободного места!
#Парамонов
#интересное
#айти
Post #1572
1.17K

- ❤ 24
- 🔥 12
- 😁 8
- 👏 3
- 🤯 2
- ❤🔥 1
- 🎃 1