Interneti kontrollsõnumiprotokoll

Allikas: Vikipeedia

Interneti kontrollsõnumiprotokoll (inglise keeles Internet control message protocol ehk ICMP) on käsustik, mille abil võrguseadmed vahetavad oleku- ja veainformatsiooni. ICMP on internetiprotokolli (IP) lahutamatu osa ja kõik IP-d kasutavad seadmed peavad suutma tõlgendada ICMP sõnumeid. Interneti kontrollsõnumiprotokoll kuulub interneti protokollikomplekti (tuntud ka kui TCP/IP) ja asetub OSI mudeli võrgukihti.[1]

Struktuur[muuda | redigeeri lähteteksti]

ICMP sõnumid kapseldatakse IP paketi sisse. Sõnumite formaadid on erinevad, aga kõik ICMP sõnumid algavad väljadega tüüp, kood ja kontrollsumma.

ICMP sõnumi üldformaat
IP Päis
Tüüp Kood Kontrollsumma
Identifikaator Järjekorra number
Valikulised andmed

Sõnumi andmeväljade lühiseletused

1) IP päis sisaldab lähte- ja sihtaadressi.

2) Tüübiväli määrab sõnumiliigi.

3) Kood täpsustab sõnumi sisu ehk määrab alamtüübi. Maksimaalne alamtüüpide arv, mis on võimalik ühele sõnumi tüübile määrata, on 256.

4) Kontrollsumma on 16-bitine andmeväli, mis aitab kindlaks teha, kas andmevahetuse käigus esines kadusid. Arvutamisel teisendatakse ICMP päis ja andmed kahendarvudeks, ja liidetakse need kokku. Andmepaketi vastuvõtja kordab tehet. Pakett kustutatakse, kui tulemus erineb kontrollsummast.

5) Identifikaatori abil määratakse kindlaks vastussõnum. Näiteks kajataotluse sõnumile vastuseks saadetud sõnum.

6) Järjekorranumber aitab eristada järjestikku saabuvaid sama tüüpi sõnumeid.

7) Valikulised andmed kirjeldavad, kuidas sõnumis määratletud tegevusi täide viia.

Piirangud[muuda | redigeeri lähteteksti]

ICMP veateateid ei saadeta vastuseks:

1) Teisele ICMP veateatele. Antud piirang aitab vältida sõnumite kordussaatmise tsükleid. See tähendab, et olukorras, kus leitakse viga saabunud ICMP veateate sõnumis, ei informeerita allikat esinenud veast. Siiski on võimalik saata ICMP veateadet vastuseks ICMP informatsioonisõnumile.

2) Leviedastuse ja multiedastuse paketile. Veateate esilekutsuva paketi saatmisel suurele hulgale hostidele edastaks iga host allikale sõnumi esinenud veast. See tekitaks võrguliikluse ülekoormuse.

3) IP paketi killule. Erandiks on killustatud paketi esimene osa. Juhul kui killustatud andmepaketi esimene kild kutsub esile veateate, siis enamasti juhtub sama ka järgnevate puhul.

4) Pakettidele, mille lähteaadress ei ole üksikedastuse aadress. Allikale pole võimalik saata veateadet, kui andmepaketi lähteaadressis ei ole kirjeldatud ainulaadset üksikedastuse seadme aadressi. Nii kõrvaldatakse võimalus ICMP sõnumeid multi- ja leviedastada. Võimatuks muutub ka sõnumite saatmine spetsiaalaadressidele, nagu näiteks tagasiedastuse aadress.[2]

Sõnumitüübid[muuda | redigeeri lähteteksti]

Veateated[muuda | redigeeri lähteteksti]

ICMP veateateid kasutavad ruuterid ja hostid, et teavitada andmepaketi lähtestajat probleemidest, mis esinesid andmete edastamisel. Veateate sõnumisse lisatakse probleemi esilekutsunud sõnumiread.

Kättesaamatu adressaat (inglise keeles Destination unreachable)

Võrguvärav saadab "kättesaamatu adressaadi" sõnumi andmepaketi allikale, juhul kui võrguvärava marsruutimistabeli info viitab, et sihtvõrk on kättesaamatu.

Sihtpunkti host saadab andmepaketi allikale "kättesaamatu adressaadi" sõnumi, kui sihtpunkti võrgukaart või protsessi port ei ole aktiivne.

Võrguvärav loobub andmepaketi edastamisest ja tagastab "kättesaamatu adressaadi" sõnumi olukorras, kus nõutakse andmepaketi killustamist, aga killustamine pole lubatud (inglise keeles no fragmentation flag). ICMP kuuendas versioonis kannab sõnum nime "liiga suur pakett" (package too big).

Allika summutamise sõnum (inglise keeles Source quench message)

"Allika summutamise sõnum" annab hostile teada, et pakettide väljasaatmise sagedust tuleb vähendada. Puhvriruumi lõppemise korral edastab võrguvärav sõnumi, et andmepakette ei saa enam järjekorda lisada ega järgmisele võrgule suunata. Andmepaketid, mida pole võimalik töödelda, kustutatakse. Võrguvärav võib saata ühe sõnumi iga kustutatud paketi kohta. Kui allikale ei saabu enam summutamise sõnumeid, saab ta suurendada pakettide väljastuse kiirust. ICMP kuuendas versioonis seda sõnumit ei eksisteeri.[3]

Ümbersuunamine (inglise keeles Redirect Message)

Hostile saabub "ümbersuunamise sõnum", kui tema poolt lähtestatud võrguliiklus ei kasuta optimaalset teed. Lühima tee leidmiseks kasutavad ruuterid enda marsruutimistabeleid. Seade teavitab hosti võimalikust võrguliikluse ümbersuunamisest ja edastab ka saabunud andmepaketi.

Aeg on ületatud (inglise keeles Time exceeded)

Kõik IP andmepaketid omavad välja TTL, mille väärtust vähendatakse ühe võrra igal paketi saatmise sammul allikast sihtpunktini. Juhul kui TTL omandab väärtuse null, või killustatud andmepaketi üks osa ei saabu sihtpunkti, saadetakse allikale sõnum "aeg on ületatud".[4]

Parameetriline probleem (inglise keeles Parameter problem)

Vigaste andmepaketi päiseparameetrite korral ei õnnestu hostil alati paketti töödelda ja pakett tuleb kustutada. "Parameetrilise probleemi" sõnum saadetakse just nendel juhtudel, kui töötlemisel tekkinud vea tõttu paketist loobutakse.

Informatiivsed[muuda | redigeeri lähteteksti]

Informatiivseid sõnumeid ei genereerita vastuseks IP andmepakettides esinenud vigadele, vaid kasutatakse võrguühenduse diagnoosimiseks ja testimiseks. Need sõnumid võimaldavad võrguseadmetel vahetada olulist informatsiooni, mis on vajalik ühenduse stabiilseks toimimiseks.

Ajatempli taotlus ja Ajatempli vastus (inglise keeles Timestamp request and Timestamp reply message)

Kõigil võrguseadmetel on süsteemikell. Tehniliste ajamõõtmise ebatäpsuste tõttu pole seadmete kellad omavahel sünkroonis. Ajatempli sõnumid aitavad ajakriitilistel rakendustel üle võrgu suhelda. Ajatempel kajastab keskööst (GMT põhjal) möödunud aega millisekundites. Sünkroniseerimiseks saadab andmeedastuse algatav seade ajatempli. Vastusesse lisatakse ajatempel sõnumi saabumise ja tagasi lähtestamise kohta.

Marsruuteri kuulutus ja marsruuteri leidmise palve (inglise keeles Router advertisement and Router solicitation message)

"Marsruuteri kuulutus" teavitab võrguseadmeid enda olemasolust ja edastab IP-aadressi. Marsruuterid edastavad seda sõnumit regulaarselt sätetes määratud aja tagant. Võrguliikluse vähendamise huvides on sõnumi levituse intervall tavaliselt 7–10 minutit. Võrku lülituv host peaks ootama järgmist "marsruuteri kuulutust", et uuendada oma võrgutopoloogiat. Ooteaja vältimiseks saab host kohtvõrgus levitada "marsruuteri leidmise palvet". Iga sõnumi saanud marsruuter vastab automaatselt "marsruuteri kuulutusega".

Aadressmaski taotlus ja Aadressmaski vastus

IP-aadresside tõlgendamiseks kohtvõrgus peavad hostid teadma alamvõrgumaski. Kui host leviedastab kohtvõrgus "aadressmaski taotluse", siis iga võrguseade peab saatma "aadressmaski vastuse", mis sisaldab alamvõrgumaski. Alternatiivina kirjeldatule kasutatakse hostikonfiguratsiooni protokolli.

Versioonid[muuda | redigeeri lähteteksti]

IP-võrguaadresside nappuse tõttu avaldati 1990ndate keskpaigas protokolli uus versioon IPv6. Kuna IP ja ICMP on väga lähedalt seotud, ilmus samaaegselt ka ICMP uus versioon nimega ICMPv6. Nende kahe versiooni eristamiseks kasutatakse tänapäeval ICMP asemel nimetust ICMPv4. Tehtud muudatused on väiksemahulised. ICMPv6-s jagatakse sõnumid kaheks grupiks veateated ja informatiivsed sõnumid. Veateadetele omistatud tüübiväärtused on vahemikus 0–127 ja informatsioonisõnumitel 128–255. Tänu nimetatud grupeerimisele saab võrguseade kohe aru, mis laadi sõnum saabus. ICMP neljas versioon sõnumeid ei grupeeri, aga tüübiväärtused jäävad endiselt vahemikku 0–255. ICMPv4 lubab andmepakettide killustamist. Uuemas versioonis on andmepakettide killustamine keelatud ja maksimaalne saadetav andmeühik on 1280 baiti.[5]

ICMP-l baseeruvad utiliidid[muuda | redigeeri lähteteksti]

Traceroute[muuda | redigeeri lähteteksti]

Traceroute on rakendusprogramm, mis kasutab ICMP sõnumeid ja IP päise TTL välja, et teha kindlaks teekond, mida mööda andmepakett liigub ühest hostist teiseni. Traceroute saadab kõigepealt adressaadile andmepaketi, mille TTL välja väärtus on üks. Ruuterid on seadistatud mitte edastama saabuvaid andmepakete, mille TTL väärtus on null või üks. Ruuter kustutab paketi ja saadab allikale "aeg on ületatud" ICMP sõnumi. IP-paketi lähteaadressiks saab nüüd ruuteri IP-aadress. Sellega on kindlaks tehtud esimene ruuter. Järgmisel sammul suurendatakse TTL välja ühe võrra, ja seda tegevust jätkatakse, kuni jõutakse soovitud hostini. Sihtpunktis ei kustutata saabunud andmepaketti ja seega ei saadeta ka "aeg on ületatud" sõnumit. Sihtpunkti tuvastamiseks määrab traceroute saadetud pakettidele vähekasutatava UDP pordinumbri. Juhul kui ükski sihthosti rakendus ei kasuta määratud pordinumbrit, saadab sihthosti UDP moodul "kättesaamatu pordi" sõnumi. Eristades kahte erinevat veasõnumit, saab traceroute kindlaks teha, kas jõuti sihthostini.[6]

Ping[muuda | redigeeri lähteteksti]

Ping utiliidi abil saab testida hostide vahelist võrguühendust. Selleks tuleb ühel hostil saata testsõnum ja teised hostid vastavad teavitusega, et sõnum jõudis kohale. Kontrollsõnumiprotokollis on nendeks testsõnumiteks "kajataotlus" ja "kajataotluse vastus". Kasutades nimetatud sõnumeid, testib ping utiliit ühendust ja esitab ka tulemuste kohta statistika. Kogutud informatsioon sisaldab üldjuhul järgnevat: andmevahetuseks kulunud aeg, saadetud sõnumi maht, vastuvõetud sõnumite arv.

Turvalisuse riskid[muuda | redigeeri lähteteksti]

Interneti kontrollprotokoll ei sisalda autentimist ja seetõttu kasutatakse ICMP-d teenusetõkestusrünneteks või andmepakettide pealtkuulamiseks. Teenusetõkkerünnakuks võltsitakse "aeg on ületatud" ja "kättesaamatu sihtpunkt" sõnumeid. Need sõnumid sunnivad hosti ühendust katkestama. ICMP "ümbersuunamise sõnumi" abil saab ründaja suunata võrguliikluse läbi oma seadme.

ICMP „Smurf“ rünnakuks nimetatakse juhtu, kui ründaja saadab võltsitud kajapakette võrgu leviaadressitele. Võrgu kõik seadmed on kohustatud saatma "kajataotluse vastuse" ja sellega kasutatakse ära kogu ohvri süsteemi ribalaius .[7]

Viited[muuda | redigeeri lähteteksti]

  1. Charles M. Kozierok. The TCP/IP Guide. (ICMP: Overview, History, Versions and Standards). 20. september 2005. (inglise)
  2. Charles M. Kozierok. The TCP/IP Guide. (ICMP Message Creation and Processing Conventions and Rules). 20. september 2005. (inglise)
  3. J. Postel. Internet Control Message Protocol. RFC 792, September 1981. Network Working Group. (inglise)
  4. ICMP Time (To Live) Exceeded / Expired. 10. august 2012. InetDaemon. (inglise)
  5. Charles M. Kozierok. The TCP/IP Guide. (ICMP Common Message Format and Data Encapsulation). 20. september 2005. (inglise)
  6. http://student.ing-steen.se/IPv4/TCP-IP.pdf
  7. ICMP Attacks. Javvin Company. (inglise)