1.25k likes | 1.46k Views
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. Adresse IP. Origine de TCP/IP. TCP-IP: origine. Commutation de paquets
E N D
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
Adresse IP 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
L’architecture Internet Transport Layer
L’architecture TCP/IP • L’architecture TCP/IP contient trois niveaux protocolaires : • Le niveau IP (Internet Protocol) qui est un niveau paquet. • Le niveau TCP (Transmission Control Protocol) qui regroupe les niveaux • message et session. • Le niveau applicatif qui regroupe les niveaux présentation et application. • Il est à noter que l’architecture TCP/IP s’appuie sur des niveaux trames quelconque. 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
2 types de services de transport fournis par Internet (et, plus généralement, les réseaux TCP/IP) : Service orienté connexion Service sans connexion Lors de la création d'une application Internet, le développeur doit choisir l'un de ces services. Bordure du réseau : services Transport Layer
Objectif :Transfert de données entre terminaux Handshake : établissement de la connexion avant le transfert de données Échange de messages de contrôle Comme dans les protocoles humains Pourquoi orienté connection ? Seuls les hôtes connaissent cette connexion, les routeurs l'ignorent Allocation des ressources et définition d’étatsdans les deux hôtes TCP - Transmission Control Protocol Service en mode connecté sur Internet Bordure du réseau : service en mode connecté Transport Layer
Protocoles réseau : Relient des machines Toutes les communications sur Internet sont gouvernées par des protocoles Les machines qui communiquent doivent utiliser le même protocole Connection TCP réponse. <file> Flashback Connexion TCP req. Transport Layer
Service TCP[RFC 793] 3-way handshake Transfert de données fiable transmission de tous les flots d'octets sans erreur et dans l’ordre acquittements et retransmissions Contrôle de flot: L’émetteur ne submerge pas le récepteur : adaptation du débit d'émission Contrôle de congestion : Pour éviter de saturer les buffers des routeurs L’émetteurréduit son débit d’émissionquand le réseau est congestionné Alerte pour les hôtes : plus d'acquittement des données Bordure du réseau : service en mode connecté Transport Layer
Transport fiable, contrôle de flux et de congestion non obligatoires dans un service orienté connexion Service orienté connexion : handshake TCP = service de transport en mode connecté d'Internet fournit des fonctionnalités supplémentaires Au niveau de l'application : Connaissance des services fournis Aucune idée de la façon dont ce service est fourni Architecture en couches Bordure du réseau : service en mode connecté Transport Layer
Objectif :Transfert de données entre terminaux L’objectif ne change pas Service en mode non connecté sur Internet = UDP - User Datagram Protocol [RFC 768] Pas d'établissement de connexion Données émises immédiatement Transfert de données non fiable Pas d'acquittement : on ignore si les paquets sont arrivés ou non Pas de contrôle de flux Pas de limitation du débit d'émission Pas de contrôle de congestion Pas de limitation du débit d'émission Bordure du réseau : service en mode non connecté Transport Layer
Applications utilisant TCP : HTTP (WWW) FTP (transfert de fichiers) Telnet (login distant) SMTP (email) Applications utilisant UDP : Streaming d'audio et de vidéo Visioconférence Téléphonie sur Internet Bordure de réseau : service en mode non connecté 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