В статье «Что такое Wi-Fi» мы начали рассматривать wi-fi. Сейчас это самая популярная технология для передачи данных в беспроводных компьютерных сетях. Мы рассмотрели, как устроен физический уровень wi-fi, есть шесть разных вариантов, они описаны в стандартах IEEE 802.11. Сейчас мы переходим к рассмотрению канального уровня wi-fi, который работает одинаково, независимо от того какой стандарт физического уровня используются.
В этой статье мы рассмотрим, как с помощью wi-fi выполняются управление доступом к разделяемой среде. Радио эфир через который передаются данные wi-fi, является разделяемой средой. И если два или больше компьютеров начнут передавать данные одновременно, то возникнет коллизия. В результате данные будут искажены и принять их невозможно. Таким образом, нам необходим какой-то механизм, который бы обеспечивал что в один и тот же момент времени, данные через разделяемую среду в wi-fi, передает только один компьютер.
Особенности беспроводной среды
Подобный механизм есть в технологии Ethernet, но в чистом виде его использовать нельзя, так как в Ethernet для передачи данных используются провода, а в wi-fi радиоэфир.
- Во-первых, вероятность ошибки передачи данных в беспроводной среде гораздо выше, чем в проводной.
- Во-вторых, в беспроводной среде, мощность сигнала, который мы передаем гораздо больше, чем мощность того сигнал который мы принимаем.
- И в-третьих, если параметры Ethernet, в частности длина сети специально подобраны так, чтобы сигнал доходил до всех компьютеров, то в wi-fi этого обеспечить нельзя. Диапазон работы передатчиков в беспроводной среде ограничен, и поэтому не все компьютеры в сети wi-fi могут принимать передаваемые данные. Это приводит к ряду проблем, наиболее известные из которых эта проблема скрытой и засвеченной станции.
Проблема “скрытой” станции
В чем заключается проблема скрытой станции? Предположим, что у нас есть три компьютера, компьютер А, компьютер С, хотят передавать данные компьютеру В.
Кругами (синий и зеленый круги) показаны области действия передатчиков. Сигнал от компьютера А доходит до компьютера В, но не доходит до компьютер С. В Wi-fi точно также как и в Ethernet, компьютеры перед тем как передавать данные, проверяют несущую частоту и смотрят не передает ли кто-то еще данные. И если среда свободна, только в этом случае происходит передача.
Но так как wi-fi зона действия передатчика существенно ограничена, то может произойти следующая ситуация. Компьютер А хочет передать данные компьютеру В, он проверил, что никто данные не передает и начал передавать данные.
В то же самое время, компьютер С тоже решил передать данные компьютеру В, но компьютер С находится за зоной действия передатчика от компьютера А. Поэтому там, где находится компьютер С, беспроводная среда свободна и он решил, что передавать данные можно.
Однако когда эти данные дошли до компьютера В, они столкнулись с теми данными, которые передавал компьютер А, произошла коллизия и компьютер В не может принять данные, не от одного компьютера.
Проблема “засвеченной” станции
Проблема засвеченной станции, наоборот, приводит к тому, что компьютер не передает данные, хотя может это сделать. Предположим, что у нас есть четыре компьютера, компьютер В хочет передавать данные компьютеру А, а компьютер С хочет передавать данные компьютеру D.
Компьютер D находится вне зоны действия передатчика компьютера B, поэтому компьютер C может смело передавать данные компьютеру D, однако сам компьютер C находится в зоне действия передатчика компьютера B, поэтому он считает, что среда занята и ждет когда компьютер B закончит передачу.
Подтверждение получения данных
Так как в беспроводной среде ошибки происходят гораздо чаще, чем в проводной, то в wi-fi на канальном уровне используется подтверждение получения передаваемых данных. Предположим, что компьютер А решил передать данные компьютеру В по wi-fi. Компьютер А формирует кадр и передает его компьютеру В. Компьютер В получает кадр и передает компьютеру А подтверждение, что предыдущий кадр получен можно передавать следующий.
Компьютер А при отправлении кадра установил таймер ожидания подтверждения, после того как время ожидания подтверждения вышло, тот же самый кадр, отправляется еще один раз.
Во второй раз все произошло хорошо компьютер В получил данные и высылает подтверждение компьютеру А, после этого компьютер А может передавать следующий кадр.
Обнаружение коллизий
Рассмотрим, как в wi-fi происходит обнаружение коллизий, но перед этим вспомним как коллизии обнаруживаются в Ethernet. Для того чтобы обнаружить коллизию в Ethernet компьютер передает данные и принимает их одновременно. Он сравнивает тот сигнал который он передает с тем, который принимает, и если сигнал отличается значит произошла коллизия. В этом случае передача данных сразу прекращается и компьютер, который обнаружил коллизию усугубляет ее передавая всем так называемую Jam-последовательность для того чтобы все компьютеры в сети точно поняли, что произошла коллизия.
В Wi-fi такой подход использовать нельзя. Сигнал, который мы передаем имеет гораздо большую мощность, чем тот сигнал, который мы принимаем. Кроме того, сигнал о коллизии может не дойти до всех компьютеров в сети. Например, из-за проблем скрытой и засвеченной станции.
Коллизии в Wi-Fi
Поэтому в wi-fi используется другой подход, коллизии обнаруживаются по отсутствию подтверждения. Получается, что в Ethernet, коллизия обходится очень дешево, они обнаруживаются почти сразу после возникновения, и при этом компьютеры сразу останавливают передачу данных.
В Wi-fi напротив, коллизии очень дорогие. Для того чтобы обнаружить коллизию требуется гораздо больше времени. Необходимо передать кадр полностью и дождаться тайм-аута получении подтверждения.
Метод доступа к среде
Поэтому в wi-fi используется немного измененный метод доступа к среде по сравнению с тем который использовался в Ethernet. В Ethernet использовался метод CSMA/CD множественный доступ с прослушиванием несущей частоты, и распознаванием коллизий. А в wi-fi, так как коллизии обходится очень дорого, используется метод с предотвращением коллизий collision avoidance (CA).
Модель CSMA/CA
Рассмотрим, как устроен метод CSMA/CA. Точно также, как и Ethernet перед тем, как начать передавать данные, компьютеры Wi-Fi прослушивают несущую частоту и смотрят передает кто-то данные сейчас или нет.
Если кто-то передает данные, происходит передача кадра, то все остальные компьютеры ждут, когда передача кадра закончится. В отличии от Ethernet в wi-fi после передачи кадра идет передача подтверждения. После этого все компьютеры, которые хотят передавать данные, должны выдержать межкадровый интервал. В
Wi-fi есть два типа межкадровых интервалов, обычный и короткий межкадровый интервал. Компьютер, который хочет отправить данные, должен выдержать обычный межкадровый интервал, а компьютер которому нужно отправить подтверждение или какой-нибудь другой служебный кадр, ждет в течении короткого межкадрового интервала. Именно за счет этого получается, что подтверждение отправляются быстрее, чем другие кадры.
В Ethernet, после того как межкадровый интервал завершён, начинается период конкуренции. Компьютеры начинают передавать данные, если произошла коллизия, они тут же обнаруживаются, и ждут некоторое время.Но в wi-fi, так как коллизии обходятся очень дорого, вместо периода конкуренции используется период молчания. Компьютеры вместо того чтобы как можно быстрее начать передачу данных, наоборот стараются пропустить друг друга вперед, чтобы избежать коллизии.
Каждый компьютер выбирает разное время для периода молчания. Случайным образом генерируется некоторое число, так называемых слотов ожидания. Слот ожидания это промежуток времени в течение которого компьютер ждет, длина слота ожидания разное для различных стандартов физического уровня Wi-fi. Количество слотов ожиданий выбирается компьютерами случайным образом. Первым начинает передавать данные тот компьютер, который выбрал меньше всего слотов ожидания.
Протокол MACA
CSMA/CA это основной метод доступа к разделяемой среде, который используются в wi-fi. На практике, он работает почти всегда, но теоретически он не решает проблему скрытой и засвеченной станции. Поэтому в wi-fi можно использовать другой метод доступа к среде, который называется (MACA) Multiple Access with Collision Avoidance. Однако этот метод доступа опциональный и используется очень редко. Достоинство метода заключается в том, что он позволяет решить проблему скрытой и засвеченной станций.
В чем состоит протокол MACA? Перед тем как передавать кадры с данными, компьютер должен отправить короткое управляющие сообщение, которое называется Request To Send (RTS). В этот запрос включается размер данных, который компьютер хочет передать и получатель в ответ, если он готов принимать данные, отправляет такое же короткое управляющие сообщение, которое называется сеть CTS (Clear To Send). И опять же в это сообщение включается размер данных, которые компьютер готов принять. Другие компьютеры, которые получили сообщение Clear To Send ждут когда закончится передача данных, они знают сколько времени потребуется на передачу данных, так как размер данных включен в сообщение CTS, и знают сколько времени нужно на передачу подтверждения.
Протокол MACA и скрытая станция
Теперь рассмотрим, как протокол MACA решает проблемы скрытой и засвеченной станции. Начнём с проблемы скрытой станций. Компьютер A перед тем как передать данные компьютеру B высылается сообщение RTS и говорит, что хочет передать 1500 байт. Компьютер B в ответ передает управляющее сообщение CTS и это сообщение получает не только компьютер А, но и компьютер С, который находятся вне зоны действия передатчика компьютера А.
Компьютер С понимает, что сейчас другой компьютер, сигнал от которого он не видит, будет передавать данные размером 1500 байт, поэтому он ждет когда передача закончиться.
В это время компьютер А может смело передавать данные компьютеру В и быть уверенным, что коллизии не произойдет.
Протокол MACA и засвеченная станция
Как решается проблема засвеченной станции? Компьютер В, и компьютер С передают сообщения RST, компьютер B компьютеру A, а компьютер C компьютеру D. Так как компьютер B находится вне зоны действия передатчика компьютера B, то он считает что среда свободна и передает компьютеру C сообщение Clear To Send.
Компьютер A также передает сообщение Clear To Send компьютеру B и после этого компьютер B и компьютер C могут передавать данные одновременно.
Итог
В статье рассмотрели, какие методы доступа к разделяемой среде используются для Wi-Fi. Метод доступа необходим для того, чтобы избегать коллизий. В один момент времени, через разделяемую среду, передавать данные должен только один компьютер. Так как в беспроводной среде часто возникают ошибки, то в wi-fi на канальном уровне используется подтверждение доставки кадра. Отсутствие подтверждения в wi-fi используется для обнаружения коллизии, поэтому коллизии wi-fi обходится очень дорого их надо избегать. Поэтому для доступа к сети используется не метод CSMA/CD, как в Ethernet, а метод CSMA/CA с избежанием коллизии. И для решения проблем скрытой и засвеченной станции в wi-fi опционально может использоваться протокол MACA.