Learning Platform
Глоссарий Troubleshooting
Урок 02.03 · 16 мин
Начальный
BasicspingcurlTerminalHands-onBeginner

Первый взгляд: ping и curl своими руками

Два прошлых урока были про картинку в голове: как открывается сайт и как называются участники. Теперь — первая практика. Мы запустим две простые команды в терминале и своими глазами увидим то, о чём говорили: что связь до далёкого компьютера действительно есть и что он действительно отвечает на наши просьбы.

Не переживайте, если терминал кажется страшным. Здесь будут всего две команды, и мы разберём каждую строчку ответа. Ничего сломать этими командами нельзя — они только спрашивают, ничего не меняют.

Откройте терминал: на macOS — приложение «Терминал», на Linux — любой эмулятор терминала, на Windows — PowerShell или Terminal. Дальше — по шагам.


ping — «ты там живой?»

Первая команда — ping. Она делает ровно одно: отправляет на указанный адрес коротенькое сообщение «ты там?» и ждёт ответа «да, тут». И так несколько раз подряд, показывая, сколько времени занял каждый «туда-обратно».

Аналогия: вы крикнули в пещеру «Эй!» и слушаете эхо. Если эхо вернулось — пещера есть и звук дошёл. Если тишина — либо никого нет, либо крик не долетел. ping — это «эй!» для компьютера.

Попробуем пингануть публичный сервер Google по адресу 8.8.8.8 (это легко запоминающийся адрес их справочной службы):

ping -c 4 8.8.8.8

Флаг -c 4 означает «отправь ровно 4 сообщения и остановись» (на Windows вместо -c 4 пишут -n 4). Без этого флага на Linux/macOS ping шлёт сообщения бесконечно — остановить можно сочетанием Ctrl+C. Вывод будет примерно таким:

PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=116 time=12.3 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=116 time=11.8 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=116 time=12.1 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=116 time=11.9 ms

--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max = 11.8/12.0/12.3 ms

Читаем по-человечески:

  • Каждая строка 64 bytes from 8.8.8.8 ... time=12.3 ms — это одно вернувшееся эхо. Сервер ответил. time=12.3 ms — сколько миллисекунд заняла дорога туда и обратно. 12 мс — это очень быстро (тысячная доля секунды с небольшим).
  • icmp_seq=0,1,2,3 — порядковые номера сообщений. Видно, что вернулись все четыре по порядку.
  • Внизу итог: 4 packets transmitted, 4 packets received, 0.0% packet loss. Отправили 4, получили 4, потеряли 0. Связь отличная.

Если бы сервера не было или связь была плохой, вы бы увидели Request timeout (ответа не дождались) или packet loss больше нуля (часть эха пропала). Это и есть бытовая диагностика «работает связь или нет».

[!tip] Число time=... — это задержка, на английском latency. Чем оно меньше, тем «отзывчивее» соединение. Для соседнего сервера это единицы миллисекунд, для сервера на другом континенте — сотни. В играх и видеозвонках именно это число важнее «скорости интернета».


curl — «дай мне страницу»

ping проверяет только «жив ли компьютер». Но в первом уроке мы говорили о большем: клиент просит у сервера страницу, сервер отдаёт. Команда curl делает именно это — отправляет настоящую просьбу «дай страницу» и показывает ответ.

Попросим заголовки ответа от https://example.com — это специальный учебный сайт, который существует именно для таких проверок:

curl -I https://example.com

Флаг -I (большая буква i) означает «покажи мне только шапку ответа, без самого содержимого страницы». Шапка — это служебная информация, которую сервер прикладывает к ответу. Вывод:

HTTP/2 200
content-type: text/html; charset=UTF-8
date: Thu, 29 May 2026 10:15:42 GMT
content-length: 1256

Самое главное здесь — первая строка:

  • HTTP/2 200. Число 200 означает «всё хорошо, вот твоя страница». Это как «заказ принят и выполнен» в ресторане. Запомните 200 как сигнал успеха — он встречается постоянно.
  • content-type: text/html — сервер говорит, какого вида ответ. text/html значит «это веб-страница».
  • content-length: 1256 — размер ответа в байтах. Маленькая страница.

Теперь попросим саму страницу целиком, без -I:

curl https://example.com

Вы увидите текст-описание страницы — тот самый HTML, о котором мы говорили в первом уроке (помните: сервер присылает не картинку, а описание):

<!doctype html>
<html>
<head>
    <title>Example Domain</title>
</head>
<body>
    <h1>Example Domain</h1>
    <p>This domain is for use in illustrative examples...</p>
</body>
</html>

Это ровно то, что получает ваш браузер, когда вы открываете сайт. Только браузер не показывает вам этот текст, а «рисует» по нему красивую страницу. curl же показывает сырой ответ как есть — и это очень полезно, чтобы понять, что происходит «под капотом».

Сравните два числа в коде: вы попросили, сервер ответил 200 и прислал содержимое. Это весь цикл «клиент попросил — сервер отдал» из первого урока, но теперь вы запустили его руками.


Когда что-то не отвечает

Попробуем нарочно обратиться к адресу, которого нет:

curl -I https://этого-сайта-точно-нет-12345.com
curl: (6) Could not resolve host: этого-сайта-точно-нет-12345.com

Could not resolve host — это «не смог узнать адрес». Помните шаг 2 из первого урока: имя надо превратить в IP-адрес через справочную. Справочная не знает такого имени — и дальше дело не пошло. Это не страшная поломка, а понятный сбой на конкретном, уже знакомом вам шаге.

[!warning] Если ping или curl не находятся в системе («command not found»), их нужно доустановить. На большинстве Linux и на macOS они уже есть. На Windows curl встроен в современные версии, а ping тоже доступен сразу. Если команды нет — это вопрос установки, а не вашей ошибки.


Мостик: что дальше

Вы только что своими руками увидели две вещи: связь до сервера есть (ping вернул эхо) и сервер отдаёт страницы по просьбе (curl получил 200 и HTML). Это и есть фундамент, который мы рисовали словами в первых двух уроках — теперь он подтверждён практикой.

Дальше в курсе появятся настоящие детали. Как именно эхо и страница едут по проводу. Что такое TCP и почему он надёжный. Как работает та самая «справочная» (DNS). Что добавляет буква «s» в https (это TLS — шифрование). Каждая из этих тем — отдельный модуль.

Сейчас погружаться в эти детали рано — и это абсолютно нормально. Сначала нужна была картинка целиком и уверенность, что «оно работает и я могу это потрогать». Картинка есть, руки попробовали. Теперь к деталям — по одной за раз.


Попробуй сам

Откройте терминал и проделайте сами. Здесь действительно нужно выполнить команды — это первая практика курса.

# 1. Пингуем известный сервер. Сколько миллисекунд занимает дорога?
ping -c 4 1.1.1.1

# 2. Пингуем сервер где-то далеко (например, имя сайта).
#    Сравните time= с предыдущим -- к дальнему серверу дольше
ping -c 4 example.com

# 3. Получаем только шапку ответа. Ищем число статуса в первой строке
curl -I https://example.com

# 4. Получаем страницу целиком. Это сырой HTML -- то же, что видит браузер
curl https://example.com

Вопросы для самопроверки (ответы вы найдёте прямо в выводе команд):

  1. В пункте 1 — какой time= у самого быстрого ответа? Сколько процентов пакетов потерялось?
  2. В пункте 2 — задержка до example.com больше или меньше, чем до 1.1.1.1? Как думаете, почему?
  3. В пункте 3 — какое число стоит в первой строке после HTTP/...? Что оно означает?

Если у вас вернулись эхо в ping и число 200 в curl — поздравляю, ваша связь с интернетом исправна, и вы только что провели свою первую сетевую диагностику.


Итог

ping отвечает на вопрос «жив ли компьютер и как быстро до него»; curl — на вопрос «отдаёт ли сервер страницу по просьбе». Число time= в ping — это задержка, число 200 в curl — сигнал успеха. Вместе они подтверждают всю картинку первых уроков на практике.

На этом вводный модуль завершён. Дальше курс переходит к деталям: что такое сеть на уровне устройств, как устроены пакеты и модели, и постепенно — до TCP/IP, DNS и TLS. Спешить не нужно: фундамент у вас уже есть.

Проверка знанийKnowledge check
Вы запустили "ping -c 4 8.8.8.8" и получили 4 ответа с "time=12 ms" и "0.0% packet loss", а затем "curl -I https://example.com" вернул "HTTP/2 200". Что эти два результата вместе говорят вам о состоянии связи? Объясните своими словами, что значит каждое из чисел.
ОтветAnswer
Вместе эти два результата говорят: связь с интернетом полностью исправна на двух разных уровнях. Ping проверил самое базовое -- "жив ли далёкий компьютер и доходят ли до него сообщения". Четыре ответа из четырёх и "0.0% packet loss" означают, что все отправленные сообщения-эхо вернулись, ничего не потерялось -- канал стабильный. "time=12 ms" -- это задержка (latency), то есть сколько миллисекунд заняла дорога сообщения туда и обратно; 12 мс -- очень быстро, чуть больше одной сотой доли секунды, значит сервер близко по сетевым меркам и реагирует быстро. Но ping проверяет только "достижимость", он не просит никакого содержимого. Поэтому второй командой curl я сделал настоящую просьбу "дай мне страницу" -- это уже полный цикл клиент-сервер из первого урока. Ответ "HTTP/2 200" содержит код 200, который означает "всё хорошо, вот твоя страница" -- сервер не просто жив, он принял просьбу и успешно её выполнил. Если бы ping показал потери или таймауты -- была бы проблема со связью на нижнем уровне; если бы curl вернул не 200, а, например, ошибку -- сервер был бы достижим, но не смог отдать страницу. А раз и эхо вернулось, и пришёл код 200 -- значит работает и дорога до сервера, и сам сервер.

Проверьте понимание

Результат: 0 из 0
Концептуальный
Вопрос 1 из 6. Что проверяет команда ping?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 3