Documente Academic
Documente Profesional
Documente Cultură
Nivelul transport
Gazdă 1 Gazdă 2
Proces 1 Proces 3
Proces 2 Proces 4
Socket API
• Aplicaţii:
– Cu transfer de date folosind conexiuni.
– Cu transfer de date fără conexiuni.
• Aplicaţii:
– Iterative, cu tratare secvenţială a transferurilor.
– Concurente, cu tratare în paralel a transferurilor.
• Aplicații:
– Server: oferă informații.
– Client: solicită informații.
• Criterii:
– La volum mic de date transferate:
• De obicei aplicaţii iterative, fără conexiuni.
– La volum mare de date transferate:
• De obicei aplicaţii concurente, care folosesc conexiuni.
remoteServAddr.sin_family = h->h_addrtype;
memcpy((char *) &remoteServAddr.sin_addr.s_addr, h->h_addr_list[0], h->h_length);
remoteServAddr.sin_port = htons(REMOTE_SERVER_PORT);
portno = atoi(argv[2]);
if((sockfd = socket(PF_INET, SOCK_STREAM, 0))) error("ERROR opening socket");
if((server = gethostbyname(argv[1])) == NULL) error("ERROR, no such host\n");
//astept raspuns
memset(buffer, 0, 256);
if((n = recv(sockfd, buffer, 255, 0)) < 0) error("ERROR reading from socket");
printf("[SRV]%s\n",buffer);
close(sockfd);
return 0;
}
Protocoale de comunicaţie – Curs 5 26
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Protocoale de transport
• Două potocoale majore:
– UDP (User Datagram Protocol).
– TCP (Transmission Control Protocol).
• Aspecte discutate:
– Formatul datelor.
– Adresare.
– Funcționare.
Antet UDP
• Checksum nefolosit (calculat la fel ca la TCP).
• Nu control flux.
• Nu control erori.
• Nu retransmisie.
Porturi uzuale
# This file contains port numbers for well-known services defined by IANA
# Format:
# <service name> <port number>/<protocol> [aliases...] [#<comment>]
daytime 13/tcp
daytime 13/udp
ftp-data 20/tcp #FTP, data
ftp 21/tcp #FTP. control
telnet 23/tcp
smtp 25/tcp mail #Simple Mail Transfer Protocol
domain 53/tcp #Domain Name Server
domain 53/udp #Domain Name Server
tftp 69/udp #Trivial File Transfer
gopher 70/tcp
finger 79/tcp
http 80/tcp www www-http #World Wide Web
kerberos 88/tcp krb5 kerberos-sec #Kerberos
kerberos 88/udp krb5 kerberos-sec #Kerberos
rtelnet 107/tcp #Remote Telnet Service
pop3 110/tcp #Post Office Protocol-Version 3
sunrpc 111/tcp rpcbind portmap #SUN Remote Procedure Call
sunrpc 111/udp rpcbind portmap #SUN Remote Procedure Call
auth 113/tcp ident tap #Identification Protocol
imap 143/tcp imap4 #Internet Message AccessProtocol
bgp 179/tcp #Border Gateway Protocol
irc 194/tcp #Internet Relay Chat Protocol
https 443/tcp MCom
https 443/udp MCom
Protocoale de comunicaţie – Curs 5 33
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Caracteristici TCP
• Orientat pe conexiune.
• Interfață flux (stream)
– Transmisie și recepție de șir de octeți.
• Realizează controlul congestiei, adaptând viteza de transmisie la
condițiile rețelei.
• În cadrul unei conexiuni garantează transmisie în ordine și sigură a
datelor.
• Full duplex.
• Folosește ”Three way handshake” pentru o stabilire sigură a
conexiunii.
• Eliberare lină a conexiunii pentru a un pierde date.
Rejectare conexiune
SYN RCVD (Recepţie SYN) S-a recepţionat o cerere de conexiune; aştept ACK
SYN SENT (Transmisie SYN) (*) Aplicaţia a început deschiderea unei conexiuni
FIN WAIT 2 (Aşteptare FIN 2) (*) Partenerul este de acord cu eliberarea conexiunii
Controlul congestiei
• Fluxul de date transmis pe o conexiune TCP limitat de minimul
dintre:
– Dimensiunea ferestrei receptorului;
– Capacitatea reţelei (fereastra de congestie).
• Algoritmul de stabilire a ferestrei de congestie:
– Transmite un segment de dimensiune maximă pe conexiunea stabilită;
– Se dublează dimensiunea (rafală de segmente) la fiecare transmisie
confirmată la timp;
– La primul timeout se opreşte procedeul şi fereastra rămâne la valoarea
ultimei transmisii confirmate la timp (fără timeout).
• Algoritmul de control al congestiei:
– Foloseşte un prag (threshold);
– La un timeout pragul setat la jumatate din fereastra de congestie;
– Se aplică procedeul de creştere (exponenţială) a ferestrei de congestie
până se atinge pragul;
– Peste prag se aplică o creştere liniară (un segment maxim o dată).
Protocoale de comunicaţie – Curs 5 50
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Controlul congestiei
Stabilire time-out
• Setare necorespunzătoare <=> performanţe slabe:
– Prea lung: transmiţătorul aşteaptă mult pentru retransmisie.
– Prea scurt: trafic inutil generat de transmiţător.
• Timeout diferit la fiecare conexiune, setat dinamic.
• Timeout bazat pe Round Trip Time (RTT).
• Transmiţătorul alege “Retransmission TimeOut“ (RTO) pe baza
valorilor RTT anterioare:
– M este timpul măsurat până la primirea ack:
• RTT = α*RTT + (1- α)*M, cu α = 7/8;
• RTO = β*RTT, cu β = 2.
– Alegere după deviaţia standard DS, D aproximează DS:
• D = α*D + (1- α)*|RTT-M|;
• RTO = RTT + 4*D.
• Adaptive retransmission algorithm.
• Receptor:
– Localizează înregistrarea conexiunii din TPDU într-o tabela hash.
– Testează pentru cazul normal (similar cu transmisia).
– Actualizează înregistrarea conexiunii (starea curentă).
– Copiază datele la utilizator şi calculează suma de control.
– Transmite confirmarea.
Protocoale de comunicaţie – Curs 5 56
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Antet RTP
• P (Padding): pachet extins la • Timestamp: amprentă de timp
multiplu de 4 octeţi. relativă la începutul fluxului:
• X (eXtension): antet extins – Receptorul să folosească
(primul cuvânt dă lungimea). proba la timpul potrivit.
• Synchro: identifică sursa de
• CC: număr surse multiplexate. sincronizare (fluxul căruia îi
• M: mark, specific aplicaţiei aparţine pachetul) :
(exemplu: start video frame). – Pentru multiplexare de-
• Payload type: MP3. multiplexare.
• Contrib: lista surselor care au
contribuit la conţinutul curent
(folosit pentru mixere).
Sumar
• Servicii. • Management conexiune TCP.
• Socket API: • Gestiunea ceasurilor în TCP.
– Exemple client-server TCP şi UDP. • Proiectarea pentru
• Elementele protocoalelor de performanţă – Fast TPDU.
transport:
• RTP – Real-Time Transport
– Adresare. Protocol.
– Stabilire conexiune.
• TCP tranzacţional.
– Eliberare conexiune.
– Control flux şi memorare temporară.
– Multiplexare. • http://www.prenhall.com/
tanenbaum/
• UDP – User Datagram Protocol.
• TCP – Transmission Control
Protocol.