rl_curs06
DESCRIPTION
RL_curs06TRANSCRIPT
-
Universitatea POLITEHNICA Bucureti
Reele Locale de Calculatoare
TCP Transmission Control Protocol
curs 6 09.11.200911.11.2009
-
Reele Locale de Calculatoare 2
Nivelul Transport
Ofer servicii nivelului Sesiune Primete servicii de la nivelul Reea
Roluri mprirea datelor n segmente crearea de conexiuni un nou mecanism de adresare (porturi) controlul fluxului (controlul congestiei) sigurana transmisiei (reliability)
-
Reele Locale de Calculatoare 3
Nivelul Transport (cont.)
Comunicaie ntre procese process-to-process delivery nivelul Reea - host-to-host delivery (comunicaie ntre
staii) Modelul client-server
server proces pasiv ascult cereri de la clieni
client procesul activ iniiaz o conexiune ctre server solicit un anumit serviciu
adresare prin porturi un proces server (un serviciu) = un port listening
-
Reele Locale de Calculatoare 4
Modelul client-server
50000 22
SSH client SSH server
Data
Data
22
22 50000
50000
request
response
-
Reele Locale de Calculatoare 5
Porturi
Sistemul de adresare folosit de nivelul Transport Asociat protocolului de nivel Transport
Port 100 UDP != Port 100 TCP
Existena mai multor procese pe aceeai staie mai multe servicii pe acelei 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
-
Reele Locale de Calculatoare 6
Porturi (cont.)
O pereche format dintr-o adresa IP si un port socket (211.42.121.13, 50000)
IP IP
Multiplexare Demultiplexare
Procese Procese
-
Reele Locale de Calculatoare 7
Sockei de reea (Internet sockets)
"The combination of an IP address and a port number is referred to as a socket." (Cisco)
Datagram sockets: UDPsockfd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
Stream socket: TCPsockfd = 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));
-
Reele Locale de Calculatoare 8
UDP
User Datagram Protocol Neorientat conexiune Nesigur (unreliable) (segmente pierdute) Fara controlul fluxului (segmente fr ordine)
Cnd se folosete UDP? overhead mare indus de TCP
DNS, managementul reelei (SNMP) comunicaii multimedia
controlul fluxului nu este foarte important aplicaia asigur controlul fluxului reele locale
Brood pe UDP :-)
-
Reele Locale de Calculatoare 9
Antetul UDP
0 16 31
Port sursa Port destinatie
Lungime Suma de control
-
Reele Locale de Calculatoare 10
Sockei UDP
nu are sens folosirea connect (dar se poate) nu se creeaz un canal virtual de comunicaie
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);
-
Reele Locale de Calculatoare 11
TCP
Transmission Control Protocol Orientat conexiune
circuit virtual n care are loc comunicaia Protocol sigur (reliable)
datele ajung garantat la destinatie datele ajung n ordine la destinaie
numere de secventa si numere de confirmare Controlul fluxului
corelare sender i receiver fereastr glisant
Controlul congestiei Controlul erorii
sum de control
-
Reele Locale de Calculatoare
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.
TCP (cont.)
-
Reele Locale de Calculatoare 13
Antetul TCP - imagine
0 31
Port surs Port destinaie
Numr de secven
Numr de confirmare
HLEN RezervatURG
ACK
PSH
RST
SYN
FIN
Dimensiune fereastr
Sum de control Pointer la date urgente
Opiuni Padding
Date
-
Reele Locale de Calculatoare 14
Antetul TCP porturi
Multiplexare prin porturi process-to-process delivery pot exista mai multe circuite virtuale ntre
dou staii
Flux de comunicaie (o conexiune) TCP
Substituie port surs port destinaie n pachetele de rspuns
-
Reele Locale de Calculatoare 15
Antetul TCP numere de secven
Reprezentare pe 32 de biti Numr de secven
indexul primului octet din segmentul TCP n cadrul fiecrui segment situaie:
primul octet are numarul de secven 1000 cel de-al 100-lea octet are numrul de secven 1099
Numr de confirmare indexul urmatorului octet pe care receptorul se
ateapt s-l primeasc de la transmitor confirmarea primirii datelor de pana la acest numar nu este prezent n toate segmentele
activat de prezena cmpului (flag-ului) ACK
-
Reele Locale de Calculatoare 16
Antet TCP - Campuri de control
Grup de 8 bii din antetul TCP Identific diverse stri ale protocolului Mai muli bii pot fi activi simultan
URG activare cmp Pointer la date urgente
offset pn la ultimul octet de date urgente
PSH push function pentru eficien TCP folosete buffere de intrare i ieire golirea bufferelor livrare imediat
transmiterea secvenei login: n reea
-
Reele Locale de Calculatoare
Antet TCP Campuri de control
RST resetarea conexiunii invalidarea numerelor de secven
ACK activare cmp Numr de confirmare
SYN protocolul de iniiere a conexiunii (handshake) stabilirea/sincronizarea numerelor de secven
FIN protocolul de ncheiere a conexiunii ncheierea transmisiei de la FIN-sender
-
Reele Locale de Calculatoare
Antet TCP Campuri de control (cont.)
RFC 3168 introducerea cmpurilor CWR i ECE
ECE ECN Echo
CWR Congestion Window Reduced s-a primit un segment cu ECE activat
-
Reele Locale de Calculatoare 19
Antet TCP alte campuri
HLEN (Header Length) lungimea antetului TCP n cuvinte de 32 de octei maxim 15 (60 de octeti) > 40 de octei pentru opiuni
Dimensiune fereastr spaiul pentru stocare date neconfirmate (receiver) maxim 65535 opiune de scalare a ferestrei
Sum de control (antet + date) Opiuni
diverse opiuni/extensii definite n RFC specificarea MSS (Maximum Segment Size) window scale
-
Reele Locale de Calculatoare 20
Iniierea conexiunii
Statia A Statia BTimp
Transmite SYN seq=x
Primete SYN
Transmite SYN seq=y, ACK x+1
Primete SYN + ACK
Transmite ACK y+1
Primete ACK
-
Reele Locale de Calculatoare 21
Iniierea conexiunii (cont.)
Clientul este entitatea activ iniiaz conexiunea
Cmpul SYN activat ISN Initial Sequence Number
numrul de secven dintr-un segment cu SYN activat
Protocolul de iniiere de conexiune - 3-way handshake Primul pachet (SYN)
stabilirea ISN pentru comunicaia de la client la server Al doilea pachet (SYN+ACK)
confirmarea primului pachet stabilirea ISN pentru comunicaia de la server la client
Al treilea pachet (ACK) confirmarea celui de-al doilea pachet
Cele dou ISN sunt generate aleator
-
Reele Locale de Calculatoare 22
Iniierea conexiunii - sockei
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 comunicaiei cu un clientul (conn_sockfd) aceleai caracteristici cu socketul listener (IP, port) demultiplexat pe baza peer-ului
Clientul iniiaz conexiuneaconnect (cli_sockfd, (struct sockaddr *) &serv_addr, sizeof (serv_addr));
-
Reele Locale de Calculatoare 23
Full duplex
De ce sunt necesare dou numere de secven? comunicaia este full duplex
O conexiune TCP - dou canale virtuale de comunicatie client server server client
Un socket - dou buffere buffer de citire/recepie buffer de scriere/transmitere SO_RCVBUF, SO_SNDBUF
Este posibil comunicaie half-duplex prin nchiderea unui capt al conexiunii Care capt se nchide? De scriere sau de citire?
-
Reele Locale de Calculatoare 24
Incheierea conexiunii
Statia A Statia BTimp
Transmite FIN seq=x
Primete FIN
Transmite ACK x+1
Primete FIN + ACK
Transmite ACK y+1
Primete ACK
Primete ACKTransmite FIN seq=y,
ACK x+1
-
Reele Locale de Calculatoare 25
Incheierea conexiunii (cont.)
Iniiat de oricare capt al transmisiei Cmpul FIN activat
Protocol de tipul 4-way handshake primul segment
cmpul FIN activ al doilea segment este o confirmare a primului conexiunea este pe jumtate nchis (HALF CLOSED)
comunicatia este intr-un singur sens urmatoarele doua segmente nchid conexiunea n cellalt sens
Este posibil protocol de tipul 3-way handshake cele doua entiti nchid conexiunea n acelai timp al doilea i al treilea segment sunt unite
-
Reele Locale de Calculatoare 26
ncheierea conexiunii - sockei
Un capt nchide conexiunea (fie acesta clientul)
close (cli_sockfd);
Cellalt capt ateapt 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);
}...
-
Reele Locale de Calculatoare 27
Diagrama de strisegment primit (aciune)/segment de transmis
-
Reele Locale de Calculatoare 28
Transmiterea de date
Dup inierea conexiunii Receptorul controleaz transmisia (controlul fluxului) Transmitere date
exista date de transmis nu se va depi dimensiunea ferestrei anunat de receiver
Segment de confirmare pentru fiecare pachet de date cmpul ACK activat dimensiunea ferestrei receptorul (ci octei 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 rspund
-
Reele Locale de Calculatoare 29
Fereastr glisant
ISNnumarul initial de secventa
Fereastra receptorului(maxim 2^16)
Numarul de secventa(2^32)
-
Reele Locale de Calculatoare 30
Fereastr glisant (cont.)
Roluri eficiena comunicaiei controlul fluxului receptorul s nu fie ncrcat
Dimensiunea ferestrei transmitorului este controlat de cea a receptorului dimensiune mai mic n cazul unei congestii
Exemplu de funcionare transmitorul primete un segment de confirmare cu
ACK=1000 i WIN=1200 receptorul i confirm octetul cu numrul 1000 receptorul i precizeaz dimensiunea fereastrei de 1200
transmitorul poate transmite segmente cu numere de secven pn la ACK+WIN = 1000+1200 = 2200
-
Reele Locale de Calculatoare 31
Controlul congestiei Congestie - aglomerarea datelor (receptor sau ruter din circuitul virtual) Numr mare de algoritmi de control al traficului Slow start
transmitorul 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 jumtate date retransmise dimensiunea ferestrei crete
Fast retransmit prea multe segmente de confirmare la un singur pachet segmentul sigur a
ajuns nu se ateapt 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
-
Reele Locale de Calculatoare 32
Slow Start
cwnd = 1480
MSS = 1.480rwnd= 100.000cwnd = 1.480
ISN= 1000
seq=1001, 1480
seq=2481, 1480
ack=2481
cwnd = 2 seg.
seq=3961, 1480
ack=5441cwnd = 3 seg.
seq=5441, 1480
seq=6921, 1480
ack=8401
seq=8401, 1480
ack=9881cwnd = 5 seg.
Funcionarea sa este dictat fereastra receptorului (rwnd), precum i de dou variabile locale: fereastra de congestie congestion
window (cwnd) pragul de cretere slow start threshold
(ssthresh) Funcionare:
este iniializat 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 numrul de confirmri primite, pn atinge valoarea ferestrei receptorului sau a pragului de cretere
la atingerea ssthresh conexiunea iese din slow start pentru respectivul sens
-
Reele Locale de Calculatoare 33
Fast Retransmit i Fast Recovery
cwnd = 11840
seq=50000, 1480
ack=51480
Pentru fiecare segment trimis TCP ateapt un interval de timp fix (dependent de RTT). La expirarea acestui timp va iniia retransmiterea segmentului
Pentru Fast Retransmit la primirea a 3 pachete de confirmare duplicate (4 confirmri identice) va considera segmentul pierdut
n cazul unui segment pierdut pragul de congestie de la transmitor se njumtete: ssthresh=cwnd/2=11840/2=5920
Pentru Fast Recovery se consider cele 3 pachete de confirmare duplicate, adugnd 3 segmente la cwnd: cwnd=sshthresh+3 seg.
seq=51480, 1480
seq=52960, 1480
seq=54440, 1480
seq=55920, 1480
seq=57400, 1480
ack=51480
ack=51480
ack=51480
cwnd = 5920
X
seq=51480, 1480
ack=58880
-
Reele Locale de Calculatoare 34
Timere TCP
MSL (Maximum Segment Life) timp de ateptare a unui segment la inchiderea conexiunii, socketul este eliberat dup timp 2*MSL
transmiterea ultimului pachet ACKmsur de siguranta in cazul in care ultimul ACK se pierdebind: 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 confirmrii 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 absena confirmrii pentru un numr de segmente (de obicei
10) intervale de 75 de secunde
-
Reele Locale de Calculatoare 35
Opiuni TCP
configurarea dimensiunii buffer-ului de transmisie/recepie
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)));
-
Reele Locale de Calculatoare
TCP advances
TCP over wireless TCP optimizat, n general, pentru transmisii de tip
wired pierderea unui pachet -> congestie
micorarea dimensiunii ferestrei
TCP offload engines dispozitive hardware care implementeaz TCP evitarea complexitii TCP n software creterea vitezei de transmisie probleme
integrarea n sistemele de calcul actuale necesitatea alterrii structurii sistemelor de operare
-
Reele Locale de Calculatoare
Cuvinte cheie
nivelul transport process-to-process modelul client-server porturi socketi TCP flux de octei conexiune URG, PSH, RST, ACK,
SYN, FIN, ECE, CWR iniiere 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
Slide Number 1Slide Number 2Slide Number 3Slide Number 4Slide Number 5Slide Number 6Slide Number 7Slide Number 8Slide Number 9Slide Number 10Slide Number 11Slide Number 12Slide Number 13Slide Number 14Slide Number 15Slide Number 16Slide Number 17Slide Number 18Slide Number 19Slide Number 20Slide Number 21Slide Number 22Slide Number 23Slide Number 24Slide Number 25Slide Number 26Slide Number 27Slide Number 28Slide Number 29Slide Number 30Slide Number 31Slide Number 32Slide Number 33Slide Number 34Slide Number 35TCP advancesCuvinte cheie