Пінг (англ. Packet Inter-Network Groper, PING)[1] — службова комп'ютерна програма, призначена для перевірки з'єднань в мережах на основі TCP/IP.

Вона відправляє запити (англ. Echo-Request) протоколу ICMP зазначеному вузлу мережі й фіксує відповіді (англ. Echo-Reply). Час між відправленням запиту й одержанням відповіді (RTT, від англ. Round Trip Time) дозволяє визначати двосторонні затримки у маршруті й частоту втрати пакетів, тобто побічно визначати завантаженість каналів передачі даних і проміжних пристроїв.

Повна відсутність ICMP-відповідей може також означати, що віддалений вузол (або якийсь із проміжних маршрутизаторів) блокує ICMP Echo-Reply або ігнорує ICMP Echo-Request.

Програма ping є одним з основних діагностичних засобів у мережах TCP/IP і входить у постачання всіх сучасних мережевих операційних систем. Функціональність ping також реалізована в деяких вбудованих операційних системах маршрутизаторів, доступ до результатів виконання ping для таких пристроїв за протоколом SNMP визначається стандартами (англ. Definitions of Managed Objects for Remote Ping, Traceroute, and Lookup Operations)[2].

Історія ред.

Програма була написана Майком Мууссом[en], вченим Лабораторії дослідження балістики[en] в грудні 1983 року, як утиліта діагностики проблем у мережах[3]. В одному з інтерв'ю Майк Муусс жартома зазначив, що якби він тільки знав, що програма буде найбільшим досягненням в його житті, він би попрацював над нею ще декілька днів і додав би декілька опцій.

Корисність утиліти ping в наданні допомоги діагностики проблем підключення до Інтернету була порушена, починаючи з 2003 року, коли інтернет-провайдери почали фільтрацію Echo Request. Це було обумовлено діяльністю зловмисників, що таким чином навантажували мережу, створюючи проблеми для маршрутизаторів. Однак утиліта використовується і надалі, оскільки може надати інформацію про існування віддаленої машини.

Етимологія ред.

Спочатку словом «ping» називали направлений акустичний сигнал сонарів ASDIC (англ. Allied Submarine Detection Investigation Committee) проти підводних човнів часів Другої Світової війни.

Тому назва програми походить від звуку імпульсу, що реєструє сонар при його відбитті від об'єкта, оскільки методологія утиліти схожа на ехолокацію.

Сам автор зазначав:

 

З моєї точки зору слово PING не є скороченням від Packet InterNet Grouper, а було взяте по аналогії з принципом гідролокатора. Тим не менш, я чув, що Дейв Міллс пропонував таке розшифрування, тому, можливо, ми обидва маємо рацію. І я подумав, що уряд має слабкість до скорочень! :-)[3]

Оригінальний текст (англ.)
From my point of view PING is not an acronym standing for Packet InterNet Grouper, it's a sonar analogy. However, I've heard second-hand that Dave Mills offered this expansion of the name, so perhaps we're both right. Sheesh, and I thought the government was bad about expanding acronyms! :-)
 

Практичне застосування ред.

  • можна дізнатися IP-адресу по доменному імені;
  • можна перевірити, чи є зв'язок з віддаленим вузлом;
  • можна визначити, чи є на поточному комп'ютері проблеми з налаштуванням DNS, задавши ping спочатку доменне ім'я, а потім IP-адресу;
  • можна перевірити якість каналу, подивившись, скільки пакетів не дійшло або час відклику. Ця можливість часто використовується в мережевих багатокористувацьких іграх, оскільки якість зв'язку дуже важлива для них. Ігровий сервер вимірює час, за який необхідний для гри пакет досягне клієнта і відповідь буде отримана. Цей час прийняття-передання, як правило, називають ping гравця. Проте це не завжди можна вважати показником, оскільки в деяких мережах протокол ICMP може блокуватися.

Структура ICMP пакету ред.

IP Datagram
  Bit 0 — 7 Bit 8 — 15 Bit 16 — 23 Bit 24 — 31
IP Header
(20 bytes)
Version/IHL Type of service Length
Identification flags and offset
Time To Live (TTL) Protocol Checksum
Source IP address
Destination IP address
ICMP Header
(8 bytes)
Type of message Code Checksum
Header Data
ICMP Payload
(optional)
Payload Data

Отже структура ICMP пакету наступна:

  • IP Header (фіолетовим кольором):
    • Protocol встановлюється значення — 1 (ICMP);
    • Type of Service — 0.
  • ICMP Header (рожевим кольором):
    • Type of message (8 біт) — тип повідомлення ICMP;
    • Code (8 біт);
    • Checksum (16 біт) — контрольна сума, обраховується з ICMP пакету, заголовок не враховується;
    • Header Data (32 біти) — містить Identifier та Sequence number (по 16 біт), що необхідні для правильного визначення відправника.
  • ICMP Payload
    • Payload — необхідно для збереження і передачі відповідей різного типу. Наприклад, TimeStamp.

Параметри ред.

Windows ред.

Параметр Значення
-t Відправка пакетів на вказаний вузол до команди переривання
-a Встановлення адрес по іменах вузлів
-n Число запитів, що відсилаються
-l Розмір буферу відсилання
-f Встановлення прапорця, що забороняє фрагментацію пакета
-i Встановлення строку життя пакету <"Time To Live">
-v Встановлення типу служби <"Type Of Service">
-r Запис маршруту для вказаного числа переходів
-s Штамп часу для вказаного числа переходів
-j Вільний вибір маршруту по списку вузлів
-k Жорсткий вибір маршруту по списку вузлів
-w Таймаут кожної відповіді в мілісекундах
−4 Примусове використання протоколу IPv4
−6 Примусове використання протоколу IPv6

Приклад ред.

Windows ред.

C:\>ping wikipedia.org

Pinging wikipedia.org [91.198.174.192] with 32 bytes of data:
Reply from 91.198.174.192: bytes=32 time=55ms TTL=52
Reply from 91.198.174.192: bytes=32 time=55ms TTL=52
Reply from 91.198.174.192: bytes=32 time=55ms TTL=52
Reply from 91.198.174.192: bytes=32 time=55ms TTL=52

Ping statistics for 91.198.174.192:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 55ms, Maximum = 55ms, Average = 55ms

Linux ред.

# ping -c 5 www.example.com
PING www.example.com (192.0.43.10) 56(84) bytes of data.
64 bytes from 43-10.any.icann.org (192.0.43.10): icmp_seq=1 ttl=250 time=80.5 ms
64 bytes from 43-10.any.icann.org (192.0.43.10): icmp_seq=2 ttl=250 time=80.4 ms
64 bytes from 43-10.any.icann.org (192.0.43.10): icmp_seq=3 ttl=250 time=80.3 ms
64 bytes from 43-10.any.icann.org (192.0.43.10): icmp_seq=4 ttl=250 time=80.3 ms
64 bytes from 43-10.any.icann.org (192.0.43.10): icmp_seq=5 ttl=250 time=80.4 ms

--- www.example.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 80.393/80.444/80.521/0.187 ms

Див. також ред.

Примітки ред.

  1. Packet Internet Groper | Packet Inter-Network Groper | PING | Glossary. Архів оригіналу за 4 червня 2016. Процитовано 22 травня 2016. 
  2. RFC [Архівовано 8 вересня 2014 у Wayback Machine.] (англ.)
  3. а б Історія програми ping від автора [Архівовано 2006-07-15 у Wayback Machine.] (англ.)

Посилання ред.