
Утиліта Ping
Ping — службова комп'ютерна програма, призначена для перевірки з'єднань в мережах на основі 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)[1].
Програма була написана Майком Мууссом (англ. Mike Muuss), вченим Дослідницької Лабораторії Балістики (англ. Ballistics Research Lab) США в грудні 1983 року, як утиліта діагностики проблем у мережах[2].
Корисність утиліти ping в наданні допомоги діагностики проблем підключення до Інтернету була порушена, починаючи з 2003 року, коли інтернет-провайдери почали фільтрацію Echo Request. Це було обумовлено діяльністю зловмисників, що таким чином навантажували мережу, створюючи проблеми для маршрутизаторів. Однак утіліта використовується і надалі, оскільки може надати інформацію про існування віддаленої машини.
Практичне застосування можна дізнатися IP-адресу по доменному імені;
можна перевірити, чи є зв'язок з віддаленим вузлом;
можна визначити, чи є на поточному комп'ютері проблеми з налаштуванням DNS, задавши ping спочатку доменне ім'я, а потом IP-адресу;
можна перевірити якість каналу, подивившись, скільки пакетів не дійшло або час відклику. Ця можливість часто використовується в мережевих багатокористувацьких іграх, оскільки якість зв'язку дуже важлива для них. Ігровий сервер вимірює час, за який необхідний для гри пакет досягне клієнта і відповідь буде отримана. Цей час прийому-передачі, як правило, називають ping гравця. Проте це не завжди можна вважати показником, оскільки в деяких мережах протокол ICMP може блокуватися.
Отже структура 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.