**Пинг** е компјутерска мрежна административна алатка, се користи за тестирање на достапноста на домаќин (host) на мрежен интернет протокол (IP) и да се измери round-trip време за пораки испратени од појдовниот домаќин (host) до друг краен компјутер. Името доаѓа од активната ехо-сонар терминологија.

*Пинг* работи преку испраќање на ехо пакет за барање на интернет протоколот за контрола на порака (ICMP) до одреден домаќин (host) и чека одговор од ICMP. Во овој процес се мери времето од самото праќање на сигналот до неговото примање (round-trip time) и се евидентира секоја загуба на пакет. Резултатите од тестот се печатат во форма на статистичко резиме на добиените одзивни пакети, вклучувајќи минимум, максимум и средно round-trip време, а понекогаш и стандардното отстапување на средното време.

**Пингање** може да се изврши со користење на различни опции, во зависност од имплементацијата која овозможува посебни оперативни режими, како што е одредување на големина на пакет се користи сонда, автоматски се повторува операцијата за испраќање на одреден број на сонди, временски печат опции, или за вршење на пинг поплава. Поплава од пингање може да биде злоупотребена како едноставна форма на негирање на сервисни напади, во која хакерот го преплавува корисникот со ICMP ехо пакет за барање.

Историја
--------

**Пингањето** е авторизирано од Mike Muuss во декември 1983 како алатка за отстранување на проблеми во IP мрежата. Името е добиено по звукот на имулсите од активниот хидролокатор, кој исто така вклучува испраќање на сигнал и мерење на времето сè додека не се прими одзив.
Корисноста на пинг во помагањето за поставување на дијагноза на проблеми во интернет конективноста беше намалена во 2003 година, кога голем број семрежни услужници почнаа да филтрираат ICMP Type 8 (ICMP Echo Request) пораки во нивните мрежни граници. Ова делумно се должи на зголемување на употребата на пинг со цел разузнавање, на пример преку интернет црви, како што е Welchia кој го преплавува интернетот со пинг барања со цел да се лоцираат нови компјутери, за да бидат инфицирани. Ова предизвикува проблеми и за насочувачите.
Сепак *пинг скенирањето* е сè уште дел од мрежно скенирачките алатки како што е nmap, така што може да даде основни податоци за постоењето на оддалечена машина.
Иако RFC 1122 пропишува дека било кој домаќин мора да прифати ехо-барање и да даде ехо-одговор назад, тоа се одликува како безбедносен ризик.

ICMP пакет
----------

ICMP packet|   | Bit 0 - 7 | Bit 8 - 15 | Bit 16 - 31 |
| --- | --- | --- | --- |
| IP Header(20 bytes) | Version/IHL | Type of service | Length |
| Identification | *flags* and *offset* |
| Time To Live (TTL) | Protocol | Контролен збир |
| Source IP address |
| Destination IP address |
| ICMP Payload(8+ bytes) | Type of message | Code | Контролен збир |
| Quench |
| Data (*optional*) |

Генерички состав на **ICMP пакет**

* Заглавје (со сино)
	+ Протокол поставен на 1 и тип на сервис поставен на 0
* Носивост (со црвено)
	+ Вид на ICMP порака (8 бита)
	+ Код (8 бита)
	+ Проверка (16 бита), пресметано со дел од ICMP пакет (насловот не се користи). Тоа е 16-битен единечен комплемент на единечниот комплементен збир на ICMP порака почнувајќи од полето Тип.
	+ ICMP "Quench" (32 бита) полето, кое во овој случај (ICMP ехо-барање и одговор) ќе биде составен од идентификатор (16 бита) и редниот број (16 бита).
	+ Податоците сместени за различни видови одговори (може да бидат произволна должина, лево до имплементационите детали. Како и да е мора да биде помало од максималното MTU на мрежата.
* Пренос на податоци

Пример за Пинг тест
-------------------

Следново е пример за пингање на en.wikipedia.org под оперативен систем Linux:

```
admin@localhost# ping en.wikipedia.org
PING rr.pmtpa.wikimedia.org (66.230.200.100) 56(84) bytes of data.
64 bytes from rr.pmtpa.wikimedia.org (66.230.200.100): icmp_seq=1 ttl=52 time=87.7 ms
64 bytes from rr.pmtpa.wikimedia.org (66.230.200.100): icmp_seq=2 ttl=52 time=95.6 ms
64 bytes from rr.pmtpa.wikimedia.org (66.230.200.100): icmp_seq=3 ttl=52 time=85.4 ms
64 bytes from rr.pmtpa.wikimedia.org (66.230.200.100): icmp_seq=4 ttl=52 time=95.8 ms
64 bytes from rr.pmtpa.wikimedia.org (66.230.200.100): icmp_seq=5 ttl=52 time=87.0 ms
64 bytes from rr.pmtpa.wikimedia.org (66.230.200.100): icmp_seq=6 ttl=52 time=97.6 ms 
--- rr.pmtpa.wikimedia.org ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 8998ms
rtt min/avg/max/mdev = 78.162/89.213/97.695/6.836 ms

```

Излезот ги покажува резултатите од 10 пингови на 66.230.200.100 со резултатите сумирани на крајот. Програмата се прекинува со притискање на Ctrl-C.

* Најкратко целокупно време е 78,162 милисекунди
* Просечно целокупно време е 89,213 милисекунди
* Максимално целокупно време е 97,695 милисекунди
* Стандардното отстапување на целокупното време е 6,836 милисекунди

Формат на порака
----------------

### Ехо барање

**Ехо барање** е ICMP порака чии податоци се очекува да бидат примени назад во ехо одговор (пинг). Домаќинот мора да одговори на сите ехо барања со ехо одговори, кои ги содржат истите податоци добиени во пораката за барање.

| 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Type = 8 | Code = 0 | Контрола на заглавието |
| Identifier | Sequence Number |
| Data ::: |

* Ознаката и редниот број се користат од страна на клиентот за да ги спореди одговорот со барањето. Во пракса, повеќето Linux системи користат единствен идентификатор за секој пинг процес, редниот број е растечки број во рамките на тој процес. Windows користи фиксен идентификатор, кој варира во различните верзии на Windows, и реден број кој се ресетира на секое вклучување на компјутерот.
* Податоците примени од ехо барањето мора да бидат целосно вклучени во ехо одговорот.

### Ехо одговор

**Ехо одговор** е ICMP порака генерирана за одговор на ехо барањето, и е задолжителна за сите домаќини и насочувачи.

| 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Type = 0 | Code = 0 | Контрола на заглавието |
| Identifier | Sequence Number |
| Data ::: |

* Видот и кодот мора да бидат поставени на 0.
* Ознаката и редниот број може да се користат од страна на клиентот за да се утврди кои ехо барања е поврзани со ехо одговори.
* Податоците добиени во ехо барањето мара да бидат целосно вклучени во ехо одговорот.

### Други одговори

Во случај на грешка, крајниот домаќин (host) или посредувачкиот насочувач ќе испрати назад грешка во ICMP пораката, односно недостапен домаќин или надминат TTL во транспортот. Во дополнение, овие пораки ги содржат првите 8 бајти од оригиналната порака (во овој случај заглавје од ICMP ехо барањето, вклучувајќи quench вредност).

Носивост
--------

Носивоста на пакетот обично се полни со ASCII карактери, така што излезот од tcpdump покажува:

```
16:24:47.966461 IP (tos 0x0, ttl 128, id 15103, offset 0, flags [none],
proto: ICMP (1), length: 60) 192.168.146.22 > 192.168.144.5: ICMP echo request,
id 1, seq 38, length 40
       0x0000:  4500 003c 3aff 0000 8001 5c55 c0a8 9216  E..<:.....\U....
       0x0010:  c0a8 9005 0800 4d35 0001 0026 6162 6364  ......M5...&abcd
       0x0020:  6566 6768 696a 6b6c 6d6e 6f70 7172 7374  efghijklmnopqrst
       0x0030:  7576 7761 6263 6465 6667 6869            uvwabcdefghi

```

Носивоста содржи временска ознака за кога е испратена пораката, како и редоследен број. Ова му овозможува на пингот да го пресмета round-trip времето во неограничен начин без потреба да памти кога пакетите биле испратени. Во случај кога нема никаков одговор а исто така нема никаква грешка, повеќето имплементации на пинг не покажуваат ништо, или повремено прикажуваат известувања за изминато време.

Други видови на пингање
-----------------------

Терминот **пинг** најчесто се користи за да се опише пренос на делотворна безсодржинска порака, која се користи за најразлични цели. На пример пинг може да биде испратен со користење на User Datagram Protocol (UDP) до уред сместен зад network address translator (NAT) за да се зачува врзувањето на портата на NAT од истекување на времето. Други примери се кратки и празни инстант пораки, електронски пошти, звучни пораки, или пак нотификација за пропуштен повик за да се открие достапноста.

### Во компјутерските игри

Во различните мрежни игри, опслужувачот го бележи времето што е потребно за еден пакет од играта да стигне до клиентот, и одговор да биде добиен. Ова време е познато како пинг на играчот, се користи како делотворен мерач за каснењето на играчот, што помал пинг има играчот, помало каснење би имал. Овој стил на пинг обично не користи ICMP пакети.

Поврзано
--------

* List of DOS commands
* List of Unix utilities
* Traceroute
* Ping of death
* Smurf attack

Наводи
------

Надворешни врски
----------------

* `ping(8)`: send ICMP ECHO\_REQUEST to network hosts — страница за административни и привилегирани наредби од упатството „man" во Linux (англиски)

Предлошка:Unix commands
Предлошка:Windows commands