<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Протокол ARP (Address Resolution Protocol)]]></title><description><![CDATA[<p dir="auto">Протокол разрешения адресов (ARP) — это фундаментальный механизм, обеспечивающий взаимодействие между сетевым (Layer 3) и канальным (Layer 2) уровнями модели OSI в сетях на основе IPv4. Его основная задача — динамическое преобразование логического IP-адреса узла в его физический MAC-адрес в пределах одного широковещательного домена (broadcast domain).</p>
<h2>Основная проблема и решение</h2>
<p dir="auto">В стеке протоколов TCP/IP сетевой уровень оперирует IP-адресами для маршрутизации пакетов от источника к получателю через сеть. Однако, когда пакет достигает конечного сегмента сети (или когда оба узла находятся в одной подсети), его необходимо доставить конкретному сетевому интерфейсу. Канальный уровень, отвечающий за эту локальную доставку, использует аппаратные MAC-адреса.</p>
<p dir="auto"><strong>Проблема:</strong> Устройство знает IP-адрес получателя, но не знает его MAC-адрес.<br />
<strong>Решение:</strong> Протокол ARP.</p>
<p dir="auto">ARP решает эту проблему путем широковещательного запроса внутри локальной сети, эффективно спрашивая: “Кто владеет этим IP-адресом? Пожалуйста, сообщите мне свой MAC-адрес”.</p>
<h2>Формат ARP-пакета</h2>
<p dir="auto">ARP-пакет инкапсулируется непосредственно в кадр канального уровня (например, Ethernet) и имеет следующую структуру:</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th style="text-align:left">Поле</th>
<th style="text-align:left">Размер (байты)</th>
<th style="text-align:left">Описание</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><strong>Hardware Type (HTYPE)</strong></td>
<td style="text-align:left">2</td>
<td style="text-align:left">Тип аппаратного адреса. Для Ethernet значение <code>1</code>.</td>
</tr>
<tr>
<td style="text-align:left"><strong>Protocol Type (PTYPE)</strong></td>
<td style="text-align:left">2</td>
<td style="text-align:left">Тип протокола сетевого уровня. Для IPv4 значение <code>0x0800</code>.</td>
</tr>
<tr>
<td style="text-align:left"><strong>Hardware Address Length (HLEN)</strong></td>
<td style="text-align:left">1</td>
<td style="text-align:left">Длина аппаратного адреса в байтах. Для MAC-адресов — <code>6</code>.</td>
</tr>
<tr>
<td style="text-align:left"><strong>Protocol Address Length (PLEN)</strong></td>
<td style="text-align:left">1</td>
<td style="text-align:left">Длина сетевого адреса в байтах. Для IPv4 — <code>4</code>.</td>
</tr>
<tr>
<td style="text-align:left"><strong>Operation (OPER)</strong></td>
<td style="text-align:left">2</td>
<td style="text-align:left">Тип операции: <code>1</code> для ARP-запроса (ARP Request), <code>2</code> для ARP-ответа (ARP Reply).</td>
</tr>
<tr>
<td style="text-align:left"><strong>Sender Hardware Address (SHA)</strong></td>
<td style="text-align:left">6</td>
<td style="text-align:left">MAC-адрес отправителя запроса или ответа.</td>
</tr>
<tr>
<td style="text-align:left"><strong>Sender Protocol Address (SPA)</strong></td>
<td style="text-align:left">4</td>
<td style="text-align:left">IP-адрес отправителя запроса или ответа.</td>
</tr>
<tr>
<td style="text-align:left"><strong>Target Hardware Address (THA)</strong></td>
<td style="text-align:left">6</td>
<td style="text-align:left">В запросе — поле заполнено нулями (<code>00:00:00:00:00:00</code>). В ответе — MAC-адрес получателя.</td>
</tr>
<tr>
<td style="text-align:left"><strong>Target Protocol Address (TPA)</strong></td>
<td style="text-align:left">4</td>
<td style="text-align:left">IP-адрес, для которого требуется разрешение MAC-адреса.</td>
</tr>
</tbody>
</table>
<h3>Примеры ARP-пакетов</h3>
<p dir="auto"><strong>1. ARP-запрос (ARP Request):</strong></p>
<ul>
<li><strong>OPER:</strong> <code>1</code></li>
<li><strong>SHA:</strong> MAC-адрес отправителя (напр., <code>00:11:22:33:44:55</code>)</li>
<li><strong>SPA:</strong> IP-адрес отправителя (напр., <code>192.168.1.10</code>)</li>
<li><strong>THA:</strong> <code>00:00:00:00:00:00</code> (неизвестен)</li>
<li><strong>TPA:</strong> IP-адрес цели (напр., <code>192.168.1.20</code>)</li>
</ul>
<p dir="auto">Этот пакет инкапсулируется в <strong>широковещательный</strong> Ethernet-кадр с Destination MAC = <code>FF:FF:FF:FF:FF:FF</code>, чтобы его получил каждый узел в сети.</p>
<p dir="auto"><strong>2. ARP-ответ (ARP Reply):</strong></p>
<ul>
<li><strong>OPER:</strong> <code>2</code></li>
<li><strong>SHA:</strong> MAC-адрес цели из запроса (напр., <code>AA:BB:CC:DD:EE:FF</code>)</li>
<li><strong>SPA:</strong> IP-адрес цели из запроса (напр., <code>192.168.1.20</code>)</li>
<li><strong>THA:</strong> MAC-адрес отправителя запроса (напр., <code>00:11:22:33:44:55</code>)</li>
<li><strong>TPA:</strong> IP-адрес отправителя запроса (напр., <code>192.168.1.10</code>)</li>
</ul>
<p dir="auto">Этот пакет инкапсулируется в <strong>unicast</strong> Ethernet-кадр, направленный напрямую отправителю запроса.</p>
<h2>Процесс работы ARP</h2>
<p dir="auto">Процесс разрешения адреса состоит из нескольких шагов:</p>
<ol>
<li><strong>Проверка кэша:</strong> Узел A, желающий отправить пакет узлу B (<code>192.168.1.20</code>), сначала проверяет свою локальную <strong>ARP-таблицу</strong> (кэш). Если запись <code>IP -&gt; MAC</code> уже существует и актуальна, процесс завершается, и A использует найденный MAC-адрес для формирования кадра.</li>
<li><strong>Генерация запроса:</strong> Если записи в ARP-таблице нет, узел A создает ARP-запрос, где TPA = <code>192.168.1.20</code>, а THA = <code>00:00:00:00:00:00</code>.</li>
<li><strong>Широковещательная рассылка:</strong> ARP-запрос помещается в Ethernet-кадр с Destination MAC = <code>FF:FF:FF:FF:FF:FF</code> и рассылается всем узлам в локальной сети.</li>
<li><strong>Обработка запроса:</strong> Все узлы получают запрос. Большинство игнорируют его, сравнивая TPA со своим IP-адресом. Только узел B, чей IP совпадает с <code>192.168.1.20</code>, обрабатывает запрос.</li>
<li><strong>Формирование и отправка ответа:</strong> Узел B создает ARP-ответ, заполняя SHA и SPA своим MAC и IP, а THA и TPA — данными из запроса. Ответ отправляется напрямую узлу A как unicast-кадр.</li>
<li><strong>Обновление кэша:</strong> Узел A получает ответ, извлекает из него MAC-адрес узла B и добавляет новую запись (<code>192.168.1.20</code> -&gt; <code>AA:BB:CC:DD:EE:FF</code>) в свою ARP-таблицу. Теперь A может отправить исходный пакет данных.</li>
</ol>
<h2>ARP-таблица (кэш)</h2>
<p dir="auto">Каждое устройство поддерживает локальную ARP-таблицу — это кэш соответствий IP-адресов и MAC-адресов. Это критически важно для производительности, так как позволяет избежать генерации ARP-запроса для каждого отправляемого пакета.</p>
<ul>
<li><strong>Записи:</strong> Добавляются динамически при получении ARP-ответов.</li>
<li><strong>Время жизни (TTL):</strong> Записи имеют ограниченное время жизни (обычно от 15 до 45 минут в различных ОС). После истечения TTL запись помечается как устаревшая и удаляется, чтобы таблица не содержала недействительных данных (например, если устройство было отключено от сети).</li>
<li><strong>Статические записи:</strong> Администратор может вручную добавить постоянные записи, которые не устаревают. Это используется для повышения безопасности или для критически важных устройств.</li>
</ul>
<p dir="auto">Команда <code>arp -a</code> в большинстве операционных систем позволяет просмотреть содержимое этой таблицы.</p>
<p dir="auto"><img src="/assets/uploads/files/4b/47/0b/1771178177651-d054901e-7401-4e14-9c24-f67851fb82eb-image.webp" alt="d054901e-7401-4e14-9c24-f67851fb82eb-image.png" class=" img-fluid img-markdown" /></p>
<h2>Безопасность и уязвимости</h2>
<p dir="auto">ARP является простым и эффективным протоколом, но он не содержит встроенных механизмов безопасности, что делает его уязвимым к атакам:</p>
<ul>
<li><strong>ARP-спуфинг (ARP Spoofing / ARP Poisoning):</strong> Злоумышленник отправляет в сеть поддельные ARP-ответы, связывая свой MAC-адрес с IP-адресом другого узла (например, шлюза по умолчанию). В результате весь трафик, предназначенный для этого узла, будет перенаправляться на злоумышленника, что позволяет ему перехватывать, модифицировать или блокировать данные (атака типа “Man-in-the-Middle”).</li>
<li><strong>Причина уязвимости:</strong> Узлы принимают и обрабатывают ARP-ответы даже без отправки соответствующего запроса, и они автоматически обновляют свои ARP-таблицы на основе полученной информации.</li>
</ul>
<p dir="auto">Для защиты от таких атак используются специализированные решения, такие как статические ARP-записи, DHCP Snooping и Dynamic ARP Inspection (DAI) на управляемых коммутаторах.</p>
<h2>Связь с другими протоколами</h2>
<ul>
<li><strong>RARP (Reverse ARP):</strong> Устаревший протокол, выполнявший обратную функцию — по MAC-адресу определял IP-адрес. Был заменен BOOTP, а затем DHCP.</li>
<li><strong>NDP (Neighbor Discovery Protocol):</strong> В IPv6 функции ARP полностью интегрированы в протокол NDP, который работает поверх ICMPv6 и предоставляет более широкий набор функций, включая обнаружение соседей, определение MTU и маршрутизаторов.</li>
</ul>
<p dir="auto">Таким образом, ARP является незаменимым “клеем”, связывающим логическую адресацию IP с физической адресацией на уровне MAC, обеспечивая корректную доставку данных в пределах локальной сети.</p>
]]></description><link>https://forum.exlends.ru/topic/514/protokol-arp-address-resolution-protocol</link><generator>RSS for Node</generator><lastBuildDate>Wed, 20 May 2026 08:25:20 GMT</lastBuildDate><atom:link href="https://forum.exlends.ru/topic/514.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 15 Feb 2026 17:20:12 GMT</pubDate><ttl>60</ttl></channel></rss>