1.1 Format mesaj UDP 1.2 Multiplexare, Demultiplexare, Porturi 2. Transport Control Protocol (TCP) 2.1 Format segment TCP
Baze de date Curs 13 1
1. User Datagram Protocol (UDP)
• Este necesar un mecanism care să distingă dintre multiplele
destinaţii ale unei gazde date, o destinaţie fixată. • Cum se permite ca programele de aplicaţii ce sunt executate pe un calculator dat să primeascã sau sã recepţioneze datagrame? • Sistemele de operare ale celor mai multe calculatoare suportă multiprogramarea ceea ce înseamnă că ele permit ca multiple aplicaţii să se execute simultan. • Fiecare program în executie este identificat cu termenul de proces, task, program de aplicaţie sau proces la nivel utilizator. Un proces este ultima destinaţie a unui mesaj. • Procesele sunt create şi distruse dinamic, transmiţătorii cunosc adesea putin pentru a identifica un proces pe altă maşină. • Ar fi util să specifice procesele care recepţionează datagrame, fără să informeze transmiţătorul. • Destinaţia trebuie identificata fara a cunoaşte procesul ce implementează această funcţie
Baze de date Curs 13 2
• UDP formează un mecanism primar pe care programele de aplicaţie îl utilizează să transmită datagrame la alte aplicaţii. • In plus faţă de trimiterea datelor, fiecare mesaj UDP conţine ambele numere de port (destinaţie, sursă) făcând posibil ca softwareul UDP de la destinaţie să trimită mesajul la portul invocat şi să răspundă în replică. • UDP lucrează similar cu IP însă nu necesită confirmare pentru a fi sigur că mesajul a sosit la destinaţie, nu ordonează mesajele sosite şi nu închide bucla pentru controlul vitezei la care se produce schimbul de mesaje. • Mesajele UDP pot fi pierdute, duplicate sau să sosească în altă ordine. • Un program de aplicaţie care utilizează UDP agregă întreaga responsabilitate pentru manipularea problemelor de siguranţă, incluzând pierderea mesajelor, duplicarea, întârzierea, schimbarea ordinii şi pierderea conectivităţii. • Programele de aplicaţie ignoră aceste probleme atunci când softwareul a fost proiecat. • Ca urmare UDP funcţioneza bine în reţele locale şi eşuează de cele mai multe ori în reţele extinse. • Sunt totuşi aplicaţii la care este suficient ca numai o parte dintre pachetele transmise să fie recepţionate corect. Baze de date Curs 13 3 1.1 Format mesaj UDP
• Fiecare mesaj UDP este numit şi USER DATAGRAM.
• Conceptual o datagramă constă din două părţi: 1. UDP header 2. UDP data. • Headerul conţine 2 cuvinte de 32 biţi cu semnificaţia din figura
• Câmpurile port sursă şi port destinaţie conţin câte un întreg stocat pe
16 biţi, întreg ce indică numărul portului UDP utilizat pentru demultiplexarea datagramelor între procesele ce aşteaptă să primească date. Câmpul port sursă este opţional. • Câmpul lungime conţine numărul octeţilor din datagramă. Valoarea minimă este 8 adică lungimea headerului. Suma de control este opţională şi nu va fi utilizată totdeauna. Valoarea zero arată că nu a fost calculată.
Baze de date Curs 13 4
1.2 Multiplexare, Demultiplexare, Porturi • Dacă se acceptă că datagramele UDP vin de la mai multe aplicaţii care apoi sunt pasate la nivelul IP pentru distribuţie, tot aşa o serie de mesaje vin de la IP şi trebuiesc pasate programelor de aplicaţie. • Conceptual, softwareul de multiplexare şi demultiplexare cât şi programele de aplicaţie comunică prin mecanisme de port. • În practică, fiecare program de aplicaţie trebuie să negocieze cu sistemul de operare pentru a obţine portul protocol şi portul asociat înainte de a trimite o datagramă UDP. • Odată portul asignat, orice program de aplicaţie va avea acel port în UDP Source port. • Cel mai simplu mod de a gândi un port UDP este cel al mecanismului de coadă. • În multe implementări când programul de aplicaţie negociază cu sistemul de operare, crează o coadă internă în care ţine mesajele sosite. Când UDP recepţionează o datagramă, se verifică dacă portul destinaţie coincide cu portul curent utilizat. • O eroare apare dacă portul are bufferul plin şi ca efect datagrama se pierde.
Baze de date Curs 13 5
Porturi rezervate şi porturi disponibile.
• Asignarea numărului de port este foarte importantă întrucât cele
două calculatoare care comunică trebuie să agreeze numărul de port înainte de comunicare. De exemplu când o maşină A doreşte să comunice cu o maşină B pentru a obţine un fişier, trebuie să cunoască ce port utilizează B pentru ftp. • Sunt în această situaţie posibile două abordări: 1. Utilizarea unei autorităţi centrale care să asigneze lista porturilor asociate şi toate aplicaţiile să fie proiectate în conjuncţie cu această specificaţie. Această variantă formează ceea ce se numeşte asignare generală şi porturile sunt cunoscute. 2. Alocarea dinamică în care porturile nu sunt global cunoscute şi atunci când o aplicaţie necesită un port software de reţea il asignează. Pentu a învăţa despre asignarea curentă a porturilor un alt calculator trebuie să trimită o cerere asupra asignării porturilor pentru un anumit serviciu şi maşina ţintă va răspunde cu informaţia necesară.
Baze de date Curs 13 6
2. Transport Control Protocol (TCP)
Putem considera că interfaţa între programele de aplicaţie şi TCP/IP,
din punctul de vedere al siguranţei, se poate împărţi în cinci componente: • Orientarea pe şir. Când două programe de aplicaţie transferă volume mari de date acestea sunt privite ca şiruri de biţi, împărţiţi în grupuri de câte 8 biţi (octeţi). • Conectarea circuitelor virtuale. După ce transferul porneşte ambele aplicaţii, transmiţător şi receptor, interacţionează cu sistemul de operare informându-l de necesitatea transferului de date. Dacă din diferite motive comunicaţia eşuează se detectează o eroare se comunică aceasta programelor de aplicaţie. Aici s-a utilizat termenul de circuit virtual pentru a descrie conexiunea între programele de aplicaţie şi suportul hardware. • Tranferul bufferat. Programele de aplicaţie trimite datele unui circuit virtual prin pasarea repetată a octeţilor către software-ul ce implementează protocolul. La recepţie software-ul protocol distribuie octeţii în aceeaşi ordine făcându-i disponibili aplicaţiei de receptie.
Baze de date Curs 13 7
Software-ul care implementează protocolul poate să împartă datele în pachete de dimensiune independentă de mărimea celor care le transferă programul de aplicaţie. La recepţie un mecanism similar determină ca TCP să facă datele disponibile pentru aplicaţie fără întârziere. • Şiruri nestructurate. TCP nu este orientat pe şir de date, programele de aplicaţie utilizând serviciul de şir înţeleg conţinutul acestuia şi agreează formatul şirului înainte de a iniţia o conexiune. • Conexiunea full-duplex permite transferul simultan în ambele direcţii. O astfel de conexiune este cel mai des utilizată.
Baze de date Curs 13 8
• Este firească întrebarea asupra modului în care protocolul realizează siguranţa când utilizează o comunicaţie ce nu oferă siguranţă. Cele mai multe protocoale utilizează o tehnică fundamentală cunoscută sub numele positive acknowledgement with retransmission. Tehnica cere ca la comunicarea cu o sursă aceasta să raspundă cu un mesaj ACK la recepţia datelor
Baze de date Curs 13 9
• TCP utilizează pentru confirmarea receptiei o tehnică specifică numită şi sliding windows. Conceptul, cunoscut sub numele de fereastră alunecătoare, arată secvenţa de evenimente ce sunt gestionate la un moment dat. Pentru a asigura siguranţa, transmiţătorul trimite un pachet şi aşteaptă confirmarea înainte de a trimite un altul. Ca urmare viteza de comunicaţie va scădea foarte mult datorită timpului de aşteptare confirmare. Tehnica de fereastră alunecătoare este mai complexă decât cea de confirmare pozitivă şi retransmisie. Prin această tehnică se permite transmiţătorului să trimită pachete multiple înainte de a recepţiona confirmarea. Protocolul asignează o unică fereastră de mărime fixă şi transmite toate pachetele alocate în interiorul ferestrei. O structura a ferestrei este ilustrata in figura urmatoare cu o fereaastra de 8 pachete.
Baze de date Curs 13 10
• Numărul maxim de pachete neconfirmate este specificat de dimensiunea ferestrei alunecătoare. Dacă mărimea ferestrei este 8 atunci transmiţătorul poate trimite maxim 8 pachete fără să aştepte confirmarea. Singurul caz în care transmiţătorul aşteaptă confirmare este cel în care distanţa dintre cel mai vechi pachet neconfirmat şi ultimul pachet transmis este egală cu dimensiunea ferestrei alunecătoare. • TCP/IP realizează siguranţa comunicaţiei. Este important a reţine că TCP este un protocol de comunicaţie şi nu o piesă software. Diferenţa între un protocol şi un software care îl implementează este analoagă cu diferenţa între un limbaj de programare şi un compilator.
Baze de date Curs 13 11
• Reamintim că o conexiune constă dintr-un circuit virtual între două aplicaţii şi este natural a gândi că un program de aplicaţie serveşte un endpoint conexiune. • TCP defineşte un endpoint ca o pereche de întregi (adresă host, port) unde adresă host reprezintă adresa IP pentru o maşină şi port este portul TCP al acelui host. De exemplu endpoint (128.10.2.3, 25) specifica portul TCP 25 al maşinii cu adresa IP 128.10.2.3 • Dacă am definit noţiunea de endpoint este uşor a defini conexiunea prin cei doi endpoints. • Dacă pentru o conexiune de la maşina (18.26.0.36) la maşina (128.10.2.3) se definesc cei doi endpoints astfel: (18.26.0.36, 1069) şi (128.10.2.3, 25), o altă conexiune poate fi în execuţie la maşina 128.9.0.32 cu endpoints: (128.9.0.32, 1184) şi (128.10.2.3, 53). Este permis ca o conexiune să împartă un endpoints. De exemplu se poate adăuga o altă conexiune la cele de mai jos de la o maşină (128.2.254.139) la o altă maşină: (128.2.254.139, 1184) şi (128.10.2.3, 53).
Baze de date Curs 13 12
2.1 Format segment TCP • O unitate de transfer între componentele software TCP între două maşini este numită "segment".
• Segmentul are doua parţi: header şi date.
• Headerul este cunoscut cu denumirea TCP header şi conţine informaţiile de control. • Câmpurile Port sursă şi Port destinaţie conţin porturile TCP prin care se identifică programul de aplicaţie de la sfirşitul conexiunii. Baze de date Curs 13 13 • Număr secvenţă identifică poziţia în şirul de date al transmiţătorului pentru datele din segment. • Număr confimare identifică numărul de octeţi pe care sursa speră să-l primească mai departe. • Număr secvenţă se referă la şirul urmat în aceeaşi direcţie ca şi segmentul pe când numărul de confirmare se referă la şirul urmat în direcţia opusă a segmentului. • HLEN este un întreg ce specifică lungimea headerului secvenţei măsurat în multipli de 32 biţi. El este necesar întrucât câmpul OPTIONS variază în lungime funcţie de opţiunea ce a fost inclusă. • Ca urmare mărimea headerului TCP este funcţie de opţiunea selectată. • Cei 6 biţi neutilizaţi sunt rezervaţi pentru utilizări ulterioare.
Baze de date Curs 13 14
TCP utilizează un grup de 6 biţi numit şi CODE BITS ce specifică scopul şi conţinutul segmentului. Aceşti biţi au interpretarea: 1. URG Pointerul urgent este valid 2. ACK Câmp confirmare valid 3. PSH Segmentul cere un PUSH 4. RST Resetare conexiune 5. SYN Sincronizarea număr secventă 6. FIN Transmiţătorul a atins sfârşitul şirului • Campul WINDOW este un întreg pe 16 biţi fără semn ce specifică mărimea buferului. O confirmare TCP specifică numărul de secvenţă al următorului octet pe care receptorul speră să-l primească.