RFC 826
RFC 826 — это документ, опубликованный в ноябре 1982 года в серии Request for Comments (RFC) Инженерного совета Интернета (IETF), который определяет протокол разрешения адресов (Address Resolution Protocol, ARP). Документ, написанный Дэвидом К. Пламмером, формально называется «An Ethernet Address Resolution Protocol» и описывает метод динамического сопоставления сетевых адресов (например, IP-адресов) с аппаратными адресами (например, MAC-адресами) в локальных сетях. RFC 826 является одним из фундаментальных стандартов, лежащих в основе работы сетей Ethernet и стека протоколов TCP/IP.
История и контекст создания
К началу 1980-х годов сеть ARPANET и развивающиеся локальные сети столкнулись с проблемой несовместимости адресации. Протокол IP (IPv4) использовал 32-битные адреса для идентификации узлов в сети, но на канальном уровне, особенно в сетях Ethernet, для передачи данных требовались 48-битные MAC-адреса (Media Access Control). Необходимо было найти способ автоматического преобразования одного набора адресов в другой без ручной настройки таблиц на каждом узле.
Дэвид К. Пламмер, работавший в корпорации Bolt, Beranek and Newman (BBN), предложил решение, которое позволяло узлам сети самостоятельно узнавать соответствие между IP- и MAC-адресами. Первоначальная версия RFC 826 была опубликована в 1982 году (с датой ноябрь 1982). Позднее, в 1984 году, вышла уточнённая версия, которая стала стандартом (STD 37). С тех пор RFC 826 многократно дополнялся, но его основная концепция осталась неизменной и используется до сих пор.
Основные положения протокола (ARP)
ARP, описанный в RFC 826, работает на канальном уровне модели OSI (уровень 2) и предназначен для разрешения адресов в пределах одной локальной сети (broadcast domain). Протокол не маршрутизируется через маршрутизаторы, так как оперирует только в рамках одного сегмента.
1. Формат сообщения ARP
Сообщение ARP имеет фиксированную структуру, которая включает следующие поля:
- Тип аппаратного адреса (Hardware Type, 2 байта) — указывает тип канального протокола (например, 1 для Ethernet).
- Тип протокола (Protocol Type, 2 байта) — указывает вышестоящий сетевой протокол (например, 0x0800 для IPv4).
- Длина аппаратного адреса (Hardware Address Length, 1 байт) — для Ethernet — 6 байт.
- Длина протокольного адреса (Protocol Address Length, 1 байт) — для IPv4 — 4 байта.
- Код операции (Operation Code, 2 байта) — определяет тип сообщения: 1 — запрос (ARP Request), 2 — ответ (ARP Reply).
- Аппаратный адрес отправителя (Sender Hardware Address) — MAC-адрес узла, отправляющего сообщение.
- Протокольный адрес отправителя (Sender Protocol Address) — IP-адрес узла, отправляющего сообщение.
- Аппаратный адрес получателя (Target Hardware Address) — в запросе обычно заполнен нулями, в ответе — MAC-адрес искомого узла.
- Протокольный адрес получателя (Target Protocol Address) — IP-адрес, который требуется разрешить.
2. Принцип работы
Процесс разрешения адреса с помощью ARP состоит из следующих этапов:
- Инициализация запроса: Когда узел A (с IP-адресом 192.168.1.10 и MAC-адресом AA:AA:AA:AA:AA:AA) хочет отправить данные узлу B (с IP-адресом 192.168.1.20), он проверяет свою ARP-таблицу (кэш ARP). Если соответствия для IP-адреса 192.168.1.20 нет, узел A формирует ARP-запрос.
- Широковещательная рассылка: Запрос отправляется на широковещательный MAC-адрес (FF:FF:FF:FF:FF:FF). В поле «Протокольный адрес получателя» указывается IP-адрес узла B (192.168.1.20), а поле «Аппаратный адрес получателя» заполняется нулями. Все узлы в сегменте сети получают этот кадр.
- Обработка запроса: Каждый узел, получивший широковещательный запрос, сравнивает свой IP-адрес с адресом получателя в запросе. Если адрес не совпадает, узел игнорирует запрос (за исключением некоторых случаев, например, при использовании Proxy ARP).
- Формирование ответа: Узел B, обнаружив совпадение, формирует ARP-ответ. В этом ответе он указывает свой MAC-адрес (BB:BB:BB:BB:BB:BB) в поле «Аппаратный адрес отправителя». Ответ отправляется напрямую узлу A (на его MAC-адрес AA:AA:AA:AA:AA:AA), а не широковещательно.
- Обновление кэша: Узел A получает ответ, извлекает из него MAC-адрес узла B и сохраняет соответствие (192.168.1.20 -> BB:BB:BB:BB:BB:BB) в своей ARP-таблице. После этого узел A может отправлять данные непосредственно узлу B, используя его MAC-адрес.
3. Кэш ARP (ARP Cache)
Для повышения эффективности и снижения широковещательного трафика каждый узел хранит таблицу соответствий IP- и MAC-адресов, называемую ARP-кэшем. Записи в кэше имеют ограниченное время жизни (TTL, Time to Live). По истечении TTL запись удаляется, и при необходимости отправки данных узел повторяет процедуру разрешения. Типичное время жизни записи в современных операционных системах составляет от 20 секунд до нескольких минут для динамических записей. Существуют также статические записи, которые вносятся вручную и не удаляются автоматически.
Модификации и расширения
С момента публикации RFC 826 появилось несколько расширений и модификаций протокола ARP:
- Proxy ARP: Технология, при которой маршрутизатор отвечает на ARP-запросы от имени узлов, находящихся за ним. Это позволяет узлам в одной подсети «видеть» друг друга, даже если они физически разделены маршрутизатором. Proxy ARP описан в RFC 1027.
- Gratuitous ARP: Сообщение ARP-ответа, которое узел отправляет сам себе (или широковещательно) для обновления ARP-таблиц других узлов. Используется при смене MAC-адреса или IP-адреса на узле, а также для обнаружения дублирования IP-адресов (DAD, Duplicate Address Detection).
- Inverse ARP (InARP): Протокол, обратный ARP, который позволяет узнать IP-адрес по известному MAC-адресу. Описан в RFC 2390, применяется в сетях Frame Relay.
- Reverse ARP (RARP): Устаревший протокол, использовавшийся для определения IP-адреса бездисковыми рабочими станциями по их MAC-адресу. Вытеснен протоколом BOOTP и DHCP.
Уязвимости и безопасность
Протокол ARP, как он описан в RFC 826, не имеет механизмов аутентификации. Это делает его уязвимым для атак типа «человек посередине» (Man-in-the-Middle, MITM) и отказа в обслуживании (DoS). Основные угрозы:
- ARP-спуфинг (ARP-отравление): Злоумышленник отправляет поддельные ARP-ответы, связывая свой MAC-адрес с IP-адресом другого узла (например, шлюза). В результате трафик жертвы перенаправляется на компьютер злоумышленника.
- ARP-флуд: Злоумышленник отправляет большое количество поддельных ARP-запросов или ответов, перегружая ARP-кэш коммутатора или узла, что может привести к отказу в обслуживании.
Для защиты от этих атак применяются методы статической ARP-таблицы, динамическое обнаружение атак (например, с помощью систем IDS/IPS), а также протоколы безопасного ARP, такие как S-ARP (Secure ARP).
Современное состояние
Несмотря на свой почтенный возраст (более 40 лет), RFC 826 остаётся действующим стандартом. Протокол ARP является неотъемлемой частью стека TCP/IP и используется в большинстве локальных сетей на базе Ethernet. Однако с внедрением протокола IPv6 его роль изменилась. В IPv6 функции разрешения адресов выполняет протокол Neighbor Discovery Protocol (NDP), описанный в RFC 4861, который решает те же задачи, но с улучшенной безопасностью и функциональностью. В сетях IPv4 ARP остаётся основным механизмом сопоставления адресов.
Источники
- Plummer, D. (1982). An Ethernet Address Resolution Protocol. RFC 826. IETF.
- Postel, J. (1981). Internet Protocol. RFC 791. IETF.
- Mogul, J. (1984). Internet Standard Subnetting Procedure. RFC 950. IETF.
- Braden, R. (1989). Requirements for Internet Hosts — Communication Layers. RFC 1122. IETF.
- Narten, T., Nordmark, E., Simpson, W., & Soliman, H. (2007). Neighbor Discovery for IP version 6 (IPv6). RFC 4861. IETF.
- Stevens, W. R. (1994). TCP/IP Illustrated, Volume 1: The Protocols. Addison-Wesley.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →