как на самом деле работает команда ping?

24

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

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

liv2hak
источник
Посмотри в ICMP.
3
ARP используется для получения MAC-адреса определенного IP-адреса. Когда вам нужно отправить пакет в Ethernet, вам нужен MAC-адрес получателя.

Ответы:

16

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

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

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

PlanetUnknown
источник
9

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

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

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

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

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

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

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

Дэвид Шварц
источник
3
Единственный ответ здесь, который на самом деле отвечает на вопрос!
jmiserez
2

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

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

Для получения дополнительной информации см .: https://en.wikipedia.org/wiki/Ping_(networking_utility).

Матиас Браун
источник
1

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

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

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

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

гейзенбаг
источник
да. но реализация ping потребует некоторого кода на L2 (канальный уровень). ARP вступит в игру на 2-м уровне.
@ liv2hak. нет. Реализация ping лежит на нижнем уровне ссылок.
@liv arp часто называют уровнем 2.5. ICMP часто называют уровнем 3.5. Уровни - это больше поля, чем код. И если вы хотите сказать, что для реализации ping требуется код на уровне 2, то с любой реализацией чего-либо, по определению, вы не можете иметь слой без слоев под ним.
Бароп
1

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

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

Сагар Вардекар
источник