Internet Protocol

**Intertīkla protokols**, **Interneta protokols** jeb **IP** () ir tīkla slāņa datu pārraides protokols, kuru lieto internetā. Tas ir galvenais protokols, kas nodrošina interneta integritāti (internetam tiek lietotas daudzas, dažādas, savstarpēji nesavienojamas fiziskās komunikāciju tehnoloģijas, teorētiski arī augšējo līmeņu protokoli varētu būt daudzi un nesavietojami (taču tādi netiktu cauri ugunsmūriem (tāpēc tam ir mazāka nozīme))).

Augšējā līmeņa protokolu (TCP, UDP, utt) dati tiek ievietoti IP paketēs, kuras tālāk nosūta uz apakšējā līmeņa protokolu (ethernet, PPP, utt). IP pakete satur datus par to, no kurienes tā nāk (*source adress*) un uz kurieni to sūtīt (*destination adress*). Pirms paketes nosūtīšanas nav nepieciešama nekāda speciāla sagatavošana (atšķirībā no savienojumu (*connection*) bāzētiem tīkliem)).

Tā, kā IP nodrošina protokola abstrakciju (augstāko līmeņu protokoliem nav nepieciešams zināt kādus apakšējā līmeņa protokolus lieto datu pārsūtīšanai), to var lietot heterogēnos tīklos (tur kur ir lietotas vairākas datu pārraides tehnoloģijas), jo tas neietekmē augšējā līmeņa protokolus. Dažādiem kanāla slāņa protokoliem var būt dažādas adresācijas metodes (un dažiem var nebūt nekādas). Tas rada nepieciešamību pārveidot IP adresi kanāla slāņa protokola adresē, šādiem mērķiem lieto ARP protokolu.

Intertīkla protokols negarantē pakešu nogādi līdz galam. Vienīgā lieta, ko IP pārbauda ir paketes headera kontrolsumma, ja tā neatbilst, paketi izmet. Paketes otrā galā var pienākt sajauktā secībā, var dublēties, var nepienākt nemaz (*packet loss*). Šīs problēmas risina transporta slāņa protokoli.

Ja transports slāņa protokols piegādā datus pārāk lielos gabalos (lielāki kā maksimālais pieļaujamais kanāla slāņa paketes izmērs), IP nodrošina fragmentāciju. (sašķeļ datus pa vairākām paketēm). Šādus fragmentus IP pēc tam sakārto sākotnējā secībā.

## Adreses un maršrutēšana
Sarežģītākās un nozīmīgākās intertīkla protokola daļas ir adresācija un maršrutēšana (*routing*).

### Adresācija
:*Galvenais raksts [[IP adrese]].*
Pašreizējā IP versijā (IPv4) lieto 32 bitu garas adreses, kuras parasti pieraksta formā a.b.c.d, kur a, b, c un d ir skaitļi robežās no 0 līdz 28-1 (255). Jaunākajā IP versijā (IPv6) lieto 128 bitu garas adreses, kuras parasti pieraksta formā a:b:c:d:e:f:g:h, kur a-g ir heksadecimāli skaitļi robežās no 0-ffff. IPv4 ir iespējamas 232 (apmēram 4 miljardi) adrešu, no kurām liela daļa ir rezervētas (un nav pieejamas). Bažas par to, ka beigsies IP adreses, radās jau 20. gadsimta 90. gadu vidū, tāpēc tika uzsākta IPv6 protokola izstrāde. IPv6 ir iespējamas 2128 adreses. IPv4 adreses pagaidām (2007. gada jūlijs) vēl nav beigušās (galvenokārt CIDR un NAT dēļ), bet ar laiku tās tomēr beigsies.

IP adresi (kas ir 32 bitu skaitlis) loģiski sadala 2 daļās: tīkla adrese (*network address*) un datora adrese (*host address*). Šī dalījuma vietu nosaka tīkla maska (*subnet mask*), kas arī ir 32 bitu skaitlis, kam noteikts skaits pirmo bitu ir vieninieki. Piem. ja ir IP adrese 192.168.0.5 un tīkla maska 255.255.255.0, (bināros skaitļos būtu 11000000 10101000 00000000 00000101 un 11111111 11111111 11111111 00000000 attiecīgi), tad tīkla adrese ir 192.168.0 un datora adrese ir 5. Tīkla adreses, kopā ar tīkla masku var pierakstīt arī norādot tīkla pirmo adresi un vieninieku bitu skaitu tīkla maskā, kurus atdala ar slīpsvītru, iepriekšējā piemērā definētā tīkla adrese būtu 192.168.0.0/24. Pirmo un pēdējo tīklā ietilpstošo adresi nevar lietot datoriem, jo tām ir īpaša nozīme. Pēdējā adrese (192.168.0.0/24 tīklā tā būtu 192.168.0.255) ir *broadcast* adrese. Visu, ko sūta uz to adresi, saņem viss tīkls (piemērā - visi datori no 192.168.0.1 līdz 192.168.0.254). Pirmā adrese ir tīkla adrese un tā attiecas uz visu tīklu. Lietojot mazākus *subnetus*, šo adrešu īpatsvars palielinās. Piem., ja ir tīkls 192.168.2.64/29 (adreses 192.168.2.64-192.168.2.71, tīkla maska 255.255.255.248), tad lietojamās adreses ir no 65 līdz 70 un tādas te ir 6, adrese 64 ir tīkla adrese un adrese 71 ir *broadcast adrese*.

#### IPv4
:*Galvenais raksts [[IPv4]].*
IP 4 versija tika apstiprināta 1981. gadā (rfc791). IPv4 šobrīd ir dominējošais tīkla slāņa protokols internetā. Te lieto 32 bitu garas adreses. Sākumā likās, ka tas ir ļoti daudz, taču jau 20. gadsimta 90. gados tās sāka beigties. Vēlāk sāka lietot bezklases starpdomēnu maršrutēšanu (*Classless Inter-Domain Routing*, *CIDR*), kas ļauj veidot jebkāda izmēra apakštīklus (*subnet*) (pirms tam pieejamie tīklu izmēri bija 2^24, 2^16 un 2^8 adreses) un NAT (*Network Adress Translation*), kas ļauj aiz vienas reālās adreses izvietot vairākus datorus (teorētiski līdz 2^16 gabalus), taču tiem datoriem vairs nav iespējams piekļūt no ārpuses.

#### IPv6
:*Galvenais raksts [[IPv6]].*
IP 6 versija tika apstiprināta 1998. gadā (rfc2460). IPv6 lieto 128 bitu adreses. IPv6 galvenā funkcija bija aizstāt esošo IPv4 protokolu, kad tam beigsies adreses. Tam bija arī citas papildu iespējas, kuras to ieviešanas laikā nebija pieejamas IPv4, taču ar laiku tās ir pievienotas IPv4. Tā, kā IPv4 adreses vēl nav beigušās (2007. gada jūlijs), IPv6 izplatība ir neliela.

### Maršrutēšana
Maršrutēšanu lielākoties realizē pārsūtot ienākošās paketes tālāk, saskaņā ar ierakstiem dinamiski atjaunotā maršrutēšanas tabulā (skatoties pēc *destination adress*). Datoriem, kam ir tikai viens pieslēgums pie interneta, parasti tā tabula ir statiska - uz adresēm, kas atrodas lokālajā subnetā datus sūta tieši (uz attiecīgo 2. līmeņa adresi), visām pārējām adresēm paredzētās paketes sūta uz *default gateway*, kas ir tuvākais maršrutizētājs (*router*).

IP adresi (kas ir 32 bitu skaitlis) loģiski sadala 2 daļās: tīkla adrese (*network address*) un datora adrese (*host address*). Rūteri interesējas tikai par tīkla adresēm. Lielajiem interneta *backbone* rūteriem atmiņā ir jātur visas neatkarīgi iespējamās tīkla adreses. Palielinoties nesaistāmu tīkla adrešu skaitam (ja vairāki tīkli ir pieslēgti ar vienu pieslēgumu un to adreses ir secīgas (piem. 112.112.129.0/24, 112.112.130.0/24, 112.112.131.0/24 un 112.112.132.0/24 no ārpuses var noadresēt arī kā 112.112.129.0/22 un tālākajiem rūteriem pietiek ar vienu ierakstu 4 vietā)). Ekonomiskāka IP adrešu izmantošana palielina slodzi un *backbone* rūteriem.

Rūteriem ir 2 vai vairāk tīkla interfeisi (tīklakartes). Katram no tiem ir sava IP adrese un katrs pieder pie sava tīkla (jo rūtera funkcija ir sasaistīt kopā tīklus). Vēl rūterim ir tabula, kas satur informāciju par to, kādus tīklus var sasniegt caur kuru interfeisu. Tīklu skaits parasti ir lielāks par interfeisu skaitu. Lai sasniegtu tīklus, kuri nav definēti tajā tabulā, lieto *default route*, tas ir definēts nākamais rūteris uz kuru pārsūta paketes, kuru mērķa tīklam nav atbilstoša ieraksta tabulā.

## Atsauces