Problèmes et exercices
EXERCICE 1 PRINCIPES ET INTÉRÊT DE TCP
Nous avons vu que le débit maximal sur Ethernet était 9,82 Mbit/s si le débit réel était de 10 Mbit/s (exercice 7 du chapitre 5). Le calcul était fait en supposant que les 1 500 octets de la trame étaient des octets utiles. Si le champ de données de la trame Ethernet transporte un datagramme IP avec un segment TCP encapsulé, il y a (sauf options) 20 + 20 = 40 octets d’en-tête donc seulement, soit 1 460 octets de données utiles. Le débit maximal est donc 10*(1460/1528) = 9,55 Mbit/s. Tous les segments TCP ont le même format, qu’il s’agisse de la demande d’ouverture de connexion, d’un segment de transfert de données ou d’une fermeture de connexion : le traitement est donc toujours le même, il peut être optimisé pour une meilleure efficacité. L’intérêt est de disposer d’un contexte, mémorisé chez l’émetteur comme chez le destinataire (protocole de bout en bout), dans lequel sont conservés tous les paramètres fixes et variables de la connexion : cela permet de suivre l’évolution de la connexion et d’adapter au mieux les délais pour la mise en œuvre des fonctions de contrôle d’erreur, de contrôle de flux, de séquencement et de congestion. TCP reçoit les données extraites des datagrammes IP et les réordonne (seulement dans le cas où tous les fragments sont arrivés), l’ordre des datagrammes IP n’étant pas géré par IP (les datagrammes n’ont pas de numéro de séquence…). C’est pourquoi TCP doit assurer ce service en numérotant les octets du flot de données qu’il a mis dans le segment. Oui, bien sûr ! Et même plusieurs centaines simultanément… Par exemple, une application simple comme la navigation sur le Net ouvre (sans que l’utilisateur le sache…) des dizaines de connexions : chaque objet multimédia dans la page consultée correspond à une connexion ; chaque clic de souris fait ouvrir une nouvelle connexion… Une connexion est identifiée par deux sockets (numéro de port local, adresse IP locale ; numéro de port distant, adresse IP distante). Même si l’adresse IP locale est la même, le numéro de port change : il correspond au processus que crée le système d’exploitation de la machine local et les numéros distants peuvent varier. Il ne peut donc jamais y avoir confusion entre deux connexions, même si les adresses IP sont les mêmes, puisque les processus ont des identificateurs différents. Sachant qu’un segment TCP contient 20 octets d’en-tête, qu’il est transporté dans un datagramme IP contenant lui aussi 20 octets d’en-tête, déterminez le débit utile maximal d’une application utilisant TCP/IP sur un réseau Ethernet à 10 Mbit/s. Quel intérêt y a-t-il pour un protocole comme TCP à ne posséder qu’un seul format d’en-tête ? Quel est l’intérêt du fonctionnement en mode connecté pour le protocole TCP ? La fragmentation et le réassemblage étant pris en charge par IP, pourquoi TCP se préoccupe-t-il de l’ordre d’arrivée des datagrammes ? Un module TCP peut-il gérer plusieurs connexions simultanément ? Si oui, quel en serait l’intérêt ? Comment pourrait-on distinguer ces connexions ?
EXERCICE 2 IDENTIFICATION D’UNE CONNEXION TCP
La machine qui a ouvert la connexion est un client (grand numéro de port) qui s’est connecté à un serveur Web (port 80). Les deux machines ont des adresses IP de classe A et appartiennent à des réseaux différents. La connexion traverse donc au moins un routeur.
EXERCICE 3 IDENTIFICATION DE PLUSIEURS CONNEXIONS TCP
Le logiciel TCP n’existe que dans les postes des utilisateurs (clients ou serveurs). Les routeurs ont la couche IP comme couche de niveau supérieur. TCP a la capacité de gérer plusieurs connexions simultanément. PC1 peut donc avoir plusieurs connexions avec PC2. Ces connexions diffèrent par le numéro de port local et par le numéro de port distant, donc pas de confusion possible. Les deux sockets valent respectivement : < adresse IP-PC1, port x, adresse IP-PC2, port 80 > et < adresse IP-PC1, port y, adresse IPPC2, port 21 > La nouvelle connexion avec le service Web utilise des numéros de séquence pour les octets du flot de données échangées qui sont différents de la connexion précédente, puisque le numéro de séquence initial est tiré au sort pour la nouvelle connexion. Il n’y a donc aucun risque que des segments interfèrent. EXERCICE 4ÉTAT D’UNE CONNEXION TCP Soit une connexion TCP identifiée par son quadruplet : < adresse IP 123.45.67.89, port 12006, adresse IP 12.34.56.78, port 80 >. À quoi correspond cette connexion ? Traverse-t-elle un ou plusieurs routeurs ? Soit deux réseaux (notés 1 et 2) distants l’un de l’autre et interconnectés par Internet, possédant chacun un routeur (R1 et R2). L’architecture de protocoles utilisée est TCP/ IP. Le poste PC1 du premier réseau communique avec le poste PC2 du second réseau qui est un serveur offrant deux services : Web et FTP. Le logiciel TCP est-il implémenté au niveau du routeur R1 ? Du routeur R2 ? Des deux routeurs ? PC1 a déjà une connexion TCP établie avec PC2 pour le service Web. Peut-il établir une seconde connexion pour le service FTP ? Si oui, comment TCP différencie-t-il les deux connexions ? PC1 a terminé le téléchargement et fermé sa connexion avec le service FTP. La connexion avec le service Web est brutalement interrompue et PC1 en démarre une nouvelle (toujours avec le même serveur PC2). Est-il possible que des segments de la première connexion interfèrent avec ceux de la seconde ?