Les premiers développements concernant les protocoles TCP/IP ont été effectués aux Etats-Unis dans les années 70, dans le cadre du projet ARPA du Département de la Défense. L’objectif était double : d’une part définir un langage de communication universel, d’autre part disposer d’une technologie ou le contrôle du réseau serait distribué.
<
Le passage dans le domaine public des spécifications des protocoles du DoD (USA Department of Defense) a bien évidemment été un facteur déterminant dans la diffusion de ces technologies. Dans un premier temps, ce sont les milieux universitaires qui ont intégré TCP/IP comme moyen de communication standard dans leur système d’exploitation de prédilection, à savoir UNIX. C’est à cette époque qu’Internet a véritablement commencé à se construire et à se structurer. L’adoption de ces solutions dans la micro-informatique et les grands systèmes a été plus longue, du fait de la concurrence avec les solutions propriétaires proposées par les constructeurs et les éditeurs de logiciel. C’est au début des années 90 que la création par des ingénieurs du CERN de l’application World Wide Web a véritablement fait explosé le nombre d’utilisateurs d’Internet, et par conséquent l’utilisation de TCP/IP dans les réseaux. Les utilisations professionnelles et commerciales ont rapidement dépassées les usages universitaires. L’ampleur du phénomène a du être pris en compte par les opérateurs de télécommunications et les grands éditeurs de logiciel, pour conduire rapidement au phénomène de masse que l’on constate aujourd’hui. 2. LES PROTOCOLES TCP/IP TCP/IP désigne la pile ou ensemble des protocoles de communication mis en oeuvre dans Internet (terme générique que l’on utilisera dans cet article, couvrant également Intranet et Extranet), mais aussi dans d’autres systèmes basés sur des réseaux de communication, comme par exemple certains réseaux d’automatisme. Le « modèle » TCP/IP est organisé en 3 couches ou niveaux (figure 1) : une couche « basse » de transmission de données, la couche IP, masquant les spécificités de la couche basse utilisée et chargée de l’acheminement des paquets, la couche TCP/UDP, comparable dans une certaine mesure au niveau transport défini dans le modèle OSI, rendant des services de communication aux applications. Les protocoles TCP et UDP sont exploités par des applications telles que HTTP (navigation sur le WEB), SMTP (messagerie électronique), FTP (transfert de fichiers), mais aussi d’autres applications propriétaires ou non. Il est à noter que les interfaces d’accès aux couches TCP et UDP ne sont pas standardisées. Cependant, , même si l’interface applicative la plus utilisée est le « socket » type BSD. Figure 1 : la pile de protocoles 2.1 Le protocole IP IP, Internet Protocol, a été à l’origine conçue pour exploiter les infrastructures existantes offrant des services de niveau liaison de données ou réseau. IP peut, en principe, exploiter n’importe quelle couche liaison ou réseau assurant le transport de paquets de bits, pour autant que le service offert soit transparent (apte à acheminer n’importe quel contenu). C’est le cas de beaucoup de réseaux (couches basses) tels qu’Ethernet, le RTC, X25, etc., mais aussi de réseaux d’automatisme (ou de terrain), pour autant que ceux-ci aient la capacité de transporter des datagrammes de taille raisonnable (on ne peut pas segmenter les entêtes IP), et que cela ne perturbe pas le trafic d’automatisme (le trafic IP est par nature apériodique et imprévisible quant au volume des messages). IP Version 4 Le service rendu par IP est rudimentaire, et consiste à transmettre des paquets, appelés datagrammes, à travers un ou plusieurs réseaux interconnectés par des routeurs. Le protocole est dit en mode non connecté : les paquets sont envoyés sans qu’il y ait accord préalable entre l’émetteur et le destinataire sur les modalités de l’échange (négociation de ressources, valeurs de temporisations, etc.). La conséquence est que IP ne peut garantir : la correction des pertes ou duplications de paquets, la régulation du flux entre émetteur et récepteur. Figure 2 : format des datagrammes IP version 4 La figure 2 présente le format des datagrammes de IPv4, version courante du protocole IP : Le premier champ permet d’appliquer au message le traitement correspondant à la version de protocole indiquée. L’entête, dont la taille est exprimée en mots de 32 bits, a une longueur minimale de 20 octets. La longueur totale, exprimée en octets, est limitée par les implantations à quelques milliers d’octets. Les paramètres de la qualité de service, initialement prévus pour gérer le niveau de performance requis par les applications, ne sont la plupart du temps pas pris en compte par les systèmes actuels. La stratégie de transmission est dite best effort : chaque équipement fait ce qu’il peut pour acheminer les données dans les meilleurs délais, sans qu’il soit possible de garantir un temps de transit maximum. Les champs Identification, DF (Don’t Fragment), MF (More Fragment) et Déplacement contrôlent le mécanisme de segmentation-réassemblage. Chaque datagramme se voit affecté à l’émission un numéro d’identification. En fonction de la MTU, Maximum Transfert Unit, du lien sur lequel le datagramme doit être transmis, un routeur segmentera le message s’il est autorisé à le faire (indicateur DF). Le réassemblage, contrôlé par les champs MF et Déplacement, s’effectue dans le système destinataire. Le temps de transit total est borné par un temporisateur de garde côté récepteur. Toute erreur dans ce mécanisme provoque le renvoi à l’émetteur d’un datagramme d’erreur ICMP, Internet Control Message Protocol. La durée de vie d’un message est limité par un paramètre, qui est en fait le nombre de routeur que le datagramme va traverser entre l’émetteur et le destinataire, ceci pour éviter ldes messages "errants". Initialement nommé TTL ou Time-To-Live, ce champ est décrémenté à chaque passage par un routeur. Si le chemin est trop long, le datagramme est détruit et un message ICMP est renvoyé à la source. Le champ Protocole précise la nature des données transportées : message TCP, UDP ou ICMP, protocole de routage. Seule l’entête bénéficie d’un contrôle d’erreur, effectué par Checksum. La mise en oeuvre d’un contrôle d’erreur sur les données est laissée à l’initiative des niveaux supérieurs de protocole. Les options, pratiquement peu utilisées, ont essentiellement l’objectif de fournir des fonctionnalités d’aide au routage (enregistrement du chemin, routage par l’émetteur). Plan d’adressage IP V4 La figure 3 présente le plan d’adressage actuel sur 32 bits de l’Internet. Les trois premières classes A, B et C permettent d’identifier un point d’accès à un réseau. Un équipement multiports, tel qu’un routeur, a donc autant d’adresses IP que de réseaux sur lesquels il est connecté. La classe D est utilisée pour le Multicast, ou diffusion à un groupe. La classe E est réservée à des fins expérimentales. L’attribution des adresses des réseaux connectés à Internet est organisée par le NIC, Network Information Center. Figure 3 : adresses IPv4 Acheminement des datagrammes Les routeurs sont les équipements d’interconnexion entre réseaux IP. Dans une architecture complexe où les chemins reliant deux équipement peuvent être multiples et varier au cours du temps, des protocoles de routage, supportés par IP, sont utilisés pour mettre à jour les tables de routage (figure 4). Figure 4 : routage dans les réseaux IP Nota : – RIP : Routing Information Protocol – OSPF : Open Shortest Path First – EGP : External Gateway Protocol – BGP : Border Gateway Protocol Chaque infrastructure encapsule les datagrammes IP avec son propre format de message (figure 5). Ainsi, pour une connexion entre un abonné et son fournisseur d’accès, les mécanismes suivant pourront être mis en oeuvre : encapsulation PPP, Point-to-Point Protocol, sur la liaison téléphonique entre l’abonné et le point d’accès de son fournisseur, encapsulation circuit virtuel X.25 sur le réseau de l’opérateur Transpac, encapsulation Ethernet sur le réseau local du fournisseur d’accès. Figure 5 : transmission des datagrammes IP IP Version 6 Une nouvelle version du protocole IP, IP version 6, a été spécifiée, avec l’objectif de pallier un certain nombre des faiblesses de la version actuelle. La figure 6 présente le nouveau format des messages : Le champ "Priorité" permet de classer les applications des moins prioritaires (news, messagerie) aux plus prioritaires (trafic temps réel et audio-vidéo). La prise en compte par les routeurs de ce champ et de l’identificateur de flux de données, dont l’objectif est de repérer les connexions applicatives, doitevrait permettre la mise en oeuvre de la qualité de service sur les réseaux IP. Pour éviter une trop grande augmentation de la taille de l’entête, dont le minimum passe de 20 à 40 octets, une liste d’entêtes complémentaires peuvent être chaînées à la suite de l’entête standard. On y retrouve la gestion de la fragmentation et les options présentes dans la version 4, ainsi que des mécanismes complémentaires, dont la possibilité de chiffrer les paquets. Les champs d’adresse sont étendus de 32 à 128 bits. Différents plan d’adressages sont proposés suivant les réseaux (réseaux locaux, réseaux de fournisseurs d’accès, migration depuis IPv4). Un nouveau type d’adresse, les adresses Anycast, permet d’atteindre l’équipement le plus directement accessible parmi un groupe. Figure 6 : format des datagrammes IPv6 Il est évident que la migration des machines connectées à l’Internet vers cette nouvelle version ne pourra se faire que progressivement. Un backbone expérimental fonctionne actuellement avec IPv6. La partie française, représentée par G6-bone, relie des centres universitaires et des centres de recherche par une infrastructure virtuelle au dessus d’un réseau IPvv4. 2.2 TCP et UDP La couche TCP-UDP est chargée de la gestion des échanges entre applications. TCP, Transmission Control Protocol TCP offre un service de transport de données fiable en mode connecté. Il est utilisé de façon privilégiée par les applications de communication entre sites : courrier électronique, transfert de fichier, Web, etc. La figure 7 présente la structure des messages ou segments TCP : Les identificateurs de porte servent à repérer les processus applicatifs. Ils sont fixés du côté serveur dans les spécifications de l’application (par exemple 80 pour un serveur Web), et attribués dynamiquement à l’initialisation du contexte de connexion du côté client. Les numéros de séquence et d’acquittement contrôlent le transfert des données une fois la connexion établie., et Le numéro de séquence progresse en fonction du nombre d’octets émis, quel que soit le nombre de segments ayant permis d’envoyer ces octets. D’autre part chaque station précise la taille de sa fenêtre d’anticipation, c’est à dire leou nombre maximal d’octets qu’elle s’autorise à envoyer avant d’être bloquée en attente d’acquittement. Le numéro d’acquittement progresse en fonction du nombre d’octets reçus. TCP opère un contrôle d’erreur par Checksum couvrant l’ensemble du segment et vérifie la chronologie et la continuité des séquences reçues. Des retransmissions sont effectuées en cas de problème. La valeur initiale des numéros de séquence pouvant être quelconque, la connexion utilise un mécanisme original en trois temps, three way handshake, pour échanger et confirmer la valeur de ces numéros (figure 8). Une série d’indicateurs binaires précise la nature du segment, n’importe quel segment pouvant a priori contenir des données : URG pour Urgent : le segment comporte des données prioritaires, dont l’origine est repérée par le pointeur sur les données urgentes. ACK pour Acknowledge : le numéro d’acquittement est significatif. PSH pour Push : par défaut, l’utilisateur du service TCP ne maîtrise pas le rythme d’émission des données. L’indicateur Push permet de demander l’émission des données en attente. RST pour Reset : demande de réinitialisation de la connexion. SYN pour Synchronize : utilisé à la connexion pour échanger les valeurs initiales des numéros de séquence. FIN pour Final : utilisé pour la déconnexion. Figure 7 : format des segments TCP La figure 8 montre un exemple simple de session TCP entre un client et un serveur. On peut constater que TCP est un protocole « bavard », d’autant plus que la taille minimale des entêtes est de 20 octets comme pour IP. Figure 8 : exemple de session TCP UDP, User Datagram Protocol UDP, User Datagram Protocol, permet d’accéder quasiment directement au service en mode non connecté rendu par IP. C’est le protocole mis en oeuvre par des applications locales telles que le partage de ressources ou bien demandant des délais de transmission courts telles que l’administration de réseaux. La figure 98 présente le format des messages UDP. Les identificateurs de portes sont fonctionnellement identiques à ceux de TCP. Le Checksum, optionnel, est calculé sur un nombre restreint de champs de l’entête du message et du datagramme IP le transportant. Les pertes et les déséquencements de messages ne sont pas détectés par UDP. Figure 98 : format des messages UDP 3. LES APPLICATIONS L’une des forces du modèle TCP/IP a été de présenter dès ses origines un ensemble d’applications, qui s’est enrichi au fil du temps, et qui couvre aussi bien les besoins locaux de partage de ressources au niveau d’un site que ceux de la communication et du travail coopératif entre sites. Parmi les applications les plus connues on peut citer : TELNET, pour l’émulation de terminal, dont le mode communication entre client et serveur est utilisé par beaucoup d’autres applications, FTP, File Transfer Prot
col, pour le transfert de fichiers, SMTP, Simple Mail Transfer Protocol, pour l’acheminement du courrier électronique, SNMP, Simple Network Management Protocol, pour l’administration de réseaux, et bien sûr HTTP, HyperText Transfer Protocol, pour le transfert des documents du Web. 3.1 Exemple du courrier électronique Figure 109 : transfert du courrier électronique Le protocole SMTP est utilisé pour le transport des messages. Après avoir ouvert une connexion TCP, l’émetteur dépose son message dans son serveur de rattachement (figure 109), généralement la machine qui gère aussi sa boîte à lettres de réception. Le message est ensuite transmis de proche en proche jusqu’au serveur de rattachement du destinataire. Celui-ci peut alors consulter sa boîte à l’aide d’un protocole ad hoc tel que POP, Post Office Protocol ou bien IMAP, Internet Message Access Protocol. L’intérêt du mécanisme, reposant sur un ensemble de serveurs stockant et réémettant les messages, est de ne pas nécessiter la connexion directe entre l’émetteur et le destinataire. 3.2 Le World Wide Web Le « Web » est bien entendu l’application la plus populaire, aussi bien sur Internet que dans les entreprises, où les services de type Intranet permettent un accès plus performant et plus convivial au système d’information. A travers l’application cliente, le navigateur ou browser, l’utilisateur indique le nom du document qu’il souhaite consulter. Cette référence, ou URL pour Universal Resource Locator, précise à la fois l’adresse du serveur dans lequel la page est stockée et la localisation de cette page dans le serveur. Le navigateur ouvre alors une connexion TCP avec le serveur pour charger la page demandée. Le format de codage HTML, Hyper Text Markup Language, permet d’enrichir le contenu avec des informations de présentation (polices de caractères, tableaux, fenêtres, etc.), d’annexer à la page des fichiers d’images et de son, et surtout d’indiquer des liens vers d’autres pages, tissant ainsi le World Wide Web, littéralement la toile d’araignée mondiale. Ajoutons à cela le fait que le navigateur est devenu l’interface commune pour les applications les plus répandues telles que la messagerie, le transfert de fichiers et les forums de discussion (Newsgroups) et l’on comprendra les raisons de ce succès. La faiblesse du système initial est son faible niveau d’interactivité, limité à la navigation de page en page. Une première étape, les scripts CGI pour Common Gateway Interface, permettent au navigateur de déclencher l’exécution de traitement sur les serveurs : à l’aide d’un formulaire, l’utilisateur peut soumettre une requête dont il récupérera le résultat dans la page lui étant renvoyée. D’autre possibilitées d’interactivité entre le client et le serveur existent aujourd’hui, avec la mise en oeuvre de techniques de communication entre objets (CORBA, Active X, DCOM). Figure 10 : les différents niveaux d’interactivité du Web Sun Microsystems avec le langage objet Java et le support du mode de communication inter-objets CORBA, Microsoft avec les technologies ActiveX et DCOM, ont depuis proposé des solutions permettant d’une part au navigateur de charger des programmes en même temps que des pages, et d’autre part la communication entre programmes du client et du serveur. 4. Conclusion Les technologies issues des développements du WEB, créée à l’origine pour des échanges de documents et pour la navigation au sein d’un système d’information géographiquement distribué, se développent maintenant dans le monde industriel, particulièrement dans les télécommunications, et dans le contrôle industriel. La pénétration de l’Internet dans les architectures de contrôle industriel va apporter des bénéfices considérables : interfaces homme-machine sophistiquées, personnalisables et indépendantes de la plate-forme matérielle, connexion avec le système d’information de l’entreprise, utilisation de la messagerie pour la communication entre opérateurs, téléopération, télésurveillance, télédiagnostic et télémaintenance.pour l’accès à distance des sites, aussi bien pour des besoins de monitoring, que pour des besoins de télédiagnostic et de maintenance. Si TCP, UDP et IP ne résolventTCP / UDP – IP ne résout pas tous les problèmes, ils sontil est néanmoins la pierre angulaire de l’édifice du système de communication, et sont devenusest devenu un standard de fait.