21

Как команда ping действительно работает? В частности, где ARP (протокол разрешения адресов) входит в картину?

Мне задали этот вопрос в интервью, и я не смог придумать сценарий, в котором можно было бы использовать ARP.

5 ответов5

15

Если вы действительно хотите понять, здесь есть отличная (очень хорошо написанная) белая книга:

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-пакеты и фильтровать только те, которые отправляются из пункта назначения.

Надеюсь, это поможет.

9

Предполагая, что пинг включает в себя отправку пакета по сети Ethernet или WiFi, ARP используется для поиска аппаратного адреса Ethernet устройства, которое получает исходящий пакет. Как правило, это будет маршрутизатор для локальной сети, на которой включен компьютер, на котором выполняется пинг.

Типичный процесс:

  1. Вы вводите команду для проверки связи с пунктом назначения.

  2. DNS используется для определения IP-адреса (при необходимости).

  3. С таблицей маршрутизации обращаются, чтобы найти следующий переход к этому месту назначения.

  4. ARP используется для поиска аппаратного адреса следующего перехода.

  5. Пакет IP отправляется на следующий переход, инкапсулированный в кадр Ethernet или WiFi.

1

ARP предоставляет MAC-адрес, но иногда, если адрес DMAC отсутствует, используется широковещательный адрес.

Этот кадр, использующий широковещательный DMAC, называется кадром широковещательной передачи ARP, при этом мы получаем адрес DMAC.

1

Ping и ARP - это разные вещи, расположенные на разных уровнях стека сетевых протоколов.

Ping находится на сетевом уровне (или интернет-уровне - посмотрите протокол ICMP , как указано @ServerMonkey).

Протокол Arp находится на канальном уровне (более низкий уровень). Протокол Arp предназначен для обеспечения физического соединения между сетевым оборудованием, которое подключено напрямую.

В сетевом стеке TCP/IP каждый уровень использует уровень ниже для пересылки своих данных, инкапсулируя их в протокол низкого уровня. Каждый уровень не зависит от другого и, возможно, не знает подробностей и реализаций других уровней (это не всегда так: см. Межуровневую функцию).

1

На самом деле Ping - это два разных пакета ICMP (Internet Control Message Protocol).

Чтобы пропинговать хост, вы сначала отправляете пакет эхо-запроса ICMP, затем хост отвечает эхо-ответом ICMP.

Для получения дополнительной информации см .: http://en.wikipedia.org/wiki/Ping

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .