ICMP (anglicky Internet Control Message Protocol) je v informatice jeden z nejdůležitějších protokolů počítačových sítí založených na rodině protokolů TCP/IP (tedy protokolu, který používá Internet). Protokol ICMP používají operační systémy v síti pro odesílání služebních informací, například chybových zpráv pro oznámení, že požadovaná služba není dostupná nebo že potřebný počítač nebo router není dosažitelný.
ICMP se svým účelem liší od TCP a UDP protokolů tím, že obvykle není používán síťovými aplikacemi přímo, nýbrž je vygenerován na základě nějaké události. Výjimkou je např. nástroj ping, který posílá ICMP zprávy „Echo Request“ (a očekává příjem zprávy „Echo Reply“), aby určil, zda je cílový počítač dosažitelný a jak dlouho paketům trvá, než se dostanou k cíli a zpět (tj. měří latenci).
Technické detaily
ICMP je součástí sady internetových protokolů, jak je definováno v RFC 792. Zprávy ICMP se obvykle používají pro diagnostické nebo kontrolní účely nebo jsou generovány v reakci na chyby v operacích IP (jak je uvedeno v RFC 1122). Chyby ICMP jsou směrovány na zdrojovou IP adresu původního paketu.
Například každé zařízení (jako je zprostředkující směrovač), které přeposílá IP datagram, nejprve sníží dobu trvání (TTL) pole v hlavičce IP o jednu. Pokud je výsledné TTL 0, paket je zahozen a na zdrojovou adresu datagramu je odeslána zpráva o překročení času ICMP při přenosu.
Mnoho běžně používaných síťových nástrojů je založeno na zprávách ICMP. Příkaz traceroute (Unixy) nebo tracert (Windowsy) lze implementovat přenosem IP datagramů se speciálně nastavenými poli hlavičky IP TTL (Time to Live) a hledáním překročení doby ICMP při přenosu a zpráv o nedostupnosti cíle generovaných jako odpověď. Související nástroj ping je implementován pomocí ICMP echo request a echo response zpráv.
ICMP využívá základní podporu IP, jako by to byl protokol vyšší úrovně, nicméně ICMP je ve skutečnosti nedílnou součástí IP. Ačkoli jsou zprávy ICMP obsaženy ve standardních IP paketech, zprávy ICMP jsou obvykle zpracovávány jako zvláštní případ, na rozdíl od běžného zpracování IP. V mnoha případech je nutné zkontrolovat obsah zprávy ICMP a doručit příslušnou chybovou zprávu aplikaci odpovědné za přenos paketu IP, který vyvolal odeslání zprávy ICMP.
ICMP je protokol síťové vrstvy, což z něj dělá protokol vrstvy 3 podle modelu 7 vrstvy OSI. ICMP je založen na 4vrstvém modelu TCP/IP a je protokolem internetové vrstvy, což z něj dělá protokol vrstvy 2 (internetový standardní model RFC 1122 TCP/IP se 4 vrstvami).
S pakety ICMP není spojeno žádné číslo portu TCP nebo UDP, protože tato čísla jsou spojena s transportní vrstvou výše.
Struktura datagramu
ICMP paket je zapouzdřen uvnitř IPv4 paketu. Tento paket se skládá z následujících částí:
Hlavička
Hlavička ICMP začíná za hlavičkou IPv4 a je identifikována číslem protokolu IP '1'. Všechny ICMP pakety mají osmibajtovou hlavičku a datovou sekci proměnné velikosti. První 4 bajty hlavičky mají pevný formát, zatímco poslední 4 bajty závisí na typu/kódu daného ICMP paketu.
| Offset | Oktet → | 0 | 1 | 2 | 3 | |
|---|---|---|---|---|---|---|
Oktet |
Bit |
0—7 |
8—15 |
16—23 |
24—31 |
|
0 |
0 |
typ |
kód |
checksum |
||
4 |
32 |
zbytek hlavičky |
||||
-
typ je typ ICMP paketu viz níže v tabulce řídících zpráv
-
kód je ICMP podtyp viz níže v tabulce řídících zpráv
-
checksum je kontrolní součet podle RFC1071 pro zjišťování chyb. Je počítán z celé hlavičky a datové části, kde místo datové části jsou samé nuly, ale délka je zachována.
-
zbytek hlavičky je čtyřbajtové pole, jehož obsah závisí na ICMP typu a kódu.
Data
Chybové zprávy ICMP obsahují datovou část, která obsahuje kopii celé hlavičky IPv4 plus alespoň prvních osm bajtů dat z paketu IPv4, který chybovou zprávu způsobil. Délka chybových zpráv ICMP by neměla přesáhnout 576 bajtů. Tato data používá hostitel k přiřazení zprávy k příslušnému procesu. Pokud protokol vyšší úrovně používá čísla portů, předpokládá se, že jsou v prvních osmi bytech dat původního datagramu.
Byla využita proměnná velikost datové části ICMP paketů. V "Ping of death" jsou velké nebo fragmentované ICMP pakety používány pro útoky denial-of-service. Data ICMP lze také použít k vytvoření skrytých kanálů pro komunikaci. Tyto kanály jsou známé jako ICMP tunely.
Řídící zprávy
Řídicí zprávy jsou identifikovány hodnotou v poli typ. Pole kód poskytuje další kontextové informace pro zprávu. Některé řídicí zprávy byly od prvního zavedení protokolu zastaralé.
| typ | kód | stav | popis |
|---|---|---|---|
0 — Echo Reply |
0 |
odpověď na echo (echo reply) používá program ping |
|
1 a 2 |
nepřiřazeno |
zarezervováno pro budoucí použití |
|
3 — Destination Unreachable |
0 |
cílová síť je nedostupná |
|
1 |
cílový stroj je nedostupný |
||
2 |
cílový protokol je nedostupný |
||
3 |
cílový port je nedostupný |
||
4 |
je požadována fragmentace a je nastavený příznak nefragmentuj |
||
5 |
zdrojová routa je chybná |
||
6 |
cílová síť je neznámá |
||
7 |
cílový stroj je neznámý |
||
8 |
zdrojový stroj je izolovaný |
||
9 |
síť je administrativně zakázaná |
||
10 |
stroj je administrativně zakázaný |
||
11 |
síť je nedostupná pro daný typ služby ToS |
||
12 |
stroj je nedostupný pro daný typ služby ToS |
||
13 |
komunikace je administrativně zakázaná |
||
14 |
Host Precedence Violation |
||
15 |
Precedence cutoff in efect |
||
4 — Source Quench |
0 |
zastaralý |
source quench (congestion control) |
5 — Redirect |
0 |
přesměrování datagramu pro síť |
|
1 |
přesměrování datagramu pro stroj |
||
2 |
přesměrování datagramu kvůli typu služby pro síť |
||
3 |
přesměrování datagramu kvůli typu služby pro stroj |
||
6 |
zastaralý |
alternativní IP adresa stroje |
|
7 |
nepřiřazeno |
zarezervováno pro budoucí použití |
|
8 — Echo Request |
0 |
výzva k echu (echo request) používá program ping |
|
9 — ohlášení směrovače |
0 |
ohlášení směrovače (router advertisement) |
|
10 — vyjednávání směrovače |
0 |
objevování, výběr a vyjednávání směrovače |
|
11 — čas vypršel Time Exceeded |
0 |
TTL (time to live) vypršelo při přenosu |
|
1 |
vypršel čas při sestavení fragmentu |
||
12 — problém s parametrem (špatná IP hlavička) |
0 |
ukazatel ukazuje chybu |
|
1 |
chybí povinná část hlavičky IP paketu |
||
2 |
špatná délka paketu |
||
13 — časové razítko Timestamp |
0 |
časové razítko (žádost o synchronizaci času) |
|
14 — odpověď na časové razítko Timestamp Reply |
0 |
odpověď na časové razítko |
|
15 — žádost o informaci |
0 |
zastaralé |
žádost o informaci |
16 — odpověď na informaci |
0 |
zastaralé |
odpověď na žádost o informaci |
17 — žádost o masku |
0 |
zastaralé |
žádost o masku IP adresy |
18 — odpověď na žádost o masku |
0 |
zastaralé |
odpověď na žádost o masku |
19 |
vyhrazeno |
vyhrazeno pro bezpečnost |
|
20 až 29 |
vyhrazeno |
vyhrazeno pro experimenty |
|
30 — Traceroute |
0 |
zastaralé |
žádost o informaci |
31 |
zastaralé |
Datagram Conversion Error |
|
32 |
zastaralé |
Mobile Host Redirect |
|
33 |
zastaralé |
Where-Are-You (původně pro IPv6) |
|
34 |
zastaralé |
Here-I-Am (původně pro IPv6) |
|
35 |
zastaralé |
Mobile Registration Request |
|
36 |
zastaralé |
Mobile Registration Reply |
|
37 |
zastaralé |
Domain Name Request |
|
38 |
zastaralé |
Domain Name Reply |
|
39 |
zastaralé |
SKIP Algorithm Discovery, Protocol, Simple Key-Management for Internet Protocol |
|
40 |
Photuris, Security failures |
||
41 |
experimentální |
ICMP pro experimentální mobilní protokoly jako Seamoby [RFC4065] |
|
42 — Extended Echo Request |
0 |
žádost o rozšířené echo (XPing) |
|
43 — Extended Echo Reply |
0 |
bez chyby |
|
1 |
nepochopený dotaz |
||
2 |
takové síťové rozhraní neexistuje |
||
3 |
neexistuje taková tabulka |
||
4 |
více síťových rozhraní odpovídá dotazu |
||
44 až 252 |
nepřiřazeno |
vyhrazeno |
|
253 |
experimentální |
RFC3692 experiment (RFC 4727) |
|
254 |
experimentální |
RFC3692 experiment (RFC 4727) |
|
255 |
vyhrazeno |
Vyhrazeno. |
Nejpoužívanější ICMP datagramy
-
Echo Request — požadavek na odpověď, každý prvek v síti pracující na IP vrstvě by na tuto výzvu měl reagovat. Často to z různých důvodů není dodržováno.
-
Echo Reply — odpověď na požadavek
-
Destination Unreachable — informace o nedostupnosti cíle, obsahuje další upřesňující informaci
-
Net Unreachable — nedostupná cílová síť, reakce směrovače na požadavek komunikovat se sítí, do které nezná cestu
-
Host Unreachable — nedostupný cílový stroj
-
Protocol Unreachable — informace o nemožnosti použít vybraný protokol
-
Port Unreachable — informace o nemožnosti připojit se na vybraný port
-
-
Redirect — přesměrování, používá se především pokud ze sítě vede k cíli lepší cesta než přes výchozí bránu. Stanice většinou nepoužívají směrovací protokoly a proto jsou informovány touto cestou. Funguje tak, že stanice pošle datagram své, většinou výchozí, bráně, ta jej přepošle správným směrem a zároveň informuje stanici o lepší cestě.
-
Redirect Datagram for the Network — informuje o přesměrování datagramů do celé sítě
-
Redirect Datagram for the Host — informuje o přesměrování datagramů pro jediný stroj
-
-
Time Exceeded — vypršel časový limit
-
Time to Live exceeded in Transit — během přenosu došlo ke snížení TTL (Time To Live) na 0, aniž byl datagram doručen (aniž by dosálh cíle)
-
Fragment Reassembly Time Exceeded — nepodařilo se sestavit jednotlivé fragmenty v časovém limitu (např. pokud dojde ke ztrátě části datagramů)
-
Ostatní datagramy jsou používány spíše vzácně, někdy je používání ICMP znemožněno špatným nastavením firewallu.
Přesměrování (Redirect)
Přesměrování požaduje odeslání datových paketů alternativní cestou. ICMP Redirect je mechanismus pro směrovače, který přenáší informace o směrování hostitelům. Zpráva informuje hostitele, aby aktualizoval své směrovací informace (k odeslání paketů alternativní cestou). Pokud se hostitel pokusí odeslat data přes router (R1) a R1 odešle data na jiný router (R2) a je k dispozici přímá cesta z hostitele do R2 (to znamená, že hostitel a R2 jsou ve stejné podsíti), pak R1 odešle přesměrovací zprávu, aby informoval hostitele, že nejlepší cesta k cíli je přes R2. Hostitel by pak měl změnit informace o své trase a odeslat pakety pro tento cíl přímo do R2. Router stále odešle původní datagram do zamýšleného cíle. Pokud však datagram obsahuje informace o směrování, tato zpráva nebude odeslána, i když je k dispozici lepší cesta. RFC 1122 uvádí, že přesměrování by měly být odesílány pouze bránami a neměly by být odesílány strojům v Internetu.
| 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
typ = 5 |
kód |
checksum |
|||||||||||||||||||||||||||||
IP adresa pro lepší cestu |
|||||||||||||||||||||||||||||||
IP hlavička a prvních 8 bytů původních dat datagramu |
|||||||||||||||||||||||||||||||
| kód | popis |
|---|---|
0 |
přesměruj síť |
1 |
přesměruj hostitele |
2 |
přesměruj kvůli typu služby (ToS) síť |
3 |
přesměruj kvůli typu služby (ToS) hostitle |
Čas vypršel (Time exceeded)
Překročení času je generováno bránou, aby informovalo zdroj o vyřazeném datagramu, protože TTL dosáhl nuly. Zprávu o překročení času může také odeslat hostitel, pokud se mu nepodaří znovu sestavit fragmentovaný datagram ve svém časovém limitu.
Zprávy o překročení času používá obslužný program traceroute k identifikaci bran na cestě mezi dvěma hostiteli.
| 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
typ = 11 |
kód |
checksum |
|||||||||||||||||||||||||||||
nepoužito |
|||||||||||||||||||||||||||||||
IP hlavička a prvních 8 bytů původních dat datagramu |
|||||||||||||||||||||||||||||||
Typ musí být nastaven na 11.
| kód | popis |
|---|---|
0 |
TTL spadlo na 0 při přenosu paketu |
1 |
Nepodařilo se sestavit fragmenty v stanoveném čase |
Hlavička IP a prvních 64 bitů původního paketu se použije hostitel, co dostal ICMP zprávu, aby našel u ebe vyřezený datagram. U protokolů vyšší úrovně TCP a UDP tam najde sdrojový a cílový port.
| 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
typ = 11 |
kód |
checksum |
|||||||||||||||||||||||||||||
nepoužito |
|||||||||||||||||||||||||||||||
IP hlavička a prvních 8 bytů původních dat datagramu |
|||||||||||||||||||||||||||||||
Žádost o čas a odpověď s časem se používá k synchronizaci času na zařízeních, které nemají hodiny reálného času (s baterií), a také nemají požnost použít protokol aplikační vrstvy NTP. Jsou to všelijaké mini krabičky. Krabička pošle ICMP zprávu Timestamp stroji, který má sychronizované hodiny a v odpověď dostane ICMP zprávu Timestmp Reply s aktuálním časem. Tak může nastavit svoje vlastní hodiny na přibližně synchronní čas. Není to tak přesné jeko NTP protokol, ale pro většinu zařízení to dostačuje.
Timestamp (žádost o čas)
Timestamp se používá pro synchronizaci času. Původní časové razítko je nastaveno na čas (v milisekundách od půlnoci), kdy se odesílatel naposledy dotkl paketu. Časová razítka příjmu a vysílání se nepoužívají.
| 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
typ = 13 |
kód |
checksum |
|||||||||||||||||||||||||||||
identifikátor |
pořadové číslo |
||||||||||||||||||||||||||||||
čas vzniku datagramu — Originate Timestamp |
|||||||||||||||||||||||||||||||
čas doručení datagramu — Receive Timestamp |
|||||||||||||||||||||||||||||||
čas vyslání datagramu — Transmit Timestamp |
|||||||||||||||||||||||||||||||
Typ musí byýt nastaven an 13.
Kód musí být nastaven na 0
Identifikátor a sekvenční číslo se používá k porovnání s odpovědí Timestamp Reply.
Timestamp reply (odpověď s časem)
Timestamp reply je odpověď na zprávu Timestamp. Skládá se z původního časového razítka zaslaného odesílatelem časového razítka, jakož i časového razítka příjmu indikujícího, kdy bylo časové razítko přijato, a časového razítka vysílání indikujícího, kdy byla odeslána odpověď časového razítka.
| 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Typ = 14 |
kód = 0 |
checksum |
|||||||||||||||||||||||||||||
identifikátor |
pořadové číslo |
||||||||||||||||||||||||||||||
čas vzniku datagramu — Originate Timestamp |
|||||||||||||||||||||||||||||||
čas doručení datagramu — Receive Timestamp |
|||||||||||||||||||||||||||||||
čas vyslání datagramu — Transmit Timestamp |
|||||||||||||||||||||||||||||||
-
Typ musí být nastaven na hodnotu 14.
-
Kód musí být nastaven na 0.
-
Identifikátor a pořadové číslo může klient použít k přiřazení odpovědi k požadavku, který odpověď způsobil.
-
Originate timestamp je čas, kdy se odesílatel naposledy dotkl zprávy před jejím odesláním.
-
Receive timestamp — Časové razítko příjmu je čas, kdy se přijímající poprvé dotkl při příjmu.
-
Transmit timestamp — Časové razítko přenosu je čas, kdy se prijímající naposledy dotkl zprávy při jejím odeslání zpět.
Všechna časová razítka jsou v jednotkách milisekund od půlnoci UT. Pokud čas není k dispozici v milisekundách nebo jej nelze poskytnout s ohledem na půlnoční UT, pak lze do časové značky vložit libovolný čas za předpokladu, že bit vysokého řádu časové značky je také nastaven tak, aby indikoval tuto nestandardní hodnotu.
Použití zpráv Timestamp a Timestamp Reply k synchronizaci hodin internetových uzlů bylo z velké části nahrazeno protokolem Network Time Protocol (NTP) a Precision Time Protocol založeným na UDP, které jsou přesnější.
Žádost o masku sítě (Address mask request)
Požadavek na masku adresy je obvykle odesílán hostitelem směrovači, aby získal vhodnou masku podsítě.
Příjemci by měli na tuto zprávu odpovědět zprávou s odpovědí masky adresy.
| 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Typ = 17 |
kód = 0 |
checksum |
|||||||||||||||||||||||||||||
identifikátor |
pořadové číslo |
||||||||||||||||||||||||||||||
maska sítě — Address mask |
|||||||||||||||||||||||||||||||
Kde:
-
Typ musí být nastaven na 17
-
Kód musí být nastaven na 0
-
Masku sítě je nutné nastavit na 0
ICMP Address Mask Request může být použit jako součást průzkumného útoku ke shromažďování informací v cílové síti, proto je ICMP Address Mask Reply ve výchozím nastavení na Cisco IOS zakázáno.
Odpověď na žádost o masku sítě (Address mask reply)
Odpověď masky sítě se používá k odpovědi na zprávu s žádostí o masku sítě s příslušnou maskou podsítě.
| 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Typ = 18 |
kód = 0 |
checksum |
|||||||||||||||||||||||||||||
identifikátor |
pořadové číslo |
||||||||||||||||||||||||||||||
maska sítě — Address mask |
|||||||||||||||||||||||||||||||
Kde:
-
Typ musí být nastaven na 18
-
Kód musí být nastaven na 0
-
Maska sítě by měla být nastavena na masku podsítě
Cíl nedostupný (Destination unreachable)
Cíl nedostupný je generován hostitelem nebo jeho příchozí bránou, aby informoval klienta, že cíl je z nějakého důvodu nedosažitelný. Důvody pro tuto zprávu mohou zahrnovat: fyzické připojení k hostiteli neexistuje (vzdálenost je nekonečná); uvedený protokol nebo port není aktivní; data musí být fragmentována, ale je zapnutý příznak „nefragmentovat“. Nedosažitelné porty TCP reagují zejména pomocí TCP RST spíše než nedosažitelný cíl typu 3, jak by se dalo očekávat. Nedosažitelný cíl není nikdy hlášen pro přenosy vícesměrového vysílání (multicast) IP.
| 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Typ = 3 |
Kód |
checksum |
|||||||||||||||||||||||||||||
nepoužito |
Next hop MTU |
||||||||||||||||||||||||||||||
IP hlavička a prvních 8 bajtů původního datagramu |
|||||||||||||||||||||||||||||||
Kde:
-
Typ (bity 0—7) musí být nastaven na 3
-
Kód (bity 8—15) je použit k upřesnění chyb a může mít hodnotu podle následující tabulky
| kód | popis chybové zprávy |
|---|---|
0 |
Síť je nedostupná. |
1 |
Stroj je nedostupný. |
2 |
Protokol je nedostupný (zvolený přenostový protokol není podporovaný). |
3 |
Port je nedostupný (zvolený přenosový protokol nemůže informovat příjemce o příchozí zprávě). |
4 |
Datagram je příliš velký. Je nutné fragmentovat, ale fragmentace je zakázána nastaveným DF flagem. |
5 |
Zdrojová routa je chybná. |
6 |
Neznámá chyba na cílové síti. |
7 |
Neznámá chyba na cílovém stroji. |
8 |
Source host isolated error. |
9 |
Komunikace s cílovou sítí je administrativně zakázána. |
10 |
Komunikace s cílovým strojem je administrativně zakázána. |
11 |
Síť je nedostupná pro daný typ služby (ToS). |
12 |
Stroj je nedostupný pro daný typ služby (ToS). |
13 |
Komunikace je administrativně zakázána (filtrování zabraňuje předávání paketu do sítě). |
14 |
Host precedence violation (indicates the requested precedence is not permitted for the combination of host or network and port). |
15 |
Precedence cutoff in effect (precedence of datagram is below the level set by the network administrators). |
-
Pole MTU dalšího skoku (bity 48–63) obsahuje MTU sítě dalšího skoku, pokud dojde k chybě kódu 4.
-
IP hlavička a další data jsou zahrnuty, aby umožnily klientovi porovnat odpověď s požadavkem, který způsobil nedosažitelnou odpověď cíle.
Source Quench (zastaralé)
Source Quench požaduje, aby odesílatel snížil rychlost zpráv odesílaných směrovači nebo hostiteli. Tato zpráva může být generována, pokud směrovač nebo hostitel nemá dostatečný prostor ve vyrovnávací paměti pro zpracování požadavku, nebo se může objevit, pokud se vyrovnávací paměť směrovače nebo hostitele blíží svému limitu.
Data jsou odesílána velmi vysokou rychlostí z hostitele nebo z několika hostitelů současně do konkrétního směrovače v síti. Přestože má směrovač možnosti ukládání do vyrovnávací paměti, ukládání do vyrovnávací paměti je omezeno na specifikovaný rozsah. Router nemůže zařadit do fronty více dat, než je kapacita omezeného vyrovnávací paměti. Pokud se tedy fronta zaplní, příchozí data se zahazují, dokud fronta již není plná. Ale protože v síťové vrstvě není přítomen žádný potvrzovací mechanismus, klient neví, zda data úspěšně dosáhla cíle. Síťová vrstva by proto měla přijmout některá nápravná opatření, aby se těmto situacím vyhnula. Tato opatření se označují jako source quench (zdrojové zhášení).
V mechanismu zdrojového zhášení router zjistí, že rychlost příchozích dat je mnohem vyšší než rychlost odchozích dat, a pošle klientům zprávu ICMP, která je informuje, že by měli zpomalit rychlost přenosu dat nebo počkat určitý čas pokusem o odeslání dalších dat. Když klient obdrží tuto zprávu, automaticky zpomalí rychlost odchozích dat nebo počká dostatečně dlouhou dobu, což routeru umožní vyprázdnit frontu. Zpráva ICMP o zhášení zdroje tedy působí jako řízení toku v síťové vrstvě.
Protože výzkum naznačoval, že „ICMP Source Quench [bylo] neúčinným (a nespravedlivým) lékem na přetížení“, vytváření zdrojových zpráv zhášení pomocí směrovačů bylo v roce 1995 odmítnuto RFC 1812. Kromě toho přeposílání a jakýkoli druh reakce na (akce řízení toku) zprávy o zhášení zdroje byly od roku 2012 podle RFC 6633 zastaralé.
| 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Typ = 4 |
kód = 0 |
checksum |
|||||||||||||||||||||||||||||
nepoužito |
|||||||||||||||||||||||||||||||
IP hlavička a prvních 8 bytů původních dat datagramu |
|||||||||||||||||||||||||||||||