rl_curs06

Upload: ionbacunov

Post on 07-Mar-2016

213 views

Category:

Documents


0 download

DESCRIPTION

RL_curs06

TRANSCRIPT

  • 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