FACULATEA DE ELECTRONICĂ, TELECOMUNICAȚII ȘI TEHNOLOGIA INFORMAȚIEI
REȚELE DE CALCULATOARE
PROTOCOALE DE INTERNET
ANCUȚA IONUȚ-ALEXANDRU
CIUCĂ MARIA- MĂDALINA
MILCA MIHAELA-ELENA
PISTOL BOGDAN
441A
2014-2015
1.Intrducere....................................................................pag.3
2.Relația cu alte protocoale............................................pag.4
3.Modele de operații.......................................................pag.6
4.Gateways.....................................................................pag.9
5.Formatul header-elor Internet.....................................pag.11
6.Interfețe.......................................................................pag.14
7.Concluzii și exemple...................................................pag.17
8.Bibliografie..................................................................pag.21
Protocolul internet a fost conceput pentru a fi folosit in retele de comunicatii interconetate,
bazate pe schimbul de pachete. Protocolul internet ofera posibilitatea de a transmite blocuri de
date, numite datagrame, de la sursa la destinatie, unde sursele si destinatiile sunt host-uri ce
pot fi identificate printr-o adresa de lungime fixa. De asemenea, protocolul internet permite
fragmentarea si realcatuirea a datagramelor mai mari, daca este necesar, pentru a fi transmise
prin retele cu “pachete mici”.
Scopul protocolului internet este limitat la a oferi functiile necesare cu care sa livreze pachete
de biti (datagrame) de la o sursa la o destinatie printr-un sistem interconectat de retele. Nu
exista un mecanism pentru a imbunatati calitatea transimisiunii end-to-end, controlul fluxului,
secventierea, sau alte servicii commune protocoalelor host-to-host. Protocolul internet se
bazeaza pe serviciile retelelor pentru a oferi diverse tipuri de calitate ale serviciului (QoS).
Acest protocol este apelat de protocoale host-to-host intr-un mediu internet. Acest protocol
apeleaza protocoale locale pentru a transmite datagramele la urmatoarea poarta (gateway) sau
host-ul destinatie.
De exemplu, un modul TCP ar apela modulul internet pentru a prelua un segment TCP
(incluzand antetul TCP si informatia) ca si portiunea de date dintr-o datagrama internet.
Modulul TCP ar furniza adresa si alti parametrii in antet, modulului internet ca argumente ale
apelului. Modulul internet, apoi creaza o datagrama si cheama interfata retelei locale pentru a
transimte datagrama.
Protocolul internet implementeaza doua functii de baza: adresare si fragmentarea.
Modulele internet folosesc adresele aflate in antetul internet pentru a transmite datagramele
catre destiantie. Selectia unei cai pentru transmitere se numese rutare (routing).
Modulele internet folosesc campuri din antet pentru a fragmenta si realcatui datagramele cand
este necesara transmisiunea prin retele cu “pachete mici”.
Modelul de operatiunea este acela ca modulul internet se regaseste in fiecare host participant
la comunicatii internet si in fiecare poarta care interconecteaza reteaua. Aceste module impart
reguli commune de interpretare a campurilor adresa si pentru fragmentare si realcatuire a
datagramelor. In plus, aceste module (in special portile) au proceduri pentru a lua decizii in
rutare si in alte functii.
Protocolul internet trateaza fiecare datagrama ca o entitate independent nelegata de orice alta
datagrama. Nu exista conexiuni sau circuite logice (virtuale sau de alt fel).
Tipul de serviciu (ToS – Type of Service) este folosit pentru a evidentia calitate serviciului
dorit. Tipul de serviciu este un set de parametrii abstract sau generalizat, care caracterizeaza
posibilitatile de servicii puse la dispozitie de retelele care alcatuiesc internetul. Aceasta
indicare a tipului de serviciu este folosit de catre porti pentru a alege parametrii de
transmisiune actuali pentru a retea anume, reteaua ce va fi folosita pentru urmatorul salt, sau
urmatoarea poarta pentru a ruta o datagrama.
Timpul de viata (TTL – Time to Live) este o indicare a limitei superioare a duratei de viata a
unei datagrame. Este setat de catre emitatorul datagramei si este redus in punctele din ruta
unde este procesata. Daca timpul de viata ajunge la zero inainte ca datagrama sa ajunga la
destinatie, aceasta este distrusa. Timpul de viata poate fi gandit ca o limita de timp de
autodistrugere.
Optiunile ofera functiile de control necesare sau folositoare in unele situatii dar optionale
pentru majoritate comunicatiilor comune. Optiunile includ posibilitatea unor timestamp-uri,
securitate si rutare speciala.
Antetul de control (Header Checksum) verifica informatia folosita in procesarea
datagramelor, ca a fost transmita correct. Informatia poate contine erori. Daca antetul de
control sugereaza o eroare, datagrama este respinsa de entitatea care a detectat eroarea.
Protocolul internet nu faciliteaza o comunicare sigura. Nu sunt confirmari nici end-to-end si
nici salt-cu-salt (hop-by-hop). Nu exista control al informatiei, numai un antet de control. Nu
exista retransmisiuni. Nu exista un control al fluxului.
Erorile detectate pot fi transmise prin ICMP (Internet Protocol Control Message) care este
implementat in modulul IP.
Urmatoarea diagrama ilustraza pozitia protocolului internet in striva TCP/IP.
. . .
. . .
Telnet FTP TFTP . . .
TCP Telnet . . .
Protocolul Internet & ICMP
Protocolul Retelei Locale
APLICATIE
TRANSPORT
INTERNET
RETEA
Protocolul internet se leaga pe de o parte cu protocoalele de nivel mai inalt host-to host si pe
de alta parte cu protocolul retelelor locale.
Nivelul aplicatie este unde aplicatiile creaza informatia si comunica aceasta informatie cu
alte aplicatii din acceasi gazda sau alta. Aplicatiile, sau procesele, se folosesc de servicii
oferite de nivelele inferioare, in special de niveul Transport, care furnizeaza legaturi sigure
sau nesigure cu alte procese. Partenerii implicati in comunicare sunt caracterizati de
arhitectura aplicatie, cum ar fi client-server sau peer-to-peer. Acesta este nivelul in care
opereaza toate protocoalele de nivel inalt. Cum ar fi FTP, SSH, Telent, HTTP. Procesele sunt
adresate prin port-uri care in esenta reprezinta servicii.
Nivelul transport realizeaza comunicare host-to-host fie pe acelasi host sau host-uri diferite
sau pe retele locale sau retele separate prin routere. Acesta ofera un canal pentru nevoile de
comunicare ale aplicatiilor. UPD este protocolul nivelului de transport, de baza, oferind un
serviciu baza pe datagrame nesigur. TCP ofera un control al fluxului si o comunicare bazata
pe conexiune, si o transmisiune sigura.
Nivelul internet are rolul de a face schimb de datagrame intre limitele retelei. Ofera o
interefata uniforma de comunicare ce ascunde topologia actuala a retelei. Este astfel
considerat nivelul care realaizeaza interconectare. Principalul protocol este protocolul Internet
(IP).
Nivelul retea defineste metodele de comunicare in reteaua locala in care host-ul comunica
fara rutere. Aceste nivel include protocoale folosite pentru a descrie topologia retelei si
interfetele necesare pentru a transmite datagramele nivelului internet.
Modelele de operații folosite pentru transmiterea diagramelor de la o aplicație de program la
alta este ilustrată de parcurgerea următorilor pași:
-Presupunem că transmiterea implică doar o singura poartă de ieșire(gateway) intermediară.
-Aplicația de program care transmite informația pregătește datele și solicită prin modul
internet local trimiterea acestor date ca o datagramă și pasează adresa de destinație și alți
parametri ca argumente ale apelului.
-Modulul internet pregătește un antet al datagramei și atașează datele la acesta. Modulul
internet determină o adresă de rețea locală pentru adresa de internet, în acest caz, este adresa
de gateway.
-Acesta trimite datagrama și adresa de rețea locală către interfața de rețea locală.
-Interfața de rețea locală creează antetul (header-ul) de rețea și atașează datagrama la acesta
iar apoi trimite rezultatul prin intermediul local.
-Datagrama ajunge la o poartă gazdă inscrisă în antetul rețelei locale, interfața de rețea locală
împarte acest antet și apoi întoarce datagrama la modulul internet. Modulul internet determină
de la adresa de internet ca datagrama trebuie să fie transmisă la o altă gazdă într-o a doua
rețea. Modulul internet determină o adresă local pentru gazda destinație. Acesta solicită pe
interfața de rețea locală să se trimită datagrama.
-Această interfață de rețea locală creează un antet al rețelei locale și atașează datagrama
transmitând rezultatul la destinația gazdă.
-În acestă gazdă destinație, datagrama este preluată de pe antetul local de interfața rețelei
locale și transmisă la modulul internet.
-Modulul internet determină faptul că datagrama este pentru o anumită aplicație din acestă
gazdă. Ea transmite datele la aplicația de program ca răspuns la un apel de sistem, indicând
adresa sursă și alți parametri ca rezultate ale apelului.
Scopul protocoalelor de internet este de a muta datagrame printr-un set de rețele
interconectate. Acest lucru se face prin trecerea datagramelor de la un modul internet la altul
până se ajunge la destinație. Modulele de internet se găsesc în gazdele și porțile din sistemul
internet. Datagramele sunt rutate de la un modul internet la altul prin intermediul rețelelor
individuale, pe baza interpretării unei adrese de internet. Astfel, un element important al
protocoalelor de internet este adresa de internet.
În transmiterea mesajelor de la un modul internet la altul, datagramele pot avea nevoie să
traverseze o rețea al cărei dimensiune maximă a pachetului este mai mică decât dimensiunea
datagramei. Pentru a depăși această dificultate, un mecanism fragmentare este prevăzut în
protocol internet.
Adresarea
Trebuie să se facă o distincție între nume, adrese și rute. Un nume indică ceea ce căutăm. O
adresă indică unde se afla ceea ce cătăm. O ruta indică cum să se ajung acolo. Protocol
internet se ocupă prima dată de adrese, aceasta fiind sarcina de nivel superior pentru a se face
maparea de la nume la adrese. Modulul internet mapează adresele de internet la adresele
locale,astfel fiind sarcina de nivel inferior a procedurilor pentru a face maparea de la adrese
locale la rute.
Adresele au o lungime de fix patru octeți (32 biți). O adresă începe cu un număr de rețea,
urmat de adresa locală. Există trei formate sau clase de adrese internet: în clasa A,cel mai
mare bit de comandă începe cu zero, următorii 7 biți sunt ai rețelei, iar ultimii 24 de biti sunt
ai adresei locală; în clasa B, primul bit este 1, următorul începe de la 0, ceilalți 14 biți sunt biți
de retea și ultimii 16 biți sunt ai adresei locale; în clasa C,primii doi biți sunt 1 iar al treilea
începe de la 0, următorii 21 de biți sunt de rețea și ultimii 8 biți sunt ai adresei locale. Pe
lângă aceste trei tipuri de adrese mai există și adresele clasei D care sunt rezervate pentru
multicasting iar cele ale clasei E sunt rezervate pentru o utilizare viitoare,sunt experimentale;
acestea nu trebuie să fie folosite ca şi adrese de host.
[1]
Trebuie să avem grijă la maparea adreselor de internet la adresele locale; o singură gazdă
fizică trebuie să fie în măsură să acționeze ca și cum ar fi mai multe gazde distincte în măsura
să folosească mai multe adrese de internet distincte. Unele gazde vor avea, de asemenea, mai
multe interfețe fizice(multi-homing) . Adică, trebuie să se prevadă ca o gazdă să aibă mai
multe interfețe fizice la rețea iar fiecare sa aibă câteva adrese internet logice.
Fragmentarea
Fragmentarea unei datagrame internet este necesară atunci când provine dintr-o rețea locală
care permite o dimensiune mare a pachetelor și trebuie să o traverseze, dar aceasta limitează
pachetele la o dimensiune mai mică pentru a putea ajunge la destinație. O datagramă internet
poate fi marcată cu "nu se fragmentează." Orice datagramă internet astfel marcată nu trebuie
fragmentată fara niciodată. Dacă datagrama internet marcată cu „nu se fragmentează” nu
poate fi livrată la destinație fără fragmentarea ei, ea va fi aruncată.
Fragmentarea, transmiterea și reasamblarea într-o rețea locală sunt invizibile pentru modulul
de protocol internet și poartă denumirea de fragmentare intranet. Fragmentarea internet și
procedura de reasamblare trebuie să fie în măsură să spargă o datagramă într-un număr
aproape arbitrar de piese care pot fi reasamblate mai târziu. Receptorul fragmentelor
utilizează un câmp de identificare pentru a se asigura că fragmentele diferitelor datagrame nu
sunt amestecate. Câmpul fragmentului ,,offset” spune receptorului poziția fragmentului din
datagrama originală. Fragmentul ,,offset” si lungime determină porțiunea din datagrama
originală reglementată de acest fragment. Indicatorul de „more-fragment” etichetează (prin
resetare) ultimul fragment. Aceste câmpuri oferă suficiente informații pentru a reasambla
datagrama.
Câmpul de identificare este utilizat pentru a distinge fragmentele unei datagramă de cele ale
unei alte datagrame. Modulul de protocol original dintr-o datagramă internet setează câmpul
de identificare la o valoare care trebuie să fie unică pentru fiecare pereche sursă-destinație și
protocol atât timp cât datagrama va fi activă în sistemul internet. Modul de protocol original
dintr-o datagramă completă setează „more-fragment” la zero și ,,offset-ul’’ la zero.
Pentru a fragmenta o datagramă internet lunga, un modul de protocol internet creează două
noi datagrame internet și copiază conținutul câmpurilor de antet internet din datagrama de
dimensiune mare în cele doua noi antete de internet. Datele din datagrama mare sunt împărțit
în două porțiuni pe 8 octeți (64 biți) (a doua porțiune s-ar putea să nu fie un multiplu întreg
de 8 octeți, dar prima trebuie să fie). Prima parte din date sunt incluse în prima nouă
datagramă și câmpul lungime totală este setat la lungimea primei datagrame. Indicatorul
„more-fragment” este setat la valoarea 1. Cea de a doua parte din date este plasată în a doua
noua datagramă și câmpul lungimea totală este setat la lungimea celei de a doua datagrame.
Indicatorul „more-frgment” are aceeași valoare ca și indicatorul datagramei de dimensiune
mare. Indicatorul „offset” a celei de-a doua datagrame internet este setat la valoarea din
datagrama mare plus NFB(numărul blocurilor de fragmente).
Pentru a asambla fragmentele unei datagrame internet, un modul de protocol internet (de
exemplu, la destinație) combină datagramele internet care au toate aceeași valoare pentru cele
patru domenii: identificare, sursă, destinație și protocol. Combinația se face prin plasarea
porțiunii de date a fiecărui fragment în poziția indicată de etichta „offset” prezentă.Primul
fragment va avea „offset-ul”zero, iar ultimul fragment va avea eticheta „more-fragment”
resetata la zero.
Dacă o gazdă trimite pachete unui dispozitiv în aceeași rețea, pachetul va fi trimis mai departe
pe interfața gazdei expeditor către destinatar. Dacă, în schimb, este necesar să se trimită
pachete către o altă rețea, pachetul va fi direcționat către poarta de ieșire implicită(default
gateway) care va ruta traficul mai departe spre rețele diferite de rețeaua locală. Default-
gateway-ul este necesar mai ales apentru a avea conexiune din rețeaua locala în Internet.
Figura următoare ilustrează roulul pe care îl joacă default gateway-ul pentru două rețele:
Rețeaua 1 și Rețeaua 2:
[2]
Pentru ca gazda A din rețeaua 1 să poată comunica cu gazda B din rețeaua 2, prima dată gazda
A iși va verifica tabela de rutare să vadă dacă există o rută specifică a gazdei B. Dacă nu
există așa ceva în tabela ei de rutare, gazda A trimite traficul TCP/IP pentru gazda B către
propria poartă de ieșire implicită(default gateway), IP Router 1. Același principiu se
urmărește și atunci când gazda B trimite pachete către gazda A. Neavând o rută specifică
pentru gazda A, B-ul va trimite traficul TCP/IP destinat gazdei A către propriul default
gateway, IP Router 2.
Porțile de ieșire implicite(default gateway) sunt importante pentru a face munca de rutare IP
eficientă. În cele mai multe cazuri, ruterele care acționează ca gateway-ul implicit pentru
gazde TCP / IP (fie un router dedicat sau un calculator care conectează două sau mai multe
segmente de rețea) dețin cunoștințe de alte rețele din rețeaua mare și stiu cum să ajungă la ele.
Gazdele TCP / IP se bazează pe gateway-uri implicite pentru cele mai multe dintre nevoile lor
de comunicare cu gazdele de pe segmentele de rețea de la distanță. În acest fel, gazdele
individuale sunt eliberate de povara de a menține cunoștințe vaste și actualizate în permanență
cu privire la segmentele individuale de rețea de la distanță. Numai ruterele care acționează ca
gateway implicit trebuie să mențină acest nivel de cunoștițe de rutare pentru a ajunge la alte
segmente de rețea situate la distanță mare.
Dacă gateway-ul implicit nu funcționează, comunicarea dincolo de segmentul de rețea locală
poate fi afectată. Pentru a evita acest lucru se pot adăuga manual rute în tabela de rutare
pentru gazde sau rețele puternic utilizate.
Dacă există mai multe interfețe și trebuie configurat un gateway implicit pentru fiecare
interfață, TCP / IP calculează automat o metrică a interfeței care se bazează pe viteza
interfeței. Metrica interfaței devine metrica rutei default în tabela de rutare pentru gateway-ul
implicit configurat. Interfața cu cea mai mare viteză are cea mai mică metrică pentru traseul
implicit. Rezultatul este că ori de câte ori mai multe gateway-uri implicite sunt configurate pe
mai multe interfețe, cea mai rapidă interfața va fi folosită pentru a transmite trafic pentru
gateway-ul implicit. Dacă mai multe interfețe de aceeași viteză au aceeași interfață metrică
minimă, atunci, pe baza ordinului de legare, este utilizat gateway-ul implicit al primului
adaptor de rețea. Gateway-ul implicit pentru cel de-al doilea adaptor de rețea este utilizat
atunci când primul este indisponibil.
În versiunile anterioare ale TCP / IP, gateway-urile multiple implicite aveau toate metrica
implicită a rutei, adica 1, iar gateway-ul implicit utilizat depindea de ordinea de interfețelor.
Acest lucru a cauzat dificultăți în a determina care gateway implicit folosea protocolul TCP /
IP.
Un rezumat al conținutului antetului internet este prezentat in schema ce urmează:
Diagrama antetului
În continuare vom prezenta pe scurt fiecare câmp al diagramei:
Version(4 biți):indică formatul antetului;
IHL(4 biți)(Internet Header Length):lungimea antetului în cuvinte de 32 de biți.Valoarea
minimă pentru un antet corect este 5
Type of Service(8 biți):oferă indicații ale parametrilor de calitate ai serviciului dorit.Acești
parametri vor fi folosiți la ghidarea selecției parametrilor serviciului actual când se transmite o
datagramă printr-o anumită rețea.O alegere majoră este compromisul dintre un delay scăzut o
fiabilitate mare și un transfer ridicat.
Formatul său este:
0 1 2 3 4 5 6 7
+-----+-----+-----+-----+-----+-----+-----+-----+
| | | | | | |
| PRECEDENCE | D | T | R | 0 | 0 |
| | | | | | |
+-----+-----+-----+-----+-----+-----+-----+-----+
Unde PRECEDENCE reprezintă prioritatea și este format din primii 3 biți,urmat de
Delay,Transfer și Reliability(siguranță) fiecare de câte un bit,iar ultimii doi biți au fost păstrați
pentru o posibilă utilizare ulterioară.Cele 3 câmpuri DTR pot duce la creșterea costurilor
serviciului,iar în multe rețele performanțele bune ale unui parametru pot duce la performanțe
scăzute ale altui parametru.
Total length(16 biți):lungimea datagramei,în octeți,incluzând și antetul și datele.Acest câmp
permite ca lungimea datagramei să ajungă până la 65.535 de octeți.Datagrame așa de mari
sunt nepracticabile pentru rețele și gazde.Toate hosturile trebuie să fie pregătite să accepte
datagrame de până la 576 de octeți.
Lungimea maximă a antetului este de 60 de octeți și un antet normal are o lungime de 20 de
octeți permițând o margine pentru antetele protocoalelor de nivel superior .
Identification(16 biți):O valoare de identificare atribuită de către expeditor pentru a ajuta la
asamblarea fragmentelor unei datagrame.
Flags(3 biți):avem diverse steaguri de control.
Primul bit este rezervat și trebuie să fie 0.Al doilea este DF și are valoarea 0 dacă se poate
fragmenta și 1 dacă nu,iar al treilea MF este 0 dacă am ajuns la ultimul fragment sau 1 dacă
mai sunt fragmente de sosit.
Fragment Offset(13 biți):Acest câmp indică unde în datagramă aparține fragmentul.Acest
câmp este măsurat în unități de 8 octeți(64 biți).Primul fragment are offsetul 0.
Time to live(8 biți):Acest câmp indică timpul maxim care îi este permis diagramei să rămână
în sistem.Dacă valoarea sa este 0 atunci diagrama trebuie distrusă.Acest câmp este modificat
în procesarea antetului.
Protocol(8 biți):Acest câmp indică protocolul următorului nivel utilizat în porțiunea de date a
datagramei.Valorile pentru diferite protocoale sunt specificate în “Assigned Numbers”.
Header Checksum(16 biți):Un control doar al antetului.Din moment ce unele câmpuri ale
antetului se schimbă acesta este recalculat si verificat de fiecare dată când antetul este
modificat.
Source adress(32 biți) şi destination adress(32biţi) vor fi descrise la adresare.
Opțiunile pot apărea sau nu într-o datagramă.Ele trebuie să fie implementate de toate
modulele IP,dar ceea ce este opțional este transmisia lor în orice datagramă particulară și nu
implementarea.În unele medii opțiunea de securitate poate fi necesară în toate datagramele.
Lungimea câmpului este variabilă datorită faptului că pot fi 0 sau mai multe opțiuni.Formatul
opțiunii poate avea două forme:
-un singur octet pentru tipul opțiunii
-un octet pentru tip,unul pentru lungime și octeții de date actuali.
Opțiunea de securitate oferă o modalitate pentru gazde de a trimite parametrii de
securitate,compartimentare,manipulare a restricțiilor și a parametrilor TCC.Formatul opțiunii
este următorul:
+--------+--------+---//---+---//---+---//---+---//---+
|10000010|00001011|SSS SSS|CCC CCC|HHH HHH| TCC |
+--------+--------+---//---+---//---+---//---+---//---+
Tip=130 Lungime=11
Câmpul S(securitate):are 16 biți și specifică unul din cele 16 nivele de securitate,nivele dintre
care 8 sunt rezervate pentru o posibilă utilizare în viitor.
Câmpul C(Compartimente):Când informația transimsă nu este compartimentată se folosește
valoarea 0 peste tot.Alte valori pentru acest câmp pot fi obținute din Defense Intelligence
Agency.
Câmpul H(restricții de manipulare):Valorile pentru marcajele de control și de eliberare sunt
digrafuri alfanumerice și sunt definite in manualul Defense Intelligence Agency .
Câmpul TCC(codul de control al transmisiei): Oferă un mijloc de a separa traficul și de a
defini comunități controlate de interes în rândul abonaților .
Trebuie să fie copiate pe fragmentare . Această opțiune apare cel mult o dată într- o
datagramă.
Loose Source și Record Route(LSRR)
+--------+--------+--------+---------//--------+
|10000011| length | pointer| route data |
+--------+--------+--------+---------//--------+
Tip=131
Această opțiune oferă un mod pentru sursa unei datagrame de a furniza informații de rutare
pentru a fi utilizate de gateway-uri în transmiterea datagramei la destinație,precum și a
înregistra informațiile de pe traseu.
Opțiunea începe cu tipul codului.Al doilea octet este lungimea opțiunii care include tipul
codului si octetul de lungime,octetul pointer si 3 octeti pentru traseul datelor.Al treilea octet
este octetul care indică octetul cu care incepe adresa următoarei surse ce va fi
procesată.Indicatorul este relativ acestei opțiuni și cea mai mică valoare pentru acesta este 4.
Record Route
+--------+--------+--------+---------//--------+
|00000111| length | pointer| route data |
+--------+--------+--------+---------//--------+
Tip=7
Această opțiune furnizează un mijloc de a înregistra traseul unei datagrame.
Un traseu înregistrat este compus dintr-o serie de adrese IP.Fiecare adresă are 32 de biți sau 4
octeți.Dacă indicatorul este mai mare ca lungimea atunci zona de date este plină.Gazda de
origine trebuie sa compună această opțiune cu destul spațiu de date pentru a ține toate
adresele așteptate.Mărimea opțiunii nu se modifică din cauza adăugării adreselor.
Nu este copiată la fragmentare și apare doar in primul fragment.În datagramă este prezentă cel
mult o dată.
Padding(variabil):acesta este practic o umplere a antetului pentru a se asigura că acesta se
încheie pe o graniță de 32 de biți.
Discuție
Implementarea unui protocol trebuie să fie robustă și să poată interacționa cu altele create de
persoane diferite.În timp ce scopul acestei descrieri este de a fi explicită în legătură cu
protocolul există posibilitatea unor interpretări diferite.În general o implementare trebuie să
fie conservatoare în comportamentul său de origine și liberală în cel de primire.Trebuie să
trimită datagrame bine formate ,dar trebuie să accepte orice datagramă pe care o poate
interpreta.
Adresele de internet disting sursele și destinațiile la nivelul gazdei și oferă un câmp de
protocol de aseamenea.Se presupune că fiecare protocol va oferi pentru orice multiplexare
este necesară o gazdă.
Descriere functională a unui utilizator de interfață prin IP este , într-un mod fictiv ,
cea mai bună , întrucât fiecare sistem de operare va avea facilități diferite. Prin urmare ,
trebuie să subliniem că diferite implementări IP pot avea interfețe diferite. Cu toate acestea ,
toate ip-urile trebuie să furnizeze un set minim de servicii pentru a garanta că toate
implementările IP suportă aceeași ierarhie de protocol. Interfețele de protocol internet sunt pe
de o parte la rețeaua locală și pe de altă parte fie la un protocol de nivel înalt fie la un program
de aplicație.
In cele ce urmează , protocolul de nivel înalt sau aplicația de program se va numi
„utilizator ” deoarece acesta folosește modulul internet. Deoarece protocolul de internet este
un protocol datagrame există un minim de memorie între transmisia datagrame și fiecare apel
de pe modulul de protocol de internet , care oferă informațiile necesare pentru a efectua
serviciul solicitat.
Un exemplu pentru nivel superior de interfață :
Următoarele două exemple de apelulri satisfac condițiile pentru o comunicare intre
utilizator si modulul de protocol de internet („=> inseamna intoarce”):
SEND (src, dst, prot, TOS, TTL, BufPTR, len, Id, DF, opt => result)
where:
src = source address
dst = destination address
prot = protocol
TOS = type of service
TTL = time to live
BufPTR = buffer pointer
len = length of buffer
Id = Identifier
DF = Don't Fragment
opt = option data
result = response
OK = datagram sent ok
Error = error in arguments or local network error
De reținut că prioritatea este trecută in TOS si securitatea este trecută ca o obțiune
RECV (BufPTR, prot, => result, src, dst, TOS, len, opt)
where:
BufPTR = buffer pointer
prot = protocol
result = response
OK = datagram received ok
Error = error in arguments
len = length of buffer
src = source address
dst = destination address
TOS = type of service
opt = option data
Când un utilizator trimite o datagramă , acesta execută apelul SEND care furnizează
toate argumentele .Modulul de protocol internet , verifică argumentele si pregatește și trimite
mesajul. Dacă argumentele sunt bune și datagrama este acceptată de rețeaua locală , apelul se
efectuează cu succes.
În cazul în care argumentele nu sunt bune , sau datagrama nu este acceptată de rețeaua locala ,
apelul nu se efectuează .
Pe întoarcerea nereusită , un raport rezonabil trebuie să conțină detalii până la implementările
individuale.
Când o datagramă ajunge la modulul de protocol internet din rețeaua locală , fie există un
apel RECV în asteptare adresat de utilizator fie nu . In primul caz , apelul în asteptare este
îndeplinit prin transferul de informație de la datagramă la utilizator. În al 2lea caz utilizatorul
adresat este notificat de o datagramă in asteptare. In cazul in care utilizatorul adresat nu
există, un mesaj de eroare ICMP este returnat expeditorului , iar datele sunt eliminate.
Notificarea unui utilizator poate fi printr-o pseudo-întrerupere sau un mecanism similar , după
caz , în funcție de sistemul de operare al implementării. Un apel RECV al utilizatorului poate
fi imediat indeplinit de o datagramă în asteptare sau poate fi suspendat pâna la sosirea unei
datagrame.
Adresa sursă este inclusă în apelul de trimitere în cazul în care gazda care trimite are mai
multe adrese (mai multe conexiuni fizice sau adrese.)Modulul de internet trebuie verificat
pentru a vedea dacă adresa sursă este una dintre adresele valide alea gazdei.
O implementare poate permite sau cere un apel către modulul internet pentru a indica
interesul sau rezervarea pentru utilizarea exculsivă a unei clase .(De exemplu toate cele care
au o anumită valoare în campul protocol).
Aceasta secțiune caracterizează funcțional un utilizator/ Interfata IP. Notația folosită este
similară cu cele mai multe apeluri ale funcțiilor în limbaj de nivel înalt , dar aceasta utilizare
nu este menită să excludă apeluri de tip capcana (de exemplu SVCs , UUOs , EMTs) , sau
orce altă formă de comunicare între procese.
Acesta este un exemplu al datelor minimale transportate de datagramă:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Ver= 4 |IHL= 5 |Type of Service| Total Length = 21 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification = 111 |Flg=0| Fragment Offset = 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time = 123 | Protocol = 1 | header checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| source address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| destination address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
+-+-+-+-+-+-+-+-+
De reținut că fiecare bifă reprezintă o poziți de bit .
Aceasta este o datagramă de internet în versiunea 4 a protocolului de internet.
Antetul internet este format din 5 cuvinte pe 32 de biți , iar lungimea totală a datagramei este
de 21 de octeți . Această datagramă este o datagramă completă (nu un fragment).
Exemplul 2:
In acest exemplu , vom prezenta mai întai o datagramă de dimensiuni moderate (452 octeți de
date) , apoi două fragmente care ar fi putut rezulta prin fragmentarea datagramei dacă
dimensiunea maximă de transmisie permisă era 280 octeti:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Ver= 4 |IHL= 5 |Type of Service| Total Length = 472 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification = 111 |Flg=0| Fragment Offset = 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time = 123 | Protocol = 6 | header checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| source address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| destination address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
\ \
\ \
| data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Acum , primul fragment care rezultă din împarțirea datagramei dupa 256 de octeti de date.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Ver= 4 |IHL= 5 |Type of Service| Total Length = 276 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification = 111 |Flg=1| Fragment Offset = 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time = 119 | Protocol = 6 | Header Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| source address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| destination address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
\ \
\ \
| data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Si al doilea fragment:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Ver= 4 |IHL= 5 |Type of Service| Total Length = 216 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification = 111 |Flg=0| Fragment Offset = 32 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time = 119 | Protocol = 6 | Header Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| source address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| destination address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
\ \
\ \
| data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Exemplul 3 :
Acesta este un exemplu al unei datagrame care conține opțiuni:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Ver= 4 |IHL= 8 |Type of Service| Total Length = 576 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification = 111 |Flg=0| Fragment Offset = 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time = 123 | Protocol = 6 | Header Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| source address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| destination address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Opt. Code = x | Opt. Len.= 3 | option value | Opt. Code = x |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Opt. Len. = 4 | option value | Opt. Code = 1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Opt. Code = y | Opt. Len. = 3 | option value | Opt. Code = 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
\ \
\ \
| data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Exemplu 4 :
Ordinea de transmitere a antetului și a datelor descrise în acest document se rezolvă la nivel
de octet. Ori de cate ori o datagramă arată un grup de octeți , ordinea de transmisie a acestor
octeți este ordinea normală în care acestea sunt citite in limba engleză .
De exemplu în urmatoarea diagramă octeții sunt transmiși în ordinea în care sunt numarotați.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 1 | 2 | 3 | 4 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 5 | 6 | 7 | 8 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 9 | 10 | 11 | 12 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Ori de cate ori un octet reprezintă o cantitate numerică , cel mai din stânga bit este
bitul cel mai semnificativ , etichetat cu 0 .
De exemplu , urmatoare diagrama reprezinta valoarea 170 in deciaml
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|1 0 1 0 1 0 1 0|
+-+-+-+-+-+-+-+-+
Bibliografie:
1. https://technet.microsoft.com/en-us/library/cc779696%28v=ws.10%29.aspx [2]
2. http://ro.wikipedia.org/wiki/Adres%C4%83_IP [1]
3. http://www.inforetele.com/ccna/ip-uri-clase-re%C8%9Bele-subnetizare/
4. http://profs.info.uaic.ro/~busaco/teach/courses/net/presentations/net3b.pdf
5. http://en.wikipedia.org/wiki/Internet_protocol_suite
6. Andrew S. Tanenbaum. Computer Networks.
7. http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.88.7505&rep=rep1&type=p
df
8. http://calin.comm.pub.ro/Didactice/ARI/Notite%20curs/Prez/Ro/ARI_R_c8-9_IP.pdf