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. Це було обумовлено діяльністю зловмисників, що таким чином навантажували мережу, створюючи проблеми для маршрутизаторів. Однак утіліта використовується і надалі, оскільки може надати інформацію про існування віддаленої машини.

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

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

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

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

«

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

Оригінальний текст (англ.)

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[ред.ред. код]

С:\>ping wikipedia.org
Обмен пакетами с wikipedia.org [208.80.152.201] с 32 байтами данных:
Ответ от 208.80.152.201: число байт=32 время=189мс TTL=48
Ответ от 208.80.152.201: число байт=32 время=184мс TTL=48
Ответ от 208.80.152.201: число байт=32 время=180мс TTL=48
Ответ от 208.80.152.201: число байт=32 время=184мс TTL=48
Статистика Ping для 208.80.152.201:
    Пакетов: отправлено = 4, получено = 4, потеряно = 0
    (0% потерь)
Приблизительное время приема-передачи в мс:
    Минимальное = 180мсек, Максимальное = 189 мсек, Среднее = 184 мсек

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

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

Примітки[ред.ред. код]

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