Agenda & UDP transport protocols Le cours d aujourd hui Application Présentation Session Telnet, FTP, e-mail, Web, Prométhée Spathis UPMC-L6/CNRS promethee.spathis@{lip6,upmc}.fr http://www-rp.lip6.fr/~spathis/ Transport Réseau Liaison / UDP, ICMP, IGMP driver et interface physique Architecture / (1) Architecture / (2) client FTP FTP protocol sever FTP protocol router UDP transport protocol protocol ICMP IGMP réseau Eth driver driver Ethernet protocol Ethernet driver token ring driver token ring ARP Interface physique RARP liaison Ethernet token ring Canal de communication
Encapsulation user data Démultiplexage Segment data data sever FTP ICMP IGMP UDP numéro du port de destination de l entête ou UDP Valeur du champ protocol de l entête Ethernet 14 20 20 Paquet Trame Ethernet data data Ethernet trailer 4 Ethernet driver Ethernet ARP Interface physique trame entrante RARP valeur du champ type de l entête Ethernet Problématique Créer un circuit logique de communication entre Le protocole rend un service de remise de paquets de machine à machine, qui plus best effort > passer à un service de canal de communication de à? réseau (internet) accès au réseau (host-to-network) Le système de communication s transport IfR1 système de communication vu par les protocoles de transport IfR1 IfR2 IfR2 IfR3 s transport IfR3 Service du système de communication routage à travers une interconnexion de réseaux fragmentation/réassemblage service non connecté, best effort La couche de transport est de bout-en-bout Localisée à la périphérie du réseau, au niveau des machines hôtes R1 R2 R3
Quel service transport pour les s? Les besoins des s s expriment en fonction de 3 paramètres : fiabilité tolérance aux pertes de données > audio transfert totalement fiable : aucune tolérance aux pertes > FTP, Telnet bande passante quantité minimum nécessaire pour un fonctionnement correct quelque soit le débit effectif obtenu > s dites élastiques contraintes temporelles s interactives : téléphonie sur Internet, jeux en réseau délai d acheminement borné Les besoins d s courantes Application file transfer e-mail Web documents real-time audio/video stored audio/video interactive games instant messaging Data loss no loss no loss no loss loss-tolerant loss-tolerant loss-tolerant no loss Bandwidth elastic elastic elastic audio: 5kbps-1Mbps Time Sensitive no no no yes, 100 s msec video:10kbps-5mbps same as above yes, few secs few kbps up yes, 100 s msec elastic yes and no Les protocoles de transport dans Internet Quel service de transport pour quelles s service: Orienté connexion : mise en place d une connexion entre les client et serveur (à l initiative du client) Transport fiable entre les émetteur et récepteur Contrôle de flux : éviter qu un émetteur n engorge un récepteur Contrôle de congestion : régulation du débit d émission de l émetteur en fonction de la saturation du réseau Aucune garantie : temporelles, bande passante minimum UDP service: Transfert de données non fiable entre émetteur et récepteur Ne fournit pas : établissement de connexion, fiabilité, contrôle de congestion, respect de contraintes temporelles, bande passante garantie Q: A quoi sert UDP du coup? Application e-mail remote terminal access Web file transfer streaming multimedia Internet telephony Application layer protocol SMTP [RFC 2821] Telnet [RFC 854] HTTP [RFC 2616] FTP [RFC 959] proprietary (e.g. RealNetworks) proprietary (e.g., Vonage,Dialpad) Underlying transport protocol or UDP typically UDP
Rôle du Transport Général Communication inter- Identification des points d'extrémités Actions de bout en bout Objectif transformer les propriétés pas toujours désirables du réseau en un service de haut niveau souhaité par les s A la demande de l' corriger les manquements du service réseau Plusieurs déclinaisons de protocoles de transport UDP (rfc 768) Service minimum (rfc 793) Service orienté données Challenges prendre en compte le service offert par la couche réseau pertes de paquets déséquencements erreurs MTU temps de traversée imprévisibles prendre en compte les besoins des s garantie de remise des messages reséquencement absence de duplications absence de messages erronés messages de longueur quelconque synchronisation entre l'émetteur et le récepteur prise en charge de plusieurs s sur le même hôte Transmission Control Protocol Principes généraux Couche de transport des systèmes d extrémités (i.e. s des données) Communication de à > (dé)multiplexage Offre un service de remise Point à point Communication bidirectionnelle Transfert fiable de données Mode connecté Flux d octets > Fournit un canal de transmission fiable et efficace Transmission Control Protocol Comporte les mecanismes (Dé)multiplexage Gestion de connexions Contrôle de perte Contrôle de flux: interaction inter-hôte Contrôle de congestion: interaction hôte-réseau réactive et agréssive Spécifications RFC 4614 : Roadmap
Difficultés pour Connexion avec des hôtes différents Phase d établissement et de libération de connexion RTT varie dans l espace et le temps Mécanisme d adaptation de la temporisation Survivance de paquets (trés long délai de transfert) Attention aux arrivées de trés vieux paquets Capacité de stockage dynamique des extrémités Apprendre les ressources disponibles Capacité de la route varie dans le réseau Ajuster le débit d émission à la bande passante Principe de conception Général Pas de version de Emetteur Comporte l'ensemble des fonctions Traitements complexes: éléments liés à la fiabilisation des échanges Récepteur Exécution simple acquitter les données reçues allouer le crédit d'émission Motivations interopérabilité maximum recherchée grand nombre d'os et de version > autant de "version de " évolution de graduelle Service versus protocole Unité de service: Octet Unité de protocole: Segment Unité de contrôle Notion de Maximum Segment Size (MSS) MSS = MTU - - ne transmet pas d'octets individuels en émission bufferise les octets jusqu'à en avoir un nombre raisonnable fabrique un segment et l'envoie en réception vide le contenu du segment reçu dans un buffer de réception le destinataire vient y lire les octets à sa guise Transfert de données assure un transfert efficace de bout en bout Segmentation découpage du flux en segments selon la MTU locale numérotation des octets gel du numéro de séquence pendant MSL (Maximum Segment Lifetime) assure un transfert de bout en bout fiable Contrôle de perte ou d'erreur acquittement positif cumulatif protection par temporisateur de retransmission chez l'émetteur uniquement Contrôle de flux Mécanisme à fenêtre de taille variable Progression par acquittement et crédit (window size) Contrôle de congestion
Construction d'un segment Quand est-ce que décide d'envoyer un segment? MSS (Maximum Segment Size) octets de données prêts à l envoi MSS = MTU en-tête en-tête le le lui demande explicitement fonction push le temporisateur expire pour éviter d'attendre trop longtemps MSS octets Contrôle d'erreur Principe le champ Checksum le champ Sequence Number des acquittements positifs (dumb receiver : pas d'acquittements négatifs) un temporisateur de retransmission des retransmissions qui réparent les pertes Contrainte ne pas retransmettre abusivement RTT variable > dimensionnement dynamique du temporisateur Contrôle de flux Objectifs l'émetteur ne fait pas déborder la mémoire du récepteur maximiser le débit pour un transport efficace Principe le débit de l'émetteur est contrôlé par une fenêtre d'anticipation dont la taille correspond à un nombrede crédits d'émission la fenêtre glisse à la réception d'un crédit (dans l'ack) le récepteur informe de l'espace disponible champ window size (rwnd) s applique à partir du numéro d acquittement l'émetteur limite la quantité émise (en transit) à window size unité: l octet fenêtre dynamique progression de la fenêtre par acquittement et crédit indique le quté d'octets de données que l'entité est prête à recevoir description des services Connexions Fiabilité et contrôle de flux requièrent que les deux entités initialisent et maintiennent des informations d états concernant le flot de données. Le point d accès au service de transport est appelé un port. Exprimé sur 16 bits, il est local à chaque hôte. Les numéros de ports source et destination identifient respectivement les s émettrice et réceptrice. 2 s utilisant établissent au préalable une connexion avant de pouvoir échanger des données. Une connexion est identifiée de manière unique par le quadruplet (numéro de port source, adresse source, numéro de port récepteur, adresse récepteur) Un couple (numéro de port, adresse ) est appelé socket et identifie une extrémité de connexion. La combinaison des informations d états du flot de données (numéros de sequence, taille des fenêtres) et des sockets est appelé une connexion Multiplexage Clé de démultiplexage = paire (port, hôte) appelée socket
numéros de port bien connus No port Mot-clé Description 20 FTP-DATA File Transfer [DefaultData] 21 FTP File Transfer [Control] 23 TELNET Telnet 25 SMTP Simple Mail Transfer 37 TIME Time 42 NAMESERVER Host Name Server 43 NICNAME Who Is 53 DOMAIN Domain Name Server 79 FINGER Finger 80 HTTP WWW 110 POP3 Post Office Protocol - Version 3 111 SUNRPC SUN Remote Procedure Call Mise en œuvre des ports port = référence abstraite > l'implémentation diffère d'un OS à l'autre! en général, un port = une file de messages d' Le ecrit des d' données ports si la file est pleine, files l écriture est bloqué quand le veut démultiplexage arrivée de messages d' recevoir un msg, il le retire de la tête de la file si la file est vide, le se bloque jusqu'à ce qu'un msg soit disponible exemple de flot unidirectionnel Format d un segment layer layer send buffer sender segments byte stream receiver byte stream receive buffer source port number destination port number 32 bit sequence number 32 bit acknowledgment number hlen reserved flags 16 bit window size checksum urgent pointer options (if any) padding 20 bytes network layer control datagrams network links control ACKs Data (if any) 4 bytes
source port number,, reserved, port numbers (16 bits) identifient les s émettrice et réceptrice (n o de ports et adresses identifient une connexion unique) Sequence number (32 bits) identifie l octet dans le flux de données que représente le premier octet de ce segment Acknowledgment number (32 bits) prochain numéro de séquence que l émetteur du segment s attend à recevoir = numéro de séquence du dernier octet reçu correctement et en séquence + 1 Hlen (4bits) longueur de l entête en mots de 32 bits Reserved (6 bits) champ réservé pour de futures utilisations, flags, Flags (6 bits) de «gauche à droite» URG pointeur urgent valide ACK numéro de séquence valide RST réinitialiser la connexion PSH données à envoyer «promptement» + notification immédiate à l réceptrice (même si buffer plein) SYN synchroniser les n o de séquences FIN l émetteur a fini d envoyer des données et ferme son côté de la connexion, windows size,, padding Calcul du checksum Window size (16 bits) Contrôle de flux et transmission efficiente : nombre d octets supplémentaires que le récepteur est prêt à recevoir, i.e. taille courante des tampons de réception du récepteur Cheksum TPC + data + pseudo permet de vérifier si les données sont intactes, si elles ont atteint la bonne destination et si les a passées au bon protocole. le pseudo n est pas transmis avec le segment. Ses champs sont extraits de l entête du paquet. Urgent pointer déplacement positif à ajouter au numéro de séquence du segment pour récupérer le numéro de séquence du dernier octet de donnée urgente permet à une extrémité de la connexion d envoyer des données out of band (spécifiées comme urgentes) sans avoir à attendre que l autre extrémité ait consommé les octets déjà dans le flux pseudo source address destination address zero protocol + data length source port number destination port number 32 bit sequence number 32 bit acknowledgment number hlen reserved flags 16 bit window size checksum urgent pointer options (if any) padding Data (if any)
Options (1) Option End of Options List (Kind = 0) : marque la fin de la liste des options si nécessaire Option NOP No OPeration (Kind = 1) : aligne le début d une option sur celui d un mot de 32 bits Options de type > 1 1 octet 00 1 octet 01 1 octet 1 octet Kind > 1 Length Data Options (2) Kind Length Meaning Reference ---- ------ ------------------------------- --------- 0 - End of Option List [RFC793] 1 - No-Operation [RFC793] 2 4 Maximum Segment Size [RFC793] 3 3 WSOPT - Window Scale [RFC1323] 4 2 SACK Permitted [RFC2018] 5 N SACK [RFC2018] 6 6 Echo (obsoleted by option 8) [RFC1072] 7 6 Echo Reply (obsoleted by option 8)[RFC1072] 8 10 TSOPT - Time Stamp Option [RFC1323] 9 2 Partial Order Connection Permitted[RFC1693] 10 3 Partial Order Service Profile [RFC1693] 11 CC [RFC1644] 12 CC.NEW [RFC1644] 13 CC.ECHO [RFC1644] 14 3 Alternate Checksum Request [RFC1146] 15 N Alternate Checksum Data [RFC1146]... Options (2 ) Kind Length Meaning Reference ---- ------ ------------------------------- ---------... 16 Skeeter [Knowles] 17 Bubba [Knowles] 18 3 Trailer Checksum Option [Subbu & Monroe] 19 18 MD5 Signature Option [RFC2385] 20 SCPS Capabilities [Scott] 21 Selective Negative Acknowledgements [Scott] 22 Record Boundaries [Scott] 23 Corruption experienced [Scott] 24 SNAP [Sukonnik] 25 Unassigned (released 12/18/00) 26 Compression Filter [Bellovin] Exemples d options Window Scale (WSOPT) : décalage à droite du champ window size (passage de la valeur max 64ko à 4 Go) 03 03 data Maximum Segment Size : taille maximum négociée d un segment en réception (option présente uniquement dans les segments SYN) 02 04 data http://www.iana.org/assignments/tcp-parameters
Time Stamp Option TSOPT Format d un datagramme UDP Time Stamp Option (TSOPT) 08 0A TS Value (TSval) TS Echo Reply (TSecr) 1 octet 1 octet 4 octets 4 octets pseudo zero source address destination address protocol UDP + data length TSval (TS Value) valeur de l horloge d horodatage à l émission TSecr (TS Echo Reply) valide uniquement dans si le flag ACK est positionné (mis à 0 sinon) reporte généralement la valeur du TSval de l option TSOPT la plus récemment reçue Mesure du RTT source port number length Data destination port number checksum UDP User Datagram Protocol les services rendus Protocole de transport (i.e. de bout en bout) le plus simple qui soit UDP étend (remise de machine à machine) en un service de communication de à Aucune valeur ajoutée à Fonction de (dé)multiplexage grâce aux champs Source Port et Destination Port Source Port et Destination Port identifient (quoique de façon indirecte) les en communication sur les deux machines distantes Clé de démultiplexage pour UDP = paire (port, hôte) appelée socket UDP numéros de port bien connus No port Mot-clé Description 7 ECHO Echo 11 USERS Active Users 13 DAYTIME Daytime 37 TIME Time 42 NAMESERVER Host Name Server 53 DOMAIN Domain Name Server 67 BOOTPS Boot protocol server 68 BOOTPC Boot protocol client 69 TFTP Trivial File Transfert Protocol 123 NTP Network Time Protocol 161 SNMP Simple Network Management Protocol
Établissement de connexion la poignée de main «à trois voies» Pourquoi à trois voies? SYN_SENT SYN_RCVD SYN_SENT ESTABLISHED SYN_RCVD ESTABLISHED? MSS = Maximum Segment Size spécifiée en fonction de la taille des tampons de réception si les 2 extrémités sont connectées au même réseau physique alors MSS = MTU ESTABLISHED ISN Initial Sequence Number 1 ère incarnation SYN_SENT SYN_RCVD Fermeture de connexion FIN_WAIT_1 (fermeture active) ESTABLISHED ESTABLISHED FIN_WAIT_2 TIME_WAIT CLOSE_WAIT (fermeture passive) LAST_ACK 2 ème incarnation SYN_SENT ESTABLISHED SYN_RCVD CLOSED TIME_WAIT ou état d attente 2MSL (Maximum Segment Life) permet à au client de retransmettre le dernier ACK si perdu (timeout du serveur et retransmission du dernier FIN ) Une connexion ne peut utiliser les adresses et numéros de port d une connexion dans l état 2MSL
TIME_WAIT = 2MSL Efficacité de transmission (1) FIN_WAIT_1 (fermeture active) FIN_WAIT_2 TIME_WAIT TIME_WAIT (réamorcé) CLOSE_WAIT (fermeture passive) RTO CLOSED Découplage écriture - émission Emission de segments pleins (taille MSS) Mise en mémoire des écritures (retard à l'émission) il a MSS (Maximum Segment Size) octets de données à envoyer MSS = MTU en-tête en-tête le lui demande explicitement fonction push le temporisateur expire pour éviter d'attendre trop longtemps MSS octets Acquittements retardés Pas d'envoi immédiat à réception d'un segment de données envoi d'un ACK: Avec un segment de données: Piggybacking (superposition) Pour les échanges bi-directionnelles Apres un délai maximum d'attente (rfc1122) Après la réception de 2 MSS Efficacité de transmission (2) Conclusions Protocole Transport Multiplexage et démultiplexage Gestion de connexions Numéros de séquence Contrôle de flux basé sur la notion de fenêtre glissante Retransmission sur expiration d un temporisateur Détection des erreurs basée sur une somme de contrôle