Как команда ping действительно работает? В частности, где ARP (протокол разрешения адресов) входит в картину?
Мне задали этот вопрос в интервью, и я не смог придумать сценарий, в котором можно было бы использовать ARP.
Как команда ping действительно работает? В частности, где ARP (протокол разрешения адресов) входит в картину?
Мне задали этот вопрос в интервью, и я не смог придумать сценарий, в котором можно было бы использовать ARP.
Ответы:
Если вы действительно хотите понять, здесь есть отличная (очень хорошо написанная) белая книга:
http://images.globalknowledge.com/wwwimages/whitepaperpdf/WP_Mays_Ping.pdf
Вот резюме ->
Ping (Program on the application layer)
------->
Opens a 'raw' socket to IP Layer
------>
IP layer (Layer 2 on OSI) packages ICMP packet and sends it
Поскольку между ними нет уровня TCP, Ping (program)
он должен контролировать все входящие ICMP-пакеты и фильтровать только один из пункта назначения.
Надеюсь, это поможет.
Предполагая, что пинг включает в себя отправку пакета по сети Ethernet или WiFi, ARP используется для поиска аппаратного адреса Ethernet устройства, которое принимает исходящий пакет. Как правило, это будет маршрутизатор для локальной сети, на которой включен компьютер, на котором выполняется пинг.
Типичный процесс:
Вы вводите команду для проверки связи с пунктом назначения.
DNS используется для определения IP-адреса (при необходимости).
С таблицей маршрутизации обращаются, чтобы найти следующий переход к этому месту назначения.
ARP используется для поиска аппаратного адреса следующего перехода.
Пакет IP отправляется на следующий переход, инкапсулированный в кадр Ethernet или WiFi.
На самом деле Ping - это два разных пакета ICMP (Internet Control Message Protocol).
Чтобы пропинговать хост, вы сначала отправляете пакет эхо-запроса ICMP, затем хост отвечает эхо-ответом ICMP.
Для получения дополнительной информации см .: https://en.wikipedia.org/wiki/Ping_(networking_utility).
Ping и ARP - это разные вещи, расположенные на разных уровнях стека сетевых протоколов.
Ping находится на сетевом уровне (или интернет-уровне - посмотрите протокол ICMP , как указано @ServerMonkey).
Протокол Arp находится на канальном уровне (более низкий уровень). Протокол Arp предназначен для обеспечения физического соединения между сетевым оборудованием, которое подключено напрямую.
В сетевом стеке TCP / IP каждый уровень использует следующий уровень для пересылки своих данных, инкапсулируя их в протокол низкого уровня. Каждый уровень не зависит от другого и, возможно, не знает подробностей и реализаций других уровней (это не всегда так: см. Межуровневую функцию ).
ARP предоставляет MAC-адрес, но иногда, если адрес DMAC отсутствует, используется широковещательный адрес.
Этот кадр с использованием широковещательного DMAC называется кадром широковещательной передачи ARP, при этом мы получаем адрес DMAC.