1.31k likes | 1.7k Views
les protocoles de transport TCP et UDP. PLAN. Origines de TCP-IP Les protocoles de transport Fonctions Ports UDP TCP Éléments de base de TCP Fiabilité Fenêtres Reprise sur erreurs Algorithmes de contrôle de congestion. Origine de TCP/IP. TCP-IP: origine. Commutation de paquets
E N D
les protocoles de transportTCP et UDP Transport Layer
PLAN • Origines de TCP-IP • Les protocoles de transport • Fonctions • Ports • UDP • TCP • Éléments de base de TCP • Fiabilité • Fenêtres • Reprise sur erreurs • Algorithmes de contrôle de congestion Transport Layer
Origine de TCP/IP Transport Layer
TCP-IP: origine • Commutation de paquets • Approche « informatique » vs « télécom » • Expérimentations de chercheurs • Approche intégrée : des applications aux outils techniques • Approche de complémentarité par rapport à l’existant • Déploiement rapide • Devient standard de fait • Internet • Le Web Transport Layer
Interconnexion de réseaux • Les réseaux d'entreprise • Les passerelles • Les protocoles • Les adresses • Le monde TCP-IP A B C Réseau 1 Réseau 3 P1 P2 Réseau 2 Réseau 4 D G E F Transport Layer
Architecture TCP-IP Machine A Passerelle Machine D Applications standards Applications standards Transport Transport Protocole IP Protocole IP Protocole IP Protocole d'accès à R1 R1 R2 Protocole d'accès à R2 Réseau R1 Réseau R2 Transport Layer
Rôle du transport Transport Layer
Le principe du bout en bout • Pas d’intelligence dans le réseau • Traitement simple dans le réseau -> haut débit • Réseau généraliste -> évolution de l’utilisation du réseau • Pas de redondance de contrôle • Séparation des fonctions • Contrôle -> hôte • Acheminement -> routeur Bout en bout Hôte Hôte Protocole IP Routeur Protocole IP Transport Layer
Fournissent une communication logique entre des processus applicatifs s’exécutant sur des hôtes différents transport protocols run in end systems transport vs network layer services: network layer: data transfer between end systems transport layer: data transfer between processes relies on, enhances, network layer services application transport network data link physical application transport network data link physical network data link physical network data link physical network data link physical network data link physical network data link physical logical end-end transport Services et protocoles de transport Transport Layer
Principe du bout en bout • Service réseau • Modes d’acheminement • Circuit virtuel • Datagramme • Mode non connecté et sans garantie • Robustesse • Indépendance du fonctionnement • Le fonctionnement du système d’extrémité n’est pas lié à celui du réseau Transport Layer
Fonction des protocoles de transport • Protocoles de bout en bout (pas comme à la couche réseau par exemple) • Service connecté ou non • fiabilité • performance • Transport d’un message d’un émetteur au récepteur • Indépendamment des réseaux qui véhiculent l’information • Pas de connaissance sur les réseaux traversés • « Interface » entre les applications et le réseau • S’appuie sur des protocoles (des couches basses) pour l’acheminement des données. • Deux protocoles principaux : • TCP : fiabilité, contrôle d’erreur, de flux, d’ordre • UDP : Vérification des erreurs Transport Layer
Rôle du Transport • Général • Communication inter-process • Identification des points d‘extrémités • Bout en bout • A la demande de l'application • Contrôle des échanges • Corriger les défauts du service réseau • Compte rendu sur la performance de la communication • Construction du service attendu par les applications distinct de celui fourni par la couche réseau • Mode connecté fiable, sur un réseau datagramme non fiable • Séparation du service fourni par l’opérateur et offert à l’utilisateur Transport Layer
Ports • Pour identifier une cible plus spécifique que l’adresse IP car les datagrammes sont destinés à des process et pas au système. • PID -> trop dynamique • par un point d’extrémité: • le port • n° de port sur 2 octets • Ceci est réalisé avec les ports • 16-bits qui identifient quel process est associé à quel datagramme. • Attachement du processus au port • Identification: (@ IP, n° port) • Deux types de ports : • well-known : appartiennent aux serveurs standards • Numéro impair entre 1 et 1023 • Utilisation d’un seul port sauf BOOTP (ports 67 et 68) • telnet utilise le port 23 • Permettent aux clients de trouver des serveurs sans information de configuration • ephemeral • Les clients utilisent des ports spécifiés dans les paquets UDP • Entre 1024 et 5000 habituellement • <transport protocol, IP address, port number> doit être unique. Transport Layer
Recall: segment - unit of data exchanged between transport layer entities aka TPDU: transport protocol data unit M M M M application transport network application transport network application transport network H n Multiplexing/demultiplexing Demultiplexing: delivering received segments to correct app layer processes receiver P3 P4 application-layer data segment header P1 P2 segment H t M segment Transport Layer
multiplexing/demultiplexing: based on sender, receiver port numbers, IP addresses source, dest port #s in each segment recall: well-known port numbers for specific applications Multiplexing: Multiplexing/demultiplexing gathering data from multiple app processes, enveloping data with header (later used for demultiplexing) 32 bits source port # dest port # other header fields application data (message) TCP/UDP segment format Transport Layer
Source IP: C Dest IP: B source port: x dest. port: 80 Source IP: C Dest IP: B source port: y dest. port: 80 Source IP: A Dest IP: B source port: x dest. port: 80 source port:23 dest. port: x source port: x dest. port: 23 Multiplexing/demultiplexing: examples Web client host C server B host A port use: simple telnet app Web server B Web client host A port use: Web server Transport Layer
TSAP/NSAP Host 1 Host 2 Application Serveur Couche transport TSAP m TSAP n La connexion transportcommence ici La connexion réseaucommence ici Couche réseau NSAP Couche liaison Couche physique Transport Layer
Adressage TSAP • Transport Service Access Point • Identification des applications en communication • Ex : adresse IP + Port • Scénario de connexion • Serveur sur host2 associé au TSAP n • Client sur host1 s’associe localement au TSAP m (source) et demande le TSAP n sur host 2 (destination) • Établissement de la connexion réseau entre la source (host 1) et la destination (host 2) • Demande d’établissement d’une connexion au niveau transport entre TSAP n et TSAP m • Validation Transport Layer
Etablissement en 3 étapes Entité de Entité de transport B transport A TPDU CR TPDU CC TPDU DT ou AK TPDU DT Problèmes de transport • Etablissement de connexion • Déséquencement entité de entité de transport B transport A TPDU demande de connexion TPDU de données TPDU confirmation de connexion Transport Layer
Three Way handshake • Etablissement d’une connexion bidirectionnelle avec des numéros de séquence indépendants • Utilisation d’un échange de 3 TPDU • CONNECTION_REQUEST • Init. Envoie son numéro de séquence vers la destination • CONNECTION_ACCEPTED • Acquittement et envoi de numéro de séquence • DATA • Init. Acquitte avec les premières données vers le destinataire Transport Layer
Problèmes de transport • Perte • Temporisateur de retransmission • Difficulté: dimensionnement Transport Layer
ouverture d'une connexion entre A et B TPDU DT 0 TPDU AK 1 T1 TPDU DT 1 TPDU AK 2 fermeture de la connexion établissement d'une nouvelle connexion La TPDU DT 1 est reçue sans Non Détéctée Duplication erreur mais hors séquence TPDU DT 1 Elle est gardée en attente de TPDU DT 0 reséquencement La TPDU DT 0 ayant été reçue, TPDU AK 2 TPDU DT 1 l'acquittement peut se faire La seconde TPDU DT 1 est TPDU AK 2 Perte Non Détéctée détectée comme dupliquée . Elle est écartée mais acquittée . . Problèmes de transport • Etablissement de connexion • Survivance A B Transport Layer
Etablissement d’une connexion : bilan • Envoi d’un CONNECTION_REQUEST TPDU, avec possibilité de • Perte • Mémorisation • Duplication • Eviter la duplication avec • Génération d’un nouveau TSAP à chaque connexion • Utilisation d’identificateurs uniques de connexion (état) • Élimination des anciens (=TTL mais circulaire) Transport Layer
Pipelining: sender allows multiple, “in-flight”, yet-to-be-acknowledged pkts range of sequence numbers must be increased buffering at sender and/or receiver Two generic forms of pipelined protocols: go-Back-N, selective repeat Pipelined protocols Transport Layer
Sender: k-bit seq # in pkt header “window” of up to N, consecutive unack’ed pkts allowed Go-Back-N • ACK(n): ACKs all pkts up to, including seq # n - “cumulative ACK” • may deceive duplicate ACKs (see receiver) • timer for each in-flight pkt • timeout(n): retransmit pkt n and all higher seq # pkts in window Transport Layer
GBN inaction Transport Layer
receiver individually acknowledges all correctly received pkts buffers pkts, as needed, for eventual in-order delivery to upper layer sender only resends pkts for which ACK not received sender timer for each unACKed pkt sender window N consecutive seq #’s again limits seq #s of sent, unACKed pkts Selective Repeat Transport Layer
Selective repeat: sender, receiver windows Transport Layer
data from above : if next available seq # in window, send pkt timeout(n): resend pkt n, restart timer ACK(n) in [sendbase,sendbase+N]: mark pkt n as received if n smallest unACKed pkt, advance window base to next unACKed seq # receiver sender Selective repeat pkt n in [rcvbase, rcvbase+N-1] • send ACK(n) • out-of-order: buffer • in-order: deliver (also deliver buffered, in-order pkts), advance window to next not-yet-received pkt pkt n in [rcvbase-N,rcvbase-1] • ACK(n) otherwise: • ignore Transport Layer
Selective repeat in action Transport Layer
Example: seq #’s: 0, 1, 2, 3 window size=3 receiver sees no difference in two scenarios! incorrectly passes duplicate data as new in (a) Q: what relationship between seq # size and window size? Selective repeat: dilemma Transport Layer
Protocoles de bout en bout : bilan • Réseau “best effort” sous jacent • Perte de paquets • Dé-séquencement • Limite la taille des paquets • Temps de transfert aléatoire • Services courants de bout en bout • Remise garantie des messages • Séquencement • Taille des messages quelconque • Synchronisation récepteur - émetteur • Plusieurs processus applicatif sur une même machine Transport Layer
A B Numérotation séquentielle DT0 7 31 (modulo 2 ou 2 ) DT1 ACK2, CDT=3 Dernier octet acquité DT2 CDT Fenêtre DT3 DT4 Limite supérieure ACK5, CDT=0 de fenêtre ACK5, CDT=1 DT5 • • • Problèmes de transport • Contrôle de flux • Adaptatif: fenêtre à taille variable • Dissociation du rôle des ACK: • Contrôle d’erreur • Contrôle de flux Transport Layer
utilisateur fournisseur utilisateur T_DATA.req DR t emporisateur de T_DATA.ind retransmission DC T_DATA.req Temporisateur T_DISC.req effacement de d’effacement AK absence de T_DATA.ind T_DISC.req connexion après le T_DISC.req effacement de connexion A B DT3 DT4 T_CLOSE.request CR5 T_CLOSE.indication Fermeture AK6 effective de la T_DATA.request demi-conexion DT8 T_CLOSE.request T_DATA.indication CR9 T_CLOSE.indication AK10 Problèmes de transport • Libération • Brutale • Ordonnée sur réseau non fiable Action synchronisée Transport Layer
Terminaison de connexion • Symétrique • Terminaison indépendante des deux directions • Fin de connexion lorsque chaque extrémité à terminé • Asymétrique • Fin de connexion dès qu’une des extrémités le demande • Petres possibles car plus de données acceptées après le DR Transport Layer
Connection request TPDU received Connection primitive executed Passive establishment pending Active establishment Pending Connection accepted TPDU received Connection primitive executed Establishment Disconnect request TPDU received Disconnect primitive executed Passive disconnectpending Active disconnect pending Disconnect primitive executed Disconnection request TPDU received IDLE Automate d’état IDLE Transitions déclenchées par des primitives locales ou des arrivées de TPDU Transport Layer
UDP Transport Layer
UDP • RFC 768 • Numéro de protocole 17 quand transporté par IP. • Interface d’application pour IP • Pas de fiabilité, contrôle de flux ou récupération sur erreur. • Aucun contrôle sur le flot -> simplicité • Peu d’overhead, mécanisme minimaliste • Mode datagramme, non connecté (orienté message) • “multiplexer/demultiplexer'' pour envoyer/recevoir des datagrammes, en utilisant des ports pour diriger ces datagrammes. • Qualité “best effort” • création d’un paquet et transmission immédiate au niveau IP • Attention : pas de contrôle de congestion Transport Layer
“no frills,” “bare bones” Internet transport protocol “best effort” service, UDP segments may be: lost delivered out of order to app connectionless: no handshaking between UDP sender, receiver each UDP segment handled independently of others Why is there a UDP? no connection establishment (which can add delay) simple: no connection state at sender, receiver small segment header no congestion control: UDP can blast away as fast as desired UDP: User Datagram Protocol [RFC 768] Transport Layer
Communication entre les couches process 1 process 2 process n port x port y port z UDP : démultiplexage de ports IP Transport Layer
Datagrammes UDP (1) • Port Source • indique le numéro de port du processus émetteur, • toute réponse y est dirigée. • Port Destinataire • Longueur : • nombre d'octets dans le datagramme entier (avec en-tête). • >8 Transport Layer
Datagrammes UDP (2) • Contrôle d’erreur • Optionnel en IPv4, obligatoire en IPv6 • Pseudo-header + en-tête + données • Pseudo-header: • @ IP source • @ IP destination • protocole Transport Layer
Sender: treat segment contents as sequence of 16-bit integers checksum: addition (1’s complement sum) of segment contents sender puts checksum value into UDP checksum field Receiver: compute checksum of received segment check if computed checksum equals checksum field value: NO - error detected YES - no error detected. But maybe errors nonethless? More later …. UDP checksum Goal: detect “errors” (e.g., flipped bits) in transmitted segment Transport Layer
Applications d’UDP • la signalisation de certains protocoles • Trivial File Transfer Protocol (TFTP) • Domain Name System (DNS) name server • Remote Procedure Call (RPC), utilisé par Network File System (NFS) • Network Computing System (NCS) • Simple Network Management Protocol (SNMP) • applications temps réel, visio et audio conférences • applications nécessitant transmission multipoint(multicast) exemple : applications du MBONE, sdr, tableau blanc, etc Transport Layer
often used for streaming multimedia apps loss tolerant rate sensitive other UDP uses (why?): DNS SNMP reliable transfer over UDP: add reliability at application layer application-specific error recover! UDP: more 32 bits source port # dest port # Length, in bytes of UDP segment, including header checksum length Application data (message) UDP segment format Transport Layer
TCP Transport Layer
TCP • RFC 793 - Transmission Control Protocol • 90% du trafic • Principes • Bonne utilisation des ressources du réseau • Couche de transport des systèmes d’extrémités (i.e. utilisateurs des données) • Communication bidirectionnelle et point à point sur des réseaux hétérogènes • Transfert fiable de données ( UDP) • Contrôle de perte • Contrôle de flux • Contrôle de congestion: interaction hôte-réseau réactive et agréssive • TCP suppose que les couches de communication qui lui sont inférieures lui procurent un service de transmission de paquet simple, dont la qualité n'est pas garantie. • Mode connecté et commutation de paquets • Orienté flux d’octets: • application écrit des octets • TCP émet des segments • application lit des octets • Récepteur le plus simple possible -> complexité chez l’émetteur • interopérabilité maximum recherchée • Utilisé parTELNET, FTP, HTTP … Transport Layer
Caractéristiques de TCP • Flot d’octets • Séquencés • Segmentation des données au niveau TCP • Circuit virtuel en mode connecté • La connexion est établie et considérée comme un circuit physique • fiabilité • Transfert bufferisé • Attendre d’avoir assez de données pour émettre (performance) • Full duplex • Pour les ACKs Application process Application process Octetslus Octets écrits … … TCP TCP Buffer émission Buffer réception … Segment Segment Segment T Segments transmis Transport Layer
Caractéristiques de TCP • Numéros de séquence indépendants dans les 2 directions • Associés à chaque octets • Indique le numéro du premier octet transmis • Mots de 32 bits • Bouclage théorique en moins de 6 minutes à 100 Mbps mais en pratique, c’est beaucoup plus long ! • Utilisé pour les acquittements • Si N octets sont délivrés du paquet avec le numéro de séquence X, l’acquittement aura la valeur X+N (soit le numéro du prochain octet à recevoir) • Piggybacking • Les deux numéros sont présents dans les mêmes paquets Transport Layer
Caractéristiques de TCP • Fiabilité • Numéro de séquence • Détection des pertes : • Aquittements positifs (ACK) du récepteur -> OK • Pas d’ACK -> timeout (temporisation) -> retransmission • ACK dupliqué • Réordonnancement des paquets au récepteur • Elimination des paquets dupliqués • Checksum • Retransmissions : • Selective repeat • Go back N • Contrôle de flux par annonce de fenêtres • Fenêtre modulée par le récepteur • Inclus dans l’ACK • Fenêtre qui indique le plus grand numéro de séquence pouvant être reçu • Erreur = congestion • Contrôle de congestion : adaptation à l’état d’occupation du réseau • Sans signalisation réseau • Orienté connexion Transport Layer