---------------------------------------------------------------------------------------------- Introduction à TCP/IP (1/2) par NeoFox ---------------------------------------------------------------------------------------------- [ Avertissement : 90Ko ! ] ++++ Partie I : Les Bases de TCP/IP ++++ -> Qu'est-ce que TCP/IP ? -> Le Fonctionnement de TCP/IP | I. Qu'est-ce que TCP/IP | _________________________ A) Définitions : ________________ TCP/IP signifie " Transfert Contrôle Protocol / Internet Protocol " . C'est une suite de protocoles qui définissent comment doit être envoyée une information sur un réseau. D'où deux questions auquelles nous allons répondre : qu'est-ce qu'un protocole et qu'est-ce qu'un réseau ? Un réseau est un ensemble de machines interconnectées qui communiquent entre elles grâce à une technique commune de transmission. Ces machines sont donc connectées soit par câble, par ligne téléphonique etc ... Les applications de chaque machine doivent donc dialoguer avec les applications des machines voisines en respectant pour cela une séries de règles apellées protocoles. Un protocole est donc une suite de règles reconnues par toutes les machines du réseau et utilisées sur celui-ci pour communiquer. Ce qu'il faut bien comprendre, c'est que TCP/IP est un schéma, une représentation des diverses transformations qu'une machine doit appliquer aux informations pour les placer sur le réseau. Les logiciels fournissant les services de mise en réseau sont conçus de manière à respecter les règles définies par les protocoles de TCP/IP. On dit de ces logiciels qu'ils sont l'implémentation de TCP/IP. La tâche de ces logiciels consiste à formater les données au format TCP/IP. Dans la pratique, des données complexes quittant les applications de la machine locale seront simplifiées à l'extrême par les logiciels TCP/IP et transformées en un train de bits puis plaçées sur le réseau. Enfin, lorsqu'elles parviennent à la machine distante, TCP/IP effectue l'opération inverse, c'est à dire reconstitue la totalité de ces données de manière à ce qu'elles puissent être à nouveau être traitées par les applications de la machine distante. Le model TCP/IP représente un ensemble de normes établies par un organisme apellé l'IETF (Internet Engineering Tasking Force). Cet organisme publie des documents contenant les spécifications techniques de TCP/IP. Ces documents sont apellés RFC (Request For Comments), Voir patie annexe. En résumé, TCP/IP est une suite de protocoles. Un protocole est une ensemble de règeles qui definissent comment doivent être transformées puis envoyées les données. Les logiciels fournissant ces services appliquent ces règles et sont l'implémentation des protocoles. B) Caractèristiques TCP/IP : ____________________________ Voici les certaines carctéristiques de TCP/IP qui vont vous permettre de vous faire une idée de son fonctionnement : l'Adressage Logique et le routage. 1) L'adressage logique : ________________________ Voyons tout dabord comment est envoyée une information sur un réseau de type LAN ( Local Area Network = réseau d'entreprise ). Les données utlisisées par une application de la machine emettrice (A) doivent être expédiées vers une seconde machine (B) du réseau pour y être utilisées par une autre application. Bon, alors les données sont converties au format TCP/IP par les logiciels locaux puis traversent la carte réseau de la machine A, circulent en suite sur le câble dédié, arrivent sur la carte réseau de la machine B, sont prises en charges par le logiciel de la carte réseau puis sont à nouveau transformées par TCP/IP pour être livrées aux applications. Comment font les machines pour savoir à qui envoyer les infos ? Une Carte Rréseau comporte une adresse dite " adresse physique " ou " adresse MAC " qui est codée sur 48 bits. Cette adresse est un nombre unique et permanant qui lui a été attribué en usine, lors de sa fabrication. On apelle " Protocoles de bas niveau ", les protocoles liés au matériel et qui acheminent les données en fonction de cette adresse physique. Les données à destination d'une machine A transitent sur le support du réseau, et sont examinées par les cartes réseaux de toutes les machines, chaque machine compare l'adresse du destinataire à celle de sa carte réseau et si les adresses ne coïncident pas, la machine "libère" le paquet de données et ainsi de suite. Seul le destinataire capturera le paquet pour en extraire les données. On voit donc la carte réseau d'une machine "ecoute" l'ensemble du trafic de son réseau pour n'en capturer que les données qui lui son destinées. Mais sur des réseaux de grande taille, il serait impossible qu'une carte réseau puisse examiner la totalité du trafic. Les Administateurs réseau segmentent donc leur réseau global en plusieurs sous-réseaux. Cette subdivision est possible grâce à l'adressage logique (enfin, on y vient ... ), assuré par le protocole Internet. Il s'agit là de la fameuse adresse IP. Je disais que ce système d'adressage permettait la subdivision d'un réseau. En effet, une IP est un nombre codé sur 32 bits ( 4 octets ) qui ressemble comme vous le savez à : 193.248.25.30 Une adresse IP contient : -> une partie désignant le réseau et le sous réseau : on parle d'ID réseau. -> une partie désignant vôtre machine sur ce réseau : on parle d'ID hôte. En fonction du nombre d'octets de l'ID hôte, on peut grouper les adresses IP en différentes classes : A,B,C,D et E dont nous parleront plus en détail dans le chapître 4 ( Partie II ) " Le Protocole Internet ". Lors de vôtre connection par modem, une adresse IP aléatoire et temporaire ( dynamique ) est allouée à la carte réseau de vôtre PC par vôtre ISP, vôtre fournisseur d'accès. Si vous êtes votre propre provider, un organisme apellé l'IANA attribuera une rangée d'IP à vôtre réseau, et l'admin configuera un IP (fixe) par machine. Nous avons vu, plus haut qu'un grand réseau pouvait être divisé en sous-réseaux grâce à cet adressage et à l'utilisation de routeurs. 2) Le Routage : _______________ Un routeur est un machine qui est chargée d'orienter les données entre plusieurs sous-réseaux et pour ce faire, "lit" les adresses logiques contenues dans les en-têtes des données envoyées. Si les données sont à destination d'une machine du réseau local, elles ne franchissent pas le routeur. Si, dans le cas contraire, elles sont destinées à une machine externe, le routeur les prends en charge, puis les dirige vers le réseau conçerné. Le concept sera approfondi dans un prochain chapître. Vous avez maintenant une idée de ce qu'est TCP/IP ... non ? eh bien reprennez depuis le début avant de passer à la suite ! La suite justement ... | II. Le Fonctionnement de TCP/IP | ________________________________ -> Survol des couches -> TCP/IP et OSI -> Encapsulation des données A) Survol des Couches : _______________________ Les différents services de mise en réseau de offerts par TCP/IP sont définis par des procoles. Ces procoles sont schématisés et groupés en "Couches" dans l'ordre dans lequel ils interviennent dans le traîtement de l'informaiton. On dennombre ainsi 4 couches : La couche Accès Réseau, Internet, Transport et Application. Les informations sont traitées par chaque couche puis descendent sur le support pour " remonter " les couches sur la machine réceptrice, c'est à dire être traitées de manière inverse par ces couches. Nous allons voir globalemnet le rôle de chaque couche : -> La Couche Accès Réseau : ___________________________ La Couche Accès Réseau ou AR assure l'interface physique avec le réseau. C'est elle qui va formatter les données en partance aux normes du réseau pour les plaçer par la suite sur le support. Cette tâche incombe dans la pratique au logiciel de la carte réseau. C'est une couche de bas niveau, c'est à dire qu'elle intervient en dernier dans le traitement des données expédiées. C'est aussi elle qui est chargée de la réception des informations. C'est une couche qui peut être apellé "matérielle" puisque les services qu'elle décrit sont assurés par des composants physique du câblage à la Carte Réseau en passant par le modem. Choisir une architecture réseau ( Ethernet, Token ring, FDDI ... ) revient à choisir un type de carte réseau. Enfin, c'est cette couche qui est responsable de l'adressage physique. -> La Couche Internet : _______________________ De loin la plus intéressante ( à mon avis ) puisqu'elle contient bon nombre de procoles dont vous entenderez souvent parler par la suite. Comme nous l'avons vu plus haut, la couche Internet est responsable de l'adressage logique, organise le routage et permet ainsi de relier plusieurs réseaux distants même si leur architecture s'avère différente. Cette couche contient également des protocoles chargés d'établir la correspondance entre adresses physiques générées par la couche AR, et adresses logiques. -> La Couche Transport : ________________________ C'est la couche qui est responsable du contrôle des erreurs et de la gestion du flux. Lorsque un information est envoyée à une machine distante, elle s'assure qu'elle lui soit bien parvenue et lors de la réception d'un message, se charge de signaler à la machine émettrice que les données attendues lui sont bien parvenues en envoyant des accusés de récetpion. Elle contient deux protocoles fondamentaux : TCP et UDP, respectivement << Transfert Contrôl Protocol >> et << User Datagram Protocol >>. Nous étudierons ces protocoles un peu plus bas. -> La Couche Application : __________________________ C'est la couche qui assure l'interface utilisateur. Pour vous donner une idée, pensez au Procole NetBIOS qui sous Windows assure le partage de fichiers. C'est une API ( Application Program Interface ). En fait, NetBIOS vous permet de travailler sur un fichier d'une machine distante en donnant l'illusion qu'il est sur votre disque. Eh bien, dans ce cas de figure, la couche Application interprète les données que lui transmettent les autres couches afin de générer une environnement de type bureau. En bref, elle est composée de divers logiciels sensibles au réseau (FTP / Telnet ... ). B) TCP/IP et OSI : __________________ Le model OSI est, comme TCP/IP, un standard de protocoles qui définit la façon dont seront envoyées les informations sur un réseau. Son rôle est fondamentalement le même que celui de TCP/IP, ses protocoles sont identiques mais sont organisés en 7 couches au lieu de 4. On trouve donc : la Couche Physique, la Couche Liaison aux Données, Réseau, Transport, Session, Présentation et Application. Voici à quoi ressemble la pile de protocoles OSI comparativement à TCP/IP : OSI TCP/IP ___________________ __________________ | | | | | Application | | | ___________________ | | | | | | | Présentation | | Application | ___________________ | | | | | | | Session | | | ___________________ __________________ | | | | | Transport | | Transport | ___________________ __________________ | | | | | Réseau | | Internet | ___________________ __________________ | | | | | Liaison-Données | | | ___________________ | Accès Réseau | | | | | | Physique | | | ___________________ __________________ Dans un souci de simplicité nous allons numéroter les couches en partant du bas : Pour TCP/IP la couche Accès Réseau est la n°1 et la couche Application la n°4. Pour OSI la couche Physique est la n°1 et la n°7 est la couche Application. On voit donc que la couche Accès Réseau de TCP/IP équivaut aux couches Physiques et Liaisons-Données OSI. La couche Internet TCP/IP vaut la couche 3 ( Réseau ) OSI. De même, la couche Transport de TCP/IP vaut la couche 4 ( Transport ) OSI. Enfin, la couche Application de TCP/IP regroupe sous OSI les couches Session, Présentation et Application. L'article étant consacré à TCP/IP, nous n'allons pas entrer dans les détails de la structure de couches OSI. Mais le model OSI est souvent cité comme référence et il est donc important de connaître sa composition. Nous allons voir à présent un concept clé du fonctionnement de TCP/IP : Il s'agit de l'encapsulation des données. C) L'encapsulation des données : ________________________________ Nous avons vu que les information destinées à être envoyées sur le réseau, sont successivement traitées par chaque couche qui la passe à la suivante et ainsi de suite jusqu'à ce que les données soient placées sur le câble. A l'arrivée, l'information est, rapellons le, traitée à nouveau par mais subit les informations inverses. Chaque couche prends donc en charge les données, les traite, et les passe à la couche suivante. Ceci est rendu possible par un système " d'encaputlation" . Lorsque des données passent par une couche, celle-ci leur ajoute un ensemble d'informations à destination de la couche correspondante de la machine à laquelle est destinée le message. Les informations ajoutées ainsi sont apellées "en-têtes" . On dit que les couches encapsulent les informations. A la réception, chaque couche prélève l'en-tête qui lui destinée, l'exploite puis l'élimine, livrant le reste à la couche suivante. Comme chaque couche ajoute sa propre en-tête, nous verrons la composition des en-têtes en voyant le détail des couches. Un petit schéma pour résumer tout ça ? : Au départ : ___________ ______________ | donnée brute | | | V __________________ | | ______________ | Application | | donnée brute | __________________ | | ______________ ___ | Transport | | || 1 | En-tête générée par la couche Transport. __________________ | | ______________ ___ ___ | Internet | | || || 2 | En-tête générée par la couche Internet. __________________ | | ______________ ___ ___ ___ | Accès Réseau | | || || || 3 | En-tête générée par la couche AR. __________________ | | V câble -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ ______________ ___ ___ ___ | donnée brute || 1 || 2 || 3 | Les données ainsi enpaquetées sont plaçées sur le support. A l'arrivée : ( lire en partant du bas ! ) _____________ _______________ ______________ La couche Application récupère les données telles qu'elles | | | | | donnée brute | ont été envoyées par l'expéditeur puis les traite | Application | _______________ ______________ ___ | | | || 1 | L'en-tête Transport est récupéré par la couche | Transport | _______________ ______________ ___ ___ | | | || || 2 | L'en-tête Internet est récupéré par la couche | Internet | _______________ ______________ ___ ___ ___ | | | || || || 3 | L'en-tête AR est récupéré par la couche | Accès réseau | _______________ ^ | | ______________ ___ ___ ___ | donnée brute || 1 || 2 || 3 | Les données encapsulées arrivent sur la machine réceptrice. -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ câble On voit donc le fonctionnement des en-têtes lors de la traversée de la pile de protocoles. Au passage de chaque couche est ajoutée aux données un en-tête. La paquet changeant de forme, il change aussi de nom. Les paquets dont donc désignés par des nom différents selon les couches qu'ils traversent. Au niveau de la couche Application, on parle de message. Au niveau de la couche Transport, on parle de segments ( ou de datagrames - on y reviendra - ). Au niveau de la couche Internet, on parle de datagrames. Au niveau de la couche Accès Réseau, on parle de trames. La couche Réseau, pour les mettre sur le support, fractionne les trames. Sur le câble, ce ne sont plus que des trains de bits. Le concept d'emballage ou d'encapsulation est essentiel dans la compréhension de TCP/IP et vous avez à présent une idée de la façon dont votre machine s'y prends pour fournir les services de mise en réseau. Dans la seconde partie, nous allons voir en détail le rôle et la composition de chaque couche, et décrire le fonctionnement de chaque protocole. Rendez vous Partie II pour la suite ... ++++ Partie II : Le Système de protocoles TCP/IP ++++ -> La couche Accès Réseau -> La couche Internet -> La couche Transport -> La couche Application | III. La Couche Accès Réseau | _____________________________ -> Description -> Architecture réseau -> Exemple de Trame La couche Accès Réseau est la base de la pile de protocoles TCP/IP. Elle correspond aux couches Physique et Liaison-Données d'OSI. A) Description : ________________ La couche Accès Réseau a pour rôle de plaçer les données sur le réseau physique. Elle doit assurer l'interface avec la Carte Réseau, gérer le formatage des datagrames qu'elle reçoit de la couche Internet, ajouter des en-têtes aux trames ainsi crées et convertir le tout numériques en signaux analogiques pour permettre leur envoi sur le réseau. C'est le logiciel de la Carte Réseau qui va créer les trames, et le modem qui va s'occuper de la conviesion numérique / analogique. On dit de la couche AR qu'elle est composée de protocoles de bas niveau, au sens où ces derniers sont dépendants du matériel. Modem et Carte Réseau sont donc des matériels qui opèrent au niveau de la couche AR. Elle est aussi responsable de l'adressage physique. Une adresse physique est comme nous l'avons dit, un nombre codé sur 48 bits et attribué en usine à la carte réseau. C'est ce type d'adressage qui est utilisé sur un LAN pour situer expéditeur et destinataire. Le logiciel de la carte réseau va donc formatter les datagrames sous forme de trames en incluant dans les en-têtes les adresses physiques de l'expéditeur de du destinataire. La Couche AR est liée au matériel à tel point que choisir une topologie de réseau revient à choisir un type de Carte Réseau. B) Architecture Réseau : ________________________ Nous allons nous intéresser à la topologie de réseaux d'entreprise ou LAN : Comme on l'a dit plus haut, choisir une architecture réseau c'est choisir un type de carte réseau ... Bon, d'accord, mais choisir entre quoi et quoi ? Les différents types de réseau dont nous allons parler sont Ethernet et Token Ring. Si l'on a choisi de monter un réseau Ethernet, on a enfait choisi d'équiper l'ensemble de ses machines de cartes réseau Ehternet. Ces cartes réseaux ne vont pas traiter les données comme celles des Token Ring. La composition des trames ne sera pas la même. Comme la diffusison des données ne répondra pas aux mêmes critères, l'architecture, càd le positionnement des machines sera différent selon le type de réseau. 1) Ehternet : _____________ Les machines d'un réseau Ethernet sont réliées par une seule ligne de communication. Les dimentions de ce câble peuvent varier et leur noms aussi. On trouve : - le 10Base-2 : câble léger de petit diamètre qui achemine les données à 10 Mbps ( Méga Bits par secondes ). - le 10Base-5 : toujours à 10 Mbps mais une plus longue portée. - le 10Base-T : Câble torsadé, utilisé pour les réseaux en étoile. .... - le 100Base-TX : Comme 10Base-T mais 10 fois plus rapide. - le 100Base-FX : 100 Mbps, en fibre optique, 2000 m de portée. La topologie d'un Ethernet peut donc varier en fonction du cablage utilisé. Il existe donc différentes architectures Ethernet. Entre autres : Le réseau en Bus : __________________ _______ _______ _______ _______ _______ _______ | | | | | | | | | | | | |machine| |machine| |machine| |machine| |machine| |machine| | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | _______ _______ _______ _______ _______ _______ | | | | | | | | | | | | _________________________________________________________________________________________ Le réseau en étoile ( Star LAN ) : __________________________________ _______ | | |machine| | 1 | _______ | _______ | _______ | | | | | |machine| | |machine| | 2 | | | 3 | _______ | _______ | _____________ | |_____________ |concentrateur| _____________| _____________ | | | | | _______ | | |machine| | 4 | _______ Les machines de ces réseaux Ethernet ont une carte réseau de type Ethernet. Les trames qu'elles vont produire auront une certaine composition différente de celles d'un Token Ring par exemple. C'est le type de votre carte réseau qui définit le type de réseau auquel vous appartenez. Sous Ethernet, l'accès au réseau se fait grace à un protocole apellé CSMA/CD pour " Carrier Sense Multiple Acces / with Collision Detection " ce qui signifie en bon franglais " Protocole d'Accès Multiple avec detection de collision ". Dans la pratique, cela signifie que chaque machine attend le silence réseau pour commencer à emettre. Si deux machines commencent en même temps, les deux s'arretent (" Collision Detection") pour reprendre l'une apres l'autre. 2) Token Ring : _______________ Token Ring siginfie " Anneau à jeton ". Ce nom s'explique par le fait que sur un LAN de ce type, l'accès réseau se fait suivant le principe du relais. Le "jeton" qui fait office de relais est en fait constitué d'un petit paquet de quelques octets qui circule de machine à machine. Seule peut emettre la machine qui a le relais en sa possession. Lorsque le relais lui parvient, elle le capture le temps de placer ses données sur le réseau, aprés quoi elle le libère. Les machines sont donc connectées en anneau et raccordées à un répartiteur central qui génère le "jeton" et le transmet tour à tour à chaque machine. Comme le trafic est ordonné, ce type de réseau est peu sensible à l'intensité de celui-ci. Cette technologie est cependant plus onéreuse que celle d'un Ethernet. Quoi qu'il en soit, sur les deux types de réseau que nous avons cité circulent des trames générés par les logiciels d'accès réseau. La nature de trames diffèrent cependant selon le type de réseau. C) Exemple de Trame : _____________________ Lorsqu'un datagrame en provenance de la couche Internet arrive à la couche Accès Réseau, cette dernière se charge de le convertir conformement aux besoins du réseau destiné à la reçevoir. Rapellez vous que les cartes réseau des machies d'un Ethernet et de celles d'un Token Ring ne sont pas identiques. De ce fait, les transformations effecutées sur les trames au niveau de la couche AR par les logiciels de la carte réseau, varieront selon qu'il s'agisse d'un type de réseau ou d'un autre. Il y a donc autant de format de trames que de type de réseaux différents. Je ne pense pas qu'il soit vital de connaître par coeur le contenu exact de ces trames vu leur diversité, mais avoir une idée de leur composition peut aider à la compréhension du role de la couche AR. Prenons en exemple la compostion d'une trame Ethernet : _______________________________________________________ Sur un machine d'un réseau de type Ethernet une machine, lorsque la couche IP transmet ses datagrames à la couche AR, le logiciel Ethernet de la couche AR se charge dans un premier temps de fragmenter les données pour permettre la mise en trame. Dans un second temps, il procède justement à la mise en trame. Il emballe pour cela les données ( qu'il vient de fragmenter ) en leur ajoutant un en-tête et une somme de contrôle. Le tout comporte plusieurs champs. Format de la trame Ethernet : +-----------+--------------+----------+----------+-----------+----------+ | Préambule | Adresse | Adresse | Type | Données | Somme de | | | destinataire | source | | 46 à 1500 | contrôle | | 8 octets | 6 octets | 6 octets | 2 octets | octets | 4 octets | +-----------+--------------+----------+----------+-----------+----------+ - Préambule : pour indiquer le commençement du message. - Adresse du destinataire : c'est l'adresse MAC du destinataire. - Adresse de l'expéditeur : adresse MAC de l'expéditeur ( logique ! ). - Longeur du message : exprimée en quelques octets. - Données* : le coprs même du message. - Somme de contrôle : valeur qui va permettre à la machine réceptrice de savoir si la trame a été ou non altérée lors du transport. *: Le champ "données" du paquet contient dans l'ordre : l'en-tête IP, l'en-tête TCP ou UDP et enfin les données à destination des applications. Les adresses destinataire et source sont bien sur les adresse "Physiques" sur 48 bits. Le logiciel Ethernet finit par traduire chaque trame en un train de bits qu'il place sur le réseau physique. On voit que dans la trame figure l'adresse physique du destinataire. Rapellons que sur un réseau local, chaque machine peut "voir" les informations en transit puisqu'elles comparent l'adresse MAC contenue dans les trames avec la leur pour savoir si elles leur sont destinées ( seule la machine dont l'adresse MAC coïncide peut capturer la trame ). Donc sur un réseau de type Ethernet, le logiciel place l'adresse MAC du destinataire dans les trames avant de les faire passer sur le réseau. Mais comment sait-il qu'une machine voisine a telle ou telle adresse ? Plus fort, comment peut-il connaître l'adresse MAC d'une machine située sur un réseau distant ? Tout cela est permis par les divers services offerts par la couche Internet. | IV. La Couche Internet | _______________________ -> Les 5 protocoles -> Exemple de datagrame -> Adressage IP A) Les 5 protocoles : _____________________ Dans la couche Internet se trouvent 5 protocoles à connaître : 3 protocoles important, IP, ARP et ICMP et 2 portocoles secondaires : RARP et IGMP. 1) Le protocole IP : ____________________ Le protocole IP ( Internet Protocol ) est responsable de l'élaboration des datagrames, de leur acheminement et de leur traitement à la réception. IP permet d'acheminer les informations d'un bout à l'autre du monde, en les faisant transiter sur de nombreux réseaux hétérogènes jusqu'aux applications de la machine cliente. Nous avons vu que sur un réseau, chaque machine captait les trames en transit pour comparer l'adresse MAC y figurant à la leur. Ceci est rendu possible car ( dans le cas d'un ethernet par exemple), les trames produites au niveau de la couche AR ont un format compatible avec les logiciels Ethernet des cartes réseaux. Que se passe t'il si une machine d'un Ethernet veut communiquer avec une autre d'un réseau Token Ring distant de 5000 Kms ?! Les machines ne sont pas du même réseau donc leurs cartes réseau ne peuvent pas capter directement les trames. De toute façon les trames produites par les deux machines ne seraient pas du même format. Souvenez vous que la couche AR et les protocoles qui lui sont associés sont intimement liés au matériel. De ce fait, si le matériel n'est pas homogène, ( carte réseau Ethernet et une Token Ring ) la transmission ne peut se faire. Seulement voila, dans la pratique, un Ethernet doit pouvoir communiquer avec un Appel Talk et un Token Ring même leur principes d'accès Réseau diffèrent. Le Protocole Internet dépasse le problème matériel et peut ainsi mettre en relation deux machines apartenant a deux réseaux distants de topologie différente. Cela tient au fait que IP met en oeuvre un adressage logique et n'est donc pas lié au matériel comme l'est l'adressage physique mis en place par la couche AR. Cela tient également au rôle d'ARP qui établit la correspondance entre adresses logiques et adresses MAC come nous le verons plus loin. Comment IP s'y prend t'il ? IP compare l'adresse logique de la machine émettrice à celle de la machine réceptrice. Si la comparaison des adresses IP indique que les machines sont sur le même réseau local, IP forge un datagrame qui sera envoyé directement à la machine du destinataire. Dans le cas contraire, IP comprend que le destinataire est situé sur un réseau distant. Le datagrame sera alors expédié en direction d'un routeur. Le routeur invoqué est souvent la machine apellée " Passerelle par défaut " dont l'adresse est contenue dans l'en-tête des datagrames. Ce principe sera détaillé dans le chapître VII. IP est décrit par la RFC 791, voir annexe. 2) ARP : ________ Le protocole ARP siginfie " Adress Resolution Protocol ", protocole de résolution d'adresses. Son rôle est de trouver l'adresse physique d'une machine dont l'adresse logique est connue. ARP interroge les machines connectées au réseau pour connaître leur adresses physiques. Il mémorise ensuite la correspondance entre adresse IP et adresses MAC. Le protocle IP doit connaître l'adresse logique de son correspondant afin d'élaborer ses datagrames. La couche AR aura quant à elle besoin d'en connaître l'adresse physique pour élaborer ses trames. Comment la résolution d'adresses se fait elle ? Une machine d'un LAN doit communiquer avec une autre machine dont elle ne connait pas l'adresse MAC. Le protocole Internet interroge en premier lieu la mémoire d'ARP. Si l'adresse physique désirée s'y trouve, un datagrame sera envoyé directement au destinataire. Si elle ne s'y trouve pas, ARP emmet un appel sur le LAN demandant l'adresse MAC de la machine qui possède telle adresse IP. La machine concernée répond en indiquant son adresse MAC. Si la machine du destinataire n'est pas située sur le réseau local, un message est envoyé à destination d'un routeur par défaut qui l'acheminera jusqu'au réseau de la machine distante. L'information circulera sur ce réseau, et la machine conçernée répondra en envoyant son adresse MAC. Dans tous les cas, la correspondance adresse IP / adresse MAC est effectuée par ARP, et le dialogue peut être entamé. ARP est décrit par la RFC 826. 3) ICMP : _________ ICMP est le 3 eme protocole important de la couche Internet. Ce sont pricipalement les routeurs qui l'utilisent. C'est un protocole qui siginfie " Information Contrôl Protocol ". Il permet d'avertir une machine d'une erreur survenue durant l'acheminement des données. Les trames empruntent plusieurs routeurs pour arriver au destinataire. Au cours de ce trajet, les trames peuvent se perdre, ou un routeur peut être défaillant. Les routeurs conçernés devront donc en cas de perte des paquets informer expéditeur et destinateur du problème rencontré. Pour ce faire ils font faire appel au protocole ICMP. Dans le cas d'un paquet perdu ou altéré, ICMP servira à demander la réexpéditon du paquet. Un autre cas de figure est qu'un routeur reçoive un tros gros volume de trames à relayer et demande à l'expéditeur, via une requête ICMP, de réduire son volume de transmission. En résumé, ICMP informe les machines conçernées des éventuels problèmes rencontés. ICMP est décrit par la RFC 792, voir annexe. 4) RARP : _________ Si vous avez compris le principe d'ARP, vous avez également compris celui d'RARP. RARP signifie " Reverse Adress Resolution Protocol ", protocole de résolution d'adresses inversé. Comme son nom l'indique, RARP s'occupe de trouver l'adresse IP correspondant à une Adresse MAC. Comme le principe des indtique à celui d'ARP on va passer directement à la suite ! 5) IGMP : _________ IGMP qui signifie " Information Group Management Protocol" permet la diffusion d'un même message à toute les machines d'un réseau sans que la machine émettrice ait besoin de renouveller son message. On dit que c'est un protocole responsable de la multidiffusion. B) Exemple de datagrame : _________________________ Pour mener à bien l'ensemble de ces taches, IP génère des en-têtes lors de l'émission, et les exploite à la réception. Ces en-têtes comme celles fabriquées par les autres protocoles sont composées de diffèrents champs. Voici le schéma d'un datagrame : _______________________________ _________ ___________________ _________________ ___________________ | | | | | | Version | Longueur en-tête | Type de service | Longueur totale | | | | | | _________ ___________________ _________________ ___________________ | | | | | Identification | Flag | Décalage Fragment | | | | | _____________________________ ___________ _________________________ | | | | | TTL | Protocole | Somme de contrôle en-tête | | | | | _____________ _______________ _____________________________________ | | | Adresse IP Source | ___________________________________________________________________ | | | Adresse IP destination | ___________________________________________________________________ | | | | | Données | | | < --- Ici commençera l'en-tete TCP ---> On voit de nombreux champs destinés à renseigner le destinataire et les routeurs. Version : indique la version du protocole IP utilisée ( actuellemnet IP v.4 ). Longueur en-tête : comme son nom l'indique, somme exprimant la longueur de l'en-tête. Type de service : infos destinées aux routeurs ( expédition urgente ou normale etc ... ). Longueur totale : longeur de tout le datagrame. Identification : " n° de série " du datagrame. Flag : indicateur destinés à gérer la fragmentation*. Décalage : valeur permettant de replacer les trames dans le bon ordre à la réception. TTL : " Time to Live " ou durée de vie**. Protocole : contient le nom du protocole de la couche Transport le datagrame devra être livré. Somme de contrôle : valeur permettant de vérifier l'intégrité de l'en-tête à la réception. IP source : champ qui sera exploité par le destinataire pour répondre. IP destination : champ exploité par les routeurs pour rediriger les trames. Données* : contient le corps du message dont l'en-tête TCP ou UDP. * -> Fragmentation : _______________ Un réseau Ethernet par exemple ne peut acheminer des trames supérieures à env. 1500 octets. Or un Token Ring peut transporter des trames plus importantes. Donc lorsqu'une trame est fabriquée par la couche AR d'une machine sous anneau à jeton, en prévision de son éventuel transport via un réseau n'acheminant que de petits datagrames, la Fragmentation permet de rendre de grosses trames digestibles par un réseau du type d'un Ethernet. Une machine peut procéder à une segmentation plus fine des paquets, si le réseau en sortie n'a pas les performances suffisantes pour véhiculer le paquet d'origine. L'en-tête IP contient donc des infos afin de définir comment devront être fragmentées les données. ** -> Durée de vie : ______________ TTL ou "Time to live" est une valeur qui indique le nombre de routeurs que le datagrame poura franchir avant d'être concidéré comme "expiré". Cela évite que le paquet ne se perde et ne soit relayé indéfiniement. Lorsqu'un datagrame franchit un routeur, ce dernier décrémente la valeur de la TTL de 1 jusqu'à atteindre 0. Lorsque la valeur atteint 0, le routeur conçerné informe la machine émettrice que le paquet est perdu par l'envoi d'un paquet ICMP comme là encore nous le verrons plus loin. C'est le principe du traceroute : Lorsqu'on trace une machine distante, IP envoie au routeur par défaut un datagrame avec un TTL de 1. Le paquet expire qu premier saut et un paquet ICPM est forgé par le routeur. Il indique que le paquet a expiré et mentionne son adresse IP. La première machien mentionnée lors d'un traceroute est le routeur par défaut. IP envoie ensuite un datagrame a destination de la machine traçée avec un TTL de 2. Le routeur par défaut reçoit le paquet et l'aiguille vers le routeur le plus proche du destinataire. Le second routeur reçoit donc le paquet qui expire et vous envoie un message d'erreur avec sont adresse IP. Ainsi de suite jusqu'a obtenir l'adresse IP de la cible et la liste de l'ensemble des machines intermédiaires. L'adressage logique mis en place par IP lui permet de faire transiter les informations sur plusieurs réseaux consécutifs bien que ceux-ci ne soient pas homogènes. C) Adressage IP : _________________ L'adressage IP nous l'avons vu perment du dépasser les problèmes d'incompatibilité matérielle et autorise de ce fait la communication entre deux machines de deux réseaux de topologie différente. A chaque machine est attribuée une adresse IP qui permet de situer cette machine sur internet. 1) Compostion d'une adresse IP : ________________________________ Une adresse IP est comme une adresse postale. Il faut l'adresse de la maison, et celle de la rue/ville. Une adresse IP est donc composé d'une partie qui définit le réseau et d'une autre qui identifie la machine sur ce réseau. On parle respectivement d'ID réseau et d'ID hôte. Par exemple : 195.6.210.9 -> [195.6.210] [.9] | | ID réseau | | ID hôte Pour identifier l'ID réseau de l'ID hôte on utilise un "masque de sous-réseau". Le masque de sous-réseau de 195.6.210.9 est 255.255.255.0 ce qui donne : [255.255.255] [.0] | | | | sépare l'ID réseau ... | | ... de l'ID hôte Une adresse IP, telle qu'elle est insérée dans les en-tête des datagrames IP, est une suite de 32 bits. Selon la taille (en bits) de l'ID réseau, on peut classer les adresses selon 5 classes, de A à E. 2) Classification : ___________________ On trouve 5 classe dont 3 importantes. Nous allons voir leurs caractèristiques imortantes de chacune d'entre elles. Classe A : __________ Un réseau de Classe A a une ID réseau sur 8 bits soit un octet. Le masque de sous-réseau d'une adresse de classe A est 255.0.0.0 ce qui donne en valeur binarie : 111111111.00000000.00000000.00000000 Le premier octet d'une IP de classe A définit le réseau sur le quel se trouve la machine. Sa valeur binaire commence toujours par un 0 ce qui donne des valeurs décimales comprisent entre 0 et 127 pour l'octet de tête. En clair, une IP de classe A commence par une valeur comprise entre 0 et 126 car sous TCP/IP une IP commençant par 127 désigne votre propre machine. Chaque réseau de classe A peut supporter persque 17 millions de machines ! Les IP de classe A sont affectées à des entités ( pays ... ) qui ont un grand nombre de machines à connecter. Classe B : __________ Un réseau de Classe B a une ID réseau sur 16 bits soit 2 octets. Les 16 bits restant désignent l'hôte sur le réseau. Les 2 premiers bits de sa valeur binaire sont 1 et 0 ce qui donne en décimal des valeurs comprises entre 128 et 191 pour l'octet de tête. Le masque du sous réseau d'une adresse en classe B est 255.255.0.0 ce qui donne en binaire : 11111111.11111111.00000000.00000000 Chaque réseau de classe B peut supporter 65534 machines. Les adresse de classe B sont donc allouées à des réseau qui comportent un nombre courrant de machines ( grosse entreprise ... ). Classe C : __________ Un réseau de classe C a une ID réseau sur 24 bits soit 3 octets. Le dernier octet désigne la machine sur le réseau. L'octet de tête est compris entre 191 et 223 ce qui donne une forme binaire : 110xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx Le masque de sous réseau d'une adresse en classe C est : 255.255.255.0 ce qui donne en binaire : 11111111.11111111.11111111.00000000 En classe C on ne peut écrire que 254 adresses par réseau. Elles sont donc réservées à de petits réseaux. Classe D : __________ Cette classe n'a rien à voir avec les autres puisque les adresses de classe D ne sont pas assignées à de hôtes. Elles sont responsables de la multidiffusion. Le protocole IGMP est s'appuie d'ailleurs sur les adresses de classe D pour assurer l'envoi d'un même message à un ensemble de machines. Les adresses de classe D sont assignées à un ensemble de machines. Chacune d'entre elles possède sa propre adresse, mais une adresse de classe D désigne aussi pour IGMP l'ensemble de ces machines pour un envoi groupé de messages. L'octet de tête a une valeur décimale comprise entre 224 et 239. Classe E : __________ Peu utilisée paraît-il. Vois pas à quoi elle peut bien servir, rien à dire dessus, désolé. Maintenant que vous en savez un peu plus sur l'adressage, vous remarquez que le language binraire est beaucoup utilisé pour définir les adresses. Je ne pense pas que vous ayez besoin de détermier un nouveau masque pour la segmentation de votre réseau, donc on ne va pas entrer dans les détails de la conversion décimal/binaire ! J'ai juste voulu vous montrer à quoi ressemble une IP en language binaire pour vous donner un exemple du type de données que TCP/IP est amené à traiter. Cependant, si vous voulez en savoir un peu plus vous pouvez m'écrire en cliquant sur mon logo à vôtre gauche. J'ai en plus réalisé un petit programme " binairy" + source qui réalise pour vous une conversion. | V. La couche transport | ________________________ -> Rôle de la couche transport -> TCP -> UDP 1 . Rôle de la couche Transport : _________________________________ La couche Transport assure l'interface avec les applications. Elle est aussi responsable du multiplexage/démultiplexage des informations et d'un contrôle d'erreur. La couche Transport est composée de 2 protocoles : TCP et UDP comme nous le verrons plus loin. 1.1 Multiplexage / Démultiplexage : ____________________________________ La couche transport reçoit des données des applications, doit les traiter puis les passer aux couches inférieures en direction du réseau. Donc la couche Transport reçoit des données de plusieurs entrées pour les rediriger vers une seule sortie : C'est le Multiplexage. Lors de la réception, la couche Transport reçoit les données de la couche internet, les traite et les redirige vers les applications conçernées. Elle reçoit donc les données d'une seule entrée pour les diriger vers plusieurs sorties : C'est le Démultiplexage. Imaginez qu'une machine entame une session Telnet avec une autre, et disons qu'en même temps qu'un utilisateur exporte des fichiers par ftp et consulte un site web. La couche Transport reçoit toutes les données de 3 applications et les multiplexer de manière à les livrer à la couche Internet. En clair : ________________________________ | | | | | Telnet | FTP | WWW | Couche Application __________ __________ __________ | | | | | | | | |_________|__________| | Couche Transport | | | ( Multiplexage / ---------------|---------------- Démultiplexage ) | | | | | | | | | | | | | | Basses Couches | | | | | | ________________________________ | | | câble ____________________________________________________________________________________ En résumé, le multiplexage est la mise en série de données arrivant en parallèle, et inversement pour le démultiplexage. Ces transformations permettent aux Couches de bas niveau de traiter les données sans tenir compte des applications dont elles sont issues ou auquelles elles sont destinées. Mais alors allez vous me dire, comment les protocoles de la couche transport font-ils pour ne pas s'y perdre et, à la réception, démultiplexer les informations et les diriger vers les bons services ? Cela est rendu possible grâce aux sockets. 1.2 La notion de ports : ________________________ Un port est une adresse interne qui sert de chemin d'accès bidirectionnel entre applications et couche Transport - j'aime bien cette phrase ! - . C'est un numéro assigné à un service ou une application. Les données à destination de la couche Application seront démultipléxées par la couche transport qui les dirigera vers le ou les applications correspondant au numéro de port mentionné dans leur en-têtes. Dans l'exemple ci-dessus, les données à destination des service telnet, FTP et WWW seront démultiplexées respectivement en direction des ports 23, 21 et 80. Une application peut demander à la couche transport de la mettre en relation avec une application distant au port 80 ( www ). La demande est effectuée via un port source, au hasard le 2001, à destiation du port 80 de la machine distante. Celle-ci va répondre à la machine cliente par l'envoi des données désirées via le port 80 à destination du port 2001. Un petit schéma ? : machine Cliente Serveur ________________ ____________________ | | | | | | Applications | | | _________ | | __________ | |___|P. source|__| |____| p. dest. |____| | | n° 2001 | | | | n° 80 | | | ----|---- | Transport | -----|---- | ________|_______ __________|_________ | | | | | | | ^ | | Basses Couches | | | | | | | | | | | | | | | | V | | | | | | | ________|_______ __________|_________ | | | | requette à | | V destination ^ | | du port 80 | | | ------> | ______________________________________________________________________________________ <------ réponse en provenance du port 80 à destination du port 2001 La couche transport peut donc un port source ( ici 2001 ) pour emettre une requette visant un port réservé ( ici le 80 ). Le serveur utilisera le port conçerné ( le 80 ) comme port source pour émettre sa réponse à destination du port source de la machine cliente. Ce sont les sockets qui permettent cela. Un socket est la combinaison d'une adresse IP et d'un n° de port. Si l'on fait une demande de connection Telnet à la machine 195.6.210.9, le socket de l'application serveur sera 195.6.210.9,23 . C'est à ce socket que la couche transport va effectuer sa demande. vLe système d'adressage interne par sockets permet à la couche transport de démultiplexer les données en direction des bon services. En admettant que vous ayez saisis le concept ... Voyons ce qu'est un portocole orienté connection et non orienté connection, ça vous servira pour la suite. 1.3 Protocole oriéntés connection : ____________________________________ Alors, un protocole orienté connection est chargé d'établir et de maintenir une connection. Lui est associé un principe d'envoi d'accusés réception par le destinataire. L'expéditeur est quand à lui informé de la validité des données en transit. Puis le protocole met fin à la transmisson en avertissant l'autre machine. A l'inverse, un protocole non orienté connection ne se soucie pas d'entamer une connection mais envoie directement les données sans en avertir le destinatire. Il est moins fiable car il n'y a pas de contrôle d'erreur, ni de la part du client, ni de celle du serveur. La communication est enfin interrompue desuite aprés l'envoi des données. Il est cependant plus rapide. 2. TCP : _________ TCP signifie " Transfert Contrôl Protcol ". Les données traitées par TCP sont donc élaborées de manière à reseigner le protocole TCP du destinataire. Ce système permet la mise en oeuvre de contrôle d'erreur de par et d'autre. TCP est décrit par la RFC 793, voir annexe. 2.1 En-tête TCP : __________________ Le protocole TCP local élabore un " segment de données " dont l'en-tête contient champs destinés à renseigner le protocole TCP distant. De cette façon, lorsque des trames se perdent sur le réseau, ou sont altérées, le destinataire ne les reçevant pas, TCP en avertit l'expéditeur pour lui redemander si nécessaire la réexpédition des informations perdues. Et tout ceci grâce aux informations contenues dans l'en-tête TCP : +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Port source | Port destinataire | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Numéro de séquence | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Accusé de réception | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data | |U|A|P|R|S|F| | | Offset| Réservé |R|C|S|S|Y|I| Fenêtre | | | |G|K|H|T|N|N| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Somme de contrôle | Pointeur de données urgentes | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Remplissage | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | données | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Port source : _____________ C'est le n°,codé sur 16 bits, du port réservé à l'application cliente. Port destinataire : ___________________ C'est le n° du port réservé à l'application sur la machine destinataire. Il est lui aussi codé sur 16 bits. N° de séquence : ________________ C'est le numéro du premier octet des données du segment. Le n° de séquence sert à ordonner les données et à les situer par rapport au début de la transmission. Si le segment est le premier de la transmission, le n° de séquence est apellé " ISN " ( = n° de séquence initial ). Le premier octet de données sera numéroté ISN + 1. TCP assigne donc un n° de séquence à chaque paquet sortant et demande un accusé de réception à l'autre machine. Le n° de séquence ou n° d'ordre est codé sur 32 bits. Accusé de Réception : _____________________ Ce champ contient le prochain n° de séquence que le destinataire est pret à reçevoir, c'est à dire le n° de séquence du dernier octet reçu + 1. Ce champ ne sera pris en compte que si le Flag " ACK " a une valeur de 1. En abrégé je vais écrire A/R pour " accusé réception " ... ... à ne pas confondre avec la couche AR ( Accès Réseau ). Offset : ________ Ce champ de 4 bits précise la taille de l'en-tête, indiquant donc où commençent les données. Réservé : _________ Si vous avez à qui ... Les Flags : ___________ - URG : Si le champ URG vaut 1, TCP interprête le champ " pointeur d'urgence ". - ACK : Ce champ vaut 1 lorsque l'accusé de réception est à prendre en compte. - PSH : PSH = " push ". Quant ce champ vaut 1, TCP doit pousser les données aux applications. - RST : Demande la réinitialisation de la connection. Le flag RST est utilisé si une machine reçoit un paquet qui ne correspond pas à ce qui était attendu. - SYN : Sert à la synchronisation des n° de séquence. Lorsque le champ SYN vaut 1, le champ " n° de séquence " contient le n° de séquence initiale ou ISN car TCP est entrain de synchroniser. - FIN : Le flag FIN vaut 1 lorsque une machine décide de mettre fin à la transmission. Fenêtre : _________ Sert à contrôler le folt de données. Détermine le nombre de séquences que l'emetteur poura envoyer sans demander d'accusés réception. Somme de contrôle : ___________________ Valeur sur 16 bits qui permet de vérifier l'intégrité des données. A destination, TCP effectue un calcul à partir du segment reçu et comprare le résultat à la valeur de ce champ. Si les données n'ont pas été altérées au cours du transfert, les 2 valeur coïcident. Pointeur de données urgentes : ______________________________ Valeur sur 16 bits qui pointe vers le n° de séquence du premier octet d'une donnée urgente dans le segment. En clair, si le falg URG est activé ( c'est à dire vaut 1 ), TCP prend en compte ce champ qui lui indique où se trouvent les données urgentes dans le segment. Options : _________ ? Remplissage : _____________ Un en-tête TCP doit être composé d'un nombre d'octet multiple de 4 (32 bits). Les octets de Remplissage terminent l'en-tête TCP de manière lui donner la bonne longeur. TCP à besoin des champs contenus dans les en-têtes pour mettre en place une transmission et en garantir le bon déroulement. 2.2 Fonctionement de TCP : ___________________________ TCP gère des données de longueur variable. A chaque octet est assigné un numéro d'ordre. Cependant, seul le n° d'ordre ( ou n° de séquence ) du premier octet de donnée du segment est contenu dans l'en-tête. Si le segment est correctement réceptionné, TCP envoi à l'expéditeur un message pour en accuser réception. Il va utiliser pour cela le champ accusé réception de l'en-tête. Ce champ contiendra le n° d'ordre du dernier octet reçu + 1. Cette valeur précise à l'expéditeur la valeur du prochain n° d'ordre que le destintaire est pret à reçevoir de sa part. Ceci est vrai sauf lors de l'établissement d'une connection comme nous allons le voir plus loin. Si les données se predent et n'arrivent pas au destinataire, TCP ne reçevra pas d'accusé réception et en déduira à juste raison que les données ne lui sont pas parvenues. Il va donc lui réexpédier les données à partir du dernier octet pour lequel il aura reçu un accusé récption. Le flag ACK doit être à 1 pour que le champ A/R soit pris en compte. Etablissement d'une connection sous TCP : _________________________________________ TCP est un protocole orienté connection. De ce fait, il doit, avant de commençer un transfert de données, entamer la conversation de manière " courtoise " . Un client doit donc adresser au serveur une demmande de connection. Il lui envoit pour cela un segment. L'en-tête à un flag SYN à 1 pour avertir la machine distante que TCP est en-train procéder à la sychronisation des n° et que de ce fait, le champ " n° de séquence " est l'ISN, n° de séquence initial. Le premier octet transmis une fois la connection établie sera numéroté ISN + 1 ( et le n ième octet ISN + n ). Le destinataire, reçoit ce segment. Le protocole TCP interprète les champs. Il voit le SYN à 1 et comprend qu'il s'agit d'une demande de connection. TCP adresse donc à l'emetteur un segement en réponse. Dans l'en-tête de ce segement le flag SYN est aussi à 1 ce qui signife qu'il est entrain de sychroniser les n° de séquence et qu'il va lui adresser à son tour son ISN. En effet, le champ " n° de séquence " contient alors l'ISN du serveur. Le flag ACK est aussi activé. Cela siginfie que le client devra prendre en compte le champ d'accusé réception. Ce champ contient à cet instant l'ISN + 1 de la machine cliente ce qui correspond au numéro d'ordre du prochain octet de données que le serveur est pret à reçevoir. Et cela tombe bien car souvenez vous que l'on a dit que le premier octet aura pour n° d'ordre ISN ( du client ) + 1. Enfin, la machine cliente reçoit le segement contenant l'ISN du serveur. Il augmente l'ISN de 1 et lui retourne la valeur en la mettant dans le champ " accusé réception " d'un nouveau segment. Il met un ACK à 1 pour dire au serveur de tenir compte de l'accusé de réception. Les n° de séquence sont donc à leur positon initiale. La communication peut commençer. La façon dont TCP entame une connection est apellée " Three Ways handshake " ou triple poignée de main. En effet, la connection s'établit en 3 temps. Voyons sur un petit schéma : La machine A veut entamer une transmission avec la machine B. L'ISN de A est noté ISN(a), celui de B, ISN(b). A --> SYN & ISN(a) --> B (1) A <-- SYN/ACK & ISN(b) & ISN(a)+1 <-- B (2) A --> ACK & ISN(b)+1 --> B (3) 1 : A envoit un segment. A y place son ISN(a). Le flag SYN est à 1, le flag ACK à 0. 2 : B le reçoit et en envoit un en réponse. B y place son ISN(b). B y place aussi ISN(a)+1 pour accuser réception de segment reçu de A. Le flag SYN est à 1, le flag ACK est à 1 aussi. 3 : A reçoit le segment de B. Il y répond par un autre segment. A y place l'ISN(b)+1 pour accuser réception du segment de B. Le flag SYN est a 0, le flag ACK est à 1. La connection établie, A poura commencer à envoyer les données. Le premier octet aura comme n° d'ordre ISN(a)+1 comme s'y attend B. Voila pour la demande de connection et l'initialisation du transfert. Ceci n'est valable que lors de l'initiation de la connection. Le déroulement se passe différemment. Déroulement d'une session sous TCP : ____________________________________ Une fois la connection établie par une " triple poignée de main ", les valeurs des champs des en-têtes varient. Les flags SYN ne sont plus échangés car le champ " n° de séquence " des en-têtes ne contient plus l'ISN des machinent mais le n° d'ordre du premier octet du segment. Le champ A/R est toujours renseigné et contient le n° de séquence + 1 du dernier octet reçu. Voyons cela sur un schéma : L'émetteur envoit un segment de ce type : X1 X2 Xn ________ +--------+--------+ +--------+ |en-tête ||octet 1|octet 2| ... |octet n| X 1 est le n° d'ordre du premier octet contenu dans l'en-tête. X n est le n° d'ordre du n ième et dernier octet. Le destinataire le reçoit et repond par un autre segment : Y1 Y2 Yn ________ +--------+--------+ +--------+ |en-tête ||octet 1|octet 2| ... |octet n| L'en-tête contient : - Le champ n° de séquence : valeur Y1 ( n° de séquence du 1er octet ). - Le Flag ACK à 1. - Le champ Accusé Réception : valeur Xn +1 ( n° de séquence du dernier octet reçu + 1 ). Le destinataire en répondant de la sorte indique à l'émetteur que le prochain n° d'ordre qui est attendu est Xn +1. Si tout se déroule bien, Xn +1 sera le prochain n° d'ordre reçu. Il correspondra à la valeur du premier octet du nouveau segement. Incrémentation des n° de séquence ( ou n° d'ordre ) : _______________________________________________________ Les n° d'ordre ne sont pas des nombres fixes. Ce sont en fait des compteurs 32bits. La valeur d'un n° de séquence peut varier de 0 à plus de 4 290 000 000. Elle est incrémentée de de 128 000 par seconde et de 64 000 à chaque connection. Cela évite que 2 machines entrant en connection avec une 3 ème n'utilisent les mêmes n° d'ordres. Ainsi, si un intrus voulait s'inviter dans la discussion en usurpant l'identité de l'un des protagonistes, il lui faudrait deviner leurs n° de séquence. On comprend donc pourquoi lors de la " triple poignée de main " les ISN doivent être synchroniés. A doit avertir B du n° de séquence à partir duquel il va numéroter ses octets et réciproquement. Si vous ne voyez toujours pas l'intêret des n° d'ordre, imaginez que des paquets, par suite d'un problème de routage, arrivent dans le désordre. Le séquencage numérique et systématique des octets permet alors la remise en ordre lors de la transmission. Si, dans cet exemple, un paquet arrive avec un numéro de séquence supérieur à celui qui était attendu par le destinataire, TCP comprend qu'il manque un paquet entre celui-ci et le précédent. Il va donc en garder les données en mémoire en attendant de reçevoir les données concidérées comme en retard. Fin d'une connection sous TCP : _______________________________ Pour terminer une connection, le flag FIN est utilisé par les deux machines. A envoit un segment avec un flag FIN à 1. B lui répond avec un flag FIN dont A accuse réception ce qui met fin à la transmission. 2.3 Ports réservés TCP : _________________________ Rapellons qu'un port est un chemin d'accès qui permet aux applications d'entrer en contact avec les couches inférieurs. Un port est donc un numéro affecté à une application ou un service. Les applications fonctionnant sous TCP utilisent un port réservé TCP. Vous ne trouverez pas la liste complète des ports réservés TCP mais ceux de sertains services que vous connaissez déja et qui fonctionnent uniquement sous TCP. n° Port Application 21 FTP 23 Telnet 25 SMTP 79 Finger 513 Rlogin Ces services fonctionnent sous TCP car ils justifient que soit mis en place un système de contrôle d'erreur, et doivent donc se baser sur un protocole fiable. Ce sont des services improtants. Il ne faut pas pour autant oublier UDP, second portocole de la couche Transport. 3. UDP : ________ UDP est le second protocole de la couche Transport que nous allons développer. UDP est décrit par la RFC 768, voir annexe. 3.1 Caractéristiques de UDP : ______________________________ UDP siginife " User Datagrams Protocol ". C'est un protocole non orienté connection. Une connection sous UDP consiste en un simple envoi de données sans qu'il soit besoin d'avertir le destinataire du début de la connection ( ni de la fin d'ailleurs ). UDP ne met pas en place de contrôle d'erreur. Il est donc plus rapide mais son utilisation est moins fiable. Les en-têtes UDP sont beaucoup plus légèrs que celles de TCP. Sous UDP, le message généré est apellé datagrame, à ne pas confondre avec les datagrames IP. L'en-tête d'un datagrame fait 8 octets. 3.2 Format d'un datagrame UDP : ________________________________ +--------+--------+--------+--------+ | Port | Port | | Source | Destinataire | +--------+--------+--------+--------+ | | Somme | | Longueur | de | | | contrôle | +--------+--------+--------+--------+ | données | +-----------------------------------+ Port source : _____________ C'est le n° sur 16 bits du port assigné à l'application qui expédie le datagrame. Ce champ est facultatif. S'il est vide, l'application distante ne poura pas répondre. Les 16 bits sont donc mis à 0 lorsque le destinataire n'a pas besoin de répondre au datagrame de l'expéditeur. Port Destinataire : ___________________ Ce champ contient le n° de port de l'application à laquelle est destiné le datagrame. Longueur : __________ Donne sur 16 bits la taille du datagrame en-tête compris. Ce champ aura une valeur de 8 si le datagrame ne transporte aucune donnée ( comme dans le cas d'un ping ). Somme de contrôle : ____________________ Ce champ contient une valeur qui permet à UDP de vérifier l'intégrité des donées qui lui arrivent. Sur la machine émettrice, UDP génère une valeur, en fonction de la taille du datagrame, qu'il place dans ce champ. A destination, UDP éffectue le même calcul en compare le résultat à la valeur de ce champ. UDP peut ainsi voir si les datagrames ont été ou non altérés. 3.3 Ports réservés UDP : _________________________ Si certains ports sont réservés TCP, d'autres en revanche le sont à UDP. A titre d'exemple : n° Port Application 69 TFTP 161 SNMP 1024 NFS TFTP ( pour " Trivial File Transfert Protocol " ) permet d'uploader des données sur un compte ( sans mot de passe contrairement à FTP ). NFS quant à lui assure le partage de fichiers dans un environement Unix. L'utilisation d'NFS par exemple gènère un important flot de données et dans ce cas, UDP, plus léger et donc plus rapide que TCP, est utilisé pour faciliter le trafic. Les protocoles TCP et UDP communiquent via les différents ports qui leur sont réservés avec les applications. | VI. La couche Application | ____________________________ -> Généralités -> Les services de la couche Application 1) Généralités : ________________ La Couche Application constitue le sommet de l'architecture TCP/IP. Elle contient tous les logiciels et les processus utilisant ports TCP et UDP via la couche Transport pour atteindre le réseau et assure donc l'interface entre les couches de plus bas niveau et l'utilisateur. Toutes ces applications reçoivent les informations traitées par les différentes couches inférieures. Elles émettent également leurs propres messages qui seront traités par le reste de la pile puis plaçés sur le réseau. Nous allons voir la positon de la couche Application de TCP/IP dans le contexte OSI : OSI TCP/IP ___________________ <-----------------> __________________ | | | | | Application | | | ___________________ | | | | | | | Présentation | | Application | ___________________ | | | | | | | Session | | | ___________________ <-----------------> __________________ | | |\ /| | Transport | | \ / | ___________________ | \ / | | | | \ / | | Réseau | | \ / | ___________________ | Basses Couches | | | | \ / | | Liaison-Données | | \ / | ___________________ | \ | | | | / \ | | Physique | | / \ | ___________________ _____/_____\______ On voit sur ce schéma que la couche Application de TCP/IP est chargée de même travail qui sous OSI est confié à 3 couches distinctes : la couche Session, la couche Présentation et la couche Applicaton ( à ne pas confondre ). -> la couche Sesson OSI : Elle gère les communications entre applications et effectue la résolution de noms pour les déterminer l'adresse logique du destinataire à partir du nom d'hôte. Ce service sera utile aux autres couches. -> la couche Présentation : Elle convertit les données dans un format compréhensible pour l'utilisateur. Elle se charge également de la compréssion des données. -> la couche Application : Elle contient l'ensemble des logiciels qui communiquent via les couches inférieurs. La couche Application TCP/IP accomplit donc des taches identiques à celles des couches 5, 6 et 7 d'OSI. La couche Application TCP/IP est donc charger de la résolution de noms, de traiter les données en provenance des autres couches et d'assurer l'interface utilisateur en fournissant un ensemble de logiciels ayant accès au réseau. 2) Les services de la Couche Application : __________________________________________ La couche Application contient, nous l'avons dit, tous les logiciels ayant à accéder au réseau. Certains sont de simples utilitaires de test / configuration, d'autres sont des logiciels d'administration à distance et d'autres encore sont des utilitaires internet. 2.1 Utilitaires réseau : ________________________ Au nombre de ces utilitaires on trouve la plupart de ceux que vous conaissez déja. Tous sont nées sous environement Unix. Ping : ______ Test la connection à une machine. Traceroute : ____________ Affiche la liste des machines intermédiaires entre la source et la cible en suivant le chemin d'un datagrame. Le principe de Traceroute est expliqué au chapître 4 " La Couche Internet ". Sous DOS, le traceroute est exécuté par la commande " tracert ", tandis que sous unix, il est invoqué par la commande " traceroute ". ARP : _____ Affiche et modifie les tables de correspondance entre adresses IP et adresses MAC. Sous DOS, " > arp -a 127.0.0.1 " affiche la table ARP locale. " > arp -a 123.1.2.3 " affiche une table ARP distante. " > arp -s adresse IP adresse MAC " ajoute une entrée à la table ARP locale. IPConfig : __________ Affiche les paramètres courants du protocole IP. Informe de l'adresse logique locale. Sous windows 9x, ce logiciel est exécuté par "winipcfg". Sous winsows NT, il est invoqué par " ipconfig ". Sous Linux, il l'est par " ifconfig ". Netstat : _________ Affiche les statistiques des protocoles IP, TCP, UDP et ICMP. Nbtstat : _________ Sous windows, affiche les statistiques NetBIOS. D'autres logiciels contenus dans la couche Application sont utilisés pour l'administration à distance. 2.2 Logiciels d'Administration : ________________________________ Là aussi, vous les conaissez tous ou presque ... FTP : _____ " File Transfert Protocol ", ce logiciel implémente un protocole de transfert de fichiers. La connection au serveur est obtenue par " % ftp serveur.com ". L'accès au compte est protégé par mot de passe. FTP travaille sous TCP. FTP est décrit par la RFC 959. TFTP : ______ " Trivial File Protocol ", ce logiciel permet un transfert de fichiers sans mots de passe. TFTP travaille sous UDP. Telnet : ________ Un autre logiciel incontournable ... Telnet permet l'administration d'une machine à distance en ouvrant depuis celle-ci un terminal via le réseau. Telnet est décrit dans la RFC 854. Rexec : _______ Signigie " Remote Execution " et fait partie des commandes *R. Sous environement Unix, il permet d'exécuter des commandes sur une machine distante. Rlogin : ________ Toujours sour Unix, rlogin siginfie " Remote login " et permet de se loger et d'administrer une machine distante. L'authentification ne s'effectue pas par mots de passe mais, comme pour toutes les commandes *R, par la présence d'un fichier ".rhosts" dans le répertoire principal du compte auquel on se connecte. Rsh : _____ Rsh siginfie " Remote Shell " et permet là encore sans mot de passe, l'ouverture d'un shell depuis une machine distante ou l'exécution d'autres commandes. Finger : ________ Cet utilitaire permet de consulter la liste des utilisateurs présents sur un système local ou distant. Utilisé avec l'option "-l", il permet d'obtenir des informations détaillées sur chaque utilisateur. 2.3 Utilitaires Internet : __________________________ Cette catégorie d'utilitaires est utilisée lors de la " navigation " sur internet. Navigateurs : _____________ Autrement apellés Browsers ( IE, Netscape, Lynx ), ils permettent d'accéder au contenu html du web. Ils utilisent pour cela le protocole HTTP " High Transert Text Protocol ". Messagerie : ____________ Les logiciels de messagerie utilisent les portocoles SMTP ( " Simple Mail Transfert Protocol ") et POP pour respectivement l'envoi et la réception du courrier électronique. SMTP est décrit par la RCP 821. Service Whois : _______________ La commande Whois permet d'obtenir diverses informations à propos de sites ou de noms de domaines. On peut donc par ce biais consluter les informations personelles du propriétaire, des webmasters et des administrateurs du site. 2.4 Résolution de noms : ________________________ La résolution de noms établit la correspondance entre l'adresse alphanumérique désingant la machine et son adresse logique. Le service DNS, " Domain Name System " est respondable de cette conversion. Il est utilisé sur Internet aussi bien que sur des petits réseaux. Lorsqu'un utilisateur saisit un nom de domaine, le logiciel DNS de la machine cliente émet une requête à un serveur de noms qui fourniera l'adresse logique correspondante. Les serveurs de noms communiquent entre eux au niveau de la couche Application. Le principe de la résolution de noms fera l'objet d'un prochain chapître. Voila, vous savez maintenant ce qu'est la couche Application. Conclusion : ____________ Ainsi s'achève la Partie II " Le Système de Protocoles TCP/IP " et avec elle la partie 1/2 de cette introduction. A suivre : Partie III, chap 7. " Le Routage ", Chap. 8 " La Résolution de noms. Si des erreurs se sont glissées dans cet article, prévennez moi de façon à ce que je puisse publier un errata dans le prochain numéro. Si vous avez des questions ou des remarques, je le répète, écrivez moi. ANNEXE : ________ Les RFC : _________ Vous trouverez toutes les RFC qui ont été citées tout au long de cet article sur le site http://abcdrfc.free.fr . Le Programme : ______________ /* Binary v.1 par Neo_Fox [IOC] * * * * J'aurai du mal à faire plus merdique ! * Binary v.1 se contente de saisir une adresse IP * que vous entrez au prompt d'effectuer la conversion * en binaire, en appliquant un calcul trés simpliste, * mais l'essentiel est que ça marche non ? * * neo_fox_2001@hotmail.com * */ #include /* printf, scanf */ #include /* exit */ #include /* strcmp */ /* Nombres saisis*/ int IP1,IP2,IP3,IP4; /* les nombres une fois transformés en binaire */ char bin1 [10]; char bin2 [10]; char bin3 [10]; char bin4 [10]; int nbre[7]; /* recommencer */ char saisie [2]; /* définition des sous-programmes*/ void calcul1 (); void calcul2 (); void calcul3 (); void calcul4 (); void clean (); main () { printf("\n\n\n**** \tBinary 1.0 par Neo_Fox \t****\n\n\n"); prompt : printf("\n\nEntrez une Adresse IP au format xxx.xxx.xxx.xxx : "); scanf("%d.%d.%d.%d",&IP1,&IP2,&IP3,&IP4); /* Si les octets sont > à 255 ou invalides*/ if (IP1>=256) {printf("\n\rErreur de saisie !!)\n");goto prompt;} if (IP2>=256) {printf("\n\rErreur de saisie !!\n");goto prompt;} if (IP3>=256) {printf("\n\rErreur de saisie !!\n");goto prompt;} if (IP4>=256) {printf("\n\rErreur de saisie !!\n");goto prompt;} calcul1(); calcul2(); calcul3(); calcul4(); printf("\n\nDecimal : %d.%d.%d.%d\n",IP1,IP2,IP3,IP4); printf("Binaire : %s.%s.%s.%s\n",bin1,bin2,bin3,bin4); /* si l'IP = 127.0.0.1 ... */ if (IP1==127) { if (IP2==0) { if (IP3==0) { if (IP4==1) { printf("Usage : IP de loopback\n"); } } } } /* Recommencer ?*/ again : printf("\n\nRecommencer y/n ? "); scanf("%s",&saisie); if ((strcmp(saisie,"y")==0)||(strcmp(saisie,"Y")==0)){clean(); goto prompt;} if ((strcmp(saisie,"n")==0)||(strcmp(saisie,"N")==0)){printf("\n\nSortie du Programme !\n\n"); getchar(); exit(1);} else {goto again;} return 0; } /* Fin du main*/ /* Suite de calculs pour déduire la valeur binaire*/ void calcul1 () { if (IP1>=128){nbre[0]=IP1 - 128; strcat(bin1,"1");;} if (IP1<=127){nbre[0]=IP1; strcat(bin1,"0");} if (nbre[0]>=64){nbre[1]=nbre[0] - 64; strcat(bin1,"1");} if (nbre[0]<=63){nbre[1]=nbre[0]; strcat(bin1,"0"); } if (nbre[1]>=32){nbre[2]=nbre[1] - 32; strcat(bin1,"1");} if (nbre[1]<=31){nbre[2]=nbre[1]; strcat(bin1,"0"); } if (nbre[2]>=16){nbre[3]=nbre[2] - 16; strcat(bin1,"1");} if (nbre[2]<=15){nbre[3]=nbre[2]; strcat(bin1,"0"); } if (nbre[3]>=8){nbre[4]=nbre[3] - 8; strcat(bin1,"1");} if (nbre[3]<=7){nbre[4]=nbre[3]; strcat(bin1,"0"); } if (nbre[4]>=4){nbre[5]=nbre[4] - 4; strcat(bin1,"1");} if (nbre[4]<=3){nbre[5]=nbre[4]; strcat(bin1,"0"); } if (nbre[5]>=2){nbre[6]=nbre[5] - 2; strcat(bin1,"1");} if (nbre[5]<=1){nbre[6]=nbre[5]; strcat(bin1,"0"); } if (nbre[6]>=1){strcat(bin1,"1");} if (nbre[6]<=0){strcat(bin1,"0"); } } void calcul2 () { if (IP2>=128){nbre[0]=IP2 - 128; strcat(bin2,"1");;} if (IP2<=127){nbre[0]=IP2; strcat(bin2,"0");} if (nbre[0]>=64){nbre[1]=nbre[0] - 64; strcat(bin2,"1");} if (nbre[0]<=63){nbre[1]=nbre[0]; strcat(bin2,"0"); } if (nbre[1]>=32){nbre[2]=nbre[1] - 32; strcat(bin2,"1");} if (nbre[1]<=31){nbre[2]=nbre[1]; strcat(bin2,"0"); } if (nbre[2]>=16){nbre[3]=nbre[2] - 16; strcat(bin2,"1");} if (nbre[2]<=15){nbre[3]=nbre[2]; strcat(bin2,"0"); } if (nbre[3]>=8){nbre[4]=nbre[3] - 8; strcat(bin2,"1");} if (nbre[3]<=7){nbre[4]=nbre[3]; strcat(bin2,"0"); } if (nbre[4]>=4){nbre[5]=nbre[4] - 4; strcat(bin2,"1");} if (nbre[4]<=3){nbre[5]=nbre[4]; strcat(bin2,"0"); } if (nbre[5]>=2){nbre[6]=nbre[5] - 2; strcat(bin2,"1");} if (nbre[5]<=1){nbre[6]=nbre[5]; strcat(bin2,"0"); } if (nbre[6]>=1){strcat(bin2,"1");} if (nbre[6]<=0){strcat(bin2,"0"); } } void calcul3 () { if (IP3>=128){nbre[0]=IP3 - 128; strcat(bin3,"1");;} if (IP3<=127){nbre[0]=IP3; strcat(bin3,"0");} if (nbre[0]>=64){nbre[1]=nbre[0] - 64; strcat(bin3,"1");} if (nbre[0]<=63){nbre[1]=nbre[0]; strcat(bin3,"0"); } if (nbre[1]>=32){nbre[2]=nbre[1] - 32; strcat(bin3,"1");} if (nbre[1]<=31){nbre[2]=nbre[1]; strcat(bin3,"0"); } if (nbre[2]>=16){nbre[3]=nbre[2] - 16; strcat(bin3,"1");} if (nbre[2]<=15){nbre[3]=nbre[2]; strcat(bin3,"0"); } if (nbre[3]>=8){nbre[4]=nbre[3] - 8; strcat(bin3,"1");} if (nbre[3]<=7){nbre[4]=nbre[3]; strcat(bin3,"0"); } if (nbre[4]>=4){nbre[5]=nbre[4] - 4; strcat(bin3,"1");} if (nbre[4]<=3){nbre[5]=nbre[4]; strcat(bin3,"0"); } if (nbre[5]>=2){nbre[6]=nbre[5] - 2; strcat(bin3,"1");} if (nbre[5]<=1){nbre[6]=nbre[5]; strcat(bin3,"0"); } if (nbre[6]>=1){strcat(bin3,"1");} if (nbre[6]<=0){strcat(bin3,"0"); } } void calcul4 () { if (IP4>=128){nbre[0]=IP4 - 128; strcat(bin4,"1");;} if (IP4<=127){nbre[0]=IP4; strcat(bin4,"0");} if (nbre[0]>=64){nbre[1]=nbre[0] - 64; strcat(bin4,"1");} if (nbre[0]<=63){nbre[1]=nbre[0]; strcat(bin4,"0"); } if (nbre[1]>=32){nbre[2]=nbre[1] - 32; strcat(bin4,"1");} if (nbre[1]<=31){nbre[2]=nbre[1]; strcat(bin4,"0"); } if (nbre[2]>=16){nbre[3]=nbre[2] - 16; strcat(bin4,"1");} if (nbre[2]<=15){nbre[3]=nbre[2]; strcat(bin4,"0"); } if (nbre[3]>=8){nbre[4]=nbre[3] - 8; strcat(bin4,"1");} if (nbre[3]<=7){nbre[4]=nbre[3]; strcat(bin4,"0"); } if (nbre[4]>=4){nbre[5]=nbre[4] - 4; strcat(bin4,"1");} if (nbre[4]<=3){nbre[5]=nbre[4]; strcat(bin4,"0"); } if (nbre[5]>=2){nbre[6]=nbre[5] - 2; strcat(bin4,"1");} if (nbre[5]<=1){nbre[6]=nbre[5]; strcat(bin4,"0"); } if (nbre[6]>=1){strcat(bin4,"1");} if (nbre[6]<=0){strcat(bin4,"0"); } } /* Pour vider les "bin" de leurs précédentes valeurs */ void clean () { strcpy(bin1,""); strcpy(bin2,""); strcpy(bin3,""); strcpy(bin4,""); }