TCP Transmission Control Protocol

Like dokumenter
METODA REDUCERII LA UNITATE

Forelesning 1. Introduksjon til (eller repetisjon av) TCP/IP Datasikkerhet

Praktisk informasjon. Forelesning 1. Forelesningsform. Lærebok. Lærebok forts. Eksamen. Forelesninger. ØvingerØvinger

ITF20205 Datakommunikasjon - høsten 2011

CONDENSATOARE USCATE DE JOASA TENSIUNE PENTRU COMPENSAREA FACTORULUI DE PUTERE

Robineti termostatici. Jürgen Schlösser Armaturen. Perfection in heating

Brannmurer. fire wall (noun): A fireproof wall used as a barrier to prevent spread of fire.

Ennå litt mer detaljer: Flere detaljerte funksjoner i datanett

Interprosess kommunikasjon. Berkeley Sockets. Hvordan identifiserer jeg hvem jeg vil snakke til? Hva må programmene gjøre?

Linklaget. Olav Lysne. (med bidrag fra Stein Gjessing og Frank Eliassen) Oppsummering 1

Hva består Internett av?

SURSE NEÎNTRERUPTIBILE LINE-INTERACTIVE SURSE NEÎNTRERUPTIBILE ON-LINE. înapoi la cuprins

Forelesning nr 3, m andag 2. sept em ber Chapt er 3, Transport Layer. Datakom høsten

What is a protocol? Network protocols: Machine instead of people All communication activity in the Internet is controlled by protocols

What is a protocol? What is the Internet? End systems. Oversikt: Internet: network of

Internett Best-effort overføring Flere detaljerte funksjoner i datanett. Ennå litt mer detaljer: Formatet til IP-hodet

What is the Internet?

PRADS PASSIVE REAL-TIME ASSET DETECTION SYSTEM. Edward Fjellskål & Kacper Wysocki

MATEMATIKK. Norsk Morsmål: Tegning (hvis aktuelt) Sus/în top/peste. Ord og begreper

2EOLJDWRULVNRSSJDYHQU L GDWDNRPPXQLNDVMRQ + VWHQ.,QQOHYHULQJVIULVWRNWREHU *MHQQRPJnVWRUVGDJRNWREHU

ROBOŢII SCARA Seria THL.

+ % + % #% % ) % 6 % % 1& % 1& 7 7 % % * % % * % + %%,- %%, %*%..% % 8%% #% % 7 % + %*% # %+ 90: 3 # 1 #% + & 2%%, %%, %*% %+ /0 #.%%,. ;*#..< 0 4 0%.

TCP: Overblikk RFCs: 793, 1122, 1323, 2018,

Flere detaljerte funksjoner i datanett

Flere detaljerte funksjoner i datanett

Forelesning Oppsummering

Kapittel 4: Transportlaget

Løsningsforslag. Datakommunikasjon

Løsningsforslag til eksamen i INF103

Ennå litt mer detaljer: Flere detaljerte funksjoner i datanett

Repetisjon - Oversikt:

What is the Internet?

KTN1 - Design av forbindelsesorientert protokoll

Regularitati ascunse si corelatii in nano-bio-structuri

6107 Operativsystemer og nettverk

6105 Windows Server og datanett

EKSAMEN. Emne: Datakommunikasjon

INFORMATICĂ şi TIC. Manual pentru clasa a V-a. Carmen Diana Băican Melinda Emilia Coriteac MINISTERUL EDUCAŢIEI NAŢIONALE ISBN

IP Internet. Tjenestemodell. Sammensetning av nettverk. Protokollstack

Kommunikasjonsteknologi, Tjenester og Nett Kompendie 2016 Av Mats Jørgen Skaslien

Hva er en protokoll? INF1060 Introduksjon 2

Obligatorisk oppgave nr 2 i datakommunikasjon. Høsten Innleveringsfrist: 04. november 2002 Gjennomgås: 7. november 2002

INF3190 DATAKOMMUNIKASJON

Noen internet protokoller

The Akamai Network: A Platform for High-Performance Internet Applications. Erik Nygren Ramesh K. Sitaraman Jennifer Sun.

Transport - laget (ende-til-ende protokoller) Internett Best-effort overføring. Best-effort nett kvaliteter

6107 Operativsystemer og nettverk

Ethernet Starter Kit II

6105 Windows Server og datanett

CRITERII DE ALEGERE A LAGARELOR

Datateknikk TELE1005-A 15H HiST-FT-IEFE

6107 Operativsystemer og nettverk

TTM4100 KOMMUNIKASJON TJENESTER OG NETT

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

IT Grunnkurs Nettverk 3 av 4

INF Hjemmeeksamen 2

Capitolul I - Electricitate

Emnenavn: Datakommunikasjon. Eksamenstid: Kl: 9:00 til kl: 13:00. Faglærere: Erling Strand

Brannmurer. fire wall (noun): A fireproof wall used as a barrier to prevent spread of fire.

SISTEMUL INFORMATIC UNIC INTEGRAT AL ASIGURĂRILOR DE SĂNĂTATE DIN ROMÂNIA

Høgskoleni Østfold EKSAMEN. Emnekode: Emne: ITF20205 Datakommunikasjon. Dato: 04. Des 2015 Eksamenstid: kl. 9:00 til kl. 13:00

GRUPURI ELECTROGENE SI UPS-uri

Datateknikk TELE1004-A 13H HiST-AFT-EDT. Oppgåve: Protokollanalysatoren Wireshark. Delemne digitalteknikk og datakommunikasjon Øving 7; løysing

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

INF3190 Obligatorisk oppgave: Eksternt administrasjonsverktøy med datastreaming

LAVA. Om LAVA prosjektet UNINETT96

SISTEM INFORMATIC UNIC INTEGRAT

SISTEMUL INFORMATIC UNIC INTEGRAT AL ASIGURĂRILOR DE SĂNĂTATE DIN ROMÂNIA

Flere detaljerte funksjoner i datanett

REGIMURI DE FUNCȚIONARE ALE MOTORULUI DE CURENT CONTINUU ȘI ALE MOTORULUI SINCRON

Emnenavn: Oppgavesettet består av 3 oppgaver. Alle spørsmålene teller likt.

SISTEMUL INFORMATIC UNIC INTEGRAT AL ASIGURĂRILOR DE SĂNĂTATE DIN ROMÂNIA

Applikasjoner. System arkitektur. Network applications: some jargon. Disposisjon. overføringsproblematikk navnetjener world wide web

2013 Toate drepturile rezervate. Acer Liquid E2 Duo Manual de utilizare Model: V370 Această ediţie: 8/2013

Løsningsforslag Gruppeoppgaver mars 2003

Løsningsforslag EKSAMEN

Ennå litt mer detaljer: Flere detaljerte funksjoner i datanett

Løsningsforslag Gruppeoppgaver, 28. april 2. mai. 1. Metningskontroll ( Congestion control ) og ressursallokering.

CONSIDERATII GENERALE PRIVIND PROCESUL DE MASURARE

Ordliste for TRINN 1

Datateknikk TELE1004-A 13H HiST-AFT-EDT. Oppgåve 1. Delemne digitalteknikk og datakommunikasjon Øving 5; løysing

Act Aditional Nr. 1 la REGULAMENTUL CAMPANIEI Incepe distractia mai devreme cu 5 minute de libertate, din perioada 16 aprilie mai 2018

32 bits. type of service. head. len 16-bit identifier time to live

Emnenavn: Datakommunikasjon. Eksamenstid: 9:00 til 13:00. Faglærere: Erling Strand

Selvorganiserende læring av trafikkategorier i Bayesiansk pakkebasert IDS

NTNU Norges teknisk-naturvitenskapelige universitet Institutt for telematikk

Litt mer detaljer om: Detaljerte funksjoner i datanett. Fysisk Lag. Multipleksing

Løsningsforslag til EKSAMEN

6107 Operativsystem og nettverk

Internett-brannvegger

6107 Operativsystem og nettverk

Sistem inverter+controller off grid pur sinus comutare auto retea PV

Datakommunikasjon høsten 2002

6105 Windows Server og datanett

Transportlaget. Transporttjenester og protokoll. Overblikk: Mål: nettlaget: dataoverføring mellom endesystemer

Gruppe KTN2 innlevering. Endringer gjort siden KTN1:

Løsningsforslag EKSAMEN

Løsningsforslag til EKSAMEN

Opprinnelig IP-pakke inneholder 4480 Byte data. Dette er inklusiv IPheader. Max nyttelast på EthernetRammen er 1500 oktetter.

Embriq Radius. Brukerdokumentasjon Embriq Radius. Embriq Radius 1.0 Q Dok.nr. Dato Versjon

Transkript:

Reţele Locale de Calculatoare TCP Transmission Control Protocol curs 6 09.11.2009 11.11.2009 Universitatea POLITEHNICA Bucureşti

Nivelul Transport Oferă servicii nivelului Sesiune Primește servicii de la nivelul Rețea Roluri împărțirea datelor în segmente crearea de conexiuni un nou mecanism de adresare (porturi) controlul fluxului (controlul congestiei) siguranța transmisiei (reliability) Reţele Locale de Calculatoare 2

Nivelul Transport (cont.) Comunicație între procese process-to-process delivery nivelul Rețea - host-to-host delivery (comunicație între stații) Modelul client-server server proces pasiv ascultă cereri de la clienți client procesul activ inițiază o conexiune către server solicită un anumit serviciu adresare prin porturi un proces server (un serviciu) = un port listening Reţele Locale de Calculatoare 3

Modelul client-server SSH client SSH server 50000 22 request Data 22 50000 22 50000 Data response Reţele Locale de Calculatoare 4

Porturi Sistemul de adresare folosit de nivelul Transport Asociat protocolului de nivel Transport Port 100 UDP!= Port 100 TCP Existența mai multor procese pe aceeași stație mai multe servicii pe aceleși sistem multiplexare prin porturi 16 biti valori de la 0 la 65535 Intervale de porturi (IANA) Porturi rezervate (well-known): între 0 și 1023 SSH 22, FTP 21, Telnet 23, SMTP 25, HTTP 80 Porturi înregistrate: între 1024 și 49151 Kazaa, RMI Registry, MySQL, etc. Porturi dinamice (efemere): de la 49152 la 65535 testare locală Reţele Locale de Calculatoare 5

Porturi (cont.) Procese Procese Multiplexare Demultiplexare IP IP O pereche formată dintr-o adresa IP si un port socket (211.42.121.13, 50000) Reţele Locale de Calculatoare 6

Sockeți de rețea (Internet sockets) "The combination of an IP address and a port number is referred to as a socket." (Cisco) Datagram sockets: UDP sockfd = socket(pf_inet, SOCK_DGRAM, IPPROTO_UDP); Stream socket: TCP sockfd = socket(pf_inet, SOCK_STREAM, IPPROTO_TCP); Asocierea socketului la o adresă şi un port (bind) addr.sin_family = AF_INET; addr.sin_port = htons(50000); addr.sin_addr.s_addr = INADDR_ANY; bind(sockfd, (struct sockaddr *) &addr, sizeof (addr)); Reţele Locale de Calculatoare 7

UDP User Datagram Protocol Neorientat conexiune Nesigur (unreliable) (segmente pierdute) Fara controlul fluxului (segmente fără ordine) Când se folosește UDP? overhead mare indus de TCP DNS, managementul rețelei (SNMP) comunicații multimedia controlul fluxului nu este foarte important aplicația asigură controlul fluxului rețele locale Brood pe UDP :-) Reţele Locale de Calculatoare 8

Antetul UDP 0 16 31 Port sursa Port destinatie Lungime Suma de control Reţele Locale de Calculatoare 9

Sockeți UDP nu are sens folosirea connect (dar se poate) nu se creează un canal virtual de comunicație recvfrom și sendto sendto(sockfd, buffer, BUF_SIZE, 0, (struct sockaddr*)&target_host_address, sizeof(struct sockaddr)); recvfrom(s, buffer, BUF_SIZE, 0, (struct sockaddr*)&host_address, &hst_addr_size); Reţele Locale de Calculatoare 10

TCP Transmission Control Protocol Orientat conexiune circuit virtual în care are loc comunicația Protocol sigur (reliable) datele ajung garantat la destinatie datele ajung în ordine la destinație numere de secventa si numere de confirmare Controlul fluxului corelare sender și receiver fereastră glisantă Controlul congestiei Controlul erorii sumă de control Reţele Locale de Calculatoare 11

TCP (cont.) Transmisie de tip flux de octeti (byte stream) Folosire de timere RTT Round Trip Time keep-alive timer TCP este folosit in 95% din comunicatiile din Internet HTTP, FTP, SMTP, POP3, IMAP, SSH etc. Reţele Locale de Calculatoare

Antetul TCP - imagine 0 31 Port sursă Port destinație Număr de secvență Număr de confirmare HLEN Rezervat U R G A C K P S H R S T S Y N F I N Dimensiune fereastră Sumă de control Opțiuni Pointer la date urgente Padding Date Reţele Locale de Calculatoare 13

Antetul TCP porturi Multiplexare prin porturi process-to-process delivery pot exista mai multe circuite virtuale între două stații Flux de comunicație (o conexiune) TCP <adresă IP sursă, port sursă, adresa IP destinație, port destinație> Substituție port sursă port destinație în pachetele de răspuns Reţele Locale de Calculatoare 14

Antetul TCP numere de secvență Reprezentare pe 32 de biti Număr de secvență indexul primului octet din segmentul TCP în cadrul fiecărui segment situație: primul octet are numarul de secvență 1000 cel de-al 100-lea octet are numărul de secvență 1099 Număr de confirmare indexul urmatorului octet pe care receptorul se așteaptă să-l primească de la transmițător confirmarea primirii datelor de pana la acest numar nu este prezent în toate segmentele activat de prezența câmpului (flag-ului) ACK Reţele Locale de Calculatoare 15

Antet TCP - Campuri de control Grup de 8 biți din antetul TCP Identifică diverse stări ale protocolului Mai mulți biți pot fi activi simultan URG activare câmp Pointer la date urgente PSH offset până la ultimul octet de date urgente push function pentru eficiență TCP folosește buffere de intrare și ieșire golirea bufferelor livrare imediată transmiterea secvenței login: în rețea Reţele Locale de Calculatoare 16

Antet TCP Campuri de control RST resetarea conexiunii invalidarea numerelor de secvență ACK activare câmp Număr de confirmare SYN protocolul de inițiere a conexiunii (handshake) stabilirea/sincronizarea numerelor de secvență FIN protocolul de încheiere a conexiunii încheierea transmisiei de la FIN-sender Reţele Locale de Calculatoare

Antet TCP Campuri de control (cont.) RFC 3168 introducerea câmpurilor CWR și ECE ECE ECN Echo CWR Congestion Window Reduced s-a primit un segment cu ECE activat Reţele Locale de Calculatoare

Antet TCP alte campuri HLEN (Header Length) lungimea antetului TCP în cuvinte de 32 de octeți maxim 15 (60 de octeti) > 40 de octeți pentru opțiuni Dimensiune fereastră spațiul pentru stocare date neconfirmate (receiver) maxim 65535 opțiune de scalare a ferestrei Sumă de control (antet + date) Opțiuni diverse opțiuni/extensii definite în RFC specificarea MSS (Maximum Segment Size) window scale Reţele Locale de Calculatoare 19

Inițierea conexiunii Timp Statia A Statia B Transmite SYN seq=x Primește SYN Transmite SYN seq=y, ACK x+1 Primește SYN + ACK Transmite ACK y+1 Primește ACK Reţele Locale de Calculatoare 20

Inițierea conexiunii (cont.) Clientul este entitatea activă inițiază conexiunea Câmpul SYN activat ISN Initial Sequence Number numărul de secvență dintr-un segment cu SYN activat Protocolul de inițiere de conexiune - 3-way handshake Primul pachet (SYN) stabilirea ISN pentru comunicația de la client la server Al doilea pachet (SYN+ACK) confirmarea primului pachet stabilirea ISN pentru comunicația de la server la client Al treilea pachet (ACK) confirmarea celui de-al doilea pachet Cele două ISN sunt generate aleator Reţele Locale de Calculatoare 21

Inițierea conexiunii - sockeți Serverul este în starea listening (serv_sockfd) listen(serv_sockfd, 5); conn_sockfd = accept(serv_sockfd, (struct sockaddr *) &cli_addr, &cli_len); Un nou socket pentru intermedierea comunicației cu un clientul (conn_sockfd) aceleași caracteristici cu socketul listener (IP, port) demultiplexat pe baza peer-ului Clientul iniţiază conexiunea connect (cli_sockfd, (struct sockaddr *) &serv_addr, sizeof (serv_addr)); Reţele Locale de Calculatoare 22

Full duplex De ce sunt necesare două numere de secvență? comunicația este full duplex O conexiune TCP - două canale virtuale de comunicatie client server server client Un socket - două buffere buffer de citire/recepție buffer de scriere/transmitere SO_RCVBUF, SO_SNDBUF Este posibilă comunicație half-duplex prin închiderea unui capăt al conexiunii Care capăt se închide? De scriere sau de citire? Reţele Locale de Calculatoare 23

Incheierea conexiunii Timp Statia A Statia B Transmite FIN seq=x Primește FIN Transmite ACK x+1 Primește ACK Transmite FIN seq=y, ACK x+1 Primește FIN + ACK Transmite ACK y+1 Primește ACK Reţele Locale de Calculatoare 24

Incheierea conexiunii (cont.) Inițiat de oricare capăt al transmisiei Câmpul FIN activat Protocol de tipul 4-way handshake primul segment câmpul FIN activ al doilea segment este o confirmare a primului conexiunea este pe jumătate închisă (HALF CLOSED) comunicatia este intr-un singur sens urmatoarele doua segmente închid conexiunea în celălalt sens Este posibil protocol de tipul 3-way handshake cele doua entități închid conexiunea în același timp al doilea și al treilea segment sunt unite Reţele Locale de Calculatoare 25

Încheierea conexiunii - sockeți Un capăt închide conexiunea (fie acesta clientul) close (cli_sockfd); Celălalt capăt așteaptă sosirea de cereri Poate solicita, de asemenea, închiderea conexiunii n = read (conn_sockfd, buffer, BUF_LEN); if (n == 0) { /* se inchide conexiunea */ printf ( clientul %s a incheiat conexiunea\n, inet_ntoa (cli_addr.sin_addr)); close (conn_sockfd); }... Reţele Locale de Calculatoare 26

Diagrama de stări segment primit (acțiune)/segment de transmis Reţele Locale de Calculatoare 27

Transmiterea de date După ințierea conexiunii Receptorul controlează transmisia (controlul fluxului) Transmitere date exista date de transmis nu se va depăși dimensiunea ferestrei anunțată de receiver Segment de confirmare pentru fiecare pachet de date câmpul ACK activat dimensiunea ferestrei receptorul (câți octeți poate primi) Receptorul confirma cel mai curent spatiu contiguu de date primit unele date se pot pierde pot sosi duplicate Timere pentru evitarea deadlock-urilor și a conexiunilor care nu mai răspund Reţele Locale de Calculatoare 28

Fereastră glisantă ISN numarul initial de secventa Numarul de secventa (2^32) Fereastra receptorului (maxim 2^16) Reţele Locale de Calculatoare 29

Fereastră glisantă (cont.) Roluri eficiența comunicației controlul fluxului receptorul să nu fie încărcat Dimensiunea ferestrei transmițătorului este controlată de cea a receptorului dimensiune mai mică în cazul unei congestii Exemplu de funcționare transmițătorul primește un segment de confirmare cu ACK=1000 și WIN=1200 receptorul îi confirmă octetul cu numărul 1000 receptorul îi precizează dimensiunea fereastrei de 1200 transmițătorul poate transmite segmente cu numere de secvență până la ACK+WIN = 1000+1200 = 2200 Reţele Locale de Calculatoare 30

Controlul congestiei Congestie - aglomerarea datelor (receptor sau ruter din circuitul virtual) Număr mare de algoritmi de control al traficului Slow start transmițătorul controlează viteza de transmisie viteza cu care receptorul transmite segmente de confirmare determină viteza de transmisie Evitarea congestiei (congestion avoidance) folosit în paralel cu Slow start segmente de confirmare piedute reducerea dimensiunea ferestrei la jumătate date retransmise dimensiunea ferestrei crește Fast retransmit prea multe segmente de confirmare la un singur pachet segmentul sigur a ajuns nu se așteaptă expirarea timerului de retransmisie Fast recovery mai multe segmente de confirmare segmentul a ajuns nu se mai pune problema pune problema congestiei se rulează algoritmul Congestion avoidance retransmitere cu o fereastră mai mare Reţele Locale de Calculatoare 31

Slow Start ISN= 1000 cwnd = 1480 cwnd = 2 seg. cwnd = 3 seg. cwnd = 5 seg. seq=1001, 1480 ack=2481 seq=2481, 1480 seq=3961, 1480 ack=5441 seq=5441, 1480 seq=6921, 1480 ack=8401 seq=8401, 1480 ack=9881 MSS = 1.480 rwnd= 100.000 cwnd = 1.480 Funcţionarea sa este dictată fereastra receptorului (rwnd), precum şi de două variabile locale: fereastra de congestie congestion window (cwnd) pragul de creştere slow start threshold (ssthresh) Funcţionare: este iniţializat la MSS sau fereastra receptorului în general receptorul va trimite confirmare la fiecare două pachete după fiecare rundă de transmisie fereastra de congestie se incrementează cu numărul de confirmări primite, până atinge valoarea ferestrei receptorului sau a pragului de creştere la atingerea ssthresh conexiunea iese din slow start pentru respectivul sens Reţele Locale de Calculatoare 32

Fast Retransmit şi Fast Recovery cwnd = 11840 seq=50000, 1480 seq=51480, 1480 seq=52960, 1480 ack=51480 seq=54440, 1480 ack=51480 X Pentru fiecare segment trimis TCP aşteaptă un interval de timp fix (dependent de RTT). La expirarea acestui timp va iniţia retransmiterea segmentului Pentru Fast Retransmit la primirea a 3 pachete de confirmare duplicate (4 confirmări identice) va considera segmentul pierdut seq=55920, 1480 ack=51480 seq=57400, 1480 ack=51480 În cazul unui segment pierdut pragul de congestie de la transmiţător se înjumătăţeşte: ssthresh=cwnd/2=11840/2=5920 cwnd = 5920 seq=51480, 1480 ack=58880 Pentru Fast Recovery se consideră cele 3 pachete de confirmare duplicate, adăugând 3 segmente la cwnd: cwnd=sshthresh+3 seg. Reţele Locale de Calculatoare 33

Timere TCP MSL (Maximum Segment Life) timp de așteptare a unui segment la inchiderea conexiunii, socketul este eliberat după timp 2*MSL transmiterea ultimului pachet ACK măsură de siguranta in cazul in care ultimul ACK se pierde bind: Address already in use RTT (Round Trip Time) o medie a timpului între transmiterea unui segment și confirmarea acestuia RTO (Retransmission Timeout) timer de primire a confirmării Keepalive Timer o conexiune nu schimbă date (idle connection) la un interval de timp dat se transmit segmente de testare a conexiunii (probe segments) de obicei stabilit la 2 ore în absența confirmării pentru un număr de segmente (de obicei 10) intervale de 75 de secunde Reţele Locale de Calculatoare 34

Opţiuni TCP configurarea dimensiunii buffer-ului de transmisie/recepţie int window_size = 128 * 1024;/* 128 kilobytes */ setsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, (char *) &window_size, sizeof(window_size)); activarea/dezactivarea timer-ului de keepalive int ka_value = 0; /* deactivate keepalive */ setsockopt(sockfd, SOL_SOCKET, SO_KEEPALIVE, (char *) &ka_value, sizeof(int))); Reţele Locale de Calculatoare 35

TCP advances TCP over wireless TCP optimizat, în general, pentru transmisii de tip wired pierderea unui pachet -> congestie micșorarea dimensiunii ferestrei TCP offload engines dispozitive hardware care implementează TCP evitarea complexității TCP în software creșterea vitezei de transmisie probleme integrarea în sistemele de calcul actuale necesitatea alterării structurii sistemelor de operare Reţele Locale de Calculatoare

Cuvinte cheie nivelul transport process-to-process modelul client-server porturi socketi TCP flux de octeți conexiune URG, PSH, RST, ACK, SYN, FIN, ECE, CWR inițiere conexiune 3-way handshake ISN full-duplex încheiere conexiune 4-way handshake controlul congestiei fereastră glisantă controlul fluxului controlul congestiei slow start congestion avoindance fast retransmit/recovery TCP over wireless TCP offload engine Reţele Locale de Calculatoare