Для чего нужна и как работает команда ping?
Вы когда-нибудь испытывали такое серьезное интернет-отставание, что хотели выбросить свой компьютер через близлежащее окно? Прежде чем вы это сделаете, мы здесь, чтобы помочь вам разобраться в ситуации, чтобы вы могли ее идентифицировать и исправить.
Когда возникает такая ситуация, рекомендуется сначала провести пинг-тест.
В этой статье мы научим вас, что такое ping, как запустить тест ping и для чего используется ping. Вы узнаете такие вещи, как разница между TCP и UDP, какие порты используются для тестов ping и что такое уровень ping osi.
Если вы не знаете, что такое ping-тест, то в этом руководстве будут разъяснены основы универсального сетевого утилиты. Изучив основы пинга, вы больше не будете связываться с другими бессмысленными решениями и откладываете создание еще одной учетной записи в Instagram для преследователей в Instagram.
Что такое команда Ping?
Чтобы успешно ответить на вопрос «как работает пинг?», Нужно знать, что такое пинг. Короче говоря, команда ping — это сетевой инструмент, используемый для определения доступности определенного IP-адреса или хоста.
Как только это станет известно, вы можете использовать результаты, чтобы сделать дальнейшие выводы.
Поэтому пинг обычно является первой линией защиты при устранении неполадок с интернет-соединениями. Он не только проверяет подключение, но также измеряет время и поддерживает учет всех пакетов ICMP.
Очень важно верно? Вы держите пари, и хорошая новость заключается в том, что он распространяется на все операционные системы. Вот почему любой, кто является специалистом в области технологий, должен знать, как использовать эту базовую команду.
Как использовать команду Ping?
Неважно, работает ли ваша система под управлением Windows, MacOSX, Linux или FreeBSD, в вашем распоряжении есть команда ping. Тем не менее, этот учебник будет вращаться вокруг версии команды для Windows. Для других операционных систем рекомендуется обратиться к MAN PAGE вашей операционной системы (Страница руководства), чтобы узнать синтаксис команды ping.
Первое, что вы хотите сделать, это открыть команду вашей системы, перейдя в «Start Menu» и войдя в вашу папку «Accessories». Здесь вы найдете ярлык командной строки — щелкните по нему. Когда консоль станет видимой, вам нужно будет ввести параметры в следующем формате:
Все эти параметры соотносятся с полезными параметрами команды. Тем не менее, мы сосредоточимся только на основных параметрах команды ниже.
Опция -n число Определяет количество эхо-запросов для отправки. По умолчанию это 4 запроса. -l размер Позволяет вам настроить размер пакета ping. Размер по умолчанию составляет 32 байта.
Как я могу провести тест Ping?
В следующем примере я пингую домен популярной новостной сети CNN. Флаг -n указывает команде ping отправить 8 эхо-запросов ICMP. Если этот флаг не установлен, команда ping отправляет 4 по умолчанию. Флаг -l устанавливает размер в байтах команды echo. В приведенном выше примере я отправляю эхо-запрос размером 1000 байт (1 килобайт). У вас есть возможность от 32 до 65 527 байт.
Однако, если флаг -l не установлен, по умолчанию отправляется 32-байтовый эхо-запрос. Последний параметр команды — это фактический домен www.cnn.com. Теперь давайте проанализируем результаты.
В примере мы видим, что мы пропингуем IP 151.101.85.67 (IP-адрес CNN) с 1000 байтов. Время, необходимое для ответа пакета, отображается в миллисекундах.
Первый отправленный нами пакет занял примерно 106 миллисекунд. Второе заняло 105 миллисекунд. Третье заняло 116 миллисекунд и так далее.
Следующий элемент в списке результатов — это время жизни или TTL. TTL сообщает получателю, как долго хранить или использовать пакет или любые другие соответствующие данные, прежде чем его нужно будет отбросить или срок его действия истечет. Таким образом, в приведенном выше примере наш TTL составляет 53 секунды. Таким образом, любой пакет, отправленный из нашей сети, имеет около 53 секунд, прежде чем он истекает или исчезает в забвении.
Как я могу прочитать статистику Ping?
По результатам вашего пинга у вас есть статистика пинга. Эти цифры говорят сами за себя. Количество отправленных пакетов отображается вместе с полученным номером, а также потерянными номерами.
В примере потеря составляет 0 процентов. Это означает, что с cnn.com нет проблем с сетевым подключением. Поэтому должно быть нормально подключиться к сайту.
Какой порт использует Ping?
Помните, что тест ping использует ICMP, поэтому реальные порты не используются. ICMP в основном скрывает или сидит поверх IP-адреса. Поэтому это не протокол четвертого уровня.
Это означает, что вам не нужно беспокоиться о назначении портов для теста ping. Это делает тест простым, быстрым и эффективным. Другими словами — менее случайный.
Как может провалиться тест Ping?
Есть несколько причин, по которым тест ping не удался. Например, если вы пингуете определенный IP-адрес в своей локальной сети и вводите неправильный IP-адрес для хост-компьютера, попытка не удастся, потому что не к чему подключиться.
Однако проблема может заключаться в том, что сеть не настроена должным образом. Неправильный IP-адрес может быть результатом неправильной маски подсети.
Маски подсети определяют допустимый диапазон IP-адресов для сети. При проведении локального пинг-теста обе машины должны иметь IP-адреса, входящие в диапазон подсети.
Во-вторых, может быть программное обеспечение брандмауэра, блокирующее запросы ping. В этой ситуации вам придется отключить брандмауэр. Однако при отключении такого программного обеспечения обращайтесь к руководству сетевого или системного администратора.
Неправильное внедрение любой системы сетевой безопасности в значительной степени угрожает информационной безопасности и подвергает вашу компанию риску.
Наконец, сбой может произойти из-за аппаратного сбоя, такого как неисправный адаптер Ethernet, кабель, маршрутизатор, концентратор и т.д.
Как устранить неполадки с помощью команды Ping?
Итак, теперь, когда вы знаете, как правильно выполнить тест ping, вы можете предпринять необходимые действия для устранения неполадок в сети. Теперь вы сможете использовать свои недавно приобретенные навыки пинга, чтобы проверить ваше соединение с известным сайтом, таким как Google, Amazon или CNN. Оттуда вы можете сделать лучший вывод в зависимости от того, где проблема лежит.
Если вы не можете подключиться ни к одному из этих сайтов, возможно, это внутренняя проблема. Оттуда вы хотите пропинговать вашу локальную сеть или даже проверить кабели. Было бы стыдно узнать, что именно ваша кошка отключила кабель Ethernet. Может быть, это был несчастный случай? Или… может кошки восстают? Не имеет значения, хотя. Они никогда не победят.
Так или иначе, ваше первое желание должно быть пинг.
Как на самом деле работает Ping?
Ping – стандартная Internet-программа, которую большинство из нас использует ежедневно. Но вас интересовало, как она работает? Не знаю, как вы, а я начинаю беспокоиться, если не знаю, как на самом деле что-то работает. Назначение этой статьи – решить все затянувшиеся вопросы и поднять ваше понимание на новый уровень. Даже если вы не программист, не пугайтесь! Поверьте, я не собираюсь вам рассказывать, как написать собственную версию ping.
Думаю, вы знаете, по существу, как работает утилита TCP/IP ping. Она посылает ICMP (Internet Control Message Protocol) эхо-запрос на указанный интерфейс в сети и в ответ ожидает получения ICMP эхо-отклика. Таким образом, программа может проверить способность к подключению, измерить время отклика и вывести отчет на наличие проблем.
ICMP – это программный компонент межсетевого взаимодействия TCP/IP; по существу, это компаньон IP (Internet Protocol) на этом уровне. Фактически, ICMP полагается на IP-протокол для перемещения по сети. Если вы наблюдаете данный вид сетевого трафика, скажем, в сети Ethernet, то ваш анализатор протокола зафиксирует блок данных Ethernet, переносящий дейтаграмму IP с сообщением ICMP внутри.
Вникните в проблему: программа ping выполняется на уровне приложений. Так как же она заставляет ICMP проделывать такие фокусы? Может вы вспомните, если раньше изучали TCP/IP, что уровень хост-хост заключен между этими объектами? Обходится ли он? Если да, то как именно? Кто ответственен за форматирование этих сообщений (эхо-запроса и эхо-отклика)?
Когда на эхо–запрос возникают ответы ICMP, отличные от обычного эхо-отклика, как они попадают в программу ping? Последний вопрос может показаться очевидным, но это не так. ICMP-сообщения не содержат адресной информации, позволяющей стеку протокола TCP/IP разглядеть программу, которая получает сообщение. TCP и UDP для этой цели используют номера портов. Так как это работает?
Стек протокола TCP/IP образуется четырехуровневой моделью (см. Рис. 1). Самый нижний уровень, обычно называемый сетевым интерфейсом или уровнем сетевого доступа, аналогичен уровням 1 и 2 модели OSI, физическому и канальному. Он включает носитель данных, соединения, передачу сигналов, физическую адресацию и управление общим доступом к носителю данных. Для большинства из нас это означает Ethernet и кабельную систему.
Уровень, стоящий над уровнем сетевого доступа, уровень межсетевого взаимодействия, больше всего похож на уровень 3 модели OSI, сетевой уровень. Здесь присутствуют логическая адресация и маршрутизация: то, что способствует коммуникации через границы сетей. Вот здесь и используются IP-протокол и его механизмы, как и ICMP.
ICMP – необходимый компонент любой реализации TCP/IP. Для поставки информации более высокоуровневым протоколам (TCP или UDP), чтобы сделать их надежней, он не используется. Скорее, возможности диагностики сети и обратной связи для тех, кто ответственен за администрирование и работу, предостаявляет ICMP. Посмотрите RFC 792, если вас это действительно заинтересовало.
Над уровнем сетевого доступа находится уровень хост-хост, копирующий уровень 4 модели OSI, транспортный. Мне кажется, он также частично включает в себя часть функций уровня 5, сеансового. Вот где мы можем найти возможности для обмена данными из конца в конец, дополнительную проверку на ошибки и средства для отличения одной программы от другой (используя номера портов). TCP и UDP находятся на этом уровне.
На вершине стека находится прикладной уровень, и здесь мы можем найти реализацию протоколов высокого уровня (таких как SMTP, HTTP и FTP). Здесь также выполняются приложения. Так, что когда вы «пингуете», программа ping должна быть воспринята для функционирования на этом уровне.
Kак мы можем обойти уровень хост-хост, имея ICMP, работающий на межсетевом уровне взаимодействия и программу ping на прикладном? Ответ лежит в понимании того, что мы знаем о raw-сокетах. «Ну а что такое сокет?»,-спросят новички. Теоретически, сокет – конечная точка соединения, которая обычно состоит из IP-адреса и номера порта, идентифицирующих определенные хост и программу. Но программист немного по-другому смотрит на сокет. Для него «сокет» — системная функция, распределяющая ресурсы, благодаря которым программа может взаимодействовать с лежащим под ней стеком протокола TCP/IP. Адресная информация ассоциируется с ним только после того, как сделан вызов сокета (для тех, кто хочет знать, это роль «связывающей» функции»). Так что, заметьте, возможно назначить сокет и незаметно ассоциировать адресную информацию с ним.
Есть три часто встречающихся вида сокетов: stream, datagram, и raw. TCP использует тип stream, а UDP – тип datagram. Raw-сокеты используются любым приложением, если ему необходимо взаимодействовать непосредственно с IP, минуя TCP и UDP. Потребители включают в себя реализации протокола маршрутизации, такие как routed и gated (включающие RIP и OSPF). Здесь же находится и наш друг ping.
При использовании raw-сокетов нужно иметь в виду несколько вещей. Так как вы обманываете средства уровня хост-хост, то обходите механизм адресации программы, схему нумерации портов. Это означает, что программа, задействовавшая raw-сокеты должна просматривать все входящие пакеты, чтобы найти пакеты, предназначенные именно ей.
Что же происходит на самом деле?
Когда начинается выполнение программы ping, она открывает raw-сокет, чувствительный только к ICMP. Это означает две вещи:
• На выходе: посылка эхо запросов ICMP, нужна программа, чтобы форматировать сообщение ICMP. Система предоставит заголовок IP и заголовок Ethernet (обычно).
• На входе: программа должна проверить все входящие сообщения ICMP и выбрать нужные. Ожидаемый вход – ICMP эхо-отклики.
Давайте посмотрим на это с другой стороны.
На противоположной стороне эхо-запросы форматируются способом, показанным на рисунке 2. Тип сообщения всегда кодируется цифрой восемь (8). Поле кода всегда содержит ноль. Контрольная сумма используется для нахождения ошибок. В ее подсчет включаются заголовок сообщения ICMP и его данные. Программа ping выполняет эти подсчеты и заполняет пустоты. Затем идет поле идентификации, содержащее ID (PID) процесса, который идентифицирует выполнение программы ping для операционной системы. Для систем Windows, это поле содержит постоянное значение 256. Следующим идет поле последовательного номера, значение которого начинается с 0 и увеличивается на 1 при каждом отосланном эхо-запросе. После этих необходимых полей следуют необязательные тестовые данные. В реализации ping, которую я тестировал (Slackware Linux), это была временная отметка, используемая в расчете полного времени при получении эхо-отклика.
Что касается прибывающих ICMP-сообщений, то задача ping немного усложняется. Так как ping использует raw-сокет ICMP, то программе предоставляются копии всех входящих ICMP-сообщений, кроме особых случаев, когда входящие эхо-запросы формируются другими людьми, «пингующими» нас (последние контролируются системой). Это означает, что ping видит не только ожидаемые эхо-отклики, когда они приходят, но также и такие сообщения, как «Получатель недоступен» (Destination Unreachable), «Источник остановлен» (Source Quench), и «Время ожидания превышено» (Time Exceeded). (На рисунке 3 показаны сообщения ICMP всех типов.)
Задумайтесь над этим на минуту. Если у вас одновременно выполняются две копии программы ping, то каждая из них будет эхо-отклики другой и другие неприятные сообщения (nastygram)
Каждая копия программы должна идентифицировать сообщения, значимые для нее. Кто думает, что для этого используется поле PID (идентификации), тот абсолютно прав.
А как программа ping справляется с этим в Windows, если у нее нет PID? Вы меня поймали. Звучит как тема для будущей статьи. К этому вопросу мы еще вернемся.
Интересно, что сообщения, входящие в ping, остаются с нетронутым IP-заголовком. Таким образом, программа имеет доступ к таким важным параметрам, как «время жизни» (TTL) и «рассчитанное время возврата» (если такая опция включена).
На этой стадии, у вас должно быть практически полное понимание цикла процессов, связанных с ping.
Повторим основные моменты:
• При инициализации программы ping, она открывает raw-сокет ICMP и может напрямую обращаться к IP, минуя TCP и UDP.
• Ping форматирует ICMP-сообщение типа 8, эхо-запрос и посылает его (используя функцию «sendto») на желаемый адрес назначения. Система предоставляет IP-заголовок и конверт (envelope) канального уровня.
• При получении ICMP-сообщений, у ping есть возможность проверить каждый пакет и выбрать нужное
• Обычное поведение – брать ICMP-сообщения типа 0, эхо-отклики, у которых значение поля идентификатора совпадает с PID программы.
Ping использует временную метку в области данных эхо-отклика чтобы вычислить полное (туда-обратно) время. Он также сообщает о времени жизни TTL из IP-заголовка отклика.
• Когда что-то идет не так, ping может сообщать о ICMP-сообщениях других типов, появляющихся на входе. Такие сообщения включают в себя «Получатель недоступен» (Destination Unreachable) и «Время ожидания превышено» (Time Exceeded).