Иногда бывает так: компьютер вроде подсоединён к сети, а интернета нет: сайты не грузятся, ютуб не работает, жизнь замерла. При этом значок соединения есть, но по факту ничего не работает. Рассказываем, как проверить, в чём дело, и что можно выяснить до звонка в техподдержку.
Что будем делать
В каждой операционной системе для компьютеров есть две команды, которые чаще всего используются для диагностики работы интернета. Наша задача — выяснить, может ли сама операционная система выходить в интернет или он ей тоже недоступен. Случается такое, что система может выходить в сеть, а программы (браузер, например) — нет. Это значит, что с интернетом всё в порядке, а причину надо искать в программах.
Что понадобится
Чтобы понять, есть ли интернет в принципе, используют две команды:
ping
tracert в Windows или traceroute в Linux и MacOS
Это консольные команды, поэтому для работы с ними понадобится командная строка или терминал. Чтобы начать с ним работать в Windows, нажмите сочетание клавиш Win+R, в появившемся окошке напишите cmd
и нажмите Enter. В MacOS делается по-другому: нажимаете ⌘+пробел, пишете terminal
и нажимаете Enter.
Ping
Командой ping мы проверяем, может ли операционная система связаться с выбранным сервером или сайтом в интернете.
Принцип действия:
- Компьютер посылает запрос на выбранный сервер и засекает время.
- Как только пришёл ответ от сервера — выводим время, за которое запрос дошёл до места и вернулся обратно.
- Если ответа нет — будет сообщение, что превышено время ожидания.
- Так будет происходить раз за разом до тех пор, пока мы не нажмём Ctrl+С.
Если мы всё время получаем сообщение, что превышено время, то, скорее всего, с интернетом что-то не так: запросы отправляются, но по каким-то причинам не возвращаются. Тут надо уже разбираться с провайдером.
Давайте разберём, что здесь происходит, на примере такой строчки:
64 bytes from 87.250.250.242: icmp_seq=4 ttl=247 time=15.995 ms
64 — это размер нашего запроса в байтах. Его можно сделать больше или меньше для разных случаев.
87.250.250.242 — адрес одного из серверов Яндекса, который отвечает за ya.ru.
icmp_seq=4 — сейчас перед нами будет результат отправки пятого ICMP-пакета (потому что нумерация начинается с нуля).
ttl=247 — время жизни пакета составляет 247 пересылок. Про время жизни поговорим чуть ниже.
time=15.995 ms — запрос до сервера и обратно шёл почти 16 миллисекунд. Этого вполне хватит для обычного использования интернета, но может быть критично много для игр.
В самом конце программа сообщает, что у нас 10 пакетов ушло, 10 пришло и 0% потерь, то есть соединение стабильное.
Что такое TTL, или время жизни пакета
Перед тем, как говорить о следующей команде, расскажем про TTL.
Когда данные разделяются на части для отправки через сеть, это называется пакетом. Основное, что делают сетевое оборудование и служебные сервисы, — получают пакеты и пересылают их дальше. Но бывает так, что по разным причинам пакет начинает ходить по кругу: сервер1 → роутер → сервер 2 → роутер → сервер 1 и так далее. Если таких пакетов станет много, они забьют всю сеть и новые данные отправить не получится.
Решение придумали такое: одним из параметров пакета сделали TTL, что расшифровывается как «Время жизни пакета» (time to live). Каждый раз, когда пакет пересылается от одного устройства к другому (такие пересылки называются «хопами»), это значение уменьшается на 1. Как только этот параметр у пакета станет равен нулю, маршрутизатор удаляет этот пакет.
Tracert или traceroute
В разных операционных системах эта команда пишется по-разному:
tracert
— в Windows;traceroute
— в Linux и MacOS.
Ещё они немного различаются форматами и параметрами отправляемых пакетов, но в целом делают одно и то же: выводят весь маршрут, который проходит пакет от вашего компьютера до выбранного сервера.
С помощью этой команды сисадмины выясняют, на каком этапе сеть перестаёт работать как нужно и кто виноват: оборудование клиента, общедомовый роутер или сервер провайдера.
Работает это так:
- Компьютер отправляет первый запрос на выбранный сервер и устанавливает ему TTL=1.
- Это значит, что пакет дойдёт только до следующего устройства, например домашнего роутера, и на этом его путь закончится.
- Компьютер показывает время прохода пакета до первого устройства.
- Затем компьютер отправляет второй запрос на выбранный сервер и устанавливает ему TTL=2. Теперь запрос может пройти два устройства — домашний роутер и, например, общедомовый.
- Компьютер показывает время прохождения пакета до второго устройства.
- Так, шаг за шагом, компьютер увеличивает TTL до тех пор, пока пакет не дойдёт до финального сервера.
В итоге мы получаем полную карту прохождения пакета, и если пакет где-то стопорится и дальше не идёт — скорее всего, проблема в этом узле или сразу после него. Так техподдержка выясняет, где поломка и что делать дальше.
Теперь практика. Например, команда traceroute thecode.media
покажет весь маршрут пакета до сайта «Кода»:
Время прохождения пакета в миллисекундах здесь уже не так важно, как IP-адреса, которые идут первыми в статистике. В нашем примере маршрут был такой:
- router.lan (192.168.88.1) — домашний роутер;
- 192.168.55.1 — районный роутер провайдера;
- * * * — какой-то сервер или маршрутизатор, который специально не отвечает на trace-запросы, поэтому адреса мы не видим;
- lag-2-435.bgw01.bryansk.ertelecom.ru (109.194.8.18) — сервер городского провайдера в Брянске;
- ertelecom.w-ix.ru (193.106.112.151) — сервер другого провайдера;
- selectel.w-ix.ru и 92.53.93.57 — серверы Селектела, на которых размещается наш сайт;
- 31.184.208.243 — адрес сервера, на котором работает «Код».
А вот как выглядит трассировка до того же сайта, но при подключении через мобильный интернет:
Шагов стало больше, и появилось больше узлов, которые не отвечают на trace-запросы, — это могут быть вышки сотовой связи и внутреннее магистральное оборудование провайдера. На восьмом запросе наш пакет дошёл до сервера 46.229.142.76 — это сетевой узел «Мегафона» в Нижнем Новгороде, через который запросы по скоростному магистральному каналу отправляются в интернет.
Что дальше
Впереди будет ещё несколько практических занятий, которые помогут лучше разобраться с тем, как работают привычные нам вещи. Подпишитесь, чтобы не пропустить остальное.