TCP - HTTP

TCP HTTP

les protocoles de la couche transport

Transmission control Protocol

Les programmes que l’on utilise tous les jours, par exemple les navigateurs web ou les programmes de gestion du courrier électronique, ne peuvent pas directement utiliser le protocole IP, principalement pour deux raisons : d’une part, le protocole IP ne permet de transférer d’un ordinateur à un autre que des informations de taille limitée : en général, des paquets de 1500 octets au maximum. D’autre part, comme on l’a vu, IP est un protocole peu fiable : dès qu’un serveur est surchargé, il détruit des informations qui n’arrivent donc pas à leur destinataire. On utilise donc un type supplémentaire de protocole : les protocoles de transport, dont le plus utilisé est le protocole TCP (Transmission Control Protocol). Les protocoles de transport utilisent les protocoles réseau pour acheminer des informations contenues dans des paquets IP, d’un bout à l’autre du réseau, et assurent que tout paquet IP envoyé est arrivé à bon port.

Pour poursuivre la comparaison avec le service postal, si on attache une importance particulière à une lettre, on l’envoie en recommandé et on attend un accusé de réception, qui permet de savoir que sa lettre a bien été reçue. La couche transport s’assure que la communication a bien lieu de bout en bout, comme prévu.

Comme les protocoles de la couche lien, TCP utilise une forme de redondance pour fiabiliser les communications. Il utilise les protocoles réseaux pour envoyer des paquets IP d’un ordinateur à un autre et pour envoyer un accusé de réception du destinataire à l’expéditeur. Tant que l’accusé de réception n’arrive pas, le même paquet est renvoyé périodiquement. Si trop d’accusés de réception n’arrivent pas, TCP ralentit la cadence d’envoi des paquets pour s’adapter à une congestion éventuelle du réseau global, puis ré-accélère la cadence quand les accusés de réception arrivent.

Une autre fonction de TCP est de découper les informations à transmettre en paquets de 1 500 octets. Par exemple, pour envoyer une page web de 10 000 octets, TCP découpe ces 10 000 octets en paquets plus petits, chacun de taille standard, et les envoie l’un après l’autre. À l’autre bout du réseau, quand tous ces paquets standards sont arrivés, TCP les remet dans l’ordre et ré-assemble leurs contenus pour reconstruire la page web.

Le port

Comme plusieurs programmes peuvent utiliser TCP en même temps et sur la même machine, TCP attribue à chacun d’eux un numéro : un port. Un numéro de port permet à TCP de distinguer les paquets correspondant aux différents programmes qui communiquent en même temps.

Exercice 1

Taper la commande ping www.google.fr dans une fenêtre terminale et observer ce qui se passe. En déduire la valeur d’un temps d’attente adéquat après lequel TCP devrait considérer que l’accusé de réception d’un paquet envoyé à www.google.fr est perdu. Quelle serait la conséquence d’utiliser un temps d’attente plus court ? Quelle serait la conséquence d’utiliser un temps d’attente plus long ?

Exercice 2

On suppose que la durée à attendre entre l’envoi d’un paquet et la réception d’un accusé de réception pour ce paquet est 1 seconde en moyenne, et que les paquets peuvent chacun contenir jusqu’à 1 500 octets de données. On considère les deux configurations suivantes pour TCP.

  • Configuration A. TCP est configuré pour n’envoyer un nouveau paquet qu’après avoir reçu l’accusé de réception du paquet précédent.
  • Configuration B. TCP est autorisé à envoyer des grappes de 20 paquets à la suite et à accuser réception avec un seul accusé de réception pour toute la grappe, au lieu d’un accusé de réception pour chaque paquet. En conséquence, un paquet perdu entraîne l’absence d’accusé de réception pour la grappe à laquelle il appartient, et donc demande de renvoyer la grappe entière au lieu du seul paquet perdu.

Combien de temps faut-il au minimum pour envoyer 1 Mo à destination avec la configuration A ? Avec la configuration B ? Pour simplifier, on suppose que le temps passé à envoyer 20 paquets à la suite est négligeable par rapport à 1 seconde.

On suppose maintenant qu’en moyenne, 1% des paquets envoyés vers une destination se perdent en chemin. En moyenne, combien de paquets faudra-t-il faire transiter sur le réseau pour transférer le fichier de 1 Mo à destination avec la configuration A ? Avec la configuration B ? Pour simplifier, on considère qu’à la deuxième fois qu’on envoie un paquet, il arrive à destination à coup sûr, et qu’un accusé de réception envoyé arrive également à coup sûr.

Quels sont les avantages et inconvénients de la configuration B par rapport à la configuration A ?

Exercice 3

Considérons un protocole de transport qui identifie chaque paquet envoyé par un numéro de séquence exprimé sur 4 octets, et admettons que chaque paquet envoyé peut contenir jusqu’à 1 500 octets de données à transmettre. Quelle est la taille minimale de fichier à transmettre à partir de laquelle on devrait réutiliser un numéro de séquence déjà utilisé au début de l’envoi de ce même fichier ? Même question si on déduit des 1 500 octets les informations de contrôle nécessaires au fonctionnement des couches au-dessus de la couche Lien, à savoir 20 octets d’entête pour le protocole de transport, et 20 octets d’en-tête IP ?

Exercice 4

Chercher sur le Web ce qu’est le protocole UDP. Quelles sont les différences entre UDP et TCP ? Quels sont les principaux avantages et inconvénients de chacun de ces protocoles ? Citer des exemples de programmes qui utilisent UDP, d’autres qui utilisent TCP, et expliquer ces choix.

TCP

Programmes utilisant le réseau : la couche application

Les protocoles des couches physique, lien, réseau et transport fournissent le socle d’Internet : ils permettent de transmettre de manière fiable des fichiers de toutes tailles, d’une machine à n’importe quelle autre machine connectée à Internet. En plus de ce socle, on distingue néanmoins un dernier type de protocoles, qui utilisent les services de la couche transport pour le compte de certains programmes que l’on utilise tous les jours, comme les navigateurs web ou les logiciels de courrier électronique. Il s’agit des protocoles d’application.

Les logiciels de courrier électronique utilisent par exemple le protocole d’application SMTP (Simple Mail Transfer Protocol), les navigateurs web utilisent le protocole d’application HTTP (HyperText Transfer Protocol) etc. Un autre protocole d’application important est DNS (Domain Name System) qui, aux adresses IP, associe des noms de domaines comme www.moi.fr.

Quand un navigateur cherche à accéder à une page web située sur un autre ordinateur, il utilise DNS pour trouver l’adresse IP de l’ordinateur hôte sur lequel cette page web se trouve, puis le protocole HTTP pour demander cette page à l’ordinateur hôte. Si cette page est par exemple la page d’accueil d’un annuaire électronique, elle contiendra des champs à remplir, et c’est à nouveau le protocole HTTP qui acheminera les informations renseignées vers l’ordinateur hôte, qui, en fonction de ces informations, renverra en général une autre page avec la réponse à la requête.

Au bout du compte, pour transférer une page web d’un ordinateur à un autre, HTTP confie cette page web au protocole TCP, qui la découpe en paquets et confie chaque paquet au protocole IP, qui choisit un lien à utiliser en direction de la destination, puis confie chaque paquet au protocole de lien en vigueur sur ce dernier, par exemple WiFi, qui le confie enfin au protocole physique, qui gère l’acheminement des bits codant ces paquets à travers ce lien. Chaque protocole, à son niveau, contribue à la communication. Chaque protocole est simple ; c’est de leur interaction qui naît la complexité.

DNS

Présenter les principes de base de DNS.

Quelles lois s’appliquent sur Internet ?

Jusqu’au milieu du XXe siècle, quand un livre ou un journal était publié, il l’était dans un pays particulier et sa publication était régie par les lois de ce pays. Quand un objet était vendu, il l’était dans un pays particulier et cette vente était régie par les lois de ce pays. Ainsi, la publication de certains textes ou la vente de certains objets était autorisée dans certains pays, mais interdite dans d’autres.

Parce que c’est un réseau mondial, Internet permet de publier, dans un pays, des textes qui peuvent être lus dans le monde entier et, de même, de vendre des objets qui peuvent être achetés dans le monde entier. Dès lors, quelle loi appliquer ? À cette question, qui est nouvelle, plusieurs réponses ont été imaginées, sans que personne ne sache encore laquelle s’imposera sur le long terme :

  • l’application des lois du pays dans lequel le texte est publié ou l’objet mis en vente,
  • l’application des lois du pays dans lequel le texte peut être lu ou l’objet acheté – ce qui obligerait, par exemple, un hébergeur de site web à bloquer l’accès à certains sites depuis certains pays,
  • ou l’émergence d’un minimum de règles universelles.

L’affaire LICRA contre Yahoo!

Qu’est-ce que l’article R.645-1 du code pénal français ? Qu’est-ce que le premier amendement de la Constitution des États-Unis ? En quoi sont-ils contradictoires ? Chercher des documents sur l’affaire de la LICRA contre Yahoo!, relative à la vente aux enchères d’objets nazis sur Internet (de l’ordonnance du Tribunal de Grande Instance de Paris du 20 novembre 2000, jusqu’à la décision de la Cour Suprême des États-Unis du 30 mai 2006). Montrer en quoi cette affaire illustre le problème de l’application de législations différentes selon les pays pour la vente sur Internet.

Qui gouverne Internet ?

Quelques règles d’organisation d’Internet doivent être universellement acceptées. Par exemple, pour que les ordinateurs du monde entier puissent communiquer, il est nécessaire qu’ils utilisent les mêmes protocoles et pour qu’il n’y ait pas de confusion entre les adresses IP, il faut que deux ordinateurs distincts n’aient jamais la même adresse. Internet n’est donc pas entièrement décentralisé : un petit nombre de décisions doivent être prises en commun.

SUJET D’EXPOSÉ Que sont…

  • l’Internet Engineering Task Force (IETF),
  • l’Internet Corporation for Assigned Names and Numbers (ICANN),
  • l’Internet Society (ISOC),
  • le World Wide Web Consortium (W3C),
  • le WhatWG,
  • et l’Union internationale des télécoms (UIT) ?

Quel est le rôle et quel est le statut de chacune de ces organisations ?

Ici, plusieurs modes d’organisation sont en concurrence, à nouveau sans que personne ne sache lequel s’imposera sur le long terme :

  • l’émergence d’organisations internationales régies par des traités entre États,
  • l’émergence d’organisations internationales informelles, dont la légitimité vient uniquement de la confiance qui leur est accordée,
  • l’émergence d’organisations propres aux pays où Internet est le plus développé (cette dernière solution ayant l’inconvénient d’augmenter les différences de développement d’Internet entre les pays).

Calculer dans les nuages (cloud computing)

Au cours de l’histoire de l’informatique, des modes centralisatrices et décentralisatrices se sont succédées. Ainsi, jusqu’aux années 1970, les entreprises n’avaient qu’un seul ordinateur, auquel étaient connectés de nombreux terminaux, par exemple formés d’un clavier et d’un écran, qui permettaient à différentes personnes d’effectuer des calculs sur cet ordinateur. À partir des années 1980, ces terminaux ont été remplacés par des micro-ordinateurs, connectés par un réseau à un serveur. Les calculs n’étaient alors plus effectués par un ordinateur central, mais par chacun de ces micro-ordinateurs. Depuis le milieu des années 2000, on voit apparaître un retour de la centralisation. Des entreprises, qui vendaient naguère des programmes à des clients qui les utilisaient pour effectuer des calculs sur leurs ordinateurs, proposent désormais à ces mêmes clients d’effectuer elles-mêmes ces calculs à leur place. Les clients ont juste besoin de communiquer leurs données à ces entreprises, qui font les calculs sur leurs propres ordinateurs et envoient le résultat de ces calculs à leurs clients. C’est ce qu’on appelle le calcul dans les nuages (cloud computing).

Par exemple, au lieu d’installer un logiciel de courrier électronique sur son ordinateur et de l’utiliser pour envoyer des courriers, on peut, à chaque fois que l’on souhaite envoyer un courrier, se connecter à un ordinateur distant, en général au moyen d’une page web, et communiquer le texte de son courrier à cet ordinateur, qui se chargera de l’envoyer ; c’est l’idée du Webmail. De même, au lieu d’acheter un logiciel de comptabilité et de l’utiliser, une entreprise peut se connecter, à chaque fois qu’elle souhaite effectuer une opération comptable, à une machine distante qui effectue cette opération pour l’entreprise. L’ordinateur local ne sert plus qu’à communiquer des informations à cette machine distante, comme jadis les terminaux. Utiliser des programmes sur une machine distante simplifie beaucoup de choses. Il n’est plus nécessaire d’installer des logiciels sur son ordinateur, de les mettre à jour de temps en temps, etc. De plus, il devient possible d’envoyer un courrier depuis n’importe quel ordinateur : d’un web café de Bogota ou de Caracas, comme de son bureau. Pour une entreprise, cela permet de diminuer la taille du service informatique, puisqu’il lui suffit désormais d’avoir quelques ordinateurs reliés au réseau. Cependant, cette évolution présente aussi un risque de dépossession des utilisateurs de leur pouvoir : au lieu d’avoir ses programmes, ses courriers, ses photos, sa comptabilité, etc. sur son ordinateur, on préfère les confier à des entreprises et des ordinateurs distants. En outre, on a parfois une garantie assez faible de leur conservation sur le long terme, de son pouvoir de les effacer ou de son contrôle sur les usages que ces entreprises peuvent faire de ces données.

  • Qu’est-ce qu’un protocole ? Qu’est-ce qu’une couche ?
  • Quelles sont les cinq couches de protocoles dont sont composés les réseaux ? Comment fabriquer un protocole fiable en utilisant un protocole peu fiable ?