Вы действительно понимаете процесс Ping?

задняя часть Эксплуатация и техническое обслуживание

1. Обзор

Что касается команды ping, предположительно до тех пор, пока ее знает программист? Когда мы проверяем состояние сети, первой используемой командой должна быть команда ping, верно? Как правило, мы используем ping для проверки ситуации в сети, в основном для проверки двух индикаторов: первый — чтобы увидеть, истекло ли время ожидания, а второй — чтобы увидеть, не слишком ли велика задержка. Если время ожидания истекло, значит, проблема в сети (за исключением случаев, когда пинг запрещен).Если задержка слишком велика, ситуация с сетью должна быть очень плохой. Итак, по принципу команды ping, как ping проверяет сеть? Вы знали раньше? Далее давайте пройдемся с командой ping, чтобы увидеть, как работает ping.

2. Подготовка среды и захват пакетов

2.1 Подготовка окружающей среды

1. Инструмент захвата пакетов. Я использую Wireshark здесь.

2. Я подготовил два компьютера для пинга. IP-адреса:

Компьютер А: 192.168.2.135

MAC-адрес: 98:22:EF:E8:A8:87

Компьютер Б: 192.168.2.179

MAC: 90:A4:DE:C2:DF:FE

2.2 Операция захвата пакетов

Откройте Wireshark, выберите указанную сетевую карту для захвата пакетов, выполните операцию ping и пропингуйте IP-адрес компьютера B на компьютере A.

Рисунок а

Захват пакета выглядит следующим образом:

Рисунок б

Вот краткое введение в панель управления Wireshark, Эта панель содержит 7 полей, а именно:

  • № номер
  • Время: временная метка пакета
  • Источник: исходный адрес
  • Пункт назначения: адрес назначения
  • Протокол: Протокол
  • Длина: длина пакета
  • Информация: Дополнительная информация о пакете

3. Углубленный анализ

Номер захвата пакета 54-132 на приведенном выше рисунке показывает весь процесс команды ping.Мы знаем, что команда ping основана не на протоколе транспортного уровня, таком как TCP или UDP, а на протоколе ICMP. протокол ICMP? Вот краткое введение:

3.1 Предыстория протокола ICMP

[RFC792]Причина создания ICMP объясняется в статье: Поскольку для связи между Интернетом будет задействовано множество шлюзов и хостов, для сообщения об ошибках данных создается протокол ICMP. Другими словами, протокол ICMP предназначен для более эффективной пересылки IP-датаграмм и повышения вероятности их успешной доставки.

3.2 Формат данных протокола ICMP

Рисунок с Согласно приведенному выше рисунку мы знаем, что заголовок протокола ICMP содержит 4 байта, и заголовок в основном используется для описания типа и проверки сообщения ICMP. На следующем рисунке показан соответствующий список определений типов и кодов, который будет использоваться при последующем анализе перехвата пакетов.

Рисунок г После краткого ознакомления с ICMP, какой протокол ARP появляется в процессе захвата пакетов? Также кратко объясним:

3.3 ARP-протокол

Мы знаем, что в локальной сети связь с компьютером фактически зависит от MAC-адреса для связи, поэтому роль ARP (протокол разрешения адресов) заключается в том, чтобы найти MAC-адрес, соответствующий IP-адресу, на основе IP-адреса.

3.4 Анализ процесса Ping

После понимания основных концепций выше, давайте проанализируем данные капитана. Поток рисунка B заключается в следующем:

  • Компьютер A (192.168.2.135) инициирует ping-запрос и пингует 192.168.2.179.
  • Компьютер А отправляет запрос ARP для запроса MAC-адреса 192.168.2.179.
  • Компьютер B отвечает на запрос ARP и отправляет компьютеру A односторонний ответ, сообщая компьютеру A, что его собственный MAC-адрес равен 90:A4:DE:C2:DF:FE.
  • Узнав MAC-адрес, запустите настоящий запрос ping.Поскольку компьютер B может знать MAC-адрес источника в соответствии с запросом, отправленным компьютером A, все могут ответить в соответствии с MAC-адресом источника.

Приведенный выше процесс запроса, который я нарисовал в виде блок-схемы, более интуитивно понятен:

Друзья, которые внимательно наблюдали, возможно, обнаружили, что после 4-кратного пинга запросов и ответов есть еще один запрос ARP с компьютера B на компьютер A. Почему это так? Здесь, я думаю, должно быть 2 причины:

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

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

Чтобы проверить наше предположение, я выполнил еще одну операцию ping и перехватил пакет, чтобы проверить, совпадает ли он с тем, что мы предположили. К этому моменту в компьютере уже есть ARP-кэш, мы выполняем ARP -a, чтобы увидеть кешированный список arp:

Давайте посмотрим на захват пакета второго пинга.

На приведенном выше рисунке мы видим, что перед фактическим пингом нет ARP-запроса, а это означает, что arp в кеше напрямую используется для выполнения. корректен ли предыдущий кэш ARP. Затем, после завершения операции ping, он также отправляет запрос ARP для обновления собственного кэша ARP. Это в основном согласуется с нашим предположением.

Разобравшись с процессом ping, давайте проанализируем, согласуются ли результаты данных ICMP, описанные ранее, с захваченными пакетами. Щелкнем по пинг-запросу, чтобы увидеть подробности протокола ICMP.

Сведения о протоколе ICMP указаны в красной рамке на рисунке, где тип = 8, код = 0, и проверка выполнена правильно. Когда мы сравниваем рисунок d, мы знаем, что это сообщение запроса. Давайте снова нажмем Кадр ответа: 57, который показывает, что ответное сообщение находится под порядковым номером 57. Подробности следующие:

Ответное сообщение на рисунке выше, Type=0, code=0. Здесь мы знаем, что это ответное сообщение, и, наконец, задержка ответа рассчитывается на основе метки времени запроса и ответа. 3379,764 мс-3376,890 мс=2,874 мс.

4. Резюме

Мы проанализировали полный процесс запроса ping.Команда ping использует протокол ICMP.Протокол ICMP предназначен для более эффективной пересылки IP-датаграмм и повышения вероятности успешной доставки. В дополнение к использованию ICMP, команда ping также использует протокол ARP в локальной сети, который может определить MAC-адрес компьютера на основе IP-адреса. ARP кэшируется.Чтобы обеспечить точность ARP, компьютер обновит кэш ARP.

5. Ссылка

"компьютерная сеть"

ICMP протокола TCP/IP

6. Рекомендуемое чтение

Шаблоны проектирования:

"Прокси-шаблон шаблонов проектирования Java

"Шаблон метода шаблона и шаблон построителя шаблонов проектирования Java

"Шаблон Singleton в шаблонах проектирования Java

"Начало шаблонов проектирования Java

Java-коллекции:

"Познакомьтесь с ConcurrentHashMap коллекций Java.

"Познакомьтесь с HashMap коллекций Java

"Вы попадете в ArrayList коллекций Java

НИО:

"Введение в программирование JAVA NIO (1)

"Введение в программирование JAVA NIO (2)

"Введение в программирование JAVA NIO (3)

Блокировка Java:

"ReentrantReadWriteLock блокировки ava

"ReentrantLock блокировки Java (1)

"ReentrantLock из Java Lock (2)