Internet Protocol (IP)

Cuprinsul capitolului

Adresa IP
        Formatul zecimal al adresei IP
        Formatul binar al adresei IP
    Clase de adrese IP: Clasa A, Clasa B, Clasa C, Clasa D, Clasa E.
        Adrese IP speciale: toti bitii 0, toti bitii 1, loopback.
   
Subretele IP
        Masca de subretea
        Un bun obicei
        Tipuri de subretele: Statice, cu Lungime variabila si Mixte.
    Rutarea IP
        Rutarea directa
        Rutarea indirecta
    Metode de livrare: Uni-, Broad-, Multi- si Anycast
        Broadcast
        Multicast
        Anycast 
    Intraneturi (Adrese IP  Private)
    Datagramele IP
        Formatul datagramei IP

    IP este un protocol standard cu numarul 5: STD 5. Aceste standard mai include ICMP (Internet Control Message Protocol) si IGMP (Internet Group Management Protocol). Statutul sau este necesar. Specificatiile curente ale IP pot fi gasite in RFC-urile 791, 950, 919 si 922, actualizari in RFC 1349.

IP este protocolul care ascunde detaliile referitoare la reteaua fizica prin crearea unei imagini de retea virtuala. Este un protocol pentru livrarea pachetelor nesigur, best-effort si fara conexiune. De retinut ca best-effort inseamna ca pachetele trimise de IP pot fi pierdute, duplicate sau neordonate, dar IP nu va rezolva aceste situatii. Revine in sarcina protocolalelor superioare sa rezolve aceste situatii.

Unul dintre motivele utilizarii unui protocol fara conexiune a fost minimalizarea dependentei de centre de calcul specifice care utilizeaza retele ierarhizate orientate pe conexiune. DoD (U.S. Department of Defense) a intentionat sa dezvolte o retea care sa functioneze chiar si atunci cand unele parti ale tarii ar fi fost distruse. In timpul cutremurelor de pamant, acesta intentie si-a dovedit existenta reala in Internet.

Adresa IP

Formatul zecimal al adresei IP

    Adresa IP este reprezentate printr-un numar intreg fara semn pe 32 de biti (patru octeti) care este de regula scrisa sub forma unei liste de patru intregi fara semn (cate unul pentru fiecare octet) separate prin puncte. Acest format se numeste formatul zecimal al adresei IP. De exemplu, 9.167.5.8 este o adresa valida de Internet. Forma numerica este utilizata de catre softul IP. Corespondenta dintre adresele IP si numele simbolic usor-de-citit, de exemplu myhost.hyperion.ro, este facuta de catre DNS (Domain Name System). 

    Modul de standardizare al adreselor IP este descris in RFC 1166 Internet Numbers. Pentru ca un calculator sa fie identificabil pe Internet, este necesar ca lui sa-i fie atribuita o adresa, adresa IP sau adresa de Internet. Atunci cand un calculator este atasat la mai mult de o retea, el se numeste multi-homed si are cate o adresa IP pentru fiecare interfata de retea.

    Adresele IP constau dintr-o pereche de numere:

adresa IP= <numar retea><numar gazda>

Numarul retelei parte a adresei IP este central administrat de catre InterNIC (Internet Network Information Center) si este unic pe tot Internet.

Spre exemplu adresa IP 128.2.7.9 are numarul de retea 128.2, 7.9 fiind adresa calculatorului gazda. Regulile folosite pentru a imparti o adresa IP in partea de retea si parte ade gazda sunt descrise in continuare.

Formatul binar al adresei IP

 Formatul binar al adresei IP 128.2.7.9 este:

10000000 00000010 00000111 00001001

Adresele IP sunt folosite de catre protocolul IP pentru a identifica in mod unic un calculator pe Internet. (Strict vorbind, o adresa IP identifica o interfata care este capabila sa trimita datagrame IP, iar un sistem poate avea mai multe astfel de interfete. Totusi, Atat gazdele cat si ruterele pot avea cel putin o adresa IP, astfel incat aceasta definitie simplificata este acceptabila). Datagramele IP (Pachetele de date schimbate intre calculatoare) sunt transmise printr-o retea fizica la care este atasata interfata calculatorului gazda si fiecare datagrama IP contine adresa IP sursa si o adresa IP destinatie. Pentru a trimite o datagrama catre o anumita destinatie IP, adresa IP tinta trebuie trandusa (mapata) intr-o adresa fizica. Aceasta poate necesita transmisii prin retea pentru a afla adresa de retea fizica a calculatorului destinatie. Spre exemplu, pe LAN-uri (Local Area Networks) ARP (Address Resolution Protocol) este folosit pentru a traduce adresele IP in adrese fizice MAC (Media Access Control). Primii biti ai unei adrese IP specifica modul cum restul adresei trebuie separata in partea de retea si partea de gazda. Termenul adresa de retea si netID sunt uneori utilizate in loc de numar de retea, dar termenul formal, utilizat in RFC 1166, este numarul de retea (network number). Analog, termenul adresa de gazda (host address) si hostID sunt uneori folosite in locul numarului de gazda.

Clase de adrese IP

Exista cinci clase de adrese IP. Aceste sunt prezentate in figura urmatoare.

    In mod evident, clasa A va fi atribuita retelelor cu numar imens de gazde, iar clasa C de adrese este indicat sa fie utilizata pentru retele cu numar mic de calculatoare host. In ceea ce priveste retelele de dimensiuni medii (acelea cu mai mult de 254 calculatoare sau acele retele unde se asteapta sa fie mai mult de 254 calculatoare in viitor) trebuie sa utilizeze clasa B de adrese. Numarul de retele mici si medii a crescut foarte repede in ultimii ani si a aparut teama ca, daca lucrurile vor continua asa, toate adresele de retea din clasa B vor fi ocupate pana la mijlocul anilor 1990. Acest fapt este cunoscut drept problema epuizarii adreselor IP.

    Se poate observa aici ca impartirea adreselor IP in doua parti conduce la impartirea responsabilitatii privind alegerea adreselor de retea in doua parti. NUmarul de retea este atribuit de catre InterNIC, iar numerele host de catre autoritatea care controleaza reteaua. Dupa cum se va vedea in sectiunea urmatoare, partea de adrese host poate fi de asemenea subdivizata: aceasta impartire fiind controlata de autoritatea care detine reteaua si nu de catre InterNIC.

Adrese IP speciale

Oricare dintre numerele ce compun o adresa IP (numarul de retea si numarul de host) care are toti bitii 0 sau toti bitii 1 are un semnificatie speciala:

Subretele IP

    Datorita cresterii explozive a Internetului, principiul atribuirii adreselor devenise prea inflexibil pentru a permite schimbari usoare ale configuratiei retelei locale. Necesitatea acestor modificari poate apare atunci cand:

Pentru evitarea cererii de adrese IP suplimentare in aceste situatii conceptul de subretele a fost introdus. Impartirea in subretele poate fi facuta sub autoritatea locala, deoarece intreaga retea este in continuare vazuta ca o singura retea de catre celelalte retele.

Partea ce reprezinta numarul host al unei adrese IP este subdivizat din nou intr-un numar de subretea (subnetID) si un numar host (hostID). Astfel adresa completa IP este divizata in:

[ netID ] [ subnetID ] [ hostID ]

    Combinatia [ subnetID ] [ hostID ]este adesea  numita adresa locala sau parte locala a adresei IP.

    Subretelele sunt implementate intr-un mod care este transparent retelelor indepartate. Un host dintr-o retea care are subretele detine toata informatia care ii este necesara despre subreteau sa, in timp ce un host din alta retea nu are nevoie sa cunoasca aceasta informatie (si lui ii este suficienta cunoasterea detaliilor referitoare la subreteaua lui) si nu are acces la aceasta informatie. El vede in continuare calculatoarele din prima retea ca facand parte dintr-o unica retea si priveste partea locala a adresei IP ca pe un numar host.

Impartirea partii locale a adresei IP in numar de subretea si numar host poate fi aleasa fara restrictii de administratorul local, orice bit al partii locale poate fi folosit pentru a forma o subretea.

Masca de subretea

Impartirea este facuta folosind o masca de subretea care este un numar de 32 biti.

Bitii din masca de subretea corespunzatori numarului de retea sunt setati la 1 si nu sunt utilizati. Mastile de subretea sunt de regula scrise ca si adresele IP: fiecare octet este scris in baza zece, octetii fiind separati prin puncte.

Spre exemplu, o retea de clasa B cu subretele, care are o parte locala de 16 biti, poate folosi una dintre urmatoarele scheme:

Exista desigur multe alte posibilitati. De fapt, numarul de subretele si hosturi si necesitatile viitoare trebuie luate in considerare inainte de a defini o subretea. In exemplul anterior pentru o retea de clasa B cu subretele raman 16 biti pentru numarul de subretea si numarul de host. Administratorul are de ales intre definirea unui numar mare de subretele cu numar mic de hosturi sau un numar mic de subretele cu multe gazde.

Un bun obicei

In ceea ce priveste alegerea bitilor alocati numarului de subretea este un bun obicei ca o zona continua dintre cei mai semnificativi biti sa formeze numarul de subretea restul (iarasi o zona continua) fiind atribuiti numarului host. In acest mod se evita surprizele care pot apare datorita modurilor diferite de implementare al suitei TCP/IP, deoarece nu toate aceste implementari sunt flexibile in ceea ce priveste selectia bitilor pentru cele doua subzone ale partii locale a unei adrese IP.

Tipuri de subretele

Exista doua tipuri de subretele: statice si cu lungime variabila. Subretelele cu lungime variabila sunt cele mai flexibile dintre cele doua tipuri. Ce tip de subretea se alege depinde de protocolul de rutare utilizat. In mod natural rutarea IP suporta numai subretele statice datorita largii utilizari a protocolului RIP. Mai nou, versiunea 2-a a RIP suporta si subretele cu lungime variabila.

Rutarea IP

    O functie foarte importanta a stratului IP este rutarea. Ea furnizeaza mecanismul de baza pentru ca ruterele sa poata interconecta retele fizice diferite. Aceasta inseamna ca un host poate functiona simultan ca un host obisnuit si ca ruter.

Un ruter de acest tip este cunoscut drept un ruter cu informatie de rutare partiala, deoarece ruterul are doar informatii despre patru tipuri de destinatii:

  1. Calculatoare host care sunt direct atasate uneia dintre retelele fizice la care ruterul este atasat.
  2. Calculatoare host sau retele pentru care ruterul dispune de definitii explicite.
  3. Calculatoare host sau retele pentru care ruterul a primit un mesaj ICMP de redirectare.
  4. O destinatie precizata (default) pentru orice altceva.

Ultimele doua destinatii permit unui ruter simplu (care detine o foarte mica cantitate de informatie la inceput) sa-si creasca aceasta informatie.

Rutarea Directa

Daca calculatorul host destinatie este atasat unei retele fizice la care este de asemenea atasat si calculatorul sursa, o datagrama IP poate fi trimisa direct, prin incapsularea ei intr-un cadru de retea fizica (physical network frame). Modul acesta de livrare directa se numeste rutare directa.

Rutarea Indirecta

Rutarea indirecta apare atunci cand calculatorul host destinatie nu se afla in aceeasi retea cu calculatorul host sursa. Singurul mod in care informatia poate ajunge la destinatie este via unul sau mai multe gateway-uri IP. De retinut ca in terminologia TCP/IP, termenii gateway si ruter sunt interschimbabili pentru un sistem care executa sarcinile unui ruter.

Adresa primului dintre aceste gateway-uri (primul hop) se numeste o ruta indirecta in contextul algoritmului de rutare IP. Adresa primului gateway este singura informatie necesara calculatorului host sursa.

In anumite cazuri exista mai multe subretele definite in aceeasi retea. Chiar daca calculatorul host este in aceeasi retea cu calculatorul host sursa, daca ele sunt in diferite subretele, atunci mecanismul rutarii indirecte este folosit. Astfel, apare necesitatea unui ruter care sa directioneze traficul intre subretele.

In figura de mai sus calculatorul C are rute directe catre calculatoarele B si D, si o ruta indirecta catre calculatorul A via gateway-ul B.

Metode de livrare: Uni-, Broad-, Multi- si Anycast

    Majoritatea adreselor IP se refera la un singur recipient destinatie, numite de aceea adrese unicast. Conexiunile Unicast sunt conexiuni unu-la-unu. In afara acestor conexiuni mai exista trei alte tipuri de adrese IP speciale catre recipienti multipli. Ele sunt: adrese broadcast, multicast si anycast.

    Dupa cum se observa in figura urmatoare, un broadcast se adreseaza tuturor, multicast numai catorva si anycast numai unui calculator specific disponibil.

    Orice protocol care este fara conexiune poate trimite mesaje broadcast, multicast sau anycast precum si mesaje unicast. Un protocol care este orientat pe conexiune poate folosi numai adrese unicast deoarece conexiunea exista numai intre doua calculatoare.

Broadcast

Exista un numar de adrese care sunt utilizate pentru broadcast  IP. Toate utilizeaza conventia ca toti bitii 1 indica catre toti. Adresele broadcast nu sunt niciodata valide ca adrese sursa, ci numai ca adrese destinatie. Diferitele tipuri de adrese broadcast sunt listate in continuare:

Adresa broadcast limitata

Adresa 255.255.255.255 este utilizata in retele care suporta broadcastul, precum LAN-urile, si se refera la toate calculatoarele din subretea. Nu necesita ca hostul sa cunoasca vreo informatie despre configurarea IP. Toate calculatoarele din reteaua locala vor recunoaste adresa, dar ruterele nu vor trimite niciodata mai departe aceste mesaje. Exista o singura exceptie de al aceasta regula, numita BOOTP forwarding. Protocolul BOOTP utilizeaza adresa broadcast limitata pentru a permita statiilor de lucru fara disk sa contacteze un server de boot. BOOTP forwarding este o optiune de configurare disponibila pe anumite rutere de a face o exceptie pentru datagramele UDP pentru portul 67 (utilizat de protocolul BOOTP). Fara aceasta facilitate, fiecare subretea ar trebui dotata cu un server BOOTP. Totusi, acesta nu este un simplu forwarding (transmitere mai departe) deoarece ruterul are si alt rol in protocolul BOOTP.

Adrese broadcast pentru o retea specificata (Network-Directed Broadcast Address)

    Daca numarul de retea este un numar de retea valabil, reteaua nu este divizata in subretele si bitii numarului host sunt toti 1 (de exemplu, 128.2.255.255), atunci adresa se refera la toate calculatoarele din reteaua specificata. Ruterele trebuie sa trimita mai departe aceste mesaje broadcast cu exceptia situatiei cand sunt configurate altfel. Acest tip de adresa este utilizat in cererile ARP in retele subdivizate.

Adrese broadcast pentru o subretea specificata (Subnet-Directed Broadcast Address)

    Daca numarul de retea este un numar valabil de retea, numarul de sub retea este un numar de subretea valabil si bitii numarului host sunt toti 1, atunci adresa se refera la toate calculatoarele host din subreteaua specificata. Deoarece subreteaua emitentului si subreteaua destinatie pot avea diferite masti de subretea, emitentul trebuie, intr-un mod oarecare, sa afle masca de subretea in uz la destinatie. Broadcastul efectiv este efectuat de catre ruterul care primeste datagrama in subretea.

Adresa broadcast pentru toate subretelele (All-Subnets-Directed Broadcast Address)

    Daca numarul de retea este un numar de retea valabil, reteaua este subdivizata si bitii partii locale sunt toti 1 (de exemplu, 128.2.255.255), atunci adresa se refera la toate subretele retelei specificate. In principiu ruterele pot transmite mesaje broadcast pentru toate subretelele dar nu este necesar sa faca asa. In practica, ele nu o fac.

    Exista cateva circumstante in care astfel de broadcast ar fi dezirabil, si el poate conduce la probleme, in particular daca un calculator host a fost incorect configurat fara masca de subretea. Luati in considerare resursele irosite implicate daca un calculator cu adresa IP 9.180.214.114 dintr-o reta de clasa A subdivizata considera ce reteaua nu a fost divizata si utilizeaza 9.255.255.255 drept adresa broadcast in loc de adresa 9.180.214.255 si toate ruterele din reteaua respectiva respecta cererea de a trimite mai departe cererea catre toti clientii. Daca ruterele trebuie sa respecte adresele broadcast pentru toate subretelele, ele folosesc un algoritm numit reverse path forwarding pentru a impiedica multiplicarea la nesfarsit a mesajelor  broadcast (vezi RFC 922 pentru detalii referitor la acest algoritm).

Multicast

    Broadcastul are un major dezavantaj: lipsa sa de selectivitate. Daca o datagrama IP este difuzata unei subretele, fiecare calculator gazda il va primi si va trebui sa-l proceseze pentru a determina daca protocolul tinta este activ. Daca nu este, datagrama IP este inlaturata. Multicastul evita aceasta supraincarcare prin utilizarea grupurilor de adrese IP.

    Fiecare grup este reprezentat printr-un numar de 28 de biti, care este cuprins intr-o clasa D de adrese. Astfel adresele grupului multicast sunt adrese IP in gama de la 224.0.0.0 la 239.255.255.255. Pentru fiecare adresa multicast exista un set de zero sau mai multe calculatoare host care il asculta. Acest set se numeste host group.  Calculatoarele host nu necesita configurare speciala pentru a fi membre ale unui astfel de grup. Pachetele care sunt trimise unei adrese multicast, sunt trimise numai membrilor acelui grup. Astfel multicastul face posibila stabilirea unei conexiuni unul-la-cativa.

Anycast

    Uneori, aceleasi servicii IP sunt furnizate de servere diferite. Spre exemplu, un utilizator doreste sa descarce un fisier via FTP si fisierul este disponibil pe diferite servere FTP. Dar utilizatorul nu cunoaste care este conexiunea cea mai rapida. Astfel este posibil ca conexiunea cu serverul de la care face descarcarea fisierului sa fie mai lenta decat celelalte.

Calculatoarele host care furnizeaza acelasi serviciu IP pot servi o adresa anycast pentru alte calculatoare care pot solicita serviciul. Conexiunea este facuta cu primul calculator host din grupul de adrese anycast care raspunde. Acest proces garanteaza ca serviciul este asigurat de catre hostul care are cea mai buna conexiune cu clientul. Serviciul anycast va face parte din IPV6.

Intraneturi (Adrese IP  Private)

Un al mod de abordare pentru conservarea spatiului de adrese IP este descris in RFC 1918 Address Allocation for Private Internets. Pe scurt, el relaxeaza regula ca adresele IP sunt unice la nivel global prin rezervarea uni parti din spatiul de adrese pentru retele care sunt utilizate exclusiv in interiorul unei singure organizatii si care nu necesita conectivitate IP la Internet. Exista trei game de drese care au fost rezervate de IANA pentru acest scop:

Orice organizatie poate utiliza orice adrese in aceste game fara nici un fel de autorizare. Totusi, deoarece aceste adrese nu sunt unice global, ele nu pot fi referite de gazde din alte organizatii si nu sunt definite nici unui ruter extern. Ruterele din retele care nu utilizeaza adrese private, in particular acele operate de ISP-uri (Internet service providers), vor filtra tacit toate informatiile privind aceste adrese.

Ruterele dintr-o organizatie care utilizeaza adrese private este de asteptat sa limiteze referirile la adrese private numai la legaturi interne. Ele nu trebuie nici sa faca cunoscute rute catre adresele private ruterelor externe si nici sa trimita mai departe catre ruterele externe datagramele ce contin adrese private. Hosturile care au numai adrese IP private nu au stratul IP de conectare la Internet. Aceasta poate fi dezirabil si poate chiar fi un motiv pentru utilizarea adresarii private. Toate conectarile cu calculatoare externe din Internet trebuie asigurate aplicatii gateway (Proxy-uri).

Datagramele IP

Unitatea de transfer a unui pachet de date in TCP/IP se numeste datagrama IP. Ea este formata dintr-un antet (ce contine informatii pentru IP) si datele propriuzise (singura partea a datagramei IP relevanta protocoalelor de nivel mai mare).

IP poate controla fragmentarea si reasamblarea datagramelor IP. Lungimea maxima a unei datagrame IP este 65,535 octeti. Exista de asemenea o cerinta pentru toate calculatoarele host sa suporte datagrame IP de pana la 576 octeti fara fragmentare. Toate fragmentele unei datagrame au doua parti: antet (practic copiat din datagrama originala) si date. Ele sunt tratate ca datagrame normale in timp ce sunt transportate la destinatie. De notat totusi, ca daca unul dintre fragmente se pierde, toata datagrama este considerata pierduta deoarece  IP nu asigura nici un mecanism de recunoastere, astfel incat restul fragmentelor sunt inlaturate de catre calculatorul destinatie.

Formatul datagramei IP

Antetul datagramei IP are o lungime de cel putin 20 octeti:

Unde:

VERS: versiunea protocolului IP

HLEN: lungimea antetului numarata in unitati de 32 de biti. Acesta nu include campul de date.

Tipul serviciului: este o indicatie a calitati serviciului cerut pentru datagrama IP. Structura octetului acestui camp este schitata in figura urmatoare

unde:

precedenta: este o masura a naturii si prioritatii acestei datagrame:

000 Rutina
001 Prioritar
010 Imediat
011 Flash
100 Flash override
101 Critical
110 Sontrol Internetwork 
111 Sontrol Network

TOS: specifica valoarea tipului de serviciu:

1000 - Intarziere minima
0100 - Debit maxim
0010 - Siguranta maxima
0001 - Cost monetar minim
0000 - Serviciu normal

MBZ: Rezervat pentru utilizare in viitor (trebuie sa fie 0 in afara situatiei in care participa la un experiment de protocoale Internet, care foloseste acest bit). Detalii suplimentare referitoare la tipul serviciului sunt descrise in RFC 1349

Lungime totala: Lungimea totala a datagramei, antet si date, specificata in octeti.

ID: un numar unic atribuit de catre emitent pentru a ajuta la reasamblarea fragmentelor datagramei. Fragmentele datagramei vor avea acelasi numar de identificare.
FLG: diferita fanioane

unde:

    0    - este rezervat si trebuie sa fie zero
    DF - Don't Fragment (a nu se fragmenta):
        0 inseamna ca este permisa fragmentarea
        1 inseamna ca nu este permisa fragmentarea
    MF - More Fragments (mai multe fragmente)
        0 inseamna ca este ultimul fragment al unei datagrame
        1 inseamna ca nu este ultimul fragment al datagramei

Fragment Offset: Se utiliseaza numai cu datagrame fragmentate, pentru a ajuta la reasamblarea datagramei complete. Valoarea acestui camp este numarul de unitati de 64 biti (antetul nu este numarat) care sunt continute in fragmentele anterioare. Numai la primul fragment aceasta valuare este intotdeauna 0.

TTL: Time to Live. Specifica timpul de calatorie (in secunde) permis acestei datagrame. Fiecare  ruter prin care trece datagrama trebuie sa scada din acest camp timpul sau de procesare pentru aceasta datagrama. In realitate un ruter poate procesa o datagrama in mai putin de 1 secunda, si astfel el va scadea 1 din acest camp, TTL numarand hopurile in loc sa masoare timpul efectiv. Cand valoarea atinge 0, se presupune ca aceasta datagrama a calatorit intr-o bucla inchisa si este inlaturata. Valoarea initiala trebuie fixata de protocolul de nivelul cel mai mare care creaza datagrama.

Protocol: De fapt este vorba despre numarul protocolului. Indica protocolul de nivel superior caruia trebuie livrata aceasta datagrama. Cateva valori importante sunt:

0 Rezervat
1 Internet Control Message Protocol (ICMP)
2 Internet Group Management Protocol (IGMP)
3 Gateway-to-Gateway Protocol (GGP)
4 IP (IP encapsulation)
5 Stream
6 Transmission Control Protocol (TCP)
8 Exterior Gateway Protocol (EGP)
9 Private Interior Routing Protocol
17 User Datagram Protocol (UDP)
41 IP Version 6 (IPv6)
50 Encap Security Payload for IPv6 (ESP)
51 Authentication Header for IPv6 (AH)
89 Open Shortest Path First

    Intreaga lista se poate gasi in STD 2 Assigned Internet Numbers.

Suma de control a antetului: Este o suma de control referitoare numai la antete. Ea nu include datele. Pentru a calcula suma de control a antetului programele de retea trateaza antetul ca o succesiune de numere pe 16 biti. Softul de retea utilizeaza aritmetica in complement fata de 1 pentru a aduna acest sir de numere pe 16 biti. Cand hostul emitent calculeaza suma de control, el trateaza campul sumei de control a antetului ca si cand ar contine numai zerouri.  Suma rezultata astfel este apoi complementata fata de 1 si este memorata in campul sumei de control a antetului.

Daca suma de control nu se potriveste continutului, datagrama este inlaturata deoarece cel putin un bit al antetului a fost modificat, si datagrama poate chiar sa fi ajuns la o alta destinatie.

Adresa IP a sursei: Adresa pe 32 de biti a calculatorului care a emis aceasta datagrama.

Adresa IP a destinatiei: Adresa pe 32 de biti a calculatorului destinatie pentru aceasta datagrama.

Optiuni: Este un camp de lungima variabila. Unei implementari a IP nu i se cere sa fie capabila de a genera optiuni in datagramele pe care le creaza, dar toate implementarile IP trebuie sa poata procesa datagrame continand optiuni. Optiunile sunt de lungime variabila. Pot exista zero sau mai multe optiuni. Exista doua formate ale optiunilor. Ambele formate depind de valoarea numarului optiunii gasit in primul octet. 

Tip: Octetul de tip are aceeasi structura in ambele cazuri:

unde:
fc - Flag copy.  Indica daca campul optiune trebuie copiat (1) sau nu (0) atunci cand datagrama este fragmentata.

clasa: Optiunea clasa este un intreg fara semn pe 2 biti cu semnificatia:

0 control
1 rezervat
2 depanare si masuratori
3 rezervat

Numarul optiunii: Este un intreg fara semn pe 5 biti.

0 sfarsitul listei de optiuni. Are o clasa 0, bitul fc este setat la 0 si nu exista octet de lungime sau date. Adica lista de optiuni este terminata printr-un octet X'00'. Este necesar daca lungimea antetului IP (care este multiplu de 4 octeti) nu se potriveste cu lungimea reala a optiunilor
1 Nici o operatie (NOP). Are clasa 0, bitul fc nu este setat si nu exista octet de lungime sau date. Adica, un X'01' este NOP. Poate fi folosit pentru alinierea campurilor in datagrama.
2 Securitate. Are clasa 0, bitul fc este setat si exista octet de lungime cu o valoare 11 si este urmat de 8 octeti de date. Se foloseste pentru informatii de securitate necesare DoD a USA.
3 Loose source routing. Are o clasa 0, bitul fc este setat si are un camp de date de lungime variabila.
4 Internet time stamp. Are o clasa 2, bitul fc nu este setat si lungimea totala poate fi de pana la 40 octeti.
7 Record route. Are o clasa 0, bitul fc nu este setat si exista date de lungime variabila.
8 Stream ID. Are o clasa 0, bitul fc este setat, octetul lungime are o valoare 4 si un singur octet de date. Se foloseste cu sistemul SATNET.
9 Strict source routing. Are o clasa 0, bitul fc este setat si exista camp de date cu lungime variabila.

lungimea: Contine lungimea in octeti a optiunii inclusiv octetii tip si lungime.

Datele optiunii: Contin date relevante pentru optiune

unplutura: Daca se foloseste o optiune, datagrama este completata cu octeti cu valoare zero pana la multiplu de 4 octeti.

datele: Datele continute in datagrama sunt transmise protocolului de nivel superior specificat in campul protocol.

Cornel Mironel Niculae, 2004-2005

25-Mar-2008