Data link layer - MAC - Aloha, CSMA — различия между версиями
Slyusar (обсуждение | вклад) |
Slyusar (обсуждение | вклад) |
||
Строка 21: | Строка 21: | ||
* Следующие 24 бита выбираются производителем для каждого экземпляра устройства. | * Следующие 24 бита выбираются производителем для каждого экземпляра устройства. | ||
− | MAC-адрес используется для идентификации отправителя и получателя | + | MAC-адрес используется для идентификации отправителя и получателя сообщения. В частности, MAC-адрес позволяет позволяет уникально идентифицировать каждый узел сети и доставлять данные только этому узлу. |
===NIC=== | ===NIC=== | ||
{{Определение | {{Определение | ||
|definition = | |definition = | ||
− | '''Сетевая карта''' (англ. | + | '''Сетевая карта''' (англ. '''NIC''' - Network Interface Controller) - Компонент компьютера, отвечающий за подключение компьютера к сети. |
}} | }} | ||
− | У каждой сетевой карты есть MAC-адрес, который ей присваивается изготовителем и является уникальным. Пакеты на канальном уровне всегда отправляются с указанием MAC-адреса отправителя и MAC-адреса получателя. Когда сетевая карта получает пакет, | + | У каждой сетевой карты есть MAC-адрес, который ей присваивается изготовителем и является уникальным. Пакеты на канальном уровне всегда отправляются с указанием MAC-адреса отправителя и MAC-адреса получателя. Когда сетевая карта получает пакет, сравнивает MAC-адрес получателя пакета со своим MAC-адресом. Если они совпадают, то пакет обрабатывается, иначе- нет. |
− | Пример работы канального уровня с более высокими уровнями | + | |
+ | =====Пример работы канального уровня с более высокими уровнями ===== | ||
+ | Пусть хотим отправить пакет на какой-то IP-адрес. Тогда: | ||
* Если получатель находится в той же сети, то можем ему отправить. Иначе надо отправить пакет конфигурирующему роутеру. | * Если получатель находится в той же сети, то можем ему отправить. Иначе надо отправить пакет конфигурирующему роутеру. | ||
* Роутер использует протокол ARP, чтобы определить MAC-адрес получателя и скажет отправителю этот адрес. Отправитель запомнит его и отправит на него пакет. | * Роутер использует протокол ARP, чтобы определить MAC-адрес получателя и скажет отправителю этот адрес. Отправитель запомнит его и отправит на него пакет. | ||
Протокол ARP: | Протокол ARP: | ||
* Роутер отправляет на групповой MAC-адрес пакет с вопросом: "У кого IP x.x.x.x?" | * Роутер отправляет на групповой MAC-адрес пакет с вопросом: "У кого IP x.x.x.x?" | ||
− | * Этот пакет получают все узлы, но только один из них ответит, что у него и пришлет роутеру ответ, указав в нем свой MAC-адрес. | + | * Этот пакет получают все узлы, но только один из них ответит, что у него, и пришлет роутеру ответ, указав в нем свой MAC-адрес. |
===Функции MAC=== | ===Функции MAC=== | ||
− | * MAC-адреса используются для контроля доступа. Узел настраивается так, чтобы принимать пакеты только от некоторого набора MAC-адресов. Так как MAC-адрес уникален, не получится заставить узел принять пакет от злоумышленника. Заметим, что нельзя сказать | + | * MAC-адреса используются для контроля доступа. Узел настраивается так, чтобы принимать пакеты только от некоторого набора MAC-адресов. Так как MAC-адрес уникален, не получится заставить узел принять пакет от злоумышленника. Заметим, что нельзя сказать тоже самое про IP-адрес, который можно без особых проблем подделать. |
* DHCP сервера используют MAC-адрес, чтобы распознавать устройства и выдавать им фиксированный IP-адрес. То есть компьютер пришел на сервер, чтобы тот дал ему IP-адрес. Сервер смотрит на его MAC-адрес (в данный момент у узла нет другого адреса), выдает ему IP-адрес и запоминает, что такому IP-адресу соответствует такой MAC-адрес. | * DHCP сервера используют MAC-адрес, чтобы распознавать устройства и выдавать им фиксированный IP-адрес. То есть компьютер пришел на сервер, чтобы тот дал ему IP-адрес. Сервер смотрит на его MAC-адрес (в данный момент у узла нет другого адреса), выдает ему IP-адрес и запоминает, что такому IP-адресу соответствует такой MAC-адрес. | ||
==Алгоритмы управления доступом к среде== | ==Алгоритмы управления доступом к среде== | ||
− | Есть разделяемая среда для передачи данных, хочется передавать данные между несколькими узлами, избегая | + | Есть разделяемая среда для передачи данных, хочется передавать данные между несколькими узлами, избегая возникновения коллизий. |
=== Aloha === | === Aloha === | ||
Алгоритм, разработанный в 1971 году. Был один вычислительный центр и много компьютеров, которые должны были взаимодействовать, отправляя сообщения вычислительному центру и получая сообщения от него. Компьютер отправлял данные по первому каналу. Если в этот момент никто больше не отправлял данные, то коллизии не произошло и вычислительный центр отправлял оповещение всем компьютерам, используя второй канал. Если же в этот момент еще один компьютер отправлял данные вычислительному центру, то произошла коллизия, и вычислительный центр получил испорченное сообщение (так как несколько сообщений были отправлены одновременно на одной частоте) и не отправлял оповещения. Если компьютер отправил сообщение и не получил оповещения в течение некоторого времени, то он отправлял сообщение еще раз по прошествии случайного промежутка времени. Важным фактом является то, что использовалась разделяемая среда для отправки данных с компьютеров на вычислительный центр. | Алгоритм, разработанный в 1971 году. Был один вычислительный центр и много компьютеров, которые должны были взаимодействовать, отправляя сообщения вычислительному центру и получая сообщения от него. Компьютер отправлял данные по первому каналу. Если в этот момент никто больше не отправлял данные, то коллизии не произошло и вычислительный центр отправлял оповещение всем компьютерам, используя второй канал. Если же в этот момент еще один компьютер отправлял данные вычислительному центру, то произошла коллизия, и вычислительный центр получил испорченное сообщение (так как несколько сообщений были отправлены одновременно на одной частоте) и не отправлял оповещения. Если компьютер отправил сообщение и не получил оповещения в течение некоторого времени, то он отправлял сообщение еще раз по прошествии случайного промежутка времени. Важным фактом является то, что использовалась разделяемая среда для отправки данных с компьютеров на вычислительный центр. | ||
Строка 53: | Строка 55: | ||
[[Файл:Pure.png]] | [[Файл:Pure.png]] | ||
====Slotted Aloha==== | ====Slotted Aloha==== | ||
− | Модификация протокола Aloha. Ось времени разбивалась на дискретные интервалы, названные слотами. Каждый компьютер последовательно отмерял границы слотов. Для синхронизации использовался специальный сигнал, передаваемый с широковещательной антенны всем | + | Модификация протокола Aloha. Ось времени разбивалась на дискретные интервалы, названные слотами. Каждый компьютер последовательно отмерял границы слотов. Для синхронизации использовался специальный сигнал, передаваемый с широковещательной антенны всем компьютерам. При появлении данных для передачи компьютер задерживал передачу до начала следующего слота. Длительность слотов подбиралась таким образом, чтобы за один слот компьютер успевал отправить свои данные вычислительному центру и получить оповещение о получении данных от вычислительного центра. |
[[Файл:Slotted_Aloha_scheme1.png]] | [[Файл:Slotted_Aloha_scheme1.png]] | ||
=== CSMA === | === CSMA === | ||
Строка 62: | Строка 64: | ||
====Виды CSMA==== | ====Виды CSMA==== | ||
* CSMA/CD - CSMA with collision detection | * CSMA/CD - CSMA with collision detection | ||
− | Если во время передачи кадра компьютер обнаруживает другой сигнал, занимающий передающую среду (то есть произошла коллизия), то он отправляет сигнал преднамеренной помехи, чтобы другие узлы быстрее заметили, что произошла коллизия и прекратили передачу, и ждет в течение случайного промежутка времени прежде чем повторить отправку сигнала. Можно заметить, что тот факт, что передающая среда свободна до начала передачи совсем не значит, что не произойдет коллизии в момент передачи, потому что другой узел тоже может посмотреть на состояние передающей среды в тот же момент времени, увидеть, что она свободна и тоже начать отправку. Но при этом на практике вероятность таких ситуаций ниже и количество коллизий будет меньше. Также можно заметить, что для применения данного алгоритма нужно, чтобы каждый узел видел любой другой узел. Ниже описывается случай, в котором это не так. Именно поэтому данный алгоритм не работает с Wi-Fi. | + | Узел слушает передающую среду. Если кто-то другой передает, то ждем случайный промежуток времени. Если же среда свободна, то узел отправляет сообщение. Если во время передачи кадра компьютер обнаруживает другой сигнал, занимающий передающую среду (то есть произошла коллизия), то он отправляет сигнал преднамеренной помехи, чтобы другие узлы быстрее заметили, что произошла коллизия и прекратили передачу, и ждет в течение случайного промежутка времени прежде чем повторить отправку сигнала. Можно заметить, что тот факт, что передающая среда свободна до начала передачи совсем не значит, что не произойдет коллизии в момент передачи, потому что другой узел тоже может посмотреть на состояние передающей среды в тот же момент времени, увидеть, что она свободна и тоже начать отправку. Но при этом на практике вероятность таких ситуаций ниже и количество коллизий будет меньше. Также можно заметить, что для применения данного алгоритма нужно, чтобы каждый узел видел любой другой узел. Ниже описывается случай, в котором это не так. Именно поэтому данный алгоритм не работает с Wi-Fi. |
[[Файл:CSMACD_Scheme_2.png]] | [[Файл:CSMACD_Scheme_2.png]] | ||
* CSMA/CA - CSMA with collision avoidance | * CSMA/CA - CSMA with collision avoidance | ||
Строка 72: | Строка 74: | ||
* Узел слушает передающую среду. Если кто-то другой передает, то ждет случайный промежуток времени. | * Узел слушает передающую среду. Если кто-то другой передает, то ждет случайный промежуток времени. | ||
* Узел отправляет RTS (Request To Send) сигнал управляющему узлу. Если он получает в ответ CTS (Clear To Send) сигнал, то отправляет данные. Иначе- ждет случайный промежуток времени. | * Узел отправляет RTS (Request To Send) сигнал управляющему узлу. Если он получает в ответ CTS (Clear To Send) сигнал, то отправляет данные. Иначе- ждет случайный промежуток времени. | ||
− | В данном случае количество коллизий уменьшается, потому что сигнал CTS выдается узлом, который принимает | + | В данном случае количество коллизий уменьшается, потому что сигнал CTS выдается узлом, который принимает сообщение. Помимо уменьшения числа коллизий, решается и проблема скрытого узла, поскольку отправляющему узлу достаточно видеть только принимающий узел, от которого он получит CTS. А видеть другой узел, который будет отправлять данные, уже нужно только принимающему узлу, чтобы отправлять CTS. |
[[Файл:CSMACA_Scheme.png]] | [[Файл:CSMACA_Scheme.png]] | ||
==Литература== | ==Литература== |
Версия 09:45, 10 декабря 2016
Определение: |
Канальный уровень (англ. Data link layer) - второй уровень в сетевой модели OSI, предназначенный для передачи данных между смежными узлами Wide Area Network (WAN) и между узлами, находящимися в одном сегменте локальной сети (Local Area Network, LAN). Также может быть использован для обнаружения и исправления ошибок, произошедших на физическом уровне. Примеры: Etherner, Point-to-Point Protocol. |
Содержание
MAC - адрес
Определение: |
MAC-адрес (англ. Media Access Control - управление доступом к среде, также Hardware Address) - уникальный идентификатор, присваиваемый сетевым интерфейсам сегмента сети для коммуникации на канальном уровне. |
Определение: |
Групповой MAC-адрес (англ. Broadcast address) - логический адрес (не присвоенный физически никакому устройству), который используется для передачи групповых (broadcast) сообщений. Сообщение, отправленное на групповой MAC-адрес, получает некоторое множество узлов сети, а не только один конкретный узел. |
Стандарты IEEE определяют 48-разрядный MAC-адрес, который разделен на 4 части.
- Первые 24 бита содержат уникальный идентификатор организации или код производителя, который производитель получает в IEEE Registration Authority.
- Из них первый бит указывает, для одиночного или группового адресата (например, для передачи всем узлам сети) предназначен кадр.
- Второй бит указывает, является MAC-адрес локально или глобально администрируемым. Глобально администрируемый MAC-адрес является глобально уникальным и обычно зашит в аппаратуру, в то время как локально администрируемый MAC-адрес выбирается администратором сети и является локально уникальным в данной сети.
- Следующие 24 бита выбираются производителем для каждого экземпляра устройства.
MAC-адрес используется для идентификации отправителя и получателя сообщения. В частности, MAC-адрес позволяет позволяет уникально идентифицировать каждый узел сети и доставлять данные только этому узлу.
NIC
Определение: |
Сетевая карта (англ. NIC - Network Interface Controller) - Компонент компьютера, отвечающий за подключение компьютера к сети. |
У каждой сетевой карты есть MAC-адрес, который ей присваивается изготовителем и является уникальным. Пакеты на канальном уровне всегда отправляются с указанием MAC-адреса отправителя и MAC-адреса получателя. Когда сетевая карта получает пакет, сравнивает MAC-адрес получателя пакета со своим MAC-адресом. Если они совпадают, то пакет обрабатывается, иначе- нет.
Пример работы канального уровня с более высокими уровнями
Пусть хотим отправить пакет на какой-то IP-адрес. Тогда:
- Если получатель находится в той же сети, то можем ему отправить. Иначе надо отправить пакет конфигурирующему роутеру.
- Роутер использует протокол ARP, чтобы определить MAC-адрес получателя и скажет отправителю этот адрес. Отправитель запомнит его и отправит на него пакет.
Протокол ARP:
- Роутер отправляет на групповой MAC-адрес пакет с вопросом: "У кого IP x.x.x.x?"
- Этот пакет получают все узлы, но только один из них ответит, что у него, и пришлет роутеру ответ, указав в нем свой MAC-адрес.
Функции MAC
- MAC-адреса используются для контроля доступа. Узел настраивается так, чтобы принимать пакеты только от некоторого набора MAC-адресов. Так как MAC-адрес уникален, не получится заставить узел принять пакет от злоумышленника. Заметим, что нельзя сказать тоже самое про IP-адрес, который можно без особых проблем подделать.
- DHCP сервера используют MAC-адрес, чтобы распознавать устройства и выдавать им фиксированный IP-адрес. То есть компьютер пришел на сервер, чтобы тот дал ему IP-адрес. Сервер смотрит на его MAC-адрес (в данный момент у узла нет другого адреса), выдает ему IP-адрес и запоминает, что такому IP-адресу соответствует такой MAC-адрес.
Алгоритмы управления доступом к среде
Есть разделяемая среда для передачи данных, хочется передавать данные между несколькими узлами, избегая возникновения коллизий.
Aloha
Алгоритм, разработанный в 1971 году. Был один вычислительный центр и много компьютеров, которые должны были взаимодействовать, отправляя сообщения вычислительному центру и получая сообщения от него. Компьютер отправлял данные по первому каналу. Если в этот момент никто больше не отправлял данные, то коллизии не произошло и вычислительный центр отправлял оповещение всем компьютерам, используя второй канал. Если же в этот момент еще один компьютер отправлял данные вычислительному центру, то произошла коллизия, и вычислительный центр получил испорченное сообщение (так как несколько сообщений были отправлены одновременно на одной частоте) и не отправлял оповещения. Если компьютер отправил сообщение и не получил оповещения в течение некоторого времени, то он отправлял сообщение еще раз по прошествии случайного промежутка времени. Важным фактом является то, что использовалась разделяемая среда для отправки данных с компьютеров на вычислительный центр.
Pure Aloha
Первая версия данного протокола. Компьютеры действовали следующем образом:
- Если есть данные для отправки, то отправь данные
- Если во время отправки данных были получены данные от другого компьютера, то произошла коллизия и все отправлявшие в этот момент компьютеры должны отправить сообщения еще раз позже
Заметим, что данный протокол не проверяет занятость канала перед отправкой данных. Также довольно очевидным является тот факт, что среда передачи не используется с максимальной эффективностью, потому что коллизии могут происходить довольно часто и каждая коллизия заканчивается повторной отправкой данных всеми участниками коллизии.
Slotted Aloha
Модификация протокола Aloha. Ось времени разбивалась на дискретные интервалы, названные слотами. Каждый компьютер последовательно отмерял границы слотов. Для синхронизации использовался специальный сигнал, передаваемый с широковещательной антенны всем компьютерам. При появлении данных для передачи компьютер задерживал передачу до начала следующего слота. Длительность слотов подбиралась таким образом, чтобы за один слот компьютер успевал отправить свои данные вычислительному центру и получить оповещение о получении данных от вычислительного центра.
CSMA
Определение: |
CSMA протокол (англ. Carrier Sense Multiple Access) - протокол MAC-уровня, в котором узел, желающий передать пакет данных, проверяет чистоту канала , то есть слушает шумы в передающей среде в течение заранее заданного периода времени. Узел может передать пакет, если передающая среда оценивается, как чистая. |
Виды CSMA
- CSMA/CD - CSMA with collision detection
Узел слушает передающую среду. Если кто-то другой передает, то ждем случайный промежуток времени. Если же среда свободна, то узел отправляет сообщение. Если во время передачи кадра компьютер обнаруживает другой сигнал, занимающий передающую среду (то есть произошла коллизия), то он отправляет сигнал преднамеренной помехи, чтобы другие узлы быстрее заметили, что произошла коллизия и прекратили передачу, и ждет в течение случайного промежутка времени прежде чем повторить отправку сигнала. Можно заметить, что тот факт, что передающая среда свободна до начала передачи совсем не значит, что не произойдет коллизии в момент передачи, потому что другой узел тоже может посмотреть на состояние передающей среды в тот же момент времени, увидеть, что она свободна и тоже начать отправку. Но при этом на практике вероятность таких ситуаций ниже и количество коллизий будет меньше. Также можно заметить, что для применения данного алгоритма нужно, чтобы каждый узел видел любой другой узел. Ниже описывается случай, в котором это не так. Именно поэтому данный алгоритм не работает с Wi-Fi.
- CSMA/CA - CSMA with collision avoidance
Определение: |
Hidden Node Problem - проблема того, что каждый из двух узлов видит точку доступа, но при этом узлы не видят друг друга. Таким образом, нельзя решить конфликт с помощью протокола CSMA/CD. |
CSMA/CA Применяется для решения Hidden Node Problem. Протокол:
- Узел слушает передающую среду. Если кто-то другой передает, то ждет случайный промежуток времени.
- Узел отправляет RTS (Request To Send) сигнал управляющему узлу. Если он получает в ответ CTS (Clear To Send) сигнал, то отправляет данные. Иначе- ждет случайный промежуток времени.
В данном случае количество коллизий уменьшается, потому что сигнал CTS выдается узлом, который принимает сообщение. Помимо уменьшения числа коллизий, решается и проблема скрытого узла, поскольку отправляющему узлу достаточно видеть только принимающий узел, от которого он получит CTS. А видеть другой узел, который будет отправлять данные, уже нужно только принимающему узлу, чтобы отправлять CTS.