ping
Пінг (англ. 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 може блокуватися.
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.
Параметр | Значення |
---|---|
-t | Відправка пакетів на вказаний вузол до команди переривання |
-a | Встановлення адрес по іменах вузлів |
-n | Число запитів, що відсилаються |
-l | Розмір буферу відсилання |
-f | Встановлення прапорця, що забороняє фрагментацію пакета |
-i | Встановлення строку життя пакету <"Time To Live"> |
-v | Встановлення типу служби <"Type Of Service"> |
-r | Запис маршруту для вказаного числа переходів |
-s | Штамп часу для вказаного числа переходів |
-j | Вільний вибір маршруту по списку вузлів |
-k | Жорсткий вибір маршруту по списку вузлів |
-w | Таймаут кожної відповіді в мілісекундах |
−4 | Примусове використання протоколу IPv4 |
−6 | Примусове використання протоколу IPv6 |
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
# 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
- ↑ Packet Internet Groper | Packet Inter-Network Groper | PING | Glossary. Архів оригіналу за 4 червня 2016. Процитовано 22 травня 2016.
- ↑ RFC [Архівовано 8 вересня 2014 у Wayback Machine.] (англ.)
- ↑ а б Історія програми ping від автора [Архівовано 2006-07-15 у Wayback Machine.] (англ.)
- Online Ping check from multiple locations [Архівовано 28 липня 2013 у Wayback Machine.] (англ.)
- Мережеві утіліти [Архівовано 23 липня 2013 у Wayback Machine.] (рос.)
- Ping Test Online [Архівовано 29 листопада 2014 у Wayback Machine.] (англ.)
- man про адміністрування та привілейовані команди GNU/Linux (англ.) – сторінка довідки