Ping и базовая диагностика сети
Ping и базовая диагностика сети
Мы разобрали, как пакеты путешествуют по интернету. Но что делать, если сайт не открывается? Интернет-соединение пропало или проблема в чём-то другом? Для диагностики сетевых проблем существует простой и древний инструмент — ping. Он есть на любом компьютере, работает мгновенно и даёт первый ответ на вопрос «а живо ли вообще соединение?».
Что такое ping
Ping — это утилита, которая отправляет специальный пакет (ICMP Echo Request) на указанный IP-адрес и ждёт ответа (ICMP Echo Reply). Если ответ пришёл — связь есть. Если нет — что-то не работает.
ICMP (Internet Control Message Protocol) — это служебный протокол, созданный специально для диагностики. Он не переносит пользовательские данные — только контрольные сообщения: «Эй, ты здесь?», «Не могу доставить пакет», «Время жизни истекло».
Как пользоваться ping
Открой терминал (командную строку) и набери:
ping google.com
Результат будет выглядеть примерно так:
PING google.com (142.250.185.206): 56 data bytes
64 bytes from 142.250.185.206: icmp_seq=0 ttl=118 time=12.5 ms
64 bytes from 142.250.185.206: icmp_seq=1 ttl=118 time=11.8 ms
64 bytes from 142.250.185.206: icmp_seq=2 ttl=118 time=12.1 ms
64 bytes from 142.250.185.206: icmp_seq=3 ttl=118 time=13.0 ms
--- google.com ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 11.8/12.4/13.0/0.5 ms
Что означают эти цифры:
- icmp_seq=0,1,2,3 — порядковый номер пакета. По нему видно, если пакеты приходят не по порядку.
- ttl=118 — значение TTL в ответном пакете. Начальное значение (обычно 64, 128 или 255) минус количество пройденных роутеров. Если начальное было 128, то 128 − 118 = 10 hop'ов до цели.
- time=12.5 ms — время прохождения пакета туда и обратно (round-trip time, RTT). Это задержка, и она критична для всего: от скорости загрузки сайтов до качества видеозвонков.
- 0.0% packet loss — сколько пакетов потеряно. Потеря пакетов — признак проблем с сетью.
- min/avg/max/stddev — минимальное, среднее, максимальное время и стандартное отклонение.
Как читать результаты ping
Успех (ответы приходят). Связь есть. Волноваться стоит, только если время очень большое (> 200 мс для того же континента) или есть потери пакетов.
Таймаут (Request timeout). Пакет ушёл, но ответ не пришёл. Возможные причины:
- Целевое устройство выключено.
- Сетевой кабель повреждён.
- Брандмауэр блокирует ICMP (многие серверы так делают — ping не проходит, хотя сайт открывается).
- Промежуточный роутер не может доставить пакет дальше.
Host unreachable. Роутер знает, что сеть недоступна, и явно сообщает об этом. Обычно означает проблему на последнем отрезке маршрута.
Высокое время ответа. Причины:
- Большое физическое расстояние (Россия → Австралия ≈ 250+ мс).
- Перегруженный канал.
- Помехи в Wi-Fi (для беспроводного соединения).
- Маршрут идёт окольным путём.
План диагностики через ping
Если что-то не работает, ping помогает локализовать проблему. Стандартная последовательность:
# 1. Проверить, жив ли вообще сетевой интерфейс
ping 127.0.0.1
# 2. Проверить связь с роутером (локальная сеть)
ping 192.168.1.1
# 3. Проверить связь с внешним миром по IP (DNS не участвует)
ping 8.8.8.8
# 4. Проверить связь по доменному имени (участвует DNS)
ping google.com
Что означают результаты:
| Работает | Не работает | Вывод |
|---|---|---|
127.0.0.1 | — | Сетевая карта жива |
192.168.1.1 | — | Локальная сеть в порядке |
8.8.8.8 | — | Интернет работает |
google.com | — | DNS работает |
| — | 127.0.0.1 | Проблема с сетевым драйвером или ОС |
192.168.1.1 | 8.8.8.8 | Проблема у провайдера |
8.8.8.8 | google.com | Проблема с DNS |
Что ещё может ping
Непрерывный ping. Добавь флаг -t (Windows) или просто запусти без ограничения (Mac/Linux — ping шлёт бесконечно по умолчанию). Удобно, чтобы мониторить стабильность соединения: оставь на пару минут и смотри на проценты потерь и разброс времени.
Размер пакета. По умолчанию ping шлёт 56 байт данных. Можно увеличить, чтобы проверить, нет ли проблем с фрагментацией:
ping -s 1400 google.com # Mac/Linux: отправить пакет размером 1400 байт
ping -l 1400 google.com # Windows
Ограничения ping
Ping — отличный первый шаг, но не панацея:
- Многие серверы блокируют ICMP. Если
ping google.comне отвечает, это не значит, что Google упал — скорее всего, его брандмауэр просто игнорирует ICMP-запросы. - Ping не скажет, что именно сломалось. Он только констатирует факт: связь есть или связи нет.
- Ping тестирует только IP-уровень. Если IP работает, а проблемы на уровне приложения (например, веб-сервер упал), ping этого не заметит.
Для более глубокой диагностики используют утилиты вроде traceroute (показывает весь маршрут) и nslookup/dig (проверка DNS). Мы познакомимся с ними в следующих модулях.
Проверь себя
pingпоказывает время 150 мс. Это хорошо или плохо?- Ты делаешь
ping google.com— таймаут, но сайт google.com открывается в браузере. В чём может быть дело? - Что проверять первым:
ping 8.8.8.8илиping google.com?
- Зависит от расстояния. До сервера в том же городе — плохо (должно быть 5–20 мс). До сервера на другом континенте — нормально (скорость света ограничивает минимальное время).
- Google блокирует ICMP-пакеты на своём брандмауэре. Ping не проходит, а TCP-соединения (на которых работает браузер) — проходят. Ping и работа сайта — разные вещи.
ping 8.8.8.8(по IP). Если сначала проверить google.com и он не ответит, ты не поймёшь, проблема с интернетом или с DNS. Проверка по IP исключает DNS из уравнения.
Что унести с урока
- Ping отправляет ICMP Echo Request и ждёт Echo Reply. Есть ответ = связь работает на IP-уровне.
- RTT (round-trip time) — время туда-обратно в миллисекундах. Потеря пакетов (packet loss) — процент неполученных ответов.
- Стандартная последовательность диагностики: localhost → роутер → внешний IP → доменное имя.
- Ping тестирует IP-уровень. Если веб-сервер не отвечает, ping может проходить (или наоборот).
Мы научились проверять, живо ли соединение. Теперь пора разобраться, что происходит «выше» IP-уровня. В следующем модуле мы погрузимся в стек TCP/IP — узнаем, как TCP обеспечивает надёжность, чем отличается от UDP и зачем нужны порты.