Nivelul Transport TCP Transmission Control Protocol Emanuel Onica

  • Slides: 31
Download presentation
Nivelul Transport TCP – Transmission Control Protocol Emanuel Onica Facultatea de Informatică, Universitatea Alexandru

Nivelul Transport TCP – Transmission Control Protocol Emanuel Onica Facultatea de Informatică, Universitatea Alexandru Ioan Cuza, Iaşi

Cuprins 1. Nivelul Transport – Vedere de ansamblu 2. TCP – Transmission Control Protocol.

Cuprins 1. Nivelul Transport – Vedere de ansamblu 2. TCP – Transmission Control Protocol. Generalităţi 3. TCP – Administrarea conexiunii 4. TCP – Trimiterea garantată şi controlul fluxului 5. TCP – Aplicaţii 2/31

Nivelul Transport - Generalităţi Situarea nivelului transport conform celor două modele de referinţă utilizate

Nivelul Transport - Generalităţi Situarea nivelului transport conform celor două modele de referinţă utilizate în descrierea arhitecturilor de reţea (sursă: Kurose & Ross – „Computer Networking” – Addison-Wesley 2013) 3/31

Nivelul Transport - Generalităţi • Foloseşte serviciile de comunicare host-to-host oferite de nivelul inferior

Nivelul Transport - Generalităţi • Foloseşte serviciile de comunicare host-to-host oferite de nivelul inferior Reţea (adresarea la nivel de gazdă, rutarea pachetelor de la sursă la destinaţie, etc) • Stabileşte comunicarea end-to-end la nivel de servicii (aplicaţii) ce rulează pe maşini gazdă diferite • Poate oferi servicii avansate nivelului superior Aplicaţie: • • garanţia livrării mesajelor controlul fluxului controlul congestiei verificarea erorilor în datele primite 4/31

Nivelul Transport - Adresarea la nivelurile arhitecturii de reţea 5/31

Nivelul Transport - Adresarea la nivelurile arhitecturii de reţea 5/31

Nivelul Transport - Adresare Porturile: • Identifică un serviciu (aplicaţie) ce oferă comunicare în

Nivelul Transport - Adresare Porturile: • Identifică un serviciu (aplicaţie) ce oferă comunicare în reţea • Un proces poate oferi mai multe servicii (poate avea mai multe porturi deschise) • Identificatori numerici pe 16 biţi: 0 – 65535 • Standardizare stabilită de Internet Assigned Numbers Authority (IANA): • 0 – 1023 : interval rezervat pentru servicii de sistem (well-known ports) • 1024 – 49151 : interval asignat pentru diverse alte aplicaţii înregistrate (registered ports) • 49152 – 65535 : interval pentru utilizarea liberă în aplicaţii de reţea (dynamic ports) 6/31

Nivelul Transport - Protocoale • Asigură funcţionalitatea de transfer a datelor pentru serviciile (aplicaţiile)

Nivelul Transport - Protocoale • Asigură funcţionalitatea de transfer a datelor pentru serviciile (aplicaţiile) de nivel superior utilizând porturile pentru „adresare” la acest nivel • Principalele protocoale existente: • TCP – Transmission Control Protocol – IETF RFC 793 (extensii in RFC 1323) • UDP – User Datagram Protocol – IETF RFC 768 • Acelaşi port poate fi folosit de mai multe protocoale (în general pentru acelaşi serviciu/aplicaţie). Exemple specificate sub Linux în fişierul /etc/services: ssh telnet smtp time. . . . 22/tcp 22/udp 23/tcp 25/tcp 37/udp 7/31

Nivelul Transport - Protocoale TCP – Transmission Control Protocol: • Comunicare orientată conexiune •

Nivelul Transport - Protocoale TCP – Transmission Control Protocol: • Comunicare orientată conexiune • Oferă funcţionalitate pentru asigurarea calităţii serviciilor de la nivelele superioare UDP – User Datagram Protocol: • Comunicare neorientată conexiune • Servicii minimale la nivelul transport: • „adresarea” la nivel de port şi calcularea unei sume de control pentru verificarea integrităţii pachetului (opţional în IPv 4) 8/31

Nivelul Transport - Protocoale UDP: Nu garantează trimiterea cu succes şi în ordine a

Nivelul Transport - Protocoale UDP: Nu garantează trimiterea cu succes şi în ordine a pachetelor Nu oferă posibilităţi de control al fluxului Nu oferă posibilităţi de control a congestiei Folosit de aplicaţii ce necesită încărcare minimală la nivel transport şi au posibilitatea de a rezolva astfel de probleme în mod independent (ex. streaming media Vo. IP sau IPTV) TCP oferă suport pentru aceste probleme 9/31

TCP - Generalităţi • Asigură transportul de date prin intermediul unei conexiuni persistente: o

TCP - Generalităţi • Asigură transportul de date prin intermediul unei conexiuni persistente: o stare a conexiunii este menţinută de cele două gazde care comunică • O conexiune TCP este full duplex: datele pot fi transmise în ambele direcţii prin aceeaşi conexiune • O conexiune este identificată în mod unic la nivelul unei gazde printr-un 4 -uplu: (adresă IP sursă, port sursă, adresă IP destinaţie, port destinaţie) 10/31

TCP - Generalităţi • Transmiterea de date prin intermediul unei conexiuni este orientată pe

TCP - Generalităţi • Transmiterea de date prin intermediul unei conexiuni este orientată pe flux de octeţi (nu flux de mesaje) • Pentru fiecare proces implicat într-o conexiune sunt menţinute pentru conexiunea respectivă un buffer pentru trimiterea datelor şi un buffer pentru primire • La trimiterea unor date procesul sursă scrie în bufferul de trimitere, iar procesul destinaţie citeşte din bufferul de primire • TCP asigură trimiterea datelor din bufferul de trimitere spre bufferul de primire prin formarea de pachete de octeţi numite segmente 11/31

TCP - Generalităţi • Citirile din bufferul de primire depind de de modul de

TCP - Generalităţi • Citirile din bufferul de primire depind de de modul de livrare a segmentelor de către TCP (nu sunt neapărat identice relativ la cantitate cu scrierile în bufferul de trimitere): • • • (sursă: Peterson & Davie, „Computer Networks”, Morgan Kaufmann, 2007) 12/31

TCP - Generalităţi Antetul TCP adăugat unui segment: Primii 32 biţi identifică portul sursă

TCP - Generalităţi Antetul TCP adăugat unui segment: Primii 32 biţi identifică portul sursă şi portul destinaţie pentru conexiunea de care ţine segmentul respectiv 13/31

TCP - Generalităţi Antetul TCP adăugat unui segment: Flagurile SYN şi FIN sunt utilizate

TCP - Generalităţi Antetul TCP adăugat unui segment: Flagurile SYN şi FIN sunt utilizate în iniţierea, respectiv terminarea unei conexiuni. Numărul de secvenţă conţine: - Un număr de ordine iniţial dacă SYN e setat - Un număr de ordine acumulat în conexiunea curentă, corespunzător primului octet de date dacă SYN nu e setat 14/31

TCP - Generalităţi Antetul TCP adăugat unui segment: Flagul ACK indică validitatea numărului de

TCP - Generalităţi Antetul TCP adăugat unui segment: Flagul ACK indică validitatea numărului de confirmare. Numărul de confirmare într-un segment primit confirmă toţi octeţii trimişi, indicând următorul număr de secvenţă aşteptat (corespunzător următorului octet de date de trimis) 15/31

TCP - Generalităţi Antetul TCP adăugat unui segment: Dimensiunea fereastră reprezintă numărul de octeţi

TCP - Generalităţi Antetul TCP adăugat unui segment: Dimensiunea fereastră reprezintă numărul de octeţi care expeditorul segmentului e capabil să îi primească la un anumit moment (câmpul e modificat dinamic pentru controlul fluxului) 16/31

TCP - Generalităţi Antetul TCP adăugat unui segment: Flagul URG semnalează validitatea câmpului Pointer

TCP - Generalităţi Antetul TCP adăugat unui segment: Flagul URG semnalează validitatea câmpului Pointer Urgent indicând prezenţa de date „urgente” la începutul secţiunii de date din segmentul curent Câmpul Pointer Urgent reprezintă un deplasament ce indică ultimul octet urgent de date 17/31

TCP - Generalităţi Antetul TCP adăugat unui segment: Flagul PSH indică golirea bufferului de

TCP - Generalităţi Antetul TCP adăugat unui segment: Flagul PSH indică golirea bufferului de trimitere şi expedierea datelor Flagul RST indică necesitatea întreruperii conexiunii în urma unor erori Flagurile NS, CWR şi ECE au fost adăugate în specificaţiile RFC 3168 şi 3540 pentru funcţionalităţi legate de controlul congestiei 18/31

TCP - Generalităţi Antetul TCP adăugat unui segment: Suma de control este calculată peste

TCP - Generalităţi Antetul TCP adăugat unui segment: Suma de control este calculată peste antetul TCP şi datele din segment Câmpul opţiuni include posibili alţi indicatori (ex. dimensiunea maximă a unui segment) Câmpul offset specifică deplasamentul secţiunii de date faţă de începutul antetul 19/31

TCP – Administrarea conexiunii • O conexiune TCP implică o fază de iniţiere şi

TCP – Administrarea conexiunii • O conexiune TCP implică o fază de iniţiere şi o fază de încheiere • Faza de iniţiere este asimetrică implicând obligatoriu ambele părţi: o parte iniţiază pasiv conexiunea, iar cealaltă parte activ • Faza de încheiere este simetrică cele două părţi închizând independent conexiunea (ex. există posibilitatea ca doar una din părţi să închidă conexiunea în sensul de a nu mai trimite dar fiind posibil încă să primească) 20/31

TCP – Administrarea conexiunii • Iniţierea unei conexiuni se face în trei paşi (three-way

TCP – Administrarea conexiunii • Iniţierea unei conexiuni se face în trei paşi (three-way handshake): • Numerele iniţiale de secvenţă sunt alese aleator pentru evitarea interferenţelor cu o conexiune anterioară 21/31

TCP – Administrarea conexiunii Automatul TCP: • defineşte evoluţia stării unei conexiuni • fiecare

TCP – Administrarea conexiunii Automatul TCP: • defineşte evoluţia stării unei conexiuni • fiecare arc e etichetat cu o pereche eveniment/acţiune • acţiunea poate fi vidă • evenimentele pot fi generate de un segment primit sau de o acţiune locală la nivel de proces curent 22/31

TCP – Administrarea conexiunii Iniţierea unei conexiuni Legendă: Stare server Stare client Stare server

TCP – Administrarea conexiunii Iniţierea unei conexiuni Legendă: Stare server Stare client Stare server şi client Dacă ACK-ul clientului se pierde, conexiunea continuă (clientul are conexiunea stabilită; va trimite flag-ul ACK cu următorul segment de date) 23/31

TCP – Trimiterea garantată şi controlul fluxului • TCP asigură trimiterea garantată a segmentelor

TCP – Trimiterea garantată şi controlul fluxului • TCP asigură trimiterea garantată a segmentelor prin utilizarea de răspunsuri de confirmare (ACK) ce au setate numerele de confirmare (numărul de ordine al următorului octet de trimis) • Dacă numărul de confirmare primit după trimiterea unui segment nu reflectă dimensiunea datelor trimise, datele pierdute se vor retrimite • TCP menţine în bufferele de trimitere şi primire datele până la confirmarea trimiterii acestora, respectiv primirea tuturor segmentelor lipsă 24/31

TCP – Trimiterea garantată şi controlul fluxului • (sursă: • • • Peterson &

TCP – Trimiterea garantată şi controlul fluxului • (sursă: • • • Peterson & Davie, „Computer Networks”, Morgan Kaufmann, 2007) TCP menţine o serie de pointeri în cadrul bufferelor: • • • Last. Byte. Written – ultimul octet scris de aplicaţie în bufferul de trimitere Last. Byte. Sent – ultimul octet trimis din cadrul bufferului de trimitere Last. Byte. Acked – ultimul octet confirmat din bufferul de trimitere Last. Byte. Read – ultimul octet citit de aplicaţie din bufferul de primire Last. Byte. Rcvd – ultimul octet primit în bufferul de primire Next. Byte. Expected – ultimul octet ce urmează a fi primit în ordine în bufferul de primire 25/31

TCP – Trimiterea garantată şi controlul fluxului • • 2007) (sursă: Peterson & Davie,

TCP – Trimiterea garantată şi controlul fluxului • • 2007) (sursă: Peterson & Davie, „Computer Networks”, Morgan Kaufmann, • TCP va elimina din bufferul de trimitere doar octeţii din stânga Last. Byte. Acked • TCP va elimina din bufferul de primire doar octeţii din stânga Last. Byte. Read • O aplicaţie nu va citi niciodată peste Next. Byte. Expected (Last. Byte. Read < Next. Byte. Expected) 26/31

TCP – Trimiterea garantată şi controlul fluxului • • 2007) (sursă: Peterson & Davie,

TCP – Trimiterea garantată şi controlul fluxului • • 2007) (sursă: Peterson & Davie, „Computer Networks”, Morgan Kaufmann, • TCP foloseşte un mecanism de fereastră glisantă pentru controlul fluxului • Elimină necesitatea trimiterii unei confirmări după fiecare segment • Permite destinatarului să limiteze rata de trimitere a expeditorului pentru a nu depăşi capacitatea liberă a bufferului (aceasta poate varia în funcţie de rata de procesare a segmentelor primite de destinatar) 27/31

TCP – Trimiterea garantată şi controlul fluxului • • 2007) (sursă: Peterson & Davie,

TCP – Trimiterea garantată şi controlul fluxului • • 2007) (sursă: Peterson & Davie, „Computer Networks”, Morgan Kaufmann, • Stabilirea dimensiunii ferestrei (ce cantitate de date se poate trimite fără confirmare) se face prin setarea câmpului Dimensiune fereastră din antetul TCP • Acest câmp se modifică în funcţie de variaţia încărcării bufferului de primire: Dimensiune fereastră = Dimensiune buffer primire - (Last. Byte. Rcvd - Last. Byte. Read) • TCP va regla în mod corespunzător rata de trimitere: Last. Byte. Sent - Last. Byte. Acked <= Dimensiune fereastră 28/31

TCP – Trimiterea garantată şi controlul fluxului • (sursă: • • • Peterson &

TCP – Trimiterea garantată şi controlul fluxului • (sursă: • • • Peterson & Davie, „Computer Networks”, Morgan Kaufmann, 2007) • Un proces destinatar ce consumă greu bufferul de primire poate bloca astfel trimiterea la expeditor prin setarea Dimensiune fereastră pe zero • Cum descoperă expeditorul schimbarea acestei condiţii ? (o nouă Dimensiune fereastră ar trebui să vină cu un nou mesaj de confirmare dar expeditorul nu mai trimite date şi nu mai primeşte confirmări) • Chiar dacă trimiterea e blocată, TCP va trimite periodic segmente de 1 octet de probă, în cele din urmă unul din acestea primind un mesaj de confirmare cu noua Dimensiune fereastră 29/31

TCP – Aplicaţii TCP este utilizat de numeroase protocoale de nivel aplicaţie cum ar

TCP – Aplicaţii TCP este utilizat de numeroase protocoale de nivel aplicaţie cum ar fi: • • • HTTP FTP BGP Telnet XMPP. . . şi altele 30/31

Întrebări ? 31/31

Întrebări ? 31/31