TCP Transmission Control Protocol Fiche de Contrôle Relecture faite le: 2/1/98 Correction orthographique faite le: 2/1/98 Correction grammaticale faite le: 2/1/98 Michel BESSON 42 42 1 1 1 1 1 1
TCP Transmission Control Protocol Généralités: A l'origine il a été développé dans le cadre du projet ARPA ensuite adopté et standardisé par le DOD dans une série de normes. Généralités: A l'origine il a été développé dans le cadre du projet ARPA ensuite adopté et standardisé par le DOD dans une série de normes. Michel BESSON 43 43 2 2 3 3 2 2
TCP Transmission Control Protocol Standard de fait Présent au catalogue de tous les constructeurs Transmission full duplex Modèle à 5 couches Il est le standard de fait dans: La communauté universitaire Le monde UNIX Les réseaux locaux Tous les grands constructeur dont IBM ont incorporé TCP/IP à leur catalogue en tant qu'implémentation. Plus ancien que TP4 il est intéressant de constater les différences entre ces 2 protocoles , qui sont conçus pour rendre un service équivalent, tout en s'appuyant sur une technique différente. TCP se doit d'assurer un service fiable en utilisant dans un environnement de réseau à commutation de paquets , qui peut ne pas l'être. La transmission est dite : En full duplex A flux contrôlé TCP se positionne dans un modèle à 5 couches entre une couche réseau IP fonctionnant exclusivement en mode Datagramme et une couche application . TCP est orienté connexion 5,6,7 4 3 1,2 Michel BESSON 44 3 44 4 4 3 3 3
Communications d’extrémité à extrémité TCP Communications d’extrémité à extrémité Application Application Présentation Présentation TCP Session Session QUELLES SONT LES MISSIONS de TCP ? Gérer le flux des datagrammes transitant depuis les ULP vers IP et inversement venant de la couche IP à destination des ULP (Upper Layer Protocols). S’assurer que la priorité et la sécurité sont respectés. Gérer la terminaison d’une application situé en couche supérieure attendant des datatgrammes. Gèrer les erreurs survenant dans les couches inféreieures. Maintenir une table d’état de tous les flux qui entrent et sortent de la couche TCP. Il rend les applications indépendantes de toutes ces contraintes. TCP ne réside que dans les composants traitant des datagrammes et non dans ceux traitant du routage. Il est donc généralement absent des passerelles. Contrôler que les datagrammes sont allés de la machine source à la machine destinatrice. TCP étant orienté connexion, le terme de circuit virtuel est utilisé pour décrire les communications entre deux machines. Ces communications sont en grande part composées de messages d’acquittement (ACK et codes d’erreur) et de numéros de séquence de datagramme. TCP TCP ÏP ÏP ÏP Liaison Liaison Liaison Liaison Physique Physique Physique Physique Passerelle sous-réseau sous-réseau 18/11/2017 Michel BESSON 4 46 46 5 4 5 5 4 5
Ethernet, TR, X25, Sync, Async.......... Modèle TCP /IP ULP 5,6,7 4 3 1,2 SUIVI D’UN MESSAGE Synthèse P89 UDP TCP IP, ICMP, (ARP) Ethernet, TR, X25, Sync, Async.......... 18/11/2017 Michel BESSON 5 46 46 5 6 6 4 4 5
RAPPELS IP Internet Protocol Assure la transmission en mode DATAGRAMME Fragmentation et réassemblage des paquets Détermination de la route d'acheminement Interface avec les protocoles supérieurs (TCP, UDP ) Interface avec la couche de niveau 2 ( via ARP pour Ethernet ) Fonction de passerelle RAPPEL 18/11/2017 Michel BESSON 6 50 50 9 7 7 5 5 11
RAPPELS ICMP Internet Control Message Protocol Intégré à IP il assure: Le routage La détection des erreurs Les tâches de gestion du réseau ICMP alerte IP : Quand un paquet ne peut atteindre sa destination En cas de saturation des buffers utilisés En cas d'erreur de transmission RAPPEL 18/11/2017 Michel BESSON 7 51 51 10 8 8 6 6 12
RAPPELS ARP Adresse Resolution Protocol Existe seulement sur Ethernet BUT : Etablir la correspondance entre une adresse internet ( 4 octet) et une adresse Ethernet ( 6 octets ) souvent figée en PROM Emission d'une trame de diffusion demandant qui possède l'adresse Internet recherchée. La station possédant cette adresse répond en fournissant son adresse Ethernet. Correspondance mémorisée pour demande ultérieure RAPPEL 18/11/2017 Michel BESSON 8 52 52 11 9 9 7 7 13
PROTOCOLES DE NIVEAU 4 Généralités Deux protocoles sont disponibles pour l'utilisateur UDP : User Datagram Protocol TCP : Transmission Control Protocol 18/11/2017 Michel BESSON 9 12 53 53 14 10 10 8 8
PROTOCOLES DE NIVEAU 4 Présentation synthétique TCP Transmission Control Protocol Transmission fiable d'un flot de données entre deux machines TCP VERSUS TP4 ET FONCTIONNALITÉS Le N° de séquence NS est associé à chaque segment comme dans TP4, il décrit le prochain N° de séquence attendu NS pointe sur un Octet du flot de données en cours de transmission Les données sont délivrées en flot continu (stream) à l'utilisateur Le mode TPDU d'ISO proche de la notion de paquet n'est pas retenu La construction dune structure entière soumise à transmission puis délivrée au destinataire en entier n'est pas employée TCP regroupe les données et les envoie en bloc en continu TCP est libre de ses regroupements (PUSH) (URG) Originalité: la primitive PASSIVE OPEN Elle dispense TCP d'une primitive d'Indication puisque c'est l'application qui se met explicitement en attente d'une ouverture de connexion Définit le flot de données Acquitte les données Retransmet les données perdues ou endommagées Multiplexage des données sur une seule connexion physique (circuit virtuel: couple { adresse IP, Port } ) Assemble les datagrammes reçus dans le bon ordre et demande les datagrammes manquants ou erronés. Etablit la relation entre circuit virtuel et processus utilisateur Assure la gestion de flux ( fenêtre d'anticipation ) Gestion des "Time Out" 18/11/2017 Michel BESSON 10 54 13 54 11 11 9 9 15
PROTOCOLES DE NIVEAU 4 Présentation synthétique UDP User Datagram Protocol Fournit une interface Utilisateur du Protocole IP Résout les relations Datagram <--> Processus Utilisé pour: Synchronisation de l'heure sur le réseau Echange de type question / réponse Accès aux fichiers répartis NFS Utilisé par TFTP ( Trivial File Transfert Protocol ) 18/11/2017 Michel BESSON 11 14 55 16 55 12 12 10 10
TCP /IP Couche Application NFS Mountd Lockd Status Monitor Port Mapper FTPd/ LPD X console Mgmt RPC 5,6,7 4 3 1,2 XDR NFS PROTOCOL ARCHITECTURE (NETWORK FILE SYSTEM) Extension du protocole UNIX développée par SUN COUCHES 7 NFS se charge de compenser le manque de fiabilité de UDP 6 XDR équivaut à la couche Présentation 5 RPC équivaut à la couche Session 4 UDP 3 IP 2 et 1 LLC1 et MAC + PHY du réseau local BASÉ SUR UN LANGAGE DE REQUÊTE Ex: Read (fhandle, offset, count) retourne jusqu'à Count de données du fichier identifié par fhandle en commençant à offset octets du début du fichier, ainsi que les attributs du fichier, exécution de la requête. Ces requêtes sont utilisées pour l'accomplissement de commandes s'appliquant sur un système de fichier distant NFS est un protocole sans état, chaque requête contient les éléments nécessaires à son exécution, chacune est indépendante des autres. Afin de fiabiliser les échanges dans un contexte d'accès concurrents un service de vérouillage de fichier est fourni séparément. UDP TCP IP, (ARP) 802.x RFC 877 SLIP PPP AAL 5 X25 Sync. ATM Asynch. NFS 18/11/2017 Michel BESSON 12 47 6 47 11 13 13 11 6
COMMUNICATION ENTRE PROCESSUS Mécanismes de communications Named pipes, MailSlots, DDE, RPC, NetBios .... et Les "SOCKETS" mise en oeuvre à l'université de Berkeley pour UNIX BSD Implémenté également sur d'autres systèmes d'exploitation sous forme de librairies: UNIX AT & T MS/DOS VMS ..... MÉCANISMES DE COMMUNICATION (RAPPEL) Named pipes un canal de contrôle et un canal data (utilisé par NetBEUI, SPX, TCP) MailSlots (boîtes aux lettres) connectionless travaillent avec un N° de SAP (couches homologues), un pour le travail à expédier et un pour le travail reçu. DDE (NetDDE) l'application doit avoir été développée en fonction du mode DDE ex: presse papier RPC (client/serveur connectionless) transmission Cli/Ser le serveur transmet sur commande sans connaître explicitement les destinataire, après s'être annoncé. NetBios jeux de commandes à disposition de 2 applications utilisant ce protocole de communication (verbes) Sockets (Historique) étape 1: Collage de protocoles (bind) à l'application obligation de redévelopper l'application en cas de nouveaux protocoles étape 2: Streams (85) ils encapsulaient les protocoles (ex : IPX, IP, DLC) étape 3: Sockets (ports applicatifs) optimisent la notion de streams, donnent l'adresse correspondante au protocole souhaité, les applis déposent les datas au N° de socket 18/11/2017 Michel BESSON 13 48 48 7 12 14 14 12 7
SOCKETS Objectifs Permettre à l'appelant d'entrer en contact avec un programme FTP server et client Un socket = trois parties: l'adresse IP du destinataire le N° de port du programme utilisé un protocole : TCP ou UDP selon le cas GÉNÉRALITÉS Destiné à permettre à l'appelant d'entrer en contact avec un programme FTP server et client une machine exécute le programme client (ex: navigateur WEB) et communique avec une machine doté d'un programme Serveur Composer le N° d'appel revient à utiliser le socket - N° de tel Un socket = trois parties: L'adresse IP du destinataire Le N° de port du programme utilisé Un port TCP ou UDP selon le cas un N° de 16 bits est attribué à chaque programme qui souhaite envoyer ou recevoir des informations TCP Exemple de ports "bien connus" FTP: ports TCP 20 et 21 SMTP: port TCP 25 Serveurs WEB: port TCP 80 News en réseau protocole NNTP: port TCP 119 Port du bureau de poste POP3: port TCP 110 Michel BESSON 56 56 15 13 15 15 13 8
PORTS et SOCKETS Utilisation des sockets Toutes les applications des ULP qui utilisent TCP ou UDP possèdent un N° de Port qui identifie l’application. Les N° de port Les conventions FONCTIONNEMENT DES SOCKETS Les applications des ULP qui utilisent TCP ou UDP possèdent un N° de Port qui identifie l’application. Les N° de ports peuvent être affectés : à des machines individuelles ou selon le bon vouloir de l’administrateur. Des conventions sont observées afin de permettre une meilleure communication entre les implémentations de TCP. On identifie le type de service demandé entre système TCP. Les N° de port supérieurs à 255 (et 0) sont réservés à un usage local Michel BESSON 56 56 15 14 16 16 14 9
SOCKETS Fonctionnement des sockets Deux modes d'ouverture de sessions au choix Passive open Active Open FONCTIONNEMENT DES SOCKETS Ex un programme de dialogue basé sur TCP/IP utilisant par ex: le port 1500 placé sur une machine IP 123.124.55.66 On l'installe et le configure avec le port 1500 la combinaison Ad IP 123.124.55.66 + port 1500 forme une adresse de socket Deux modes d'ouverture de sessions au choix Passive open j'indique que je souhaite me mettre en attente d'appel soit: réveillez moi sur tout appel entrant au port 1500 Active Open Sur appel ou demande d'ouverture Active échange de valeurs tampons etc. et retour éventuel en mode passif en final WinSock Dédiée au marché des PCs Pour unifier l'interface de programmation pour ce monde spécifique Michel BESSON 56 56 15 15 17 17 19 9
N° de port TCP généralement utilisés Nom du process Description 1 TCPMUX Multiplexeur de service de port TCP 5 RJE Entrée de tâche à distance (remote job entry) 7 ECHO Echo 9 DISCARD Discard (ecarter) 11 USERS utilisateurs actifs 13 DAYTIME Heure du jour 17 Quote Citation du jour 19 CHARGEN Générateur de caractères 20 FTP-DATA FTP données 21 FTP FTP contrôle 23 TELNET Telnet 25 SMTP Messagerie électronique 27 NSW-FE NSW User System Front End 29 MSG-ICP MSG ICP 31 MSG-AUTH Authentification MSG 18/11/2017 Michel BESSON 17 60 60 60 60 60 57 16 18 18 15 60 60
N° de port TCP généralement utilisés Nom du process Description 33 DSP Display Support Protocol 35 Serveirs d’impression privés 37 TIME Heure 39 RLP Ressource location protocole 41 GRAPHICS Graphics 42 NAMESERV Host Name Server 43 NICNAME Who Is 49 LOGIN Login Host Protocol 53 DOMAIN Domain Name Server 67 BOOPPS Bootstrap Protocol Server 68 BOOTPC Bootstrap Protocol Client 69 TFTP Trivial File Transfer Protocol 79 FINGER Finger 101 HOSTNAME NIC Host Name Server 102 ISO-TSAP ISO- TSAP 18/11/2017 Michel BESSON 18 60 60 60 60 60 57 17 19 19 16 60 60
N° de port TCP généralement utilisés Nom du process Description 103 X400 X400 104 X400SND X400 SND 105 CSNET-NS CSNET Mailbox Name Server 109 POP2 Post Office Protocol v2 110 POP3 Post Office Protocol v3 111 RPC SUN RPC Portmap 137 NETBIOS-NS NetBIOS Name Service 138 NETBIOS-DG NetBIOS Datagram Service 139 NETBIOS-SS NetBIOS Session Service 146 ISO-TP0 ISO TP0 147 ISO-IP ISO-IP 150 SQL-NET SQL-NET 18/11/2017 Michel BESSON 19 60 60 57 60 60 60 17 20 20 18 60 60
N° de port TCP généralement utilisés Nom du process Description 153 SGMP SGMP 156 SQLSRV SQL Service 160 SGMP-TRAPS SGMP TRAPS 161 SNMP SNMP 162 SNMPTRAP¨ SNMPTRAP 163 CMIP-MANAGE Gestionnaire CMIP / TCP 164 CMIP-AGENT Agent CMIP / TCP 165 XNS-courier XEROX 179 BGP Border Gateway Protocol 18/11/2017 Michel BESSON 20 60 60 60 57 60 60 60 21 21 19 18 60
SOCKETS Mise en correspondance des entrées dans les tables de port Source 350 Destination 23 Source 351 Destination 23 Source 23 Destination 350 Source 400 Destination 23 Source 23 Destination 351 Source 23 Destination 400 Machine A Machine B Machine C Mise en correspondance des entrées dans les tables de port 18/11/2017 Michel BESSON 21 60 60 60 57 60 60 23 23 21 18 60 60
SOCKETS Multiplexage d’un port de destination Source 350 Destination 23 Source 400 Destination 23 Source 354 Destination 23 CIBLE Machine A Machine B Machine C Multiplexage d’un port de destination 18/11/2017 Michel BESSON 22 60 60 60 60 57 60 24 24 22 18 60 60
TCP Transmission Control Protocol Généralité Communication de TCP avec les ULP TCP communique avec les applications dans la couche supérieure et avec le réseau via la couche inférieure. GÉNÉRALITÉS TCP communique avec les applications dans la couche supérieure et avec le réseau via la couche inférieure. Des méthodes sont définies pour la communication TCP / ULP (tableaux suivants) Aucune ne l’est pour la communication avec IP (ou autre) Cette couche devra définir la méthode de communication. La communication avec celle-ci est généralement asynchrone. Michel BESSON 56 56 15 23 25 25 20 17
Relations Utilisateur -> TCP (iso : Reqête et Reponse) Primitive Paramètres attendus Table 7.6 : Passive open Port local sans spécif de source Passive Open Port local, socket de destination. avec spécif. de source Facultatif: timeout ULP, action du timeout, précédence sécurité, option. Active open Port local, socket distant sans données Facultatif: timeout ULP, action du timeout, précédence Active open Port local, socket destination, datas, long. datas, avec données flag de push, flag urgent. Facultatif: timeout ULP, action du timeout, précédence sécurité. Send Nom local de connexion, adresse de tampon, compte en octets, flag de push, flag urgent. Receive Nom local de connexion, adresse de tampon, Allocate Nom de connexion locale, longueur des données. Status Nom local de connexion. Close Nom local de connexion. Abort Nom local de connexion. A B PRIMITIVES: Relations Utilisateur -> TCP (iso : Reqête et Reponse) 2 Primitives Passive OPEN: L'utilisateur spécifie dans les 2 cas qu'il est prêt à accepter une connexion avec ou sans précision de source. Spécification de source faite: Elle comporte l'adresse complète du correspondant attendu. Le socket est totalement défini. Spécification de source non faite: Seule la porte locale est définie . N'importe qu'elle adresse d'application distante sera acceptée. Dans les 2 cas TCP répond par une primitive "OPEN ID" qui fournit un nom local de connexion qui sera pris comme référence par la suite.( idem TP4) 2 Primitives Active OPEN: Avec transfert de données Sans transfert de donnée Après réponse en fourniture de référence locale pour la connexion , ...... l'établissement peut s'opérer. (voir diagramme) ULP TCP ULP Primitives de service requêtes ULP vers TCP 18/11/2017 Michel BESSON 24 57 57 16 18 26 24 23 26
Relation TCP -> Utilisateur (iso : Indication / Confirmation) Table 7.6 : Primitive Paramètres attendus Open-Id Nom local de connexion, socket distant, adresse de destination. Open-Failure Nom local de connexion. Open Success Nom local de connexion. Deliver Nom local de connexion, adresse de tampon, Longueur des données, flag urgent. Closing Nom local de connexion. Terminate Nom local de connexion, description Status-Response Nom local de connexion, port source, adresse source socket distant, état de connexion, fenêtre de réception, fenêtre d’émission temps d’attente du Ack, mode urgent, précédence, sécurité timeout, action du timeout. Error Nom local de connexion, description de l’erreur. A B PRIMITIVES: Relation TCP -> Utilisateur (iso : Indication / Confirmation) Rappel sur le Socket : concaténation d'une : adresse globale inter-réseau + porte locale. Nota: Si "Passive Open" est utilisée seule la porte locale est définie et n'importe quelle adresse d'application distante sera acceptée. ULP TCP ULP Primitives de service requêtes TCP vers ULP 18/11/2017 Michel BESSON 25 57 57 16 18 27 25 24 27
TCP Transmission Control Protocol Ports actifs et Passifs Méthodes d’établissement de connexion Deux méthodes Active Passive Primitives d’ouverture de connexion Passive: deux méthodes Passive spécifiée Passive non spécifiée PORTS ACTIFS ET PASSIFS Méthodes d’établissement de connexion Deux méthodes: active et passive Active: TCP envoie une requête de connexion, la couche supérieure fournit le N° de socket. Passive: L’ULP ordonne à TCP d’attendre l’arrivée de requête de connexion en provenance d’un système distant (celui ayant été activé, en général, par une instruction d’ouverture active). Quand TCP reçoit la requête, un N° de port est affecté. La connexion sera créée immédiatement Primitives d’ouverture de connexion Passive: deux méthodes passive spécifiée et non spécifiée Passive spécifiée La connexion est créée quand les niveaux de précédence (priorité) et de sécurité sont acceptables. Passive non spécifiée Connexion ouverte sur simple sollicitation. utilisée par les serveurs attendant une requête de client de type inconnu. Michel BESSON 56 56 15 26 28 28 20 17
TCP Transmission Control Protocol Ports actifs et Passifs Règles d’usage des process de connexion Particularité PORTS ACTIFS ET PASSIFS Règles d’usage des process de connexion Une seule machine est en mode passif La seconde utilise un mode actif, des informations spécifiques lui sont associées, telles que N° de port, niveaux de précédence sécurité. Particularité On peut transgresser le mode requête active vers port passif. Une ouverture de connexion peut être réalisée sans qu’un port actif soit en attente. Dans ce cas le TCP initiateur de la requête inclut le N° de socket local et distant. Si le récepteur est configuré pour répondre positivement la connexion sera ouverte. Michel BESSON 56 56 15 26 29 29 20 17
Les blocs de transmission et le contrôle de flux Nom de la variable Description Variables d’émission SND.UNA Emission non acquittée SND.NXT Envoyer suivant LES BLOCS DE TRANSMISSION ET LE CONTRÔLE DE FLUX Suivi des informations par TCP Le TCB permet le suivi d’un très grand nombre d’informations relatives à chaque connexion ( Transmission Control Bloc). Contenu : Des informations sur les sockets locaux et distants. Des tampons d’émission et de réception. Des valeurs de priorité et de sécurité du segment courant (en file d’attente). Variables utilisées Pour assurer le suivi des états de réception et d’émission TCP contrôle le flux d’information entre deux sockets avec les variables SND.WND Fenêtre d’émission SND.UP N° de séquence du dernier ensemble urgent SND.WL1 N° de séquence de la dernière mise à jour de fenêtre 163 N° d’acquittement pour la dernière mise à jour de fenêtre 164 N° de séquence du dernier ensemble poussé (push) 165 N° de séquence initial de l’émission Variables de réception 179 N° de séquence du prochain ensemble reçu 163 Nombre d’ensemble pouvant être reçus 164 N° de séquence des dernières données urgentes 165 N° de séquence inbitial de réception 18/11/2017 Michel BESSON 28 60 60 60 60 57 19 21 30 18 60 60 60
Les blocs de transmission et le contrôle de flux Scénario d’Utilisation des variables Echange: A veut envoyer 5 blocs de données à B, Si la limite de Window est (7), sept blocs de données peuvent être envoyés sans recevoir d’acquittement. La var SND.UNA sur A indique combien de blocs ne sont pas acquittés (5), La var SND.NXT contient la valeur du prochain bloc dans la séquence (6). La var SND.WND est (2) soit (7- 5) . Deux blocs peuvent être envoyés sans surcharger la fenêtre. B renvoie un message contenant le nombre de blocs reçus. La limite de la fenêtre est ajustée en conséquence. SCÉNARIO: Echange: voir ci-dessus Complexité de l’échange de message entre deux machines La complexité peut s’accroître à mesure que la machine émettrice : envoie des blocs non acquittés à hauteur de la limite de fenêtre en attendant l’acquittement de blocs envoyés précedemment (enlevés de la file d’attente d’arrivée) et avant d’envoyer de nouveaux blocs pour remplir la fenêtre. Michel BESSON 56 56 15 26 31 29 20 17
TCP Transmission Control Protocol Généralités Importance des Timers dans les processus d’échange orientés Connexion. ILS ÉVITENT DES ATTENTES LONGUES POUR LA RÉCEPTION D’UN ACK OU D’UN MESSAGE D’ERREUR. Spécifications particulières de TCP GÉNÉRALITÉS Les Timers Les spécifications de TCP sont particulières. l’ACK n’est renvoyé que pour le plus haut N° de datagramme reçu sans erreur. les réception de fragmentaires sont soumis à une obligation de réception complète avant retour de l’ACK. si un timer expire sur perte ou retard d’un datagramme intermédiaire, c’est l’ensemble du message qui sera renvoyé. si TCP reçoit des doublons (retransmission près timeout par Ex.) il les écartent tous, sans envoi de message d’erreur. Seule la bonne réception du message est analysée et non le nombre de copie reçues. aucun NAK n’est prévu, le réenvoi intervient uniquement sur expiration du timer en cas de non réception d’ACK. Michel BESSON 56 56 15 26 32 30 20 17
TCP Transmission Control Protocol Les Timers TCP Le timer de retransmission Le timer QUIET LES TIMERS TCP Le timer de retransmission Il gère les timeouts de retransmission (RTO) Dépassement d’un intervalle de temps prédéterminé entre envoi d’un Datagramme et ACK en retour. Si le Timer expire , le datagramme est renvoyé avec un RTO ajusté. Le timer QUIET Après fermeture de la connexion, des messages peuvent être encore en cours de transit Il tenteront d’accéder au port fermé. Le timer QUIET permet d’éviter que ce port venant d’être fermé ne se rouvre. La valeur de ce timer est = au double de celle du TTL en pratique le port devient indisponible durant un délai pouvant aller jusqu’à 30 secondes. des messages d’erreur sont alors renvoyés aux applications tentant ces accès. TCP utilise des algorithmes de timer adaptatifs (charge du réseau) Michel BESSON 56 56 15 26 33 31 20 17
TCP Transmission Control Protocol Les Timers TCP Le timer de persistance Le timer Keep-Alive Le timer Idle LES TIMERS TCP Le timer de persistance Il gère un cas spécifique rare: une fenêtre de réception est à 0, ce qui oblige l’émetteur à passer en pause. le message indiquant l’ordre de reprise d’émission peut être perdu, le délai d’attente devient infini. Le timer de persistance attend un délai prévu, puis envoi régulièrement un segment d’un octet afin de s’assurer que la machine réceptrice est toujours saturée (message de segment d’état). Machine toujours saturée: le message comportant la taille de fenêtre nulle est renvoyé. Machine disponible: le message comportant la taille de fenêtre est renvoyé et la transmission reprend. Le timer Keep Alive et le timer Idle Ces deux timers ont été ajoutés aux spécifications ultérieurement. Le timer Keep Alive envoi un paquet vide à intervalle régulier (vérification de la présence du partenanire) valeur de 5 à 45 secs. (définie par une appli.). Si aucune réponse n’est reçue avant l’expiration du timer IDLE, la connexion est considérée comme rompue. valeur moyenne 360 secs. Michel BESSON 56 56 15 26 34 32 20 17
Fig 7.23 Format des segments TCP 1 - des commandes 2 - des données Octet 1, 2 Port Source 3, 4 Port Destination 5,6,7,8 N° de séquence 9,10,11,12 Numéro de séquence acquitté 13 Offset SEGMENTS TCP: Les formats des segments (paquets TCP) sont différent de ceux de TP4 , en effet il peuvent contenir dans 1e même paquet: 1 - des commandes 2 - des données 3 - des ACK Le segment TCP peut donc jouer plusieurs rôles à la fois , ce mécanisme est appelé PIGGY BACKING. Les No de séquence pointent sur des octets du flot et non sur des paquets. FORMAT DE SEGMENT TCP: Pour mémoire le type de ces trames est défini par un Bit positionné et non par un code comme dans TP4. Ports Source Octets 1 et 2: Application source TSAP S, identifie l’utilisateur (appli.) local (couche sup.) Ports destination Octets 3 et 4: Application destinataire TSAP D, identifie l’utilisateur de la machine distante On trouve sous UNIX dans /etc/services les valeurs prédéfinies 14 URG ACK PSH RST SYN FIN 15, 16 Fenêtre ( Window ) 17, 18 Checksum 19, 20 Pointeur sur les Octets urgents 21,22,23,24 Options 25 Données Fig 7.23 Format des segments TCP N Données 18/11/2017 Michel BESSON 33 61 61 20 32 39 37 28 22
Fig 7.23 Format des segments TCP No de séquence Octets 5 à 8 1, 2 Port Source 3, 4 Port Destination 5,6,7,8 N° de séquence 9,10,11,12 Numéro de séquence acquitté 13 Offset FORMAT DE SEGMENT TCP: suite No de séquence Octets 5 à 8 Il pointe sur l'octet transmis dans le flot. position du bloc courant dans l’ensemble du message. Il est initialement établi par une horloge dans chaque implémentation de TCP, il fournit donc le N° de séquence initial d’émission (ISS). La taille du champ et le rythme d'incrémentation sont tels que la protection contre une réutilisation avant le délai de persistance est efficace. Ceux qui en portent le font croître du nombre d'octets de données transmises. No de séquence ACK Octets 9 à 12 Il désigne le prochain No d'octet attendu dans le flot. Il montre, indirectement, le N° de séquence des dernières données reçues (le N° de séquence ACK = ce dernier + 1) Il acquitte toutes données transmises dont les octets ont un No de séquence inférieur à celui-ci. 14 URG ACK PSH RST SYN FIN 15, 16 Fenêtre ( Window ) 17, 18 Checksum 19, 20 Pointeur sur les Octets urgents 21,22,23,24 Options 25 Données Fig 7.23 Format des segments TCP N Données 18/11/2017 Michel BESSON 34 61 61 20 32 39 37 28 22
FLAGS Octet 14 Fig 7.23 Format des segments TCP Octet 1, 2 Port Source 3, 4 Port Destination 5,6,7,8 N° de séquence 9,10,11,12 Numéro de séquence acquitté 13 Offset 4 bits Réservé 6 bits OFFSET Octet 13 Décalage de données: Indique la taille de l'entête en mot de 4 octets . Il identifie le début du champ des données. La valeur 5 indique un paquet sans paramètre. La valeur 6 indique leur présence. Réservé champ à 6 bits réservé pour des utilisations ultérieures. Les six bits = 0 FLAGS Octet 14 Flag URG: Il valide le champ Urgent Pointer les données de 0 à la valeur de l'octet pointé sont délivrés , au plus tôt .( données express ). Flag ACK: Il permet de signaler que le champ de No de séquence ACK est valide. Flag PSH : Il valide la fonction push si positionné Flag RST : Il indique que la connexion doit être réinitialisée si positionné Flag SYN : Il permet d'initialiser la connexion. Flag FIN : Il désignent les commandes de fermeture de la connexion (close ). WINDOW Octets 15,16 Il donne la valeur de la fenêtre ouverte en réception. La valeur Basse est donnée par le champ ACK soit le No de séquence acquittée. La valeur Haute est obtenue en ajoutant à celle-ci la valeur de WINDOW. 14 Réservé URG ACK PSH RST SYN FIN 15, 16 Fenêtre ( Window ) 17, 18 Checksum 19, 20 Pointeur sur les Octets urgents 21,22,23,24 Options 25 Données Fig 7.23 Format des segments TCP N Données 18/11/2017 Michel BESSON 35 62 21 62 40 38 33 29 23
Fig 7.23 Format des segments TCP Octet 1, 2 Port Source 3, 4 Port Destination 5,6,7,8 N° de séquence 9,10,11,12 Numéro de séquence acquitté 13 Offset 4 bits Réservé 6 bits CHECKSUM Octets 17-18 Calculé en prenant le complément à un (en 16 bits) du complément à un de la somme des mots de 16 bits dans l’en-tête (y compris la pseudo-en-tête) et le texte réunis ( processus assez lourd, nécessaire pour que le checksum prenne place correcetemnt dans l’en-tête). URGENT POINTER Octets 19-20 Il est utilisé si le flag correspondant est actif. Indique la portion de données urgentes du message en spécifiant le décalage à partir du n° de séquence dans l’en-tête; seule l’application traitera cet aspect urgent et non TCP. OPTIONS Comparable au champ option de l’adresse IP, ce champest utilisé pour spécifier des options TCP. Chaque option est représentée par : un n° d’option sur 1 bit, un nombre d’octets dans l’option, et par une valeur d’option. Trois valeurs sont actuellement définies. 0 fin de la liste d’option. 1 pas d’opération. 2 taille de segment maximale. PADDING Rempli pour assurer que l’en-tête est un multiple de 32 bits. 14 Réservé URG ACK PSH RST SYN FIN 15, 16 Fenêtre ( Window ) 17, 18 Checksum 19, 20 Pointeur sur les Octets urgents 21,22,23,24 Options et remplissage 25 Données Fig 7.23 Format des segments TCP N Données 18/11/2017 Michel BESSON 36 62 62 21 38 40 33 29 23
Fig 7.23 Format des segments TCP Octet 1, 2 Port Source 3, 4 Port Destination 5,6,7,8 N° de séquence 9,10,11,12 Numéro de séquence acquitté 13 Offset 4 bits Réservé 6 bits DONNEES A la suite de l’en-tête (PDU) se trouvent les données. CONSIDERATIONS DIVERSES OPTIONS Le champ Option à une fonction pratique: spécifier la taille maximum de tampon qu’une implémentation TCP réceptrice peut accepter. TCP utilise des données de longueur variable, il peut arriver qu’une machine crée un segment plus long que ce que processus récepteur est à même de gérer. CHECKSUM Le champ de checksum calcule le checksum sur la taille du segment entier y compris un pseudo en-tête de .... 96 bits préfixé à l’en-tête de TCP lors du calcul. Le pseudo en-tête contient : l’adresse source, destination, la longueur du segment l’identificateur de protocole. Ces paramètres sont passé à IP lors d’une instruction d’émission. Ils sont lus lors de la tentative de livraison. 14 Réservé URG ACK PSH RST SYN FIN 15, 16 Fenêtre ( Window ) 17, 18 Checksum 19, 20 Pointeur sur les Octets urgents 21,22,23,24 Options et remplissage 25 Données Fig 7.23 Format des segments TCP N Données 18/11/2017 Michel BESSON 37 62 62 21 38 40 33 29 23
TCP et Connexions Etablir une connexion Principes généraux Conditions d’établissement d’une connexion : les sockets n’existent pas les deux machines sont d’accord pour la connexion elles ont toutes deux les ressources adéquates pour fournir le service désiré. Après connexion, la machine reçoit des propriétés qui restent valides jusqu’à la fermeture: une valeur de précédence une valeur de sécurité. ces paramètres font l’objet d’un accord lors du processus d’étblissement de la connexion. ETABLIR UNE CONNEXION Généralités Une connexion ne peut être établie entre deux machines que : si les sockets n’existent pas si les deux machines sont d’accord pour la connexion si elles ont toutes deux les ressources adéquates pour fournir le service désiré. Lorqu’une connexion est établie, la machine reçoit des propriétés qui restent valides jusqu’à la fermeture. une valeur de précédence une valeur de sécurité. ces paramètres font l’objet d’un accord lors du processus d’établissement de la connexion. Généralement la connexion est attendue par les applications elles envoient des requêtes d’ouvertures passive ou active. L’ouverture passive n’est pas obligatoire dans ce cas la machine émettrice se charge de l’envoi et de la réception des n° de socket, des valeurs de précédence (ref appl.), des valeurs de sécurité, de timeout. Il est possible que deux applications demandent une ouverture active au même moment, la résolution entrainera un léger sur-trafic dans le réseau. Michel BESSON 56 56 15 26 31 29 20 17
TCP Transmission Control Protocol Transfert de données Sous services Full Duplex Timeliness Ordered Labeled Controlled flow Correction d’erreur TRANSFERT DE DONNÉES: Le service de transport de données TCP regroupe six sous-services Full Duplex permet aux deux extrémités de la connexion de transmettre à n’importe quel moment, même simultanément. Timeliness l’utilisation de timers permet une transmission de données pendant un intervalle de temps raisonable. Ordered les données envoyées par une application sont reçue dans un ordre identique coté destinataire. Même si les datagrammes sont reçus en désordre via IP, TCP réassemble les messages en ordre correct avant livraison. Labeled Toutes les connexions ont des valeurs de précédence et de sécurité sur lesquels se sont accordés les partenaires. Controlled flow TCP peut contrôler le flux d’informations via des tampons (buffers) et limites de fenêtre. Correction d’erreur Dans les limites de l’algoritme, les données seront exemptes d’erreur. Michel BESSON 58 58 17 28 35 33 22 19
TCP Transmission Control Protocol Transfert de données Concepts généraux ISO impose la construction d'une structure entière , soumise à la transmission , puis délivrée complète au correspondant, TCP est différent. TCP assemble les données et les envoi en Blocs dans un minimum de délai, ce dont il a également la maîtrise. TRANSFERT DE DONNÉES rappels: Les ACK trames d'acquittement transportent le prochain No de séquence attendu; néanmoins celui-ci ne désigne pas un No de paquet mais sur un No d'octet Les données ne sont pas transférées sous forme de TSDU mais : en FLOT continu d'octets de données ( Streams) ISO impose la construction d'une structure entière , soumise à la transmission , puis délivrée complète au correspondant. TCP accepte la fourniture en continu de données utilisateur au cadencement qu'il choisit. TCP assemble les données et les envoi en Blocs dans un minimum de délai, ce dont il a également la maîtrise. L'utilisateur aura à sa disposition un paramètre (Push) dans la primitive SEND afin de provoquer volontairement le déclenchement de cet envoi. Un service de données Urgentes permet à TCP de délivrer un sous ensemble de données, celui ci sera borné dans le flot global. Michel BESSON 58 58 17 28 35 33 22 19
TCP Transmission Control Protocol Transfert de données Tailles de fenêtres Les tailles de fenêtres sont transmises Retransmissions sur chaque segment envoyé l’entité TCP expéditrice arme un timer Contrôle de Transmission Dans les primitives Send une valeur de réveil peut être transmise par l'utilisateur TRANSFERT DE DONNÉES Les tailles de fenêtres sont transmises chaque segment mentionne une taille de fenêtre (en octets) correspondant au nombre d’octets qui peuvent être transmis sans exiger d’ACK (soit devoir sans devoir l’attendre) chaque segment émis contient un acquittement implicite de tous les octets reçus en séquence (indique le prochain octet attendu en réception) Retransmissions sur chaque segment envoyé l’entité TCP expéditrice arme un timer si celui-ci sonne, elle retransmet le segment cette opération est répétée un nombre raisonnable de fois avant que le connexion ne soit considérée comme rompue ( pas d’ACK) sur réception d’un ACK le timer correspondant est désarmé la temporisation de retransmission pour chaque segment est fonction de l’historique récent des pertes et des temps de réponse du réseau la stratégie de reprise peut être de type GO BACK N ou Répétition sélective du segment perdu Contrôle de Transmission Dans les primitives Send une valeur de réveil peut être transmise par l'utilisateur sur expiration la connexion est fermée (absence de ACK) chaque primitive portant cette valeur elle peut évoluer dynamiquement Michel BESSON 58 58 17 34 41 39 30 19
UDP User Datagramme Protocol Objectifs et Avantages Acheminer des messages sans découpage sans regroupement sans ouverture de connexion sans garantie de bon port Limitations UDP: Objectifs et avantages: Acheminer des messages sans découpage sans regroupement sans ouverture de connexion sans garantie de bon port Il consomme peu de temps CPU. Il est fréquemment utilisé. Il offre un haut niveau de performance Diffusion et Multiplexage Il permet le broadcasting il permet de réaliser le multiplexage des communications une application peut recevoir dans la même file des messages issus d'applications provenant de sources multiples Limitation Il n'est pas adapté pour les services nécessitant une transmission fiable et ordonnée Michel BESSON 66 65 25 42 49 47 38 27
Adresse IP Destination Longueur Totale du Datagramme Octet 1,4 Adresse IP Source Pseudo En-Tête 5,8 Adresse IP Destination 9,10,11-16 Vide Protoc. Long. UDP Fig 7.24-0 Structure de Pseudo En-Tête UDP UDP Il utilise le service proposé par IP pour assurer la remise des données. UDP calcule un pseudo En-tête qui constitue le préfixe du paquet UDP Le champ protocole du Datagramme IP contient : la valeur décimale 17 s'il transporte des données UDP La combinaison adresse IP + N° Port = Socket. Les N° de ports permettent à UDP et TCP de différencier leurs clients. (N° port 161= SNMP). (voir RFC pour liste). les champs Ad source et destination sont extraits du datagramme IP Octet 1,2 Port Source 3,4 Port Destination 5,6 Longueur Totale du Datagramme 7,8 Checksum sur l'En-Tête 9 Données N Données Fig 7.24-1 Structure du Datagramme utilisateur UDP 18/11/2017 Michel BESSON 43 67 66 26 43 50 48 39 28