Internet Protocol (IP) ansvarar för att leverera datapaket från en källa till en destination, men det gör detta på så kallad best effort basis. Det innebär att IP inte själv kan garantera leverans, och inte heller rapporterar fel när något går snett. För att hantera detta används Internet Control Message Protocol (ICMP), som ger återkoppling om problem i nätverket och möjliggör viktiga kontrollfunktioner.
Det finns två varianter av ICMP:
- ICMPv4, som används tillsammans med IPv4
- ICMPv6, som används tillsammans med IPv6
I IPv6 spelar ICMPv6 en ännu större roll än ICMPv4 gör i IPv4, eftersom flera grundläggande funktioner – som adresskonfiguration, grannupptäckt och multicast-hantering – bygger direkt på ICMPv6.
I det här avsnittet går vi igenom de vanligaste ICMP-meddelandena, hur de fungerar i både IPv4 och IPv6, samt de nya funktioner som är unika för ICMPv6.
ICMP inkapsling
På lager 2, datalänk-lagret, finns Ethernetramen (frame). En Ethernetram innehåller bland annat source och destinationens MAC-adresser samt ett Type-fält som anger vilken protokolltyp som är inkapslad i ramen. Om värdet i Type är 0x0800 betyder det att ramen bär på ett IPv4-paket, och om värdet är 0x86DD betyder det att ramen bär på ett IPv6-paket.
I detta exempel är Type 0x0800 vilket innebär att i ramen är ett IP-paket inkapslat, och detta IP-paket har i sin tur ett ICMP-meddelande som sin payload.

ICMP header
ICMPv4-headern består av fälten Type, Code och Checksum, följt av ett specifikt meddelande fält som varierar beroende på vilken typ av ICMP-meddelande som skickas.

- Type (8 bitar) – Anger meddelandetyp (t.ex. Echo Request = 128, Echo Reply = 129, Destination Unreachable = 1).
- Code (8 bitar) – Ger ytterligare information om typen.
- Checksum (16 bitar) – Beräknas med hjälp av en pseudoheader från IPv6-huvudet (källa, destination, längd, Next Header) + ICMPv6-data.
- Extended Header (32 bitar) – Ytterligare information som varierar beroende på meddelandetyp, exempelvis identifierare och sekvensnummer för Echo-meddelanden.
- Data/Payload – Själva nyttolasten, som kan innehålla testdata, diagnostisk information eller annan protokollspecifik information.
ICMP typer
Det finns många olika typer av ICMP-meddelanden och många olika anledningar till att de används. I detta avsnitt fokuserar vi på två särskilt relevanta typer av ICMPv4-meddelanden, nämligen felmeddelanden (error messages) och förfrågningar (query messages).
- Felmeddelanden (Error Messages)
- Type 3 – Destination Unreachable (t.ex. nät, host eller port otillgänglig)
- Type 5 – Redirect (routern informerar om en bättre väg)
- Type 11 – Time Exceeded (TTL har löpt ut, används i traceroute)
- Förfrågningar (Query Messages) – Den viktigaste formen av förfrågan är Echo, som används i ping:
- Type 8 – Echo Request (förfrågan skickas)
- Type 0 – Echo Reply (svar returneras)
Destination Unreachable – Type 3
Ett Destination Unreachable-meddelande skickas när ett IP-paket inte kan levereras till sin destination. Det är en viktig del av ICMPv4:s felhantering och används för att informera avsändaren om varför leveransen misslyckades.
- En router kan skicka ett sådant meddelande om den inte har någon giltig rutt vidare mot destinationen.
- En värddator kan skicka det om paketet inte kan levereras till den avsedda tjänsten, till exempel när portnumret inte är öppet.
Syftet med meddelandet är att ge avsändaren tydlig information om att paketet inte kunde nå fram – antingen till själva mottagaren eller till en specifik applikations tjänst på mottagaren.
Destination Unreachable är ICMP Type 3 och innehåller flera olika koder som anger den exakta orsaken. Nedan listas de vanligaste koderna.
| Code | Description | Förklaring |
|---|---|---|
| 0 | Destination network unreachable | Routern saknar rutt till destinationsnätet (nätet kan inte nås). |
| 1 | Destination host unreachable | Nätet nås men värddatorn kan inte nås (t.ex. ARP misslyckas eller värden är offline). |
| 2 | Destination Protocol unreacheable | Mottagaren stödjer inte transportprotokollet som IP-paketet anger (t.ex. okänt/otillåtet protokollnummer). |
| 3 | Destination port unreachable | Ingen process lyssnar på den angivna porten (vanligt vid UDP; svarar med ICMP Port Unreachable). |
| 4 | Fragmentaion needed and DF bit set | Paketet måste fragmenteras p.g.a. MTU, men DF-flaggan är satt; används i Path MTU Discovery. |
| 13 | Communication administratively | Kommunikation blockeras av policy (t.ex. brandvägg/ACL) på en mellanliggande enhet. |
Time Exceeded – Type 11
Ett ICMPv4 Time Exceeded-meddelande används av en router eller värd för att indikera att ett paket inte kunde levereras inom tillåten tid. Det finns två huvudsakliga scenarier där detta meddelande genereras:
- TTL Exceeded in transit (Code 0) – Varje IP-paket innehåller ett fält som kallas Time to Live (TTL). Detta minskas med 1 för varje router som vidarebefordrar paketet. Om TTL når 0 kasseras paketet för att undvika oändliga loopar i nätverket. Routern skickar då ett Time Exceeded-meddelande tillbaka till avsändaren.
- Detta används bland annat av traceroute, där TTL medvetet sätts till låga värden för att kartlägga vägen genom nätverket.
- Fragment reassembly time exceeded (Code 1) – När ett IP-paket är fragmenterat måste mottagaren samla ihop alla fragment för att återskapa hela paketet. Om inte alla fragment anländer inom en viss tidsgräns kasseras de mottagna fragmenten. Mottagaren skickar då ett Time Exceeded-meddelande tillbaka till avsändaren med Code 1.
- Detta förhindrar att mottagaren sparar påbörjade men ofullständiga paket i all oändlighet.
| Code | Description | Förklaring |
|---|---|---|
| 0 | TTL Exceeded in Transit | Paketets TTL-fält nådde 0 under transport; paketet kasseras och ett ICMP-meddelande skickas tillbaka. Används av traceroute. |
| 1 | Fragment Reassembly Time Exceeded | Mottagaren kunde inte återskapa hela paketet eftersom alla fragment inte anlände i tid; de kasseras och avsändaren informeras. |
Echo Request (Type 8) och Echo Reply (Type 0)
Ett ICMP Echo-meddelande används för att kontrollera om en nod (host) är nåbar i ett IP-nätverk och för att mäta svarstid. Funktionen ligger till grund för det välkända kommandot ping.
- Den lokala noden skickar ett Echo Request (Type 8, Code 0) till en destination.
- Om destinationen är tillgänglig och fungerar korrekt returnerar den ett Echo Reply (Type 0, Code 0) tillbaka till avsändaren.
På detta sätt kan administratörer enkelt verifiera att IP-kommunikationen fungerar mellan två enheter samt få en indikation på fördröjningen (round-trip time) i nätverket.
Detta illustreras med bilder här nedan:
|
|
|
ICMPv6 – översikt
I ICMPv6 finns två huvudkategorier av meddelanden:
- Felmeddelanden (Error messages, typer 1–4) har alltid ett Code-fält som anger den exakta orsaken.
- Informations- och förfrågnings meddelanden (Informational/Query messages, t.ex. Echo eller NDP). Dessa meddelandetyp har i regel bara Code = 0 (inga undertyper).
Specifikt gäller att typerna 1–3 (felmeddelanden) har flera olika koder, medan de flesta query- och kontrollmeddelanden (typer 128, 129, 133–137) endast använder Code = 0.
| Typ | Beskrivning | Förklaring |
|---|---|---|
| 1 | Destination Unreachable | Paketet kan inte levereras; koderna anger orsaken (ingen rutt, administrativt blockerat, utanför scope, adress otillgänglig, port otillgänglig). |
| 2 | Packet Too Big | Paketet är för stort för länken; MTU-värdet returneras till avsändaren (Path MTU Discovery). |
| 3 | Time Exceeded | Paketet kasseras för att hop limit (TTL) nådde 0 i transit eller för att fragment inte hann återskapas i tid. |
| 128 | Echo Request | Skickas av ping för att testa nåbarhet; använder normalt Code = 0. |
| 129 | Echo Reply | Svar på Echo Request; används i ping och har normalt Code = 0. |
| 133 | Router Solicitation | Värd frågar efter routerinformation (t.ex. standardgateway, prefix, konfigurationsflaggor); Code = 0. |
| 134 | Router Advertisement | Router annonserar prefix, default-gateway och SLAAC-relaterad information; Code = 0. |
| 135 | Neighbor Solicitation | Adressupplösning och Duplicate Address Detection (DAD); ersätter ARP i IPv6; Code = 0. |
| 136 | Neighbor Advertisement | Svarar på NS med länkadress (MAC) och används även i DAD; Code = 0. |
| 137 | Redirect | Router informerar en värd om en bättre nästa-hopp-router till en destination; Code = 0. |
Meddelanden mellan en IPv6-router och en IPv6-enhet, inklusive dynamisk adressallokering, är:
- Router Solicitation (RS)-meddelande
- Router Advertisement (RA)-meddelande
Meddelanden mellan IPv6-enheter, inklusive kontroll av dubbla adresser och adressupplösning, är:
- Neighbor Solicitation (NS)-meddelande
- Neighbor Advertisement (NA)-meddelande
Observera: ICMPv6 ND innehåller även Redirect-meddelandet, som har en liknande funktion som det redirect-meddelande som används i ICMPv4.
Här förklaras alla fyra ICMPv6 meddelande:





