Internetiprotokoll

Internetiprotokoll (ingl. "Internet Protocol", IP) on peamine sideprotokoll ehk reeglistik, mida järgitakse andmepakettide saatmisel internetis kasutatavate võrguseadmete vahel. Võib öelda, et internetiprotokoll on interneti selgroog – see defineerib viisi, kuidas grupp eraldiseisvaid võrke saab töötada üksteisega, et luua globaalne võrk ehk Internet. Internetiprotokolli funktsioon töötati välja 1970. aastatel, kuid internetiprotokoll ise avaldati ametlikult 1981. aastal.
Internetis ja teistes võrkudes kasutatakse internetiprotokolli koos paljude teiste protokollidega, muuhulgas TCP-, UDP- ja ICMP-protokollidega. Järgmises tabelis on kirjas levinumad protokollid.
IP ehk internetiprotokolli ülesanne on toimetada ühe hosti väljasaadetavad andmepaketid teise hostini, kasutades kõigest IP-aadressi, mis asub andmepaketi päises. IP-aadress on iga hosti jaoks unikaalne. Sellise ülesande täitmiseks defineerib IP andmepakettide ehituse, millega andmeid transporditakse. Samuti määrab IP ära ka meetodid, kuidas andmepakettidele lisatakse andmeid saatva hosti ja andmeid vastuvõtva hosti informatsioon.
Esimene laialt kasutatav versioon IP-st oli IPv4 ("Internet Protocol Version 4"), mille IP-aadressi pikkuseks oli 32 bitti ehk 4 baiti. Uuem IP-protokolli versioon IPv6 omab 128-bitist IP-aadressi ning see loodi asendamaks IPv4, kuna IPv4 korral ei jätku unikaalseid IP-aadresse kiire võrguseadmete arvu kasvu tõttu. IP on kasutusel ka kohtvõrkudes, mitte üksnes internetis.
Internetiprotokolli eesmärk.
Internetiprotokolli funktsioon või eesmärk on liigutada andmepakette läbi vastastikuselt seotud võrkude komplekti. Eesmärgi täitmiseks liigutatakse pakette ühest internetimoodulist teise kuni sihtkohta jõudmiseni. Internetimoodulid asuvad hostides ja lüüsid interneti süsteemis. Paketid saadetakse ühest internetimoodulist teise läbi individuaalsete võrkude IP-aadressi alusel. Seetõttu on internetiprotokolli aadress (IP-aadress) tähtis internetiprotokolli mehhanism, mille abil pakette edastada. 
Andmete edastamisel ühest internetimoodulist teise võib ette tulla olukord, kus andmepaketid on suuremad kui mõne võrgu maksimaalne paketisuuruse läbilaskevõime. Selleks on internetiprotokollil mehhanism, mis tükeldab paketid, et need suudetaks siiski kohale toimetada.
Adresseerimine.
Eristatakse nimesid, aadresse ja teekondi. Nimi näitab, mida otsime. Aadress näitab, kus see otsitav info asub. Teekond näitab, kuidas sinna asukohta jõuda. Internetiprotokoll tegeleb peamiselt aadressidega. Rakenduste protokollide ülesandeks on vastandada nimed aadressidele. Internetimoodulid seavad kohtvõrkude aadressid interneti aadressidele. Lüüside protseduuride ülesandeks on vastandada kohtvõrkude aadressid teekondadeks.
Internetiprotokolli aadressidel on kindel pikkus – neli oktetti ehk 32 bitti (vt IPv4). IP-aadress algab võrgu numbriga, sellele järgneb kohtvõrgus talle vastav aadress. Eristatakse mitut erinevat internetiprotokolli formaati või klassi – A, B, C, D ja E, kus klass A on kujuga 255.0.0.0, klass B kujuga 255.255.0.0, klass C kujuga 255.255.255.0, klass D vahemikus 224.0.0.0–239.255.255.255 ning klass E on mõeldud eksperimentaalseks kasutamiseks. Järgnevas tabelis kujutatud lisainfo eelpool mainitud IP-aadressi klassidest:
Paketi tükkideks jagamine.
Kui võrk, kust pärineb andmepakett, lubab suuremat paketisuurust kui võrk, kuhu andmepakett saadetakse, siis tuleb pakett tükkideks jagada ehk fragmenteerida. Andmepaketile saab märkida "mitte fragmenteerida" – see tähendab, et kui sellist andmepaketti oleks vaja fragmenteerida, siis fragmenteerimise asemel selle andmepaketi saatmine hoopiski tühistatakse. 
Andmepakettide fragmenteerimine ja uuestikoostamine protseduur peab olema suuteline tükeldama andmepakett suvaliseks arvuks tükkideks, mille saab hiljem uuesti kokku panna. Andmepaketi vastuvõtja kasutab tuvastuslahtrit, et tagada samade andmepakettide tükkide kokku kogumine. Andmepaketi tükeldatud tükkide positsiooni andmepaketis määratakse tüki nihke ("offset") välja abil. Andmepaketi tüki nihe ja pikkus määravad ära selle tüki osakaalu kogu andmepaketis. Lahter Lipud (inglise "Flags") määrab ära viimase andmepaketi tüki. Tänu eespool nimetatud väljadele on internetiprotokollil piisavalt andmeid, et andmepakett uuesti kokku koguda.
Andmepaketi ehitus.
Andmepakett koosneb päisest ja saadetisest. Päis sisaldab allika aadressi, sihtkoha aadressi ja muid andmeid, mis aitavad andmepaketti kohale toimetada. Saadetis sisaldab andmeid, mida tahetakse edastada. Paremal joonisel näha andmepaketi ehitus ja vasakul detailne päise ehitus.
Turvalisus.
Internetiprotokolli turvamiseks kasutatakse IPseci. IPsec on internetiprotokolli turvamiseks loodud teenuste ja protokollide kogum, mis pakub täit turvalahendust IP võrgule. Teenuste ja protokollimise kombineerimise teel tagatakse mitmed erinevad turvameetmed. Kuna IPsec töötab samal tasandil IP-ga, saab rakendada IPseci pakutavaid turvameetmeid kõrgemal tasandil olevatele TCP/IP rakendustele ilma lisaturvameetmeid kasutamata. Mõned turvameetmed, mida IPsec pakub:
IPsec koosneb mitmest komponendist, kuid kaks põhilist on järgmised:
IPsec on ühilduv nii IPv4, kui ka IPv6-ga.
Töökindlus.
Internetiprotokolli kasutatakse andmepakettide ühest hostist teise hosti saatmiseks Cateneti võrgu kaudu, mis kasutab lüüse ("gateway"), et ühendada omavahel erinevad võrgud. Need lüüsid suhtlevad omavahel, et kontrollida andmepakette jne GGP protokolli abil. Vahel toimub suhtlus lüüsi või andmepakettide sihtkoha hosti ja lähtekoha hosti vahel, näiteks andmepakettide kohaletoimetamise tõrke korral. Sellise suhtluse jaoks kasutatakse Interneti kontrollsõnumiprotokolli. Seda protokolli kasutatakse juhtudel, kus andmepakett ei jõua sihtkohta, kui lüüs ei saa saadetud andmepaketti selle liigse suuruse tõttu vastu võtta või kui lüüs suudaks andmepakette saata sihtkohta lühemat teed pidi.
Internetiprotokoll ei ole loodud täielikult töökindlana. Interneti kontrollsõnumiprotokoll on kasutusel, et saada tagasisidet hostidevahelise suhtluse kohta, mitte eesmärgiga muuta internetiprotokoll töökindlaks. Andmepakettide kohalejõudmine ja kontrollsõnumite tagasijõudmine pole siiski garanteeritud. Võib juhtuda, et andmepakett ei jõua sihtkohta kohale ja sellest ei anta kuidagi ka saatjale märku. Kui on vaja töökindlat suhtlust (andmepakettide/sõnumite jne saatmist), siis tuleb internetiprotokolli kasutavatel kõrgema kihi protokollidel kasutada enda töökindlusi suurendavaid protseduure.
Interneti kontrollsõnumiprotokoll saadab tõrketeate ainult juhul, kui tegemist on andmepakettidega seonduvaga. Teateid interneti kontrollsõnumiprotokolli kontrollsõnumite kohta ei saadeta näiteks juhul, kui kontrollsõnumile ei tule vastust.
Ajalugu.
Kuna internetiprotokoll on kogu TCP/IP alustala, oleks iseenesestmõistetav, et IP loodi kõige esimesena. Kuid internetiprotokolli loomine ei ole päris standardne. Selle funktsioon defineeriti protokolli valmimisel, kuigi internetiprotokolli kui sellist veel ei olnud defineeritud.
IP väljaarenemise puhul tuleb märkida, et algselt oli internetiprotokoll TCP üks osa. Ametlik versioon IP-st arendati välja 1970. aastatel, kui TCP ja IP eraldati üksteisest – TCP pandi neljandale kihile ja IP kolmandale. Oluline verstapost IP arengus oli RFC 791, internetiprotokolli, loomine 1981. aastal. See standard defineeris IP põhifunktsioonid ja selle karakteristiku.
Internetiprotokoll, mis defineeriti RFC 791 standardiga, oli esimene laialtkasutatav IP versioon. Kuigi see oli esimene, on see siiski nimega IPv4. Ehk esimeseks versiooniks oligi 4. versioon, eelnevalt polnud IP versioone, kuna IP sai eraldiseisvaks siis, kui see eraldati TCP-st. Enne oli TCP-l kolm varasemat versiooni. IPv4 on tänapäevani enimkasutatud IP versioon.
Kuigi IPv4 oli algselt disainitud väga väikses osas praegusest interneti suurusest, on see üllatavalt võimeline. Mõningad lisandid ja muudatused on tehtud, kuidas IP-d kasutatakse tänapäeval, kuid IP tuumaks olev protokoll on jäänud samaks, milline see oli 1980. aastatel. Kuna millegi fundamentaalse nagu IP muutmine nõuab väga suurt arendustööd ja muudatuste elluviimine on raskendatud, ongi IP jäänud samaks.
Kuna IPv4 saab varustada internetti umbes 4,3 × 10^9 aadressiga, siis oli vaja uut IP versiooni, mis suudaks varustada suurema arvu aadressidega. IP uus versioon 6 lubab kasutada 3,4 × 10^38 aadressi.