Address Resolution (поиск по адресу)

Теперь, когда вы осознали, как формируются IP-адреса, вы можете задаться вопросом, как они используются в Ethernet для адресации различных хостов. В конце концов, протокол Ethernet опознает хосты по шестибайтовому адресу, который не имеет ничего общего с IP-адресом.

Именно для этого существует механизм, переводящий IP-адреса в адреса Ethernet. Это так называемый Address Resolution Protocol (Протокол Решения Адреса) или ARP. Фактически, ARP не ограничен Ethernet, он используется и в сетях других типов. Принцип работы ARP схож с методом, когда человек ищет кого-то в толпе, выкрикивая его имя. Если этот кто-то в толпе, он откликнется.

Когда ARP хочет узнать Ethernet-адрес, соответствующий определенному IP-адресу, он использует возможность Ethernet, известную как "broadcast" (широковещательное сообщение). Широковещательная дейтаграмма, отправленная ARP, содержит запрос с IP-адресом. Каждый хост сравнивает этот адрес со своим и, если они совпадают, возвращает ответ ARP на запрос. Теперь исходный хост может извлечь Ethernet-адрес из этого ответа.

Возможно, вы зададитесь вопросом, как же хост может определить, на какой именно Ethernet во всем мире находится искомый хост. Все это связано с процессом маршрутизации, который помогает определить физическое местоположение хоста в сети. Об этом будет рассказано в следующем разделе.

Но вернемся к ARP. Если хост узнал Ethernet-адрес, он сохраняет его в ARP-кэше. Таким образом, при следующей необходимости отправить дейтаграмму данному хосту, не требуется тратить время на поиск адреса. Однако хост не сохраняет эту информацию навсегда; например, если на удаленном хосте заменяют Ethernet-карту, сохраненный адрес может стать некорректным. Поэтому через некоторое время может потребоваться повторный запрос адреса.

Иногда также требуется определить IP-адрес, связанный с данным Ethernet-адресом. Это происходит, когда бездисковая машина хочет загрузиться с сервера по сети – довольно распространенная ситуация для локальных сетей. Бездисковый клиент знает только свой Ethernet-адрес. Он отправляет широковещательный запрос серверу, просит сообщить ему его IP-адрес. Для этой цели существует другой протокол, называемый Reverse Address Resolution Protocol (Обратный Протокол Решения Адреса) или RARP. Есть также протокол BOOTP, который определяет процесс загрузки бездисковых клиентов по сети.