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


24

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

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


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

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


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.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.