Ces 15 dernières années ont vu émerger de nouvelles techniques rendant possible l'interconnexion de réseaux différents (internetworking) en les faisant apparaître comme un unique environnement de communication homogène. On désigne ce système d'interconnexion sous le nom d'internet, sachant que réseau Internet et Internet désignent l'ensemble de ces internets dont le point commun est de fonctionner en suivant les protocoles TCP/IP (Transmission Control Protocol/Internet Protocol). Le but de ce chapitre est d'étudier comment fonctionne l'ensemble de ces protocoles.
Les travaux de l'ARPA (Advanced Research Project Agency) débutèrent au milieu des années 70 et avaient pour but de développer un réseau à commutation de paquets pour relier ses centres de recherches dans le but de partager des équipements informatiques et échanger des données et du courrier. Le but était de concevoir un réseau résistant à des attaques militaires. Il ne fallait donc pas qu'il comporte de points névralgiques dont la destruction aurait entraîné l'arrêt complet du réseau. C'est ainsi, que dès le départ le réseau ARPANET fut conçu sans nud particulier le dirigeant, et de telle sorte que si une voie de communication venait à être détruite, alors le réseau soit capable d'acheminer les informations par un autre chemin. C'est vers 1980 qu'est apparu le réseau Internet, tel qu'on le connaît maintenant, lorsque l'ARPA commença à faire évoluer les ordinateurs de ses réseaux de recherche vers les nouveaux protocoles TCP/IP et qu'elle se mit à subventionner l'université de Berkeley pour qu'elle intègre TCP/IP à son système d'exploitation Unix (BSD). Ainsi la quasi totalité des départements d'informatique des universités américaines put commencer à se doter de réseaux locaux qui en quelques années seront interconnectés entre eux sous l'impulsion de la NSF (National Science Foundation).2 Même si dès son origine Internet comprenait des sociétés privées, celles-ci étaient plus ou moins liées à la recherche et au développement, alors qu'à l'heure actuelle les activités commerciales s'y sont considérablement multipliées, et ceci surtout depuis l'arrivée du web en 1993.
Figure 2.1: Les grandes dates d'Internet.
La figure(source ISOC, ) donne un résumé des grandes étapes de l'évolution d'Internet au niveau mondial qui comportait en 1996 plus de 100 000 réseaux différents permettant de regrouper presque 10 millions d'ordinateurs dans le monde. Mais les statistiques sont difficiles à établir et sont parfois fantaisistes ou biaisées par des considérations politiques ou commerciales.
Figure: Évolution du nombre de machines connectées à Internet
Une bonne source d'information est encore l'ISOC dont sont extraites les données de la figure2.2. Pour ce qui est de la France, après des tentatives avortées de constitution d'un réseau de la recherche, puis l'apparition du réseau EARN (European Academic and Research Network) basé sur des protocoles et des ordinateurs IBM, un début de réseau bâti sur des ordinateurs Unix et TCP/IP apparu sous le nom de FNET. C'est à la fin des années 80 que les campus universitaires s'équipèrent massivement de réseaux Ethernet et créèrent des réseaux régionaux basés sur TCP/IP. L'ouverture à l'Internet mondial (à l'époque presque exclusivement nord-américain) eut lieu en 1988 et ensuite la création de Renater (RÉseau National de Télécommunications pour l'Enseignement et la Recherche) en 1994 sont les grandes dates de l'évolution d'Internet en France.
Comme l'ensemble des protocoles TCP/IP n'est pas issu d'un constructeur unique, mais émane de la collaboration de milliers de personnes à travers le monde, une structure de fonctionnement originale a été imaginée dès le début. Après des évolutions successives, c'est maintenant l'IAB (Internet Architecture Board) qui est le comité chargé de coordonner l'architecture, les orientations, la gestion et le fonctionnement d'Internet. L'IAB comporte deux branches principales :
• l'IETF (Internet Engineering Task Force, ) s'occupe des problèmes techniques à court et moyen terme et est divisé en 9 zones (applications, sécurité, routage et adressage, etc ) chacune dotée d'un responsable.
• l'IRTF (Internet Research Task Force, ) coordonne les activités de recherche relatives à TCP/IP.
Par ailleurs, il existe l'ISOC (The Internet Society ) qui est liée à l'IAB et qui aide ceux qui souhaitent s'intégrer à la communauté d'Internet. De nombreux renseignements sur le fonctionnement et les organismes liés à Internet sont disponibles sur le web de l'ISOC .
Aucun constructeur, ou éditeur de logiciel, ne peut s'approprier la technique TCP/IP, les documentations techniques sont donc mises à disposition de tous par l'INTERNIC (Internet Network Information Center à partir
de son site web ). Les documents relatifs aux travaux sur Internet, les nouvelles propositions de définition ainsi que les modifications de protocoles, tous les standards TCP/IP, y sont publiés sous la forme de RFC (Request For Comments, appels à commentaires). Tous les RFC sont publiés par un membre de l'IAB et sont numérotés séquentiellement, une proposition de RFC s'appelle un Internet Draft qui sera discuté, modifié, et enfin adopté ou rejeté par les membres du domaine concerné par la note technique.
Figure 2.3: Architecture d'une pile TCP/IP
Les logiciels TCP/IP sont structurés en quatre couches de protocoles qui s'appuient sur une couche matérielle comme illustré dans la figure
• La couche de liens est l'interface avec le réseau et est constituée d'un driver du système d'exploitation et d'une carte d'interface de l'ordinateur avec le réseau.
• La couche réseau ou couche IP (Internet Protocol) gère la circulation des paquets à travers le réseau en assurant leur routage. Elle comprend aussi les protocoles ICMP (Internet Control Message Protocol) et IGMP (Internet Group Management Protocol)
• La couche application est celle des programmes utilisateurs comme telnet (connexion à un ordinateur distant), FTP (File Transfert Protocol), SMTP (Simple Mail Transfert Protocol), etc
Figure: Communication entre deux machines du même réseau
Cette architecture et ces différents protocoles permettent de faire fonctionner un réseau local, par exemple sur un bus Ethernet reliant un ordinateur client A qui interroge un serveur FTP B, comme illustré dans la figureMais, ceci permet surtout de constituer un internet, c'est-à-dire une interconnexion de réseaux éventuellement hétérogènes comme illustré dans la figure2.5.
Figure: Interconnexion de deux réseaux
Ici les ordinateurs A et B sont des systèmes terminaux et le routeur est un système intermédiaire. Comme on peut le voir, la remise du datagramme nécessite l'utilisation de deux trames différentes, l'une du réseau Ethernet entre la machine A et le routeur, l'autre du réseau Token-Ring entre le routeur et la machine B. Par opposition, le principe de structuration en couches indique que le paquet reçu par la couche transport de la machine B est identique à celui émis par la couche transport de la machine A.
Lorsqu'une application envoie des données à l'aide de TCP/IP les données traversent de haut en bas chaque couche jusqu'à aboutir au support physique où elles sont alors émises sous forme se suite de bits.
Figure: Encapsulation des données par la pile des protocoles TCP/IP.
L'encapsulation illustrée dans la figure2.6consiste pour chaque couche à ajouter de l'information aux données en les commençant par des en-têtes, voire en ajoutant des informations de remorque. Dans le cas du protocole UDP à la place de TCP, les seuls changements sont que l'unité d'information passé à IP s'appelle un datagramme UDP dont l'en-tête a une taille de 8 octets.
Figure 2.7: Les cinq classes d'adressses IP
Plus précisément, une adresse IP est constituée d'une paire (id. de réseau, id. de machine) et appartient à une certaine classe (A, B, C, D ou E) selon la valeur de son premier octet, comme détaillé dans la figure2.7. Le tableau ci-après donne l'espace d'adresses possibles pour chaque classe.
classe | adresses |
A | 0.0.0.0 à 127.255.255.255 |
B | 128.0.0.0 à 191.255.255.255 |
C | 192.0.0.0 à 223.255.255.255 |
D | 224.0.0.0 à 239.255.255.255 |
E | 240.0.0.0 à 247.255.255.255 |
Ainsi, les adresses de classe A sont utilisées pour les très grands réseaux qui comportent plus de 216=65 536 ordinateurs. Au niveau mondial, il ne peut exister plus de 127 tels réseaux, par exemple celui de la défense américaine ou du MIT, mais la politique actuelle est de ne plus définir de tels réseaux. Les adresses de classe B sont utilisées pour les réseaux ayant entre 28=256 et 216=65 536 ordinateurs, 14 bits définissent l'adresse du réseau et 16 bits celle d'une machine sur le réseau. Seules 256 machines sont possibles sur un réseau de classe C dont le nombre possible dépasse les 2 millions (=221). L'obtention d'une adresse IP pour créer un nouveau réseau est gérée par l'INTERNIC de manière décentralisée, à savoir qu'un organisme national gère les demandes pour chaque pays. En France c'est l'INRIA (Institut National de Recherche en Informatique et Automatique) qui est chargé de cette tâche. Au lieu d'utiliser un adressage plat 1, 2, 3, la méthode retenue est plus efficace car elle permet une extraction rapide du numéro de réseau à l'intérieur d'une adresse IP ce qui facilitera le routage.
Toutes les combinaisons mathématiquement possibles pour identifier un réseau ou une machine ne sont pas permises car certaines adresses ont des significations particulières.
• <id. de réseau nul>.<id. de machine> est également utilisée pour désigner une machine sur son réseau lors d'un boot également
• <id. de réseau>.<id. de machine nul> n'est jamais affectée à une machine car elle permet de désigner le réseau lui-même
• <id. de réseau>.<id. de machine avec tous ses bits à 1> est une adresse de diffusion ou de broadcasting, c'est-à-dire qu'elle désigne toutes les machines du réseau concerné. Un datagramme adressé à cette adresse sera ainsi envoyé à toutes les machines du réseau.
• 255.255.255.255 est une adresse de diffusion locale car elle désigne toutes les machines du réseau auquel appartient l'ordinateur qui utilise cette adresse. L'avantage par rapport à l'adresse précédente est que l'émetteur n'est pas obligé de connaître l'adresse du réseau auquel il appartient.
• 127.X.Y.Z est une adresse de rebouclage qui est utilisée pour permettre les communications interprocessus sur un même ordinateur ou réaliser des tests de logiciels car tout logiciel de communication recevant des données pour cette adresse les retourne simplement à l'émetteur.
• Les adresses de classe A de 10.0.0.0 à 10.255.255.255, de classe B de 172.16.0.0 à 172.31.255.255 et de classe C de 192.168.0.0 à 192.168.255.255 sont réservées à la constitution de réseaux privés autrement appelés intranet.
Le système des adresses IP permet également la définition d'adresses de sous-réseaux en découpant la partie réservée à l'adresse des machines sur un réseau en deux parties dont la première sera un identificateur de sousréseau. Ainsi un seul réseau de classe B, sur lequel on pourrait nommer 65 536 machines pourra être décomposé en 254 sous-réseaux de 254 machines, de la manière décrite ci-dessous.
<id. de réseau sur 16 bits>.<id. de sous-réseau sur 8 bits>.<id. de machine sur 8 bits>
Figure: Adressage de sous-réseau
La figureillustre le cas d'un réseau X.Y.0.0 découpé en deux sous-réseaux X.Y.1.0 et X.Y.2.0. Pour tout le reste d'Internet, il n'existe qu'un seul réseau X.Y.0.0 et tous les routeurs traitent les datagrammes à destination de ce réseau de la même façon. Par contre, le routeur R se sert du troisième octet (égal à 1 ou 2) de l'adresse contenue dans les datagrammes qui lui proviennent pour les diriger vers le sous-réseau auquel ils sont destinés assurant ainsi un routage hiérarchique.
Outre l'adresse IP, une machine doit également connaître le nombre de bits attribués à l'identificateur du sousréseau et à celui de la machine. Cette information est rendue disponible grâce à un masque de sous-réseau ou subnet netmask qui est un mot de 32 bits contenant des bits à 1 au lieu et place de l'identificateur de réseau et de sous-réseau et des bits à 0 au lieu et place de l'identificateur de machines. Ainsi le masque255.255.255.0 indique que les 24 premiers bits d'une adresse désignent le sous-réseau et les 8 derniers une machine. Le masque 255.255.255.192 ( (192)10=(11000000)2) indique que les 26 premiers bits désignent le sous réseau et les 6 derniers une machine. De cette manière à partir de l'adresse d'un datagramme et de son masque de sous-réseau une machine peut déterminer si le datagramme est destiné à une machine sur son propre sous-réseau, à une machine sur un autre sous-réseau de son réseau ou à une machine extérieure à son sous-réseau. Par exemple, dans le cadre du réseau de la figureoù le masque de sous-réseau est 255.255.255.0 supposons que notre machine soit celle identifiée par l'adresse IP X.Y.1.2.
• Si l'adresse de destination est X.Y.2.1, un calcul du même genre donne X.Y.2.0 c'est-à-dire l'adresse d'un autre sous-réseau du même réseau.
• Si l'adresse de destination est S.T.U.V (avec ) le résultat sera l'adresse d'un réseau différent de celui auquel appartient notre machine.
Bien que la numérotation IP à l'aide d'adresses numériques soit suffisante techniquement, il est préférable pour un humain de désigner une machine par un nom. Mais se pose alors le problème de la définition des noms et de leur mise en correspondance avec les numéros IP. Au début des années 80, le réseau ARPANET comportait un peu plus de 200 ordinateurs et chacun possédait un fichier /etc/hosts identifiant les noms de ces ordinateurs suivis de leur numéro IP. Lorsqu'une modification intervenait, il suffisait de mettre à jour ce fichier. Pour faire face à l'explosion du nombre d'ordinateurs reliés à Internet, il a été mis en place un système de base de données distribuées : le système de noms de domaines (DNS : Domain Name System) qui fournit la correspondance entre un nom de machine et son numéro IP.
Figure: Système de noms de domaines.
En fait, le DNS est un espace de noms hiérarchisé comme illustré dans la figure2.9. Chaque nud a un nom d'au plus 63 caractères et la racine de l'arbre a un nom nul (les minuscules et majuscules sont indifférenciées). Une zone est un sous-arbre de cette hiérarchie. Le nom de domaine d'un nud est la concaténation de son nom avec celui de ses ancêtres dans l'arbre. La responsabilité du nommage est subdivisée par niveau, les niveaux supérieurs déléguant leur autorité aux sous-domaines qu'ils créent eux-mêmes. Il faut bien avoir à l'esprit que le découpage n'a dans certains cas aucune base géographique ; on trouve des domaines .com partout dans le monde.
Le but de la couche de liens de la pile TCP/IP est d'envoyer et recevoir des datagrammes IP pour la couche IP, d'envoyer des requêtes ARP (respt. RARP) et de recevoir des réponses pour le module ARP (respt. RARP). Nous examinons ici les caractéristiques des deux premières couches du modèle OSI (couches physique et de liens) dans le cas d'un réseau local Ethernet et d'une liaison série reliant un ordinateur à Internet via un modem connecté sur le port série de cet ordinateur.
Sous-sections
2.4.1 Le réseau Ethernet
Ethernet est le nom donné à une des technologies les plus utilisées pour les réseaux locaux en bus. Elle a été inventée par Xerox au début des années 70 et normalisée par l'IEEE (Institute for Electrical and Electronics Engineers) vers 1980 sous la norme IEEE 802.
Tout d'abord, il existe plusieurs technologies physiques pour établir un réseau Ethernet.
• 10 base 5 ou thick Ethernet est un réseau à base de câble coaxial de 1,27 cm de diamètre, d'une longueur de 500 m maximum et terminé à chaque extrémité par une résistance. Chaque ordinateur est relié, par un cordon AUI Attachment Unit Interface), à un boîtier appelé transceiver lui-même connecté au câble par l'intermédiaire d'une prise « vampire ». Le transceiver est capable de détecter si des signaux numériques transitent sur le câble et de les traduire en signaux numériques à destination de l'ordinateur, et inversement.
• 10 base 2 ou thin Ethernet est un réseau à base d'un câble coaxial plus fin et plus souple, moins résistant aux perturbations électromagnétiques que le 10 base 5, mais d'un coût inférieur. Le transceiver et le câble AUI ne sont plus utiles car l'ordinateur est relié directement au câble par l'intermédiaire d'une prise BNC en T intégrée à la carte Ethernet de l'ordinateur.
Majoritairement, les réseaux Ethernet ont un débit de 10Mbit/set les informations sont transmises sur le bus sans garantie de remise. Chaque transceiver capte toutes les trames qui sont émises sur le câble et les redirige vers le contrôleur de l'ordinateur qui rejettera les trames qui ne lui sont pas destinées et enverra au processeur celles qui le concernent, c'est-à-dire celles dont l'adresse de destination est égale à celle de la carte réseau. Comme il n'y a pas d'autorité centrale qui gère l'accès au câble, il est possible que plusieurs stations veuillent émettre simultanément sur le câble. C'est pourquoi chaque transceiver écoute le câble pendant qu'il émet des données afin de détecter des éventuelles perturbations. Si une collision est détectée par le transceiver, celui-ci prévient le coupleur qui arrête d'émettre et attend un laps de temps aléatoire compris entre 0 et une certaine durée
avant de réémettre ses données. S'il y a encore un problème de collision, alors un nouveau temps d'attente est
tiré au sort entre 0 et , puis entre 0 et , etc jusqu'à ce que la trame soit émise. Ce principe est justifié par le fait que si une première collision se produit, il y a de fortes chances que les délais d'attente tirés au sort par chacune des 2 stations soient très proches, donc il ne sera pas surprenant d'avoir une nouvelle collision. En doublant à chaque fois l'intervalle des délais d'attente possibles on augmente les chances de voir les retransmissions s'étaler sur des durées relativement longues et donc de diminuer les risques de collision. Cette technologie s'appelle CSMA/CD (Carrier Sense Multiple Access with Collision Detect). Elle est efficace en générale mais a le défaut de ne pas garantir un délai de transmission maximal après lequel on est sûr que la trame a été émise, donc cela ne permet pas de l'envisager pour des applications temps réel.
- unicast dans le cas d'une adresse monodestinataire désignant un seul coupleur
- broadcast dans le cas d'une adresse de diffusion générale (tous les bits à 1) qui permet d'envoyer une trame à toutes les stations du réseau
- multicast dans le cas d'une adresse multidestinataire qui permet d'adresser une même trame à un ensemble de stations qui ont convenu de faire partie du groupe que représente cette adresse multipoint. On voit donc qu'un coupleur doit être capable de reconnaitre sa propre adresse physique, l'adresse de multicast, et toute adresse de groupe dont il fait partie.
Au niveau des trames, la normalisation IEEE 802définit un format de trame légèrement différent de celui du véritable Ethernet. Ainsi, le RFC 894 définit les trames Ethernet et le RFC 1042 définit celles des réseaux IEE 802 comme illustré dans la figure2.10.
Figure 2.10: Encapsulation Ethernet et IEEE 802.3. Mais la variante la plus usitée est l'Ethernet.
Les deux trames utilisent des adresses matérielles source et destination de 6 octets (adresse Ethernet) et un CRC de 4 octets mais différent sur les points suivants.
-
Dans le format Ethernet le troisième champ contient le type de données transmises selon que c'est un datagramme IP, une requête ou réponse ARP ou RARP. Puis, viennent les données transmises qui peuvent avoir une taille allant de 46 à 1500 octets. Dans le cas de données trop petites, comme pour les requêtes et réponse ARP et RARP (voir la sous-section2.4.4) on complète avec des bits de bourrage ou padding.
-
De nombreux équipements matériels interviennent dans la constitution physique d'un réseau Ethernet, ce paragraphe décrit quelques uns de ceux qui interviennent aux niveaux 1 et 2 du modèle OSI.
• Un répéteur opére de manière physique uniquement, donc au niveau de la couche 1 du modèle OSI. Il se contente de retransmettre et d'amplifier tous les signaux qu'il reçoit, sans aucun autre traitement. Un « hub » est un répéteur 10 base T multiport qui renvoie donc le signal qu'il reçoit par l'un de ses ports vers tous ses autres ports.
• Un pont est un équipement qui intervient dans l'architecture d'un réseau en reliant deux segments disjoints de ce réseau. Le pont appartient à la couche 2 du modèle OSI car il va filtrer les trames du réseau en fonction de leur origine et destination, mais il ne se préoccuppe pas du logiciel réseau de niveau supérieur (TCP/IP, DECNet, IPX, ).
Figure 2.11: Fonctionnement d'un pont..
• Dans la configuration de la figure2.11le pont sera capable de déterminer que les ordinateurs A et B sont sur le segment 1 et les ordinateurs C et D sur le segment 2. Il peut obtenir ces informations car il «
voit passer » toutes les trames provenant des ordinateurs appartenant aux deux segments qu'il relie et grâce aux adresses d'origine contenues dans les trames, il peut se construire une table d'adresses mémorisant la cartographie du réseau. Ainsi, si une trame est envoyée de A vers B, ou de C vers D, elle ne franchira pas le pont car celui-ci aura détecté que c'est inutile. Mais si la trame provenant de A est destinée à C ou D, elle le traversera sans aucun autre traitement.
• Un commutateur est en fait un pont multiport qui va aiguiller chacune des trames qu'il reçoit vers le segment sur lequel se trouve l'ordinateur de destination de la trame. Cependant, chacun de ses ports est habituellement relié à un segment contenant un nombre restreint d'ordinateurs, voire à un seul s'il s'agit par exemple d'un serveur très sollicité.
2.4.2 La liaison SLIP
SLIP (Serial Link Internet Protocol, RFC 1055) est un protocole permettant d'envoyer des paquets IP entre deux ordinateurs reliés par une liaison série (par exemple, grâce à deux modems branchés sur les ports RS-232 et une ligne téléphonique). Dans ce cas il n'y a pas besoin de prévoir un adressage de niveau 2, puisque la liaison est point à point (une seule machine à chaque extrémité du lien). Par contre, il s'agit de délimiter le début et la fin des paquets IP. L'encapsulation d'un paquet IP avant de l'envoyer sur la ligne consiste simplement à le faire terminer par le caractère spécial END (Oxc0) comme illustré dans la figure2.12.
Figure 2.12: Encapsulation SLIP.
Pour éviter des problèmes de bruit, certaines implantations de SLIP font également débuter l'envoi du paquet IP par un caractère END. Pour qu'un caractère END faisant partie des données du paquet IP ne soit pas interprété comme la fin du paquet, l'émetteur le remplace par la séquence d'échappement SLIP_ESC ESC_END (0xdb 0xdc). Si le caractère SLIP_ESC fait partie des données à transmettre, alors la séquence SLIP_ESC ESC_ESC (0xdb 0xdd) est transmise à sa place.
2.4.3 La liaison PPP
PPP (Point to Point Protocol) (RFC 1661) est un protocole qui corrige les déficiences de SLIP en offrant les fonctionnalités suivantes.
- utilisation sur des liaisons point à point autres que série, comme X25 ou RNIS
- le transport de protocoles de niveau 3 (IP, Decnet, Appletalk, )
- la compression des en-têtes IP et TCP pour augmenter le débit de la liaison
- gestion d'un contrôle d'accès au réseau par authentification selon le protocole PAP qui nécessite la donnée d'un mot de passe au début de la communication ou le protocole CHAP qui permet l'échange de sceaux cryptés tout au long de la communication
- détection et correction d'erreurs de transmission
- ne pas utiliser des codes qui risquent d'être interprétés par les modems
- configuration automatique de la station client selon ses protocoles de couche réseau (IP, IPX, Appletalk).
Le protocole PPP est celui classiquement utilisé par les fournisseurs d'accès à Internet pour connecter leurs abonnés selon le schéma de la figure
Figure: Connexion à Internet par modem et PPP.
Le processus de connexion d'un client équipé d'un ordinateur sous Windows, MacOS, Linux ou autre est le suivant.
• Le modem du client appelle le numéro de téléphone du fournisseur et la connexion téléphonique s'établit si l'un au moins de ses modems est libre.
• Une fois l'identification du client controlée, le serveur de communication envoie une adresse IP, dite dynamique car elle varie selon les connexions, à l'ordinateur du client qui à partir de là se retrouve intégré au réseau Internt avec une adresse IP pour tout le temps que durera sa connexion.
Figure 2.14: Encapsulation PPP.
De manière plus technique l'encapsulation PPP illustrée dans la figureest proche du standard HDLC de l'ISO (voir section1.4.2) et est telle que chaque trame commence et finit par un fanion de valeur 0x7e soit en binaire 01111110. La valeur du champ adresse est toujours fixée à 0xff puisqu'elle est inutile ici dans le cas d'une liaison point à point. Le champ contrôle est fixé à 0x03. Le champ protocol a le même rôle que la champ type de la trame Ethernet. Le CRC assure la détection des erreurs de transmission.
Le problème de l'apparition du fanion 01111110 au milieu des données à transmettre est réglé des deux manières suivantes.
-
Dans le cas d'une liaison synchrone, à l'émission un bit à 0 est systématiquement ajouté après 5 1 et il est retiré à la réception.
-
Dans le cas d'une liaison asynchrone, le fanion 0x7e est remplacé par la suite 0x7d 0x5e, et le code
0x7d est lui-même remplacé par la suite 0x7d 0x5d. De plus tout octet O de valeur inférieure à
0x20 (32 en décimal), correspondant donc à un code de contrôle ASCII, sera remplacé par la séquence
0x7d O' où . Ainsi, on est sûr que ces caractères ne seront pas interprétés par les modems comme des caractères de commandes. Par défaut, les 32 valeurs sont traitées ainsi mais il est possible d'utiliser le protocole de contrôle de liens pour spécifier pour quels caractères uniquement on fait cette transformation.
2.4.4 Les protocoles ARP et RARP
Nous nous plaçons dans le cas d'une correspondance à établir entre IP et Ethernet et la nécessité de la résolution d'adresse fournie par ARP apparaît dans l'exemple ci-dessous décrivant le début d'une connexion FTP.
1. Le client FTP convertit l'adresse du serveur FTP (ex : ) en une adresse IP (193.49.162.1) à l'aide du fichiers /etc/hosts ou d'un serveur de noms (DNS).
2. Le client FTP demande à la couche TCP d'établir une connexion avec cette adresse.
3. TCP envoie une requête de connexion à ce serveur en émettant un datagramme IP contenant l'adresse IP
4. En supposant que les machines client et serveur sont sur le même réseau local Ethernet, la machine émettrice doit convertir l'adresse IP sur 4 octets en une adresse Ethernet sur 6 octets avant d'émettre la trame Ethernet contenant le paquet IP. C'est ce que va faire ARP.
5. Le module ARP envoie une requête ARP dans une trame Ethernet (donnée dans la figure avec une adresse de destination multicast. Ainsi, toutes les machines du réseau local reçoivent cette requête contenant l'adresse IP à résoudre.
6. La couche ARP de la machine visée (ici ) reconnaît que cette requête lui est destinée et répond par une réponse ARP contenant son adresse matérielle 00:20:AF:AB:42:43. Les autres machines du réseau ignorent la requête.
7. La réponse ARP est reçue par l'émetteur de la requête. Pour ce retour, il n'y a pas de problème de résolution puisque l'adresse physique de l'émetteur étant envoyée dans la requête elle est connue de la machine qui répond.
8. La réponse ARP est reçue par la couche ARP du client FTP, et le driver Ethernet peut alors émettre le paquet IP avec la bonne adresse Ethernet de destination.
Figure: Requête ou réponse ARP sur un réseau Ethernet.
La machine qui reconnaît son numéro IP à l'intérieur d'une requête ARP qu'elle reçoit la renvoie en y intervertissant les adresses IP cible et émetteur, ainsi que les adresses Ethernet cible (après l'avoir substituée à l'adresse de diffusion dans l'en-tête et renseignée dans le corps de la trame) et Ethernet émetteur. Pour éviter la multiplication des requêtes ARP, chaque machine gère un cache dans lequel elle mémorise les correspondances adresses IP/adresses Ethernet déjà résolues préalablement. Ainsi, le module ARP ne lancera une requête que lorsqu'il ne trouvera pas cette correspondance dans le cache, sinon il se contentera d'émettre les données qu'il reçoit d'IP en ayant fixer correctement l'adresse physique de destination. Cependant, les correspondances ne sont pas conservées indéfiniment car cela pourrait provoquer des erreurs lorsque l'on change un ordinateur (ou une carte réseau) sur le réseau en conservant un même numéro IP pour cet ordinateur mais évidemment pas la même adresse physique.
Quant à lui, le protocole RARP joue le rôle inverse de ARP en permettant de déterminer l'adresse IP d'un équipement dont on connaît l'adresse physique. Ceci est notamment utile pour amorcer une station sans disques, ou un TX, qui n'a pas en mémoire son adresse IP mais seulement son adresse matérielle. Le format d'une trame RARP est celui de la figure où le champ type de trame vaut 0x0835 et le champ op vaut 3 pour une requête RARP et 4 pour une réponse. Une requête RARP est diffusée sous forme de broadcast, donc toutes les machines du réseau la reçoivent et la traitent. Mais la plupart des machines ignorent simplement cette demande, seuls, le ou les serveurs RARP du réseau vont traiter la requête grâce à un ou plusieurs fichiers et vont retourner une réponse contenant l'adresse IP demandée.
- définir le format du datagramme IP qui est l'unité de base des données circulant sur Internet
- définir le routage dans Internet
- définir la gestion de la remise non fiable des datagrammes
Sous-sections
2.5.1 Le datagramme IP.
Comme cela a déjà été illustré dans la figure2.6on rappelle qu'un datagramme IP est constitué d'une en-tête suivie d'un champ de données.
Figure 2.16: Structure d'un datagramme IP.
Sa structure précise est détaillée dans la figure2.16et comporte les champs suivants.
-
La version code sur 4 bits le numéro de version du protocole IP utilisé (la version courante est la 4, d'où son nom d'IPv4). Tout logiciel IP doit d'abord vérifier que le numéro de version du datagramme qu'il reçoit est en accord avec lui-même. si ce n'est pas le cas le datagramme est tout simplement rejeté. Ceci permet de tester des nouveaux protocoles sans interférer avec la bonne marche du réseau.
-
La longueur d'en-tête représente sur 4 bits la longueur, en nombre de mots de 32 bits, de l'en-tête du datagramme. Ce champ est nécessaire car une en-tête peut avoir une taille supérieure à 20 octets (taille de l'en-tête classique) à cause des options que l'on peut y ajouter.
-
Le type de services (TOS) est codé sur 8 bits, indique la manière dont doit être géré le datagramme et se décompose en six sous-champs comme suit.
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
priorité | D | T | R | C | inutilisé
Ces 4 bits servent à améliorer la qualité du routage et ne sont pas des exigences incontournables. Simplement, si un routeur connaît plusieurs voies de sortie pour une même destination il pourra choisir celle qui correspond le mieux à la demande. - La longueur totale contient la taille totale en octets du datagramme, et comme ce champ est de 2 octets on en déduit que la taille complète d'un datagramme ne peut dépasser 65535 octets. Utilisée avec la longueur de l'en-tête elle permet de déterminer où commencent exactement les données transportées. - Les champs identification, drapeaux et déplacement de fragment interviennent dans le processus de fragmentation des datagrammes IP et sont décrits dans la sous-section - La durée de vie (TTL) indique le nombre maximal de routeurs que peut traverser le datagramme. Elle est initialisée à N (souvent 32 ou 64) par la station émettrice et décrémenté de 1 par chaque routeur qui le reçoit et le réexpédie. Lorsqu'un routeur reçoit un datagramme dont la durée de vie est nulle, il le détruit et envoie à l'expéditeur un message ICMP. Ainsi, il est impossible qu'un datagramme «tourne» indéfiniment dans un internet. Ce champ sert également dans la réalisation du programme traceroute donné dans la section2.8.2. - - Le total de contrôle d'en-tête (header checksum) est calculé à partir de l'en-tête du datagramme pour en assurer l'intégrité. L'intégrité des données transportées est elle assurée directement par les protocoles ICMP, IGMP, TCP et UDP qui les émettent. Pour calculer cette somme de contrôle, on commence par la mettre à zéro. Puis, en considérant la totalité de l'en-tête comme une suite d'entiers de 16 bits, on fait la somme de ces entiers en complément à 1. On complémente à 1 cette somme et cela donne le total de contrôle que l'on insère dans le champ prévu. A la réception du datagramme, il suffit d'additionner tous les nombres de l'en-tête et si l'on obtient un nombre avec tous ses bits à 1, c'est que la transmission s'est passée sans problème. Exemple : Soit le datagramme IP dont l'en-tête est la suivante 4500 05dc e733 222b ff11 checksum c02c 4d60 c02c 4d01 La somme des mots de 16 bits en compléments à 1 donne 6e08, son complément à 1 est 91f7. Le datagramme est donc expédié avec cette valeur de checksum. - Les adresses IP source et destination contiennent sur 32 bits les adresses de la machine émettrice et destinataire finale du datagramme. - Le champ options est une liste de longueur variable, mais toujours complétée par des bits de bourrage pour atteindre une taille multiple de 32 bits pour être en conformité avec la convention qui définit le champ longueur de l'en-tête. Ces options sont très peu utilisées car peu de machines sont aptes à les gérer. Parmi elles, on trouve des options de sécurité et de gestion (domaine militaire), d'enregistrement de la route, d'estampille horaire, routage strict, etc Les champs non encore précisés le sont dans la section suivante car ils concernent la fragmentation des datagrammes. 2.5.2 La fragmentation des datagrammes IP. Figure 2.17: Fragmentation d'un datagramme IP. Comme on peut le voir dans la figurela fragmentation se situe au niveau d'un routeur qui reçoit des datagrammes issus d'un réseau à grand MTU et qui doit les réexpédier vers un réseau à plus petit MTU. Dans cet exemple, si la station A, reliée à un réseau Ethernet, envoie un datagramme de 1300 octets à destination de la station B, reliée également à un réseau Ethernet, le routeur R1 va devoir fragmenter ce datagramme de la manière suivante.
La taille d'un fragment est choisie la plus grande possible tout en étant un multiple de 8 octets. Un datagramme fragmenté n'est réassemblé que lorsqu'il arrive à destination finale, même s'ils traversent des réseaux avec un plus grand MTU les routeurs ne réassemblent pas les petits fragments. De plus chaque fragment est routé de manière totalement indépendante des autres fragments du datagramme d'où il provient. Le destinataire final qui reçoit un premier fragment d'un datagramme arme un temporisateur de réassemblage, c'est-à-dire un délai maximal d'attente de tous les fragments. Si, passé ce délai, tous les fragments ne sont pas arrivés il détruit les fragments reçus et ne traite pas le datagramme. Plus précisément, l'ordinateur destinataire décrémente, à intervalles réguliers, de une unité le champ TTL de chaque fragment en attente de réassemblage. Cette technique permet également de ne pas faire coexister au même instant deux datagrammes avec le même identifiant. 2.5.3 Le routage IP. Le routage est l'une des fonctionnalités principales de la couche IP et consiste à choisir la manière de transmettre un datagramme IP à travers les divers réseaux d'un internet. On appellera ordinateur un équipement relié à un seul réseau et routeur un équipement relié à au moins deux réseaux (cet équipement pouvant être un ordinateur, au sens classique du terme, qui assure les fonctionnalités de routage). Ainsi un routeur réémettra des datagrammes venus d'une de ses interfaces vers une autre, alors qu'un ordinateur sera soit l'expéditeur initial, soit le destinataire final d'un datagramme. D'une manière générale on distingue la remise directe, qui correspond au transfert d'un datagramme entre deux ordinateurs du même réseau, et la remise indirecte qui est mise en uvre dans tous les autres cas, c'est-à-dire quand au moins un routeur sépare l'expéditeur initial et le destinataire final. Par exemple, dans le cas d'un réseau Ethernet, la remise directe consiste à encapsuler le datagramme dans une trame Ethernet après avoir utilisé le protocole ARP pour faire la correspondance adresse IP adresse physique (voir les sections2.4.1et et à émettre cette trame sur le réseau. L'expéditeur peut savoir que le destinataire final partage le même réseau que lui-même en utilisant simplement l'adresse IP de destination du datagramme. Il en extrait l'identificateur de réseau et si c'est le même que celui de sa propre adresse IPalors la remise directe est suffisante. En fait, ce mécanisme de remise directe se retrouve toujours lors de la remise d'un datagramme entre le dernier routeur et le destinataire final. Figure: Exemple d'interconnexion de réseau. La figure2.18donne un exemple d'interconnexion d'un réseau de classe B 140.252.0.0 subdivisé en 3 sousréseaux de masques respectifs 255.255.255.0 pour l'Ethernet du haut, 255.255.255.224pour l'Ethernet du bas et le sous-réseau SLIP. Les masques de sous-réseau sont associés par défaut à chaque interface d'une machine ou sont éventuellement spécifié sur chaque ligne des tables de routage. Dans l'exemple donné ici, la table de routage simple de l'ordinateur R3 (sous système unix Sun) est la suivante. destination gateway flags refcnt use interface 140.252.13.65 140.252.13.35 UGH 0 0 emd0 127.0.0.1 127.0.0.1 UH 1 0 lo0 default 140.252.13.33 UG 0 0 emd0 140.252.13.32 140.252.13.34 U 4 25043 emdO Les flags ont la signification suivante. U La route est en service. G La route est un routeur (gateway). Si ce flag n'est pas positionné la destination est directement connectée au routeur, c'est donc un cas de remise directe vers l'adresse IP de destination. H La route est un ordinateur (host), la destination est une adresse d'ordinateur. Dans ce cas, la correspondance entre l'adresse de destination du paquet à «router» et l'entrée destination de la table de routage doit être totale. Si ce flag n'est pas positionné, la route désigne un autre réseau et la destination est une adresse de réseau ou de sous-réseau. Ici, la correspondance des identificateurs de réseaux est suffisante. D La route a été créée par une redirection. M La route a été modifiée par une redirection. L'adresse 127.0.0.1 est celle de lo0, l'interface de loopback, qui sert à pouvoir faire communiquer une machine avec elle-même. La destination default sert à indiquer la destination de tous les datagrammes qui ne peuvent être «routés» par l'une des autres routes. L'utilisation d'une table de routage se fait suivant l'algorithme de routage IP donné ci-dessous. Procédure RoutageIP(données Dat : datagramme, Tab : Table de routage) début D := adresse IP de destination de Dat N := identificateur du réseau de D si N est une adresse de réseau directement accessible alors envoyer Dat vers l'adresse D sur ce réseau { il y a résolution de l'adresse IP, en adresse physique, encapsulation de Dat dans une trame physique et émission de la trame} sinon pour chaque entrée de Tab faire N:=résultat du et logique de D et du masque de sous-réseau si N=l'adresse réseau ou sous-réseau de la destination de l'entrée alors router Dat vers cette destination sortir finsi finpour si aucune correspondance n'est trouvée alors retourner à l'application d'origine du datagramme une erreur de routage host unreachable ou unreachable network finsi finsi fin L'établissement d'une table de routage est statique lorsqu'elle résulte de la configuration par défaut d'une interface, ou de la commande route à partir d'un fichier de démarrage, ou grâce à une redirection ICMP (voir la section. Mais dès que le réseau devient non trivial, on utilise le routage dynamique qui consiste en un protocole de communication entre routeurs qui informent chacun de leurs voisins des réseaux auxquels ils sont connectés. Grâce à ce protocole, les tables de routage évoluent dans le temps en fonction de l'évolution des routes. Un message RIP est encapsulé dans un datagramme UDP de la manière décrite dans la figure Figure 2.19: Encapsulation d'un message RIP. Le champ commande fixé à 1 indique une requête pour demander tout ou partie d'une table de routage et fixé à 2 pour transmettre une réponse (d'autres valeurs hors normes actuellement existent également). Le champ version est positionné à 1 et à 2 dans la version de RIP2. Pour des adresses IP, le champ identificateur de famille d'adresses est toujours fixé à 2. À l'initialisation, le démon de routage envoie une requête RIP à chaque interface pour demander les tables de routage complètes de chacun de ses voisins. Sur une liaison point à point la requête est envoyée à l'autre extrémité, sinon elle est envoyée sous forme de broadcast sur un réseau. Le fonctionnement normal de RIP consiste à diffuser des réponses soit toutes les 30 secondes, soit pour une mise à jour déclenchée par la modification de la métrique d'une route. Une réponse contient une adresse de destination, accompagnée de sa métrique, de l'adresse du prochain routeur,d'un indicateur de mise à jour récente et de temporisations. Le processus RIP met à jour sa table de routage locale en examinant les entrées retournées dont il vérifie d'abord la validité : adresse de classe A,B ou C, numéro de réseau différent de 127 et 0 (sauf pour l'adresse par défaut 0.0.0.0), numéro d'ordinateur différent de l'adresse de diffusion, métrique différente de l'«infini». RIP effectue ensuite les mises à jour propres à l'algorithme «vecteur de distance» suivant. - Si l'entrée n'existait pas dans la table et si la métrique reçue n'est pas infinie, alors on ajoute cette nouvelle entrée composée de la destination, de l'adresse du prochain routeur (c'est celui qui envoie la réponse), de la métrique reçue. On initialise la temporisation correspondante. - - Si l'entrée était présente et que le routeur suivant correspond à l'émetteur de la réponse, on réinitialise la temporisation et on met à jour la métrique avec celle reçue si elles diffèrent. - Dans les autres cas on ignore l'entrée. Cette méthode correspond à l'algorithme de Bellman-Ford de recherche de plus courts chemins dans un graphe. Un des défauts de RIP est de ne pas gérer les adresses de sous-réseaux. Mais de telles entrées peuvent être annoncées via le une interface appartenant à ce sous-réseau pour pouvoir bénéficier du masque qui y est attaché et être correctement interprétées. Enfin, RIP met un temps assez long (quelques minutes) pour se stabiliser après la défaillance d'une liaison ou d'un routeur ce qui peut occasionner des boucles de routage. RIP2 est un protocole qui étend RIP en utilisant les 4 champs laissés à 0 par RIP dans ses messages. Le premier sert à fixer un domaine de routage identifiant le démon de routage qui a émis le paquet et le quatrième l'adresse IP d'un routeur de saut suivant. Ces deux champs ont servi à lancer simultanément plusieurs démons de routage sur un même support leur utilisation a été abandonnée. Le deuxième champ est un identificateur de route pour supporter des protocoles de routes externes et le troisième sert à spécifier un masque de sous-réseau pour chaque entrée de la réponse. En fait, RIP et OSPF, sont des protocoles de type IGP (Interior Gateway Protocol) permettant d'établir les tables des routeurs internes des systèmes autonomes. Un système autonome peut être défini par un ensemble de routeurs et de réseaux sous une administration unique. Cela peut donc aller d'un seul routeur connectant un réseau local à Internet, jusqu'à l'ensemble des réseaux locaux d'une multinationale. La règle de base étant qu'un système autonome assure la connexité totale de tous les points qui le composent en utilisant notamment un protocole de routage unique. À un niveau plus global, Internet apparaît donc comme une interconnexion de systèmes autonomes comme illustré dans la figure2.20. Figure: Interconnexion de systèmes autonomes. Dans chaque système autonome les tables sont maintenus par par un IGP et sont échangées uniquement entre routeurs du même sous-système. Pour obtenir des informations sur les réseaux externes, ceux de l'autre système autonome, ils doivent dialoguer avec les les routeurs externes R1 et R2. Ceux-ci sont des points d'entrée de chaque système et, via la liaison qui les relie, ils échangent des informations sur la connectivité grâce à EGP (Exterior Gateway Protocol) ou BGP (Border Gateway Protocol) qui remplace EGP actuellement. 2.5.4 La gestion des erreurs. Figure 2.21: Encapsulation d'un message ICMP. Mais la règle est qu'aucun message ICMP ne doit être délivré pour signaler une erreur relative à un message ICMP. On évite ainsi une avalanche de messages d'erreurs quand le fonctionnement d'un réseau se détériore. Le champ type peut prendre 15 valeurs différentes spécifiant de quelle nature est le message envoyé. Pour certains types, le champ code sert à préciser encore plus le contexte d'émission du message. Le checksum est une somme de contrôle de tout le message ICMP calculée comme dans le cas de l'en-tête d'un datagramme IP (voir la section2.5.1). Le détail des différentes catégories de messages est donné dans la liste ci-dessous où chaque alinéa commence par le couple (type,code) de la catégorie décrite. (0,0) ou (8,0) Demande (type 8) ou réponse (type 0) d'écho dans le cadre de la commande ping (voir section2.8.2). (3,0-13) Compte-rendu de destination inaccessible délivré quand un routeur ne peut délivrer un datagramme. Le routeur génère et envoie ce message ICMP à l'expéditeur de ce datagramme. Il obtient l'adresse de cet expéditeur en l'extrayant de l'en-tête du datagramme, il insère dans les données du message ICMP toute l'en-tête ainsi que les 8 premiers octets du datagramme en cause. Une liste non exhaustive des différents codes d'erreurs possibles est : 0 Le réseau est inaccessible. 1 La machine est inaccessible. 2 Le protocole est inaccessible. 3 Le port est inaccessible. 4 Fragmentation nécessaire mais bit de non fragmentation positionné à 1. 5 Échec de routage de source. 6 Réseau de destination inconnu. 7 Machine destinataire inconnue. 8 Machine source isolée (obsolète) 9 Communication avec le réseau de destination administrativement interdite. 10 Communication avec la machine de destination administrativement interdite. 11 Réseau inaccessible pour ce type de service. 12 13 Communication administrativement interdite par filtrage. (4,0) Demande de limitation de production pour éviter la congestion du routeur qui envoie ce message. (5,0-3) Demande de modification de route expédiée lorsqu'un routeur détecte qu'un ordinateur utilise une route non optimale, ce qui peut arriver lorsqu'un ordinateur est ajouté au réseau avec une table de routage minimale. Le message ICMP généré contient l'adresse IP du routeur à rajouter dans la table de routage de l'ordinateur. Les différents codes possibles ci-après expliquent le type de redirection à opérer par l'ordinateur. 0 Redirection pour un réseau. 1 Redirection pour une machine. 2 Redirection pour un type de service et réseau. 3 Redirection pour un type de service et machine. (9,0) Avertissement de routeur expédié par un routeur. (10,0) Sollicitation de routeur diffusé par une machine pour initialiser sa table de routage. (11,0) TTL détecté à 0 pendant le transit du datagramme IP, lorsqu'il y a une route circulaire ou lors de l'utilisation de la commande traceroute (voir section2.8.2). (11,1) TTL détecté à 0 pendant le réassemblage d'un datagramme. (12,0) Mauvaise en-tête IP. (12,1) Option requise manquante. (13-14,0) Requête (13) ou réponse (14) timestamp, d'estampillage horaire. (15,0) et (16,0) devenues obsolètes. (17-18,0) Requête (17) ou réponse (18) de masque de sous-réseau. On présente ici les deux principaux protocoles de la couche transport d'Internet que sont les protocoles TCP (Transmission Control Protocol) et UDP (User Datagram Protocol). Tous les deux utilisent IP comme couche réseau, mais TCP procure une couche de transport fiable (alors même que IP ne l'est pas), tandis que UDP ne fait que transporter de manière non fiable des datagrammes. Sous-sections 2.6.1 Le protocole UDP. 2.6.2 Le protocole TCP. |
client SMTP expéditeur sur | serveur SMTP destinataire sur | |
demande une connexion TCP sur le port 25 à | ||
dest accepte la demande de | 220 |
connexion | ||
exp s'identifie | HELO | |
dest accepte l'identification | 250 Hello pleased to meet you | |
exp indique l'expéditeur | From:<> | |
dest accepte l'expéditeur | 250 <> Sender Ok | |
exp donne le destinataire | RCPT To:< | |
dest a vérifié et accepté le destinataire | 250 <> Recipient Ok | |
exp va envoyer les données | DATA | |
dest est prêt à accepter le message | 354 Enter mail, end with | |
exp envoie le message terminé par une ligne ne contenant qu'un point. | bla, blabla | |
. | ||
dest accepte le message | 250 OK | |
exp demande à terminer la connexion | QUIT | |
dest accepte de terminer la connexion | 221 closing connection |
2.7.6 News : nntp
NNTP (Network News Transfert Protocol) est le protocole d'échange des newsou forums de discussions à travers Usenet (nom donné au réseau logique constitué des serveurs de news disséminés sur la panète). Comme illustré dans la figureil assure l'échange des news entre les serveurs et également la communication entre serveur et postes clients aussi bien pour la lecture que pour l'écriture de messages.
Figure 2.36: Communication au sein de Usenet.
que de certains groupes. En effet, il n'est peut-être pas très utile de diffuser sur les serveurs de news japonais le groupe fr.petites-annonces.automobiles :-). De plus, tout serveur de news fixe pour chaque groupe la durée de conservation des messages sur ses disques durs.
De manière plus technique, NNTP utilise TCP via le port 119, le client envoyant une commande ASCII à laquelle le serveur répond par un code numérique éventuellement suivi par des données. Ces données sont disposées sur plusieurs lignes terminées chacune par CR/LF et terminées par une ligne réduite à un point.
Tout d'abord il faut savoir qu'un serveur de news ne répond pas systématiquement à toutes les requêtes des postes clients, mais uniquement à celles provenant de machines qu'il autorise, par exemple celles de son domaine. Ceci est illustré ci-après où l'on voit que le serveur de news accepte la connexion depuis une machine située en Allemagne uniquement pour la lecture des news et accepte la lecture et l'écriture de messadepuis une machine située sur son réseau.
[]telnet 119 Trying 193.49.144.4
Connected to .
Escape character is '^]'.
201 InterNetNews NNRP server INN 1.7.2 08-Dec-1997 ready (no posting).
[helios]telnet 119
Trying 193.49.144.4
Connected to .
Escape character is '^]'.
200 InterNetNews NNRP server INN 1.7.2 08-Dec-1997 ready (posting ok).
La liste des commandes connues d'un serveur de news peut-être obtenue en l'interrogeant au moyen de la commande help, comme décrit ci après. help
100 Legal commands
authinfo user Name|pass Password|generic <prog> <args> article [MessageID|Number] body [MessageID|Number] date group newsgroup head [MessageID|Number]
help ihave last
list [active|active.times|newsgroups|distributions||
|subscriptions] listgroup newsgroup mode reader
stat [MessageID|Number] xgtitle [group_pattern] xhdr header [range|MessageID] xover [range]
xpat header range|MessageID pat [morepat ] xpath MessageID Report problems to <> .
Quant aux codes de réponses du serveur de news, ils sont décrits dans la table2.2.
Tableau: Signification des 2 premiers chifres des codes de réponses de NNTP
|
|
Le rôle de quelques commandes de NNT est illustré ci-après en interrogeant le serveur .
• list retourne la liste des groupes de news, en indiquant leur nom, le numéro de l'article le plus récent, le numéro de l'article le plus ancien encore conservé, et la lettre y si le postage est libre ou m s'il est controlé par un modérateur.
• list
• 215 Newsgroups in form "group high low flags".
• control 0001251116 0001053999 y
• junk 0000000486 0000000480 y
• bionet.agroforestry 0000002281 0000002229 y
• bionet.announce 0000000165 0000000116 m
• .
• group fixe un groupe courant et renvoie une estimation du nombre d'articles dans le forum, le numéro de l'article le plus ancien, celui de l'article le plus récent et le nom du groupe.
• group .linux
• 211 6543 27618 34211 .linux
La différence 34211-27618=6593 est plus grande que 6543 car tous les messages ne sont pas forcément conservés aussi longtemps les uns que les autres.
group .linux 411 No such group .linux
• head envoie les en-têtes d'un article dont le numéro est spécifié.
• head 34205
• 221 34205 <> head
• Path: !enst!isdnet!!!!
• !!!news
• From: Nuno DOS SANTOS <[email protected]
• Newsgroups: .linux
• Subject: Instal carte de son
• Date: Mon, 26 Oct 1998 22:00:28 +0100
• Organization: CERN
• Lines: 10
• Message-ID: <>
• NNTP-Posting-Host:
• Mime-Version: 1.0
• Content-Type: text/plain; charset=us-ascii
• Content-Transfer-Encoding: 7bit
• X-Trace: 909435628 12357 (None) 128.141.182.63
• X-Complaints-To:
• X-Mailer: Mozilla 4.05 [en] (Win95; I) • Xref: .linux:34205
• .
• body retourne le coprs de l'article dont le numéro est spécifié.
• 222 34205 <> body
• Salut,
•
• J'arrive pas a instaler ma carte de son SB PCI awe64. Dans le HOW-TO ils
• parlent toujours de make config, xconfig, etc., mais la commande make ne
• passe pas. Il me donne l'erreur "make:*** No rule to make target
• 'xconfig'. Stop.". Le fichier sndstat est vide.
•
• Vous pouvez m'aider? Une sugestion?
•
• Merci
• .
Le point final ne fait pas partie du message mais est envoyé par NNTP pour terminer sa réponse
2.7.7 World Wide Web : http..
HTTP (HyperText Transfer Protocol) est le protocole de communication du webpermettant d'échanger des documents hypertextes contenant des données sous la forme de texte, d'images fixes ou animées et de sons.
Tout client web communique avec le port 80 d'un serveur HTTP par l'intermédiaire d'une, ou plusieurs, connexions TCP simultanées, chacune des connexions TCP ouvertes servant à récupérer l'un des composants de la page web.
• GET url renvoie l'information spécifiée par l'url.
• HEAD url renvoie l'en-tête de l'information demandée et non pas le contenu du document.
• POST pour envoyer du courrier électronique, des messages de news, ou des formulaires interactifs remplis par l'utilisateur.
La requête du client se compose de lignes de texte ASCII terminées par les caractères CR/LF et organisées comme ci-après :
requête url-demandé HTTP-version
en-têtes (0 ou plus)
<ligne blanche>
corps de la requête (seulement pour une requête POST)
Une réponse du serveur web se présente comme suit :
HTTP-version code-réponse phrase-réponse en-têtes (0 ou plus)
<ligne blanche> corps de la réponse
Les en-têtes de requêtes ou de réponses ont la forme : nom-de-champ: valeur et se classent ainsi :
• en-têtes de requête : authorization, date, from, if-modified-since, location, mimeversion, pragma, referer,user-agent
• en-têtes de réponse : date, location, mime-version, pragma, server, www.authenticate
• en-têtes de corps dans les réponses HTTP ou les requêts POST : allow, content-encoding, content-length, content-type, expires, last-modified
Les codes de réponses sont des nombres de 3 chiffres rangés en 5 catégories comme décrits dans la table2.3. Tableau: Codes de réponses de HTTP
|
|
Ci -dessous est décrit un exemple de requête et réponse HTTP, après s'être connecté à un serveur web, par exemple avec un client telnet.
helios|~>telnet 80 Trying 195.67.49.47
Connected to .
Escape character is '^]'. get / http/1.0
HTTP/1.0 200 OK
Last-Modified: Mon, 26 Oct 1998 19:13:02 GMT
Content-Type: text/html
Content-Length: 13163
<head>
<title>Yahoo! France</title>
<base href="/;>
</head>
<body> .
</body>
</html>
Le but de cette section est de décrire les principaux fichiers de configuration et les principales commandes relatives à l'utilisation du réseau Internet depuis une machine unix. Elle sert de support à des manipulations devant ordinateur. On ne décrit pas ici les commandes liées aux services Internet les plus classiques : mail, ftp, web, news qui sont présentées par ailleurs. Les informations données ici sont relatives à la machine(un Linux BiPentium Pro, 200Mhz, 256 Mo) fin novembre 1997.
Sous-sections
2.8.1 Fichiers de configuration.
• /etc/hosts
Il est structuré sous la forme
adresse IP nom de machine liste d'alias commentaire
127.0.0.1 localhost
193.49.162.1 vega
193.49.162.2 sirius
193.49.162.10 moinefou
193.49.162.4 helios
Celui de la machine moinefou se présente de la manière suivante
127.0.0.1 localhost loopback
193.49.144.1 lagaffe
193.49.144.220 gw-info
193.49.162.1 vega
193.49.162.2 sirius
193.49.162.10 moinefou
193.49.162.4 helios
dans lequel est spécifiée l'adresse d'une passerelle (gateway d'adresse IP qui se termine par .220) à laquelle est renvoyé tout paquet qui n'appartient pas au réseau local 193.49.162.0.
•
• domain
• search
• nameserver 193.49.162.9
• nameserver 193.49.144.1
Il précise le domaine d'appartenance de la machine, les noms de domaines avec lesquels compléter le nom d'une machine pour connaître son nom complet, ainsi que les adresses de serveurs de noms à interroger.
• /etc/protocols
• ip 0 IP # internet protocol, pseudo protocol number
• icmp 1 ICMP # internet control message protocol
• igmp 2 IGMP # internet group multicast protocol
• ggp 3 GGP # gateway-gateway protocol
• tcp 6 TCP # transmission control protocol
• pup 12 PUP # PARC universal packet protocol • udp 17 UDP # user datagram protocol
• idp 22 IDP # WhatsThis?
• raw 255 RAW # RAW IP interface
Il contient la liste des protocoles connus et utilisés dans Internet sous la forme
nom du protocole numéro du protocole liste d'alias commentaire
• /etc/services
• netstat 15/tcp
qotd 17/tcp quote
• chargen 19/tcp ttytst source
• chargen 19/udp ttytst source
• ftp-data 20/tcp • ftp 21/tcp
• telnet 23/tcp
• smtp 25/tcp mail • time 37/tcp timserver
• ..
Il contient la liste des services Internet connus sous la forme
nom du service numéro de port/protocole liste d'alias commentaire
•
• ..
• ftp stream tcp nowait root /usr/sbin/tcpd -l -a
• telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd • gopher stream tcp nowait root /usr/sbin/tcpd gn
• ..
Il contient les liens entre nom de services et «exécutables» réalisant ce service.
2.8.2 Quelques commandes utiles
Les commandes sont illustrées avec leur résultats après les avoir lancées sur .
Il est conseillé d'utiliser la commande man du système pour obtenir de plus amples informations sur celles-ci.
• hostname retourne le nom de la machine.
• rusers (rwho est une commande similaire) renvoie la liste des utilisateurs connectés sur les machines du réseau local.
• finger renvoie des informations sur un utilisateur, en utilisant s'ils existent les fichiers .plan et .project.
• |vega|~>ping babinet
• PING (193.49.163.20): 56 data bytes
• 64 bytes from 193.49.163.20: icmp_seq=0 ttl=254 time=1.7 ms • 64 bytes from 193.49.163.20: icmp_seq=1 ttl=254 time=1.7 ms
• 64 bytes from 193.49.163.20: icmp_seq=2 ttl=254 time=1.6 ms
•
• --- ping statistics ---
• 3 packets transmitted, 3 packets received, 0\% packet loss
• round-trip min/avg/max = 1.6/1.6/1.7 ms
Ping renvoie également le numéro de la séquence ICMP exécutée, la valeur du champ TTL et le temps d'aller-retour entre les deux machines. Elle peut le faire car dans le paquet expédié pour la requête elle place son heure d'émission et lorsqu'elle reçoit la réponse elle la soustrait de l'heure système. Puis, en fin d'exécution (provoquée par l'utilisateur ou suite à l'envoi du nombre de paquets spécifiés), quelques données statistiques sont affichées permettant d'évaluer la qualité de la liaison.
• |vega|~>traceroute
• traceroute to (193.52.109.12), 30 hops max, 40 byte packets
• 1 (193.49.162.220) 2.882 ms 3.246 ms
3.034 ms
• 2 193.52.254.254 (193.52.254.254) 4.638 ms 2.239 ms 2.298 ms
• 3 (193.49.161.1) 2.353 ms 2.419 ms
2.627 ms
• 4 (193.55.153.41) 4.027 ms 4.117 ms 13.75 ms
• 5 (193.55.153.9) 8.747 ms 10.96 ms 7.499 ms
6 (193.54.136.138) 14.468 ms 9.77 ms 16.273 ms
• 7 193.52.96.2 (193.52.96.2) 15.29 ms 13.83 ms 12.026 ms
• 8 (193.52.109.12) 12.149 ms 9.715 ms
20.812 ms
30 hops signifie que l'on ne fera pas plus de 30 sauts. 40 octets pour le datagramme IP correspondent à 20 octets pour l'en-tête IP, 8 octets pour l'en-tête UDP, 12 octets de données utilisateurs dont une copie du TTL et l'heure d'émission.
On obtient en résultat le TTL, le nom et l'adresse IP des routeurs intermédaires (et de la machine destinatrice). Puis, comme pour chaque valeur de TTL, traceroute envoie 3 datagrammes IP, on obtient les temps d'aller (du paquet IP) et retour (du paquet ICMP). On peut donc connâtre le temps de transmission entre le routeur N et N+1 en faisnat la différence des temps retournés sur les lignes N+1 et N. Si on a une * c'est qu'il n'y a pas eu de réponses dans les 5 secondes pour le paquet concerné. Si on a toute une ligne d'*, c'est que les paquets ICMP de retour ne sont pas parvenus à la machine A, par exemple car il ont été émis par B avec un TTL trop faible, ou qu'il ont tous mis plus de 5 sec à revenir.
• |vega|~>arp -a
• Address HWtype HWaddress Flags Mask Iface
• -angers. ether 08:00:11:06:98:77 C * eth0
• -anger ether 08:00:11:03:31:2D C * eth0
• -angers. ether 08:00:11:06:97:21 C * eth0
• -angers ether 00:20:AF:BB:BB:6A C * eth0
• -angers ether 08:00:20:88:0F:4E C * eth0
• -angers ether 08:00:09:6D:AE:6C C * eth0
• -ange ether 08:00:09:70:14:A3 C * eth0
• -ange ether 08:00:11:03:31:35 C * eth0
• -anger ether 00:20:DA:78:F9:39 C * eth0
• -angers. ether 08:00:11:03:EC:2C C * eth0
• nslookup permet d'interroger les serveurs de noms d'Internet. Elle fonctionne en mode interactif quand on l'appelle sans argument ou avec les arguments - nom ou adresse IP de machine, à ce moment-là on obtient
• |vega|~>nslookup
• Default Server:
• Address: 193.49.162.9
•
• >
où l'on a le nom du serveur de noms par défaut. Dans le mode interactif on obtient de l'aide sur les différentes commandes à l'aide de la commande ?.
> ?
$Id: ,v 8.3 1996/08/05 08:31:39 vixie Exp $
Commands: (identifiers are shown in uppercase, [] means optional)
NAME - print info about the host/domain NAME using default server
NAME1 NAME2 - as above, but use NAME2 as server
help or ? - print info on common commands; see nslookup(1) for
details
set OPTION - set an option
all - print options, current server and host
[no]debug - print debugging information
[no]d2 - print exhaustive debugging information
[no]defname - append domain name to each query
[no]recurse - ask for recursive answer to query
srchlist=N1[/N2/ /N6] - set domain to N1 and search list to
N1,N2, etc. root=NAME - set root server to NAME retry=X - set number of retries to X
timeout=X - set initial time-out interval to X seconds
querytype=X - set query type, e.g., A,ANY,CNAME,HINFO,MX,PX,NS,PTR,SOA,TXT,WKS port=X - set port number to send query on type=X - synonym for querytype
class=X - set query class to one of IN (Internet), CHAOS,
HESIOD or ANY
server NAME - set default server to NAME, using current default server
lserver NAME - set default server to NAME, using initial server finger [USER] - finger the optional USER at the current default
host
root - set current default server to the root ls [opt] DOMAIN [> FILE] - list addresses in DOMAIN (optional: output to FILE)
-a - list canonical names and aliases
-h - list HINFO (CPU type and operating system)
-s - list well-known services
-d - list all records
-t TYPE - list records of the given type (e.g., A,CNAME,MX, etc.)
view FILE - sort an 'ls' output file and view it with more exit - exit the program, ^D also exits
• whois permet d'interroger une base de données sur les réseaux et leurs administrateurs. Par défaut le serveur est interrogé, mais on peut spécifier quel serveur whois on interroge, comme par exemple dans la commande suivante.
• |vega|~>whois
• []
•
• \% Rights restricted by copyright. See
•
• domain:
• descr: Universite d'Angers
• descr: 30, rue des Arenes
• descr: 49035 Angers CEDEX 01, France
• admin-c: Jacques Allo
tech-c: Jean-Marie Chretien
• zone-c: AR41
• nserver: 193.49.144.1
• nserver: 193.49.145.60
• nserver:
• dom-net: 193.49.144.0 193.49.145.0 193.49.146.0
• mnt-by: FR-NIC-MNT
• changed: 970219
• source: RIPE
• etc .
On peut aussi utiliser whois [email protected]_de_serveur.
• netstat permet d'obtenir des statistiques sur le nombre de paquets, les erreurs, les collisions etc sur une interface en donnant la liste de toutes les sockets ouvertes.
• |vega|~>netstat -e|more
• Active Internet connections (w/o servers)
• Proto Recv-Q Send-Q Local Address Foreign Address State User
• tcp 0 0 -ang:1023 -an:993 ESTABLISHED root
• tcp 0 0 -ang:1022 -a:1016 ESTABLISHED root
• tcp 0 0 -ang:1021 :login ESTABLISHED frantz
• tcp 57 0 -ang:1632 -an:ftp CLOSE_WAIT frantz
• etc .
On obtient la table de routage par
|vega|~>netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window
irtt Iface
193.49.162.0 0.0.0.0 255.255.255.0 U 1500 0
0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 3584 0
0 lo
0.0.0.0 193.49.162.220 0.0.0.0 UG 1500 0 0 eth0
U route utilisable, G route indirecte
• tcpdump visualise différentes informations (selon les options de la commande) sur les paquets qui passent par l'interface réseau de la machine. C'est une commande réservée à root.
Ci-dessous on a les 20 derniers paquets qui ont transité.
tcpdump -c 20
tcpdump: listening on eth0
12:41:15.069542 .syslog > .syslog: udp 98
12:41:15.079542 .6000 > .47589: . ack 504866793 win 31744
12:41:15.069542 .6665 > .1951: . 59767366:59768826(1460)
ack 579761084 win 8760 (DF)
12:41:15.079542 .1951 > -
.6665: . ack 4294963200 win 31744 [tos 0x8]
12:41:15.079542 .1164 > -
.6000: P 0:128(128) ack 1 win 31744 (DF)
12:41:15.079542 .6665 > .1951: P 1460:2636(1176) ack 1 win 8760 (DF)
12:41:15.079542 .1951 > -
.6665: . ack 4294963200 win 31744 [tos 0x8]
12:41:15.079542 .1953 > -
.domain: 53323+ (43)
12:41:15.079542 > -
.131f35e: reply ok 128
12:41:15.089542 .1909 > -
.6000: . ack 720241486 win 31744
12:41:15.089542 .domain > -
.1953: 53323* 1/2/2 (181)
12:41:15.089542 .1954 > -
.domain: 53324+ (43)
12:41:15.089542 .131f35f > : 144 getattr [|nfs]
12:41:15.089542 > -
.131f35f: reply ok 96 getattr [|nfs]
12:41:15.089542 .131f360 > : 152 readdir [|nfs]
12:41:15.089542 .domain > -
.1954: 53324* 1/2/2 (179)
12:41:15.089542 > -
.131f360: reply ok 376 readdir [|nfs]
12:41:15.089542 .1164 > -
.6000: P 128:256(128) ack 1 win 31744 (DF)
12:41:15.089542 .1956 > .domain: 53325+ (44) tcpdump tcp port 21 ne renverra que les paquets liés au protocole tcp sur le port 21, à savoir ftp. tcpdump arp ne renverra que les paquets liés au protocole arp.
Ce chapitre est traité lors de travaux dirigés et travaux pratiques et explore différentes techniques utiles à la conception de sites webs.
• html
• javascript
• applets java
• cgi perl et php pour accéder aux bases de données