Первый взгляд: 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 они уже есть. На Windowscurlвстроен в современные версии, а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 — какой
time=у самого быстрого ответа? Сколько процентов пакетов потерялось? - В пункте 2 — задержка до
example.comбольше или меньше, чем до1.1.1.1? Как думаете, почему? - В пункте 3 — какое число стоит в первой строке после
HTTP/...? Что оно означает?
Если у вас вернулись эхо в ping и число 200 в curl — поздравляю, ваша связь с интернетом исправна, и вы только что провели свою первую сетевую диагностику.
Итог
ping отвечает на вопрос «жив ли компьютер и как быстро до него»; curl — на вопрос «отдаёт ли сервер страницу по просьбе». Число time= в ping — это задержка, число 200 в curl — сигнал успеха. Вместе они подтверждают всю картинку первых уроков на практике.
На этом вводный модуль завершён. Дальше курс переходит к деталям: что такое сеть на уровне устройств, как устроены пакеты и модели, и постепенно — до TCP/IP, DNS и TLS. Спешить не нужно: фундамент у вас уже есть.