Утилита PING — Learn

Для обмена служебной и диагностической информацией в сети используется специальный протокол управляющих сообщений ICMP (Internet Control Message Protocol). Команда ping выполняет отправку сообщения типа Echo Request (эхо запрос) адресуемому узлу и получает от него ответ в удобном виде. В ответ на такой запрос, опрашиваемый узел должен отправить icmp-пакет с теми же данными, которые были приняты, и типом сообщения Echo Reply (эхо ответ). Если при обмене icmp-сообщениями возникает какая-либо проблема, то утилита ping выведет информацию для ее диагностики. Другими словами, “пинг” — это промежуток времени, за которое пакет данных отосланный с вашего компьютера доходит до сервера и возвращается обратно.

Время запроса и отклика измеряется в миллисекундах (ms). По понятным причинам, чем выше пинг, тем дольше передаются данные, а значит дольше загружаются сайты и хуже работают онлайн-игры.

Утилита присутствует во всех операционных системах с поддержкой сети и является простым и удобным средством опроса узла по имени или его IP-адресу.

В зависимости от операционной системы, утилита находится:
Linux  /usr/bin или/usr/sbin
Windows  c:\Windows\System32\

Применение

С помощью утилиты можно:

1. узнать IP-адрес по доменному имени. Перед первой отправкой пакета делается запрос к DNS-серверу, если указано имя узла.
2. определить, работает ли сервер. Например, можно узнать, завис веб-сервер или проблемы с хостом.
3. узнать, есть ли связь с сервером. Например, проблемы с настройкой DNS-серверов на машине можно узнать, задав в ping сначала доменное имя, а потом IP-адрес.
4. оценить качество канала, посмотрев, сколько ответов не пришло. Это часто используется игроками в сетевые игры, потому что качество связи для них очень важно. Хотя не всегда это является показателем качества связи. В некоторых сетях протокол ICMP может иметь низкий приоритет либо блокироваться полностью.

Следует особо отметить, что эхо ответ от пингуемого хоста может отличаться от пути эхо запроса.


Часто используемые параметры:

-t – Непрерывная отправка пакетов. Для завершения и вывода статистики используются комбинации клавиш  Ctrl + C

-n <число> – Число отправляемых эхо-запросов.

-l <размер> – Размер поля данных в байтах отправляемого запроса.

Примеры использования:

ping <свой IP> – пинг на собственный адрес. Должен завершаться без ошибок, если установлены все программные средства протокола IP и исправен сетевой адаптер.

ping google.com – эхо-запрос к узлу с именем google.com с параметрами по умолчанию – количество пакетов равно 4, длина массива данных = 32 байта.

ping -t yandex.ru – выполнять ping до нажатия комбинации CTRL+C При нажатии CTRL+Break (Pause) – выдается статистика и опрос узла продолжается.

ping -n 1000 -l 500 192.168.1.1 – выполнить ping 1000 раз с использованием сообщений, длиной 500 байт. Пинг пакетами стандартной длины в 32 байта может выполняться без ошибок, а на длинных — с ошибками, что характерно для беспроводных соединения при низком уровне сигнала в условиях интенсивных помех.

Команда PING можно использовать для диагностики отдельных узлов:

ping 127.0.0.1 – это пинг петлевого интерфейса. Должен выполняться без ошибок, если установлены и находятся в работоспособном состоянии сетевые программные компоненты.

ping <IP-адрес роутера> – должен выполняться, если исправна сетевая карта компьютера, исправен кабель или беспроводное соединение, используемые для подключения к роутеру и исправен сам роутер. Кроме того, настройки IP должны быть такими, чтобы адрес компьютера и роутера принадлежали одной подсети. Обычно это так, когда сетевые настройки выполняются автоматически средствами DHCP-сервера маршрутизатора.

ping yandex.ru – выполнить опрос узла с именем yandex.ru. Если опрос завершается с ошибкой, то причиной может быть не только отсутствие связи с маршрутизатором провайдера, но и невозможность определения адреса узла yandex. ru из-за проблем с DNS.

ping 8.8.8.8 – выполнить опрос узла с IP-адресом 8.8.8.8 . Если опрос по адресу выполняется без ошибок, а опрос по имени завершается сообщением о неизвестном узле, то проблема в разрешении имен. Причиной может быть неработоспособность DNS-сервера провайдера. В этом случае, можно попробовать сменить его в настройках сетевого соединения на публичные DNS сервера Google с адресами 8.8.4.4 и 8.8.8.8. Также, проблема может быть вызвана плохим качеством связи с провайдером, что сопровождается слишком большим временем отклика и пропаданием пакетов.

Отсутствие эхо-ответа не всегда является признаком неисправности, поскольку иногда по соображениям безопасности, некоторые узлы настраиваются на игнорирование эхо-запросов (блокировка ICMP), посылаемых PING. Примером может служить узел microsoft.com и некоторые маршрутизаторы в сетях, где требуется высокая защищённость и производительность.

Сохранение результатов

Возможно вам понадобится скопировать результат, что бы отправить его интернет провайдеру, или хостинг компании. Можно сделать скриншот, а можно и текст скопировать. Для этого нажмите правой кнопкой мыши в области окна, и выберите «Пометить».

Результат выполнения команды ping можно записать в текстовый файл:
ping yandex.ru > c:\2.txt

Какой пинг считается хорошим?

Следующие цифры справедливы для обыкновенного серфинга по сайтам:

До 50мс — Отличный пинг
От 50мс до 100мс — Хороший пинг
От 100мс до 300мс — Средний пинг
Более 300мс — Посредственный пинг

В заключении

Сеть 10.0.0.* удобная, можно писать просто ping 10.*

Есть множество других параметров для выполнения команды ping. В полной мере они раскрываются на операционной системе Linux, под Windows лучше использовать приведённые выше. Подробней про “экзотические” параметры можно почитать здесь.

Существующие онлайн сервисы проверки позволяют проверить доступность узла с другой стороны глобальной сети.

Картинка примера.

Встречаем сервис от Cloudflare на адресах 1.1.1.1 и 1.0.0.1, или «полку публичных DNS прибыло!» / Хабр

Компания Cloudflare представила публичные ДНС на адресах:


  • 1.1.1.1
  • 1.0.0.1
  • 2606:4700:4700::1111
  • 2606:4700:4700::1001

Утверждается, что используется политика «Privacy first», так что пользователи могут быть спокойны за содержание своих запросов.

Сервис интересен тем, что кроме обычного DNS предоставляет возможность использовать технологий DNS-over-TLS и DNS-over-HTTPS, что здорово помешает провайдерам по пути запросов подслушивать ваши запросы — и собирать статистику, следить, управлять рекламой. Cloudflare утверждает, что дата анонса (1 апреля 2018, или 04/01 в американской нотации) была выбрана не случайно: в какой еще день года представить «четыре единицы»?

Поскольку аудитория Хабра технически подкована, традиционный раздел «зачем нужен DNS?» я помещу под конец поста, а здесь изложу более практически полезные вещи:


Самое простое — в своем DNS-клиенте (или в качестве upstream в настройках используемого вами локального DNS-сервера) указываем приведенные выше адреса DNS-cерверов.

Имеет ли смысл заменить привычные значения гугловских DNS (8.8.8.8 и т.д.), либо чуть менее распространенных яндексовских публичных серверов DNS (77.88.8.8 и иже с ними) на сервера от Cloudflare — решат вам, но за новичка говорит график скорости ответов, согласно которому Cloudflare работает быстрее всех конкурентов (уточню: замеры сделаны стронним сервисом, и скорость до конкретного клиента, конечно, может отличаться).

Гораздо интереснее работа с новыми режимами, в которых запрос улетает на сервер по шифрованному соединению (собственно, ответ возвращается по нему же), упомянутыми DNS-over-TLS и DNS-over-HTTPS. К сожалению, «из коробки» они не поддерживаются (авторы верят, что это «пока»), но организовать в своем ПО (либо даже на своей железке) их работу несложно:


DNS over HTTPs (DoH)

Как и следует из названия, общение идет поверх HTTPS-канала, что предполагает


  1. наличие точки приземления (endpoint) — он находится по адресу https://cloudflare-dns. com/dns-query, и
  2. клиента, который умеет отправлять запросы, и получать ответы.

Запросы могут быть либо в формате DNS Wireformat, определенном в RFC1035 (отправляться HTTP-методами POST и GET), либо в формате JSON (используется HTTP-метод GET). Лично для меня идея делать DNS-запросы через HTTP-запросы показалась неожиданной, однако рациональное зерно в ней есть: такой запрос пройдет многие системы фильтрации трафика, парсить ответы достаточно просто, а формировать запросы — ещё проще. За безопасность ответчают привычные библиотеки и протоколы.

Примеры запросов, прямо из документации:

GET-запрос в формате DNS Wireformat

$ curl -v "https://cloudflare-dns.com/dns-query?ct=application/dns-udpwireformat&dns=q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB" | hexdump
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x7f968700a400)
GET /dns-query?ct=application/dns-udpwireformat&dns=q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB HTTP/2
Host: cloudflare-dns.
com User-Agent: curl/7.54.0 Accept: */* * Connection state changed (MAX_CONCURRENT_STREAMS updated)! HTTP/2 200 date: Fri, 23 Mar 2018 05:14:02 GMT content-type: application/dns-udpwireformat content-length: 49 cache-control: max-age=0 set-cookie: \__cfduid=dd1fb65f0185fadf50bbb6cd14ecbc5b01521782042; expires=Sat, 23-Mar-19 05:14:02 GMT; path=/; domain=.cloudflare.com; HttpOnly server: cloudflare-nginx cf-ray: 3ffe69838a418c4c-SFO-DOG { [49 bytes data] 100 49 100 49 0 0 493 0 --:--:-- --:--:-- --:--:-- 494 * Connection #0 to host cloudflare-dns.com left intact 0000000 ab cd 81 80 00 01 00 01 00 00 00 00 03 77 77 77 0000010 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 00 01 00 0000020 01 c0 0c 00 01 00 01 00 00 0a 8b 00 04 5d b8 d8 0000030 22 0000031

POST-запрос в формате DNS Wireformat

$ echo -n 'q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB' | base64 -D | curl -H 'Content-Type: application/dns-udpwireformat' --data-binary @- https://cloudflare-dns.
com/dns-query -o - | hexdump { [49 bytes data] 100 49 100 49 0 0 493 0 --:--:-- --:--:-- --:--:-- 494 * Connection #0 to host cloudflare-dns.com left intact 0000000 ab cd 81 80 00 01 00 01 00 00 00 00 03 77 77 77 0000010 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 00 01 00 0000020 01 c0 0c 00 01 00 01 00 00 0a 8b 00 04 5d b8 d8 0000030 22 0000031

То же, но с использованием JSON

$ curl 'https://cloudflare-dns.com/dns-query?ct=application/dns-json&name=example.com&type=AAAA'
{
  "Status": 0,
  "TC": false,
  "RD": true,
  "RA": true,
  "AD": true,
  "CD": false,
  "Question": [
    {
      "name": "example.com.",
      "type": 1
    }
  ],
  "Answer": [
    {
      "name": "example.com.",
      "type": 1,
      "TTL": 1069,
      "data": "93.184.216.34"
    }
  ]
}

Очевидно, что редкий (если вообще хоть один) домашний роутер умеет так работать с DNS, но это не означает, что поддержка не появится завтра — причем, что интересно, здесь мы вполне можем реализовать работу с DNS в своем приложении (как уже собирается сделать Mozilla, как раз на серверах Cloudflare).


DNS over TLS

По умолчанию, DNS запросы передаются без шифрованния. DNS over TLS — это способ отправлять их по защищенному соединению. Cloudflare поддерживает DNS over TLS на стандартном порту 853, как предписывается RFC7858. При этом используется сертификат, выписанный для хоста cloudflare-dns.com, поддерживаются TLS 1.2 и TLS 1.3.

Установление связи и работа по протоколу происходит примерно так:


  • До установления соединения с DNS клиент сохраняет закодированный в base64 SHA256-хеш TLS-сертификата cloudflare-dns.com’s (называемый SPKI)
  • DNS клиент устанавливает TCP соединение с cloudflare-dns.com:853
  • DNS клиент инициирует процедуру TLS handshake
  • В процессе TLS handshake, хост cloudflare-dns.com предъявляет свой TLS сертификат.
  • Как только TLS соединение установлено, DNS клиент может отправлять DNS запросы поверх защищенного канала, что предотвращает подслушивание и подделку запросов и ответов.
  • Все DNS запросы, отправляемые через TLS-соединение, должны соответствовать спецификации по отправке DNS поверх TCP.

Пример запроса через DNS over TLS:

$ kdig -d @1.1.1.1 +tls-ca +tls-host=cloudflare-dns.com  example.com
;; DEBUG: Querying for owner(example.com.), class(1), type(1), server(1.1.1.1), port(853), protocol(TCP)
;; DEBUG: TLS, imported 170 system certificates
;; DEBUG: TLS, received certificate hierarchy:
;; DEBUG:  #1, C=US,ST=CA,L=San Francisco,O=Cloudflare\, Inc.,CN=\*.cloudflare-dns.com
;; DEBUG:      SHA-256 PIN: yioEpqeR4WtDwE9YxNVnCEkTxIjx6EEIwFSQW+lJsbc=
;; DEBUG:  #2, C=US,O=DigiCert Inc,CN=DigiCert ECC Secure Server CA
;; DEBUG:      SHA-256 PIN: PZXN3lRAy+8tBKk2Ox6F7jIlnzr2Yzmwqc3JnyfXoCw=
;; DEBUG: TLS, skipping certificate PIN check
;; DEBUG: TLS, The certificate is trusted.
;; TLS session (TLS1.2)-(ECDHE-ECDSA-SECP256R1)-(AES-256-GCM)
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 58548
;; Flags: qr rd ra; QUERY: 1; ANSWER: 1; AUTHORITY: 0; ADDITIONAL: 1
;; EDNS PSEUDOSECTION:
;; Version: 0; flags: ; UDP size: 1536 B; ext-rcode: NOERROR
;; PADDING: 408 B
;; QUESTION SECTION:
;; example.
com. IN A ;; ANSWER SECTION: example.com. 2347 IN A 93.184.216.34 ;; Received 468 B ;; Time 2018-03-31 15:20:57 PDT ;; From 1.1.1.1@853(TCP) in 12.6 ms

Этот вариант, похоже, лучше подойдет для локальных DNS-серверов, обслуживающих нужды локальной сети либо одного пользователя. Правда, с поддержкой стандарта не очень хорошо, но — будем надеяться!


Два слова пояснений, о чём разговор

Аббревиатура DNS расшифровывается как Domain Name Service (так что говорить «сервис DNS» — несколько избыточно, в аббревиатуре уже есть слово «сервис»), и используется для решения простой задачи — понять, какой IP-адрес у конкретного имени хоста. Каждый раз, когда человек щёлкает по ссылке, либо вводит в адресной строке браузера адрес (скажем, что-то вроде «https://habrahabr.ru/post/346430/»), компьютер человека пытается понять, к какому серверу следует направить запрос на получение содержимого страницы. В случае habrahabr.ru ответ от DNS будет будет содержать указание на IP-адрес веб-сервера: 178. 248.237.68, и далее браузер уже попробует связаться с сервером с указанным IP-адресом.

В свою очередь, сервер DNS, получив запрос «какой IP-адрес у хоста с именем habrahabr.ru?», определяет, знает ли он что-либо об указанном хосте. Если нет, он делает запрос к другим серверам DNS в мире, и, шаг за шагом, пробует выяснить ответ на заданный вопрос. В итоге, по нахождению итогового ответа, найденные данные отправляются всё ещё ждучему их клиенту, плюс сохраняются в кеше самого DNS-сервера, что позволит в следующий раз ответить на подобный вопрос гораздо быстрее.

Обычная проблема состоит в том, что, во-первых, данные DNS-запросов передаются в открытом виде (что дает всем, кто имеет доступ к потоку трафика, вычленить DNS-запросы и получаемые ответы, а затем проанализировать их для своих целей; это дает возможность таргетирования рекламы с точностью для клиента DNS, а это совсем немало!). Во-вторых, некоторые интернет-провайдеры (не будем показывать пальцем, но не самые маленькие) имеют тенденцию показа рекламы вместо той или иной запрошенной страницы (что реализуется весьма просто: вместо указанного IP-адреса для запроса по имени хоста habranabr. ru человеку случайным образом возвращается адрес веб-сервера провайдера, где отдается страница, содержащая рекламу). В-третьих, существуют провайдеры интернет-доступа, реализующие механизм выполнения требований о блокировке отдельных сайтов, через подмену правильных DNS-ответов про IP-адресов блокируемых веб-ресурсов на IP-адрес своего сервера, содержащего страницы-заглушки (в результате доступ к таким сайтам заметно усложняется), либо на адрес своего прокси-сервера, осуществляющего фильтрацию.

Здесь, вероятно, нужно поместить картинку с сайта http://1.1.1.1/, служащего для описания подключения к сервису. Авторы, как видно, совершенно уверены в качестве работы своего DNS (впрочем, от Cloudflare трудно ждать другого):

Можно вполне понять компанию Cloudflare, создателя сервиса: они зарабатывают свой хлеб, поддерживая и развивая одну из самых популярных CDN-сетей в мире (среди функций которой — не только раздача контента, но и хостинг DNS-зон), и, в силу желания тех, кто не очень разбирается, учить тех, кого они не знают, тому, куда ходить в глобальной сети, достаточно часто страдает от блокировок адресов своих серверов со стороны не будем говорить кого — так что наличие DNS, не подверженного влиянию «окриков, свистков и писулек», для компании означает меньший вред их бизнесу. А технические плюсы (мелочь, а приятно: в частности, для клиентов бесплатного DNS Cloudflare обновление DNS-записей ресуров, размещенных на DNS-серверах компании, будет мгновенным) делают пользование описываемого в посте сервиса еще более интересным.

Команда Ping — Полное руководство — LazyAdmin

Команда ping — одна из наиболее часто используемых ИТ-специалистами команд для проверки сетевого подключения. С помощью ping cmd мы можем отправить небольшой пакет данных на компьютер, сервер или другое сетевое устройство для проверки подключения.

Эта команда ping не только сообщает нам, можем ли мы связаться с устройством по сети, но и сколько времени это заняло, и были ли потеряны пакеты или нет. Эта информация говорит нам кое-что о качестве сетевого соединения.

ping cmd

Команда ping cmd проста в использовании, в этой статье я дам вам несколько советов, как извлечь из нее больше пользы.

Содержание

  1. Как использовать команду Ping
  • Запуск проверки связи в Windows
  • Параметры команды проверки связи
    • Ping -t – непрерывная проверка связи CMD
    • Ping -l — увеличить размер пакета
    • Ping — n — Количество пингов
    • Ping -a — Разрешение имени хоста
  • Устранение проблем с сетью с помощью cmd ping
    • Ping Google cmd
  • Чтение результатов Ping
  • Задержка Ping
  • Поиск сетевых проблем с помощью Ping Cmd
  • Cmd ping Заключение
  • Как использовать P ing Command

    С помощью команды ping мы можем быстро проверить если компьютер имеет доступ к Интернету. В следующих шагах мы собираемся отправить тестовую команду ping на серверы Google.

    Вы можете запустить команду ping с любого терминала, например из командной строки или PowerShell.

    Запуск проверки связи в Windows

    1. Откройте меню «Пуск» или нажмите Клавиша Windows + R
    2. Введите cmd и нажмите Enter
      9001 3 В командной строке введите: ping 8.8.8.8 и нажмите введите
    1. Изучите результат команды ping:
    Ping cmd result

    В результатах мы видим ответы от DNS-сервера (8.8.8.8) Google. Команда ping отправила четыре пакета по 32 байта (что очень мало, и для отправки пакета и получения подтверждения потребовалось 10 мс).0005

    TTL указывает время жизни пакета. Если ответ от Google занимает больше 118 мс, пакет отбрасывается.

    На последних строчках мы увидим статику команды, всего отправлено 4 пакета, все четыре получены и ни один не потерян. В среднем на получение ответа уходило 11 мс.

    Параметры команды ping

    Базовая команда ping подойдет для небольших и простых тестов, но с некоторыми параметрами вы можете сделать команду ping более полезной для устранения потенциальных проблем с сетью.

    Ping -t — Continuous Ping CMD

    Команда ping -t — это Continuous Ping CMD , которую я использую довольно часто. Допустим, вы хотите перезагрузить маршрутизатор, теперь вы можете несколько раз нажать F5, чтобы проверить, снова ли маршрутизатор подключен к сети.

    С помощью команды ping -t вы можете запустить непрерывную проверку , чтобы вы могли видеть, когда маршрутизатор находится в автономном режиме и когда он снова подключается к сети.

     ❯ пинг -t 192. 168.1.1
    Пинг 192.168.1.1 с 32 байтами данных:
    Ответ от 192.168.1.1: байты=32 время=1 мс TTL=64
    Ответ от 192.168.1.1: байт=32 время=1мс TTL=64
    Ответ от 192.168.1.1: байт=32 время=5мс TTL=64
    Ответ от 192.168.1.82: Узел назначения недоступен. # Маршрутизатор не в сети
    Ответ от 192.168.1.82: Узел назначения недоступен. # Маршрутизатор не в сети
    Ответ от 192.168.1.1: bytes=32 time=6ms TTL=64 # Маршрутизатор снова в сети
    Ответ от 192.168.1.1: байт=32 время=1мс TTL=64
    Ответ от 192.168.1.1: байт=32 время=5мс TTL=64
    Статистика пинга для 192.168.1.1:
        Пакеты: отправлено = 8, получено = 6, потеряно = 2 (25% потерь),
    Приблизительное время прохождения туда и обратно в миллисекундах:
        Минимум = 1 мс, Максимум = 8 мс, Среднее значение = 4 мс 

    Как видно из приведенных выше результатов, хост (в данном случае маршрутизатор) на короткое время был недоступен, а затем снова подключился к сети.

    Ping -l — увеличить размер пакета

    Если вы устраняете проблемы с сетью, иногда рекомендуется увеличить размер пакета , отправляемого во время проверки связи. Некоторые проблемы с сетью возникают только при отправке дополнительных данных. С помощью команды ping -l (L) вы можете изменить размер пакетов.

     C:\>ping -l 1024 192.168.1.1
    Пинг 192.168.1.1 с 1024 байтами данных:
    Ответ от 192.168.1.1: байт=1024 время=1мс TTL=64
    Ответ от 192.168.1.1: байт=1024 время=1мс TTL=64
    Ответ от 192.168.1.1: байт=1024 время=3мс TTL=64
    Ответ от 192.168.1.1: bytes=1024 time=1ms TTL=64 

    Здесь мы отправляем пакеты размером 1024 байта на маршрутизатор с IP-адресом 192.168.1.1.

    Ping -n – Количество пингов

    С помощью команды ping -n вы можете указать количество пингов , которые вы хотите запустить. Таким образом, вместо 4 по умолчанию или непрерывного пинга с -t вы можете, например, пинговать хост 10 раз. Не то, что я действительно часто использую, но это может пригодиться, если у вас есть проблемы с производительностью, которые вы хотите проверить.

     ping -n 10 192.168.1.1 

    Ping -a — разрешить имя хоста

    Мы также можем использовать команду ping для разрешения имени устройства, использующего IP-адрес. Эта функция удобна, если вы хотите узнать, какое устройство использует определенный IP-адрес.

    Допустим, мы хотим знать, какое устройство использует IP-адрес 192.168.1.25. Для этого мы можем использовать команду ping -a :

     ping -a 192.168.1.25
    # Результат
    Пингуем tado. localdomain [192.168.1.25] с 32 байтами данных:
    Ответ от 192.168.1.25: байты = 32 время = 2 мс TTL = 64
    Ответ от 192.168.1.25: байт=32 время=4мс TTL=64
    Ответ от 192.168.1.25: bytes=32 time=1ms TTL=64 

    Как видно из результатов, IP-адрес 192.168.1.25 принадлежит Tado.

    Устранение проблем с сетью с помощью команды ping

    Команда ping test в основном используется для устранения неполадок, связанных с сетью. Прежде чем мы сможем устранять неполадки, нам сначала нужно хорошо понять схему нашей сети.

    В приведенном выше примере допустим, что мы работаем на ноутбуке и хотим проверить, есть ли у нас хорошее беспроводное сетевое соединение.

    Первое, что мы делаем, это пингуем маршрутизатор по адресу 192.168.10.254. Вы можете узнать IP-адрес вашего маршрутизатора, набрав ipconfig в командной строке или окне PowerShell:

    . Проверьте, можете ли вы подключиться к маршрутизатору, набрав:

     # замените IP-адрес на адрес вашего маршрутизатора. 
    ping 192.168.10.254 

    Эта команда отправит 4 пакета по 32 байта с вашего компьютера на маршрутизатор. Во время проверки связи вы увидите результаты каждого отправленного пакета и сводку:

     Пинг 192.168.10.254 с 32 байтами данных: Ответ от 192.168.10.254: байт=32 время=1 мс TTL=64 Ответ от 192.168.10.254: байт=32 время=1 мс TTL=64 Ответ от 192.168.10. 254: байт= 32 время=1мс TTL=64 Ответ от 192.168.10.254: байт=32 время=1мс TTL=64 Статистика пинга для 192.168.10.254: Пакеты: отправлено = 4, получено = 4, потеряно = 0 (0% потерь), приблизительное время прохождения туда и обратно в миллисекундах: минимум = 1 мс, максимум = 1 мс, среднее значение = 1 мс 

    Как вы можете видеть на результаты имеем успешное подключение к роутеру. Все посылки пришли.

    Следующим шагом является проверка связи модема на 192. 168.0.1 . Если мы также можем связаться с модемом, то последний шаг — пропинговать что-то в Интернете.

    Ping Google cmd

    Самый простой способ проверить, можете ли вы подключиться к Интернету, — это пропинговать Google. Мы можем пропинговать IP-адрес одного из DNS-серверов от Google по адресу 8.8.8.8 .

     # Пинг Google cmd
    пинг 8.8.8.8
    # Результат
    Пинг 8.8.8.8 с 32 байтами данных:
    Ответ от 8.8.8.8: байт=32 время=10 мс TTL=118
    Ответ от 8.8.8.8: байт=32 время=15мс TTL=118
    Ответ от 8.8.8.8: байт=32 время=10 мс TTL=118
    Ответ от 8.8.8.8: байт=32 время=10 мс TTL=118
    Статистика пинга для 8.8.8.8:
        Пакеты: отправлено = 4, получено = 4, потеряно = 0 (0% потерь),
    Приблизительное время прохождения туда и обратно в миллисекундах:
        Минимум = 10 мс, Максимум = 15 мс, Среднее = 11 мс 

    Вы также можете протестировать все сетевые устройства с помощью одной команды pathping. Это проверит каждый переход между вашим компьютером и сетевым устройством, к которому вы пытаетесь подключиться.

    Чтение результатов Ping

    Итак, если мы посмотрим на результат выше, мы увидим несколько разных значений, но что они все означают? По умолчанию ping отправит 4 пакета по 32 байта на запрошенный IP-адрес. Для каждого пакета мы видим результат, в данном случае 192.168.10.254 ответил через 1 мс.

     Ответ от 192.168.10.254: байт=32 время=1 мс TTL=64 
    • Байт указывает размер отправленного пакета. Мы можем изменить это с помощью ключа -l.
    • Время — это время, которое потребовалось для возврата ответа (задержка), в данном случае 1 мс.
    • TTL — это продолжительность жизни пакета (время жизни). Это не в мс, а сколько переходов может пройти сетевой пакет, прежде чем он будет отброшен. Каждый переход (сетевое устройство), через который проходит пакет, снижает значение TTL до тех пор, пока оно не достигнет 0. Это делается для защиты вашей сети от бесконечного цикла сетевых пакетов, которые не могут найти свое место назначения.
     Пакетов: Отправлено = 4, Получено = 4, Потеряно = 0 (0% потерь), 

    В конце результата мы видим, сколько всего пакетов было отправлено и сколько из них было потеряно. Конечно, вам нужна потеря 0%, если вы начнете терять пакет, вам следует сузить его, чтобы найти, в какой части сети произошла потеря.

    Это был простой тест внутренней сети. Время отклика 1 мс для вашей домашней сети — это то, что вам нужно. Любое значение больше указывает на то, что что-то не оптимально.

    Задержка пинга

    Вы можете использовать ping, чтобы проверить, можете ли вы связаться с хостом, но в большинстве случаев при устранении неполадок в сети вас больше интересует задержка пинга. Чем меньше задержка, тем быстрее соединение между вами и хостом. Время пинга в 100 мс действительно велико, чаще встречается от 10 до 20 мс.

    Величина вашей задержки зависит от множества факторов. Вы подключены к Wi-Fi или кабелю? Какое у вас подключение к интернету? Где вы находитесь по сравнению с принимающей стороной географически?

    Есть несколько общих правил, касающихся задержки:

    • Ваша задержка должна быть постоянной. Если у вас большие колебания задержки ping, то сеть, рабочая станция или хост не могут обрабатывать трафик (или вы находитесь в сети 4G…)
    • Внутренняя сеть должна быть на скорости 1 мс, максимум 3 мс .
    • Хорошая задержка для общедоступного сервера обычно составляет от 7 до 20 мс.
     C:\>ping lazyadmin. nl
    Пингование lazyadmin.nl [104.24.99.228] с 32 байтами данных:
    Ответ от 104.24.99.228: байт=32 время=10 мс TTL=57
    Ответ от 104.24.99.228: байт=32 время=11 мс TTL=57
    Ответ от 104.24.99.228: байт=32 время=11 мс TTL=57
    Ответ от 104.24.99.228: байт=32 время=10 мс TTL=57
    Статистика пинга для 104.24.99.228:
        Пакеты: отправлено = 4, получено = 4, потеряно = 0 (0% потерь),
    Приблизительное время прохождения туда и обратно в миллисекундах:
        Минимум = 10 мс, Максимум = 11 мс, Среднее = 10 мс 

    Возьмем, к примеру, этот сайт, размещенный в США. Если я пропингую его из своего текущего местоположения в Нидерландах, у меня будет пинг 10 мс. Что абсолютно идеально.

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

    Обнаружение проблем с сетью с помощью команды Ping

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

    Вы хотите знать, в чем проблема, теперь вы можете пропинговать каждый переход (сетевое устройство) между вами и сервером, но есть более простой способ. С помощью pathping вы можете пропинговать каждый переход между вами и сервером, показывая, где именно потеряно соединение.

    Узнайте больше о путях и о том, как их использовать, в этой статье.

    Cmd ping Заключение

    Ping — очень простая в использовании команда, доступная почти на каждом устройстве. Даже некоторые маршрутизаторы имеют встроенные инструменты проверки связи, которые можно использовать для устранения неполадок в сети. Следите за задержкой, это одно из самых важных значений в результатах ping cmd.

    Если у вас есть какие-либо вопросы, просто оставьте комментарий ниже!

    Пинг-серверы в Python .

    Я получил

     $ id
    uid=1000(райлу) gid=1000(райлу) [...]
    $ sudo sysctl net.ipv4.ping_group_range='1000 1000'
     
     импортный разъем
    импортировать структуру
    время импорта
    деф основной():
     пинг('192.168.1.10')
    определение пинга (назначение):
     sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.getprotobyname('icmp'))
     sock.settimeout(10.0)
     start_time = time.time_ns() # только python 3.7+
     полезная нагрузка = struct.pack('L', start_time)
     sock.sendto (кодировать (полезная нагрузка), (пункт назначения, 0))
     в то время как (time.time_ns() - start_time) // 1_000_000_000 < 10:
     пытаться:
     данные, источник = sock.recvfrom(256)
     кроме socket.timeout:
     распечатать('время истекло')
     возвращаться
     тип_сообщения, код_сообщения, проверка, идентификатор, номер_последовательности = struct.unpack('bbHHh', data[:8])
     если source == (destination, 0) и message_type == ICMP.ECHO_REPLY и data[8:] == payload:
     print((time. time_ns() - start_time) // 1_000_000, 'мс')
     перерыв
     еще:
     print('получил неожиданный пакет от %s:' % source[0], message_type, data[8:])
     еще:
     распечатать('время истекло')
    def encode (полезная нагрузка: байты):
     # вычислить контрольную сумму с проверкой, установленной на 0
     контрольная сумма = calc_checksum(icmp_header(ICMP.ECHO_REQUEST, 0, 0, 1, 1) + полезная нагрузка)
     # снова создать пакет с установленной контрольной суммой
     вернуть icmp_header(ICMP.ECHO_REQUEST, 0, контрольная сумма, 1, 1) + полезная нагрузка
    def icmp_header (тип_сообщения, код_сообщения, проверка, идентификатор, номер_последовательности) -> байты:
     return struct.pack('bbHHh', тип_сообщения, код_сообщения, проверка, идентификатор, порядковый_номер)
    def calc_checksum (данные: байты) -> int:
     '''RFC 1071'''
     # код украден с https://github.com/alessandromaggio/pythonping/blob/a59ce65a/pythonping/icmp.py#L8
     '''
     Лицензия Массачусетского технологического института
     Copyright (c) 2018 Алессандро Маджо
     Настоящим предоставляется бесплатное разрешение любому лицу, получившему копию
     данного программного обеспечения и связанных с ним файлов документации ("Программное обеспечение"), для
     в Программном обеспечении без ограничений, включая, помимо прочего, права
     использовать, копировать, изменять, объединять, публиковать, распространять, сублицензировать и/или продавать
     копий Программного обеспечения, а также разрешить лицам, которым Программное обеспечение
     предоставляется для этого при соблюдении следующих условий:
     Вышеприведенное уведомление об авторских правах и это уведомление о разрешении должны быть включены во все
     копии или существенные части Программного обеспечения.