Компьютерные сети

ICMP, Ping и Traceroute

«Интернет не работает» - и начинаются гадания. Кабель? Роутер? Провайдер? DNS? С правильными инструментами проблема находится за минуту. Ping и traceroute - стетоскоп для сети.

  • **Мониторинг:** Системы вроде Nagios пингуют серверы каждые N секунд
  • **SLA:** Провайдеры измеряют latency и packet loss для гарантий качества
  • **Геймеры:** Высокий ping = лаги в онлайн-играх

Предварительные знания

  • Routers

Протокол ICMP

**ICMP** (Internet Control Message Protocol) - служебный протокол L3 для диагностики и сообщений об ошибках. Он не передаёт данные пользователя, а помогает сети работать: «хост недоступен», «TTL истёк», «сеть перегружена».

ICMP-сообщения генерируются автоматически роутерами и хостами. Когда пакет не может быть доставлен - отправитель получает ICMP с объяснением причины.

**Безопасность:** Многие firewall блокируют ICMP, особенно входящий. Это скрывает информацию о сети от атакующих, но усложняет диагностику.

Для чего используется ICMP?

Ping: проверка доступности

**Ping** - утилита, которая отправляет ICMP Echo Request и ждёт Echo Reply. Если ответ пришёл - хост жив и доступен. Показывает время отклика (RTT - Round Trip Time).

**Типичные значения RTT:** • Локальная сеть: <1 ms • Город: 5-20 ms • Другой континент: 100-200 ms • Спутник: 500-700 ms

Ping до сервера показывает time=150ms. Что это значит?

Traceroute: карта маршрута

**Traceroute** показывает каждый роутер на пути к цели. Использует трюк с TTL: отправляет пакеты с TTL=1, 2, 3... Каждый роутер, где TTL истекает, отправляет ICMP Time Exceeded - так мы узнаём его IP.

**Совет:** Если видите высокий latency на одном хопе, но следующие нормальные - проблема не там. Роутер мог медленно ответить на ICMP, но быстро форвардить трафик.

Traceroute показывает * * * на 4-м хопе. Что это значит?

TTL: Time To Live

**TTL** (Time To Live) - поле в IP-заголовке, которое ограничивает время жизни пакета. Каждый роутер уменьшает TTL на 1. При TTL=0 пакет уничтожается - защита от бесконечных петель.

**Определение ОС по TTL:** Если ping показывает ttl=127, сервер скорее всего Windows (128-1). ttl=63 - вероятно Linux (64-1). Это называется OS fingerprinting.

Ping до сервера показывает ttl=52. Какая ОС на сервере вероятнее?

Практическая диагностика

Когда что-то не работает, диагностика идёт от простого к сложному: локальная сеть → gateway → интернет → конкретный сервер.

**Правило:** Если ping 8.8.8.8 работает, но ping google.com нет - проблема в DNS. Если traceroute обрывается на каком-то хопе - проблема там или дальше.

Если ping не работает, сервер мёртв

Сервер может блокировать ICMP, но работать нормально

Многие серверы отключают ответы на ping из соображений безопасности. Проверяйте через nc -zv host port или curl.

ping 8.8.8.8 работает, ping google.com - нет. В чём проблема?

Ключевые идеи

  • **ICMP** - служебный протокол для диагностики и ошибок (L3)
  • **Ping** - проверка доступности + измерение RTT
  • **Traceroute** - показывает каждый хоп на пути (использует TTL)
  • **TTL** - защита от петель, уменьшается на каждом роутере
  • **Диагностика:** localhost → gateway → 8.8.8.8 → целевой хост

Связанные темы

ICMP и диагностика связаны с:

  • ARP — Диагностика L2-связности
  • DNS — Если ping IP работает, а имя нет - проблема DNS
  • Firewall — Почему ICMP часто блокируется

Вопросы для размышления

  • Почему ping localhost (127.0.0.1) работает даже без сетевого подключения?
  • Как traceroute может показать путь, если firewall блокирует ICMP?
  • Почему latency до сервера в Австралии будет выше, чем до сервера в Европе?

Связанные уроки

  • os-01-intro
ICMP, Ping и Traceroute

0

1

Войти