Канальный уровень (Link Layer) — это базовый уровень модели TCP/IP, отвечающий за связь в пределах локального сетевого сегмента. Этот уровень зависит от аппаратного обеспечения, работая напрямую с сетевыми картами и физической адресацией.
Кадры и заголовок канального уровня
На канальном уровне пакет из сетевого уровня инкапсулируется в структуру, называемую кадром. Важной частью этого процесса является добавление заголовка канального уровня. Этот заголовок содержит MAC-адреса источника и назначения хостов, контрольные суммы для обнаружения ошибок и разделители пакетов, которые позволяют принимающему устройству определить, где заканчивается один кадр и начинается следующий.
Для построения заголовка канального уровня системе необходимы как MAC-адреса источника, так и назначения. Хотя MAC-адрес источника известен, MAC-адрес назначения для IP-адреса в той же локальной сети должен быть обнаружен. Здесь в игру вступает Протокол разрешения адресов (ARP).
ARP (Протокол разрешения адресов)
ARP — это протокол канального уровня, используемый для поиска MAC-адреса, связанного с определенным IP-адресом в пределах одной сети. Если целевой хост находится в другой сети, пакет будет отправлен на шлюз по умолчанию (маршрутизатор), и ARP будет использоваться для поиска MAC-адреса маршрутизатора.
Системы сначала обращаются к своей таблице поиска ARP, которая кэширует известные сопоставления IP-адресов с MAC-адресами. Если необходимый адрес отсутствует в кэше, система широковещательно рассылает ARP-запрос по всей сети. Это специальное сообщение спрашивает, какой хост имеет определенный IP-адрес, например, 10.10.1.4. Хост с этим IP-адресом отправит ARP-ответ, содержащий свой IP- и MAC-адрес.
Имея все необходимые IP- и MAC-адреса, канальный уровень теперь может пересылать кадр через сетевую карту. Путешествие пакета — это многоэтапный процесс инкапсуляции и декапсуляции по мере его перемещения вверх и вниз по стеку TCP/IP как на отправляющей, так и на принимающей сторонах.
Перемещение пакета
Вот пошаговое описание того, как пакет перемещается от отправителя (Пита) к получателю (Пэтти):
- Пит отправляет Пэтти электронное письмо. Эти данные передаются на транспортный уровень.
- Транспортный уровень инкапсулирует данные в заголовок TCP или UDP для формирования сегмента. Он добавляет порты назначения и источника, а затем отправляет сегмент на сетевой уровень.
- Сетевой уровень инкапсулирует сегмент в IP-пакет и добавляет IP-адреса источника и назначения. Затем он направляет пакет на канальный уровень.
- Пакет достигает канального уровня, где он инкапсулируется в кадр. Добавляется заголовок канального уровня, содержащий MAC-адреса источника и назначения.
- Пэтти получает этот кадр данных через свой физический уровень, проверяет кадр на целостность данных, затем декапсулирует его и отправляет IP-пакет на свой сетевой уровень.
- Сетевой уровень считывает пакет, чтобы найти IP-адреса источника и назначения. Он подтверждает, что IP-адрес назначения совпадает с его собственным, декапсулирует пакет и отправляет сегмент на транспортный уровень.
- Транспортный уровень декапсулирует сегмент, проверяет номера портов TCP или UDP и устанавливает соединение с прикладным уровнем на основе этих портов.
- Прикладной уровень получает данные от транспортного уровня на указанном порту и представляет их Пэтти в виде окончательного сообщения электронной почты.