IP "carausul" internetului

      Asa cum spuneam si in articolul din numarul 20 al revistei (din ianuarie 2001), Internetul este cel mai cunoscut si utilizat internet (atentie la “i”), iar un internet este o retea de retele. El are la baza suita de protocoale TCP/IP. Este greu sa spui ce protocol este cel mai important, fiecare avindu-si rolul sau bine determinat. Totusi protocolul IP are o importanta fundamentala prin aceea ca el realizeaza interconectarea retelelor care alcatuiesc Internetul.

      Notiunea de interconectare a retelelor are si o conotatie istorica. Mai intii a fost calculatorul. Dupa cum se stie au fost mai multe firme care au construit si pus in vinzare calculatoare, unele dintre ele “asamblate in jurul” aceluiasi tip de procesar (asadar, compatibile intre ele) iar altele “in jurul” unor procesoare principial diferite intre ele (deci, incompatibile).

      Ca o dezvoltare conforma cu necesitatile societatii au urmat construirea de retele de calculatoare. Si aici au fost mai multe firme care au dezvoltat propriile lor tipuri de retele, bazate pe propriile standarde, ca urmare a unor studii si cercetari in laboratoare proprii sau prin parteneriate.

      In continuare, ca o dezvoltare fireasca, impusa de necesitati, a aparut nevoia de interconectare a retelelor. Problemele au aparut atunci cind trebuiau conectate retele bazate pe principii diferite (Ethernet, FDDI, ATM, etc). Asa a luat nastere, practic, protocolul IP, care, am putea spune, ca stie “mai multe limbi straine” – specifice fiecarui tip de retea.

      Functiile de baza ale protocolului IP sunt:

  1. Definirea unitatilor de baza pentru transmisiile pe Internet (datagrame)
  2. Definirea planului de adresare Internet
  3. Circulatia datelor intre nivelul acces retea si nivelul transport pentru fiecare statie
  4. Directionarea datagramelor catre calculatoarele destinatie
  5. Fragmentarea si reasamblarea datagramelor.

      Sa le luam pe rind.

1. Definirea datagramelor Protocolul IP defineste unitatile de baza a transmisiei ca: datagrama IP. Acestea, ca si majoritatea tipurilor de pachete de date, sunt formate dintr-un header (antet) urmat de un numar de octeti de date. Prezentam mai jos structura unei datagrame:

  • 4 biti – Versiunea – identifica versiunea utilizata a protocolului IP (versiunea actuala fiind V4, uneori denumita si IPv4). Prin verificarea valorii acestui camp, softurilr IP pot elimina datagramele care folosesc versiuni IP incompatibile, evitind astfel o interpretare eronata a intregului pachet. In acest caz se raporteaza o eroare.
  • 4 biti – Lungime Antet (IHL – Internet Header Length) – S-a stabilit ca antetul datagramei sa fie multiplu de 32 biti (sau 4 octeti). Fara optiuni speciale (descrise mai jos, in acest articol) un antet are, in mod normal, 20 octeti (adica 5 blocuri de 4 octeti). Ca urmare, acest camp va contine, de cele mai multe ori, valoarea 5. Mai exact, valoarea acestui camp este numarul binar 0101. Datele incapsulate in datagrama urmeaza imediat dupa antet. Examinind campul Lungime Antet, se poate determina intotdeauna, cu exactitate, unde se gasesc datele continute de datagrama. Putem determina primul octet de date cu formula: Inceput date = Primul octet din datagrama + (IHL*4)
  • 8 biti – Tip Serviciu (TOS - Type Of Service) – Acest camp este impartit, la rindul lui, in 6 subcimpuri:

    biti

    semnificatie

    0-2

    prioritate

    3

    intirziere

    4

    debit

    5

    siguranta

    6

    cost

    7

    nefolosit

          Aceste subcampuri permit programatorului sa stabileasca prioritatile pentru pachetul IP. Echipamentul de retea, citind valoarea acestui camp, poate lua decizii corecte de gestiune a livrarilor de date. Dupa cum se stie, in Internet, circula nu numai pachete de date ci si pachete de control (informatii de routare, pachete SNMP, etc). Setind corect acesti parametri se pot acorda prioritati diferite pachetelor de control fata de cele de date.

  • 16 biti – Lungime Pachet – Specifica lungimea totala a pachetului IP, inclusiv antetul. Aceasta lungime este data, in acest caz, in octeti si nu in cuvinte de 4 octeti, ca in cazul campului Lungime Antet. Avand 16 biti putem spune ca dimensiunea teoretica maxima a unei datagrame este de 65.535 octeti. Definind o valoare reala pentru dimensiunea datagramelor trebuie sa tinem cont de nivelul legatura de date al retelei – nivel care incapsuleaza diferit datagramele pentru tipuri diferite de retele. Fiecare tip de retea defineste o valoare pentru dimensiunea maxima a unui pachet. Aceasta limita se numeste unitate maxima de transfer a retelei (MTU – Maximum Transfer Unit). Astfel, retelele Ethernet au un MTU de 1500 octeti, Token Ring seteaza MTU la 4464 octeti; alte tipuri de retea avind valori mult mai mici – mai mici chiar de 128 octeti. Daca o aplicatie incearca sa transporte un pachet IP mai mare decit MTU, se produce fragmentarea datelor, la destinatie urmind sa se produca un proces invers, de reasamblare a pachetelor. Dar despre aceste procese, mai in detaliu, mai tirziu.
  • 16 biti – Identificarea – Acest cimp, impreuna cu campurile de adrese si protocol, permite identificarea diferitelor fragmente pe parcursul unei reasamblari, de catre hostul receptor.
  • 2 biti – Indicatori – Sunt, practic, 2 indicatori:
    • DF – Don’t Fragment – pozitionat pe “1” interzice fragmentarea,
    • MF – More Fragment – pozitionat pe “0” indica faptul ca fragmentul curent este ultimul.
  • 14 biti – Offset Fragment – indica pozitia relativa a datelor continute in acest fragment in raport cu primul fragment emis.
  • 8 biti – Timpul de Viata (TTL – Time To Live) – Arata cat timp poate “trai” o datagrama. A fost introdus pentru a impiedica datagramele sa “rataceasca” prin Internet sau sa bucleze. Fiecare router, dintre sursa si destinatie, decrementeaza acest camp cu o unitate, la sosirea datagramei. La plecarea ei (apre destinatie sau alt router) campul se decrementeaza cu o valoare egala cu numarul de secunde cat pachetul a stationat in bufferul routerului. Majoritatea datagramelor au valoarea initiala a TTL egala cu 30. Atunci cand TCP/IP distruge un pachet care are TTL=0, sursa este anuntata printr-un mesaj care foloseste ICMP (Internet Control Message Protocol).
  • 8 biti – Protocol – indica protocolul de nivel superior care a creat datele incapsulate in datagrama. Prezentam mai jos, un tabel cu valorile posibile

    Protocol

    Valoare

    zecimal

    binar

    ICMP

    1

    00000001

    IGMP

    2

    00000010

    TCP

    6

    00000110

    UDP

    17

    00010001

  • 16 biti – Suma de Control a Antetului – Aceasta sume este calculata numai pentru campurile antetului IP (nu depinde de datele din pachet). Suma de control pentru datele incapsulate este calculata de protocoalele de nivel superior, care au creat datele respective. In cazul unei datagrame eronate, protocolul IP nu trebuie sa trimita emitatorului nici un mesaj de eroare. Protectia datelor revine protocolului de transport.
  • 64 biti – Adresele IP Sursa si Destinatie – Fiecare adresa are cate 32 de biti (4 octeti) Aceste adrese sunt, practic, cele mai importante date din antetul unei datagrame si sunt utile pentru ajungerea pachetului la destinatie precum si in cazul unui eventual raspuns.
  • optiuni IP – au o lungime variabila (intre 0 si 20 octeti). Prezenta sau absenta acestor optiuni poate fi determinata prin examinarea campului IHL. Optiunile ofera profesionistilor posibilitatea de a testa si depana anumite aplicatii de retea, controlind modul in care reteaua fragmenteaza si ruteaza pachetele IP.

      Am prezentat, in acest articol, prima dintre functiile protocolului IP. A doua, adresarea Internetului, a fost tratata in articolul “Ipv6 – acelasi DNS cu alta palarie” din numarul 28 al revistei, precum si in articolul “DNS – acolo unde incepe Internetul” din numarul 22. Nu le mai repetam aici. Vom continua, in numarul viitor, cu celelalte functii ale protocolului IP.