Module 222 Bases de télécommunication Technologies de l'Internet 1 - Internet 2 - TCP/IP 3 - HTTP Bibliographie Gérard-Michel Cochard [email protected] Technologies de l'Internet 1 - Internet 2 - TCP/IP 3 - HTTP Gérard-Michel COCHARD Université de Picardie Jules Verne IUP MIAGE 1 - Internet Internet, réseau de réseaux, s'est développé à partir de 1985 et a subi un essor extraordinaire à partir de 1990 (suite à la mise en service des premiers serveurs WWW). Il constitue actuellement le moyen de communication le plus performant et le plus populaire. Nous passons en revue, dans ce chapitre quelques aperçus sur les technologies employées, sans vouloir prétendre à l'exhaustivité complète sur le sujet, d'ailleurs en perpétuelle évolution. Internet est un ensemble de réseaux de tous types : ● réseaux locaux (exemple réseau local de la DEP) ● ● ● ● réseaux de "campus" (exemple réseau UPJV) réseaux régionaux (exemple PIR2) réseaux nationaux (exemple RENATER) réseaux internationaux (exemple EBone) La figure ci-dessous explicite quelques exemples de connexion : Le "provider" ou fournisseur d'accès Internet est une entreprise qui propose aux particuliers ou aux sociétés un raccordement à Internet. Internet possède des instances de gestion : ● ISOC (Internet SOCiety) : société savante discutant de l'avenir d'Internet ● IAB (Internet Architecture Board) : conseil des "sages" ; fixation des règles d'attribution des adresses et des noms de domaines ; président : Ch. Huitema ● IETF (Internet Engineering Task Force) : ensemble de groupes de travail techniques ● IRTF (Internet Assigned Numbers Authority) : bureau enregistrant les numéros de ports (applications), les numéros de réseaux, les noms de domaines, ... ; délégation aux NIC (Network Information Center) ; exemples RIPE = NIC européen, NIC France à l'INRIA. Les caractéristiques principales d'Internet sont les suivantes ; elles seront, pour la plupart, reprises en détail ci-dessous : ● le protocole "standard" d'Internet est défini par la famille TCP/IP ; ● RFC (Request For Comments) fournit les spécifications des divers protocoles , documents de référence (quelque fois appelés FYI = For Your Information) ; voir ftp://ftp.urec.fr/pub/reseaux/docs/intro-docs/FYIs ; ● au niveau réseau, Internet emploie des datagrammes : les paquets IP sont des blocs circulant indépendamment les uns des autres ; un réseau IP comprend des stations, des connexions physiques, des routeurs ; routeurs : emploi du routage par défaut ; chaque routeur connaît les routeurs voisins ; si l'adresse est inconnue, le datagramme est envoyé vers un routeur par défaut (simplification de la table de routage) ; ● ● ● adresses IP : chaque station possède une adresse composée de 4 parties : 129.88.32.30 (adresse réseau + adresse station) ; l' attribution est effectuée par le NIC ; ● adresses Internet : FQDN (Fully Qualified Domain Name) de la forme [email protected] ; classes de domaine : com, fr, hu, edu, gov, net, ... Transformation automatique en numéro IP ; ● adresses URL (Uniform Resource Locator) : identification d' un service ; exemples : http://www.microsoft.com, ftp://www.cern.fr/public. Les connexions physiques à Internet peuvent être réalisées par ● des liaisons téléphoniques jusqu'à 28,8 kbits/s ; 1 CD-ROM (640 Mo) sera alors transporté en 4 jours ; ● liaisons spécialisées : 56 kbits/s à 2 Mbits/s couramment ; 1 CD-ROM (640 Mo) sera alors transporté en 5 h à 64 kbits/s et en 10 min à 2 Mbits/s. Les services offerts par Internet sont nombreux : ● WWW : serveurs de pages d'information ● e-mail : courrier électronique ● FTP : transfert de fichiers ● Telnet : connexion à une machine distante ● WAIS : consultation de bases de données ● etc ..... On trouvera des documents d'intérêt sur Internet aux adresses suivantes : ● aspects du Net : http://www.eff.org/papers/eegtti/eeg_toc.html ● une nouveau guide Internet par Gilles Maire : http://www.imaginet.fr/ime/ 2 - TCP/IP Les protocoles TCP/IP et le modèle OSI TCP/IP est une famille de protocoles issus du projet américain DARPA (années 60) qui ont conduit au réseau expérimental ARPANET, devenu par la suite .... Internet au plan mondial. La famille TCP/IP se compose essentiellement des protocoles IP, TCP, UDP. Le modèle OSI, dont le but est de normaliser les protocoles de communication, a été élaboré pratiquement en même temps que TCP/IP. On ne s'étonnera donc pas des différences inévitables que ces deux familles de protocoles présentent. Il faut remarquer que, pendant que OSI se développait avec une relative lenteur, TCP/IP s'est développé, quant à lui, avec une relative rapidité. La figure ci-dessous présente sommairement la correspondance centre les deux familles de protocoles : Couche application Couche présentation Couche application Couche session Couche transport TCP UDP Couche réseau IP Couche liaison Couche d'accès Couche physique au réseau modèle OSI famille TCP/IP IP = Internet Protocol ; TCP = Transport Control Protocol ; UDP = User Datagram Protocol On constate que TCP/IP n'est pas concerné par les deux couches basses (physique et liaison) ce qui signifie que n'importe quel protocole à ces niveaux est utilisable (par exemple Ethernet, Token Ring,...) et que les couches supérieures de l'OSI correspondent, dans TCP/IP, à une seule couche "application". Les deux couches essentielles de TCP/IP sont la couche réseau avec le protocole IP et la couche transport avec les deux protocoles exclusifs TCP et UDP. Adresses IP, ports et sockets Le protocole P de la couche réseau permet d'identifier une machine sur le réseau Internet grâce à une adresse IP sur 32 bits qui se compose de 4 nombres entiers inférieurs à 256 ; par exemple, 192.34.56.97. Il existe plusieurs types d'adresses qui se répartissent en classes. Il existe actuellement plusieurs classes d'adresses, les plus connues étant A, B, C, D, E. Les classes D et E sont des classes spéciales, les classes A, B, C sont des classes courantes qui diffèrent par le nombre de réseaux et le nombre de machines par réseau. La figure ci-dessous explicite ces différentes classes. On constatera que la classe A correspond à un maximum de 128 réseaux, chacun d'eux pouvant contenir 224 machines ; la classe B correspond à un maximum de 214 réseaux, chacun d'eux pouvant contenir 216 machines ; enfin la classe C, la plus courante, correspond à un maximum de 221 réseaux, chacun pouvant contenir 256 machines. La classe D est une classe permettant une diffusion de message sur plusieurs destinataires. La classe E est, pour l'instant, d'un usage réservé. Les cinq classes se repèrent par les premiers bits, caractéristiques de la classe. Le protocole IP permet aussi d'identifier une application (ou service) par un port IP. Ainsi, l'accès à une application, fonctionnant sur une machine donnée, nécessite de connaître l'adresse IP et le port IP (ce qui, comme on le verra plus loin, correspond à la notion de socket). Les ports sont numérotés de 0 à 1023 pour les applications standards. Par exemple, HTTP Port 80 FTP Port 20 et Port 21 Gopher Port 70 SMTP Port 25 POP3 Port 110 Telnet Port 23 L'adresse IP est peu commode pour identifier une machine de la part de l'utilisateur qui préfère lui donner un nom. Il faut donc établir dans ce cas une correspondance entre nom de la machine et l'adresse IP. Cette correspondance est effectuée dans le cadre d'une base de données répartie sur plusieurs serveurs au niveau mondial : le DNS (Domain Service Name). Un socket est l'association d'une adresse IP (machine) et d'un port IP (application). Par extension, un socket désigne aussi un ensemble de fonctionnalités permettant la connexion à une application exécutable sur une machine sur Internet. Cette notion, au départ développée sur les machines Unix, vaut également maintenant pour les plates formes Windows, l'ensemble des fonctionnalités portant le nom de Winsock et comprenant 44 fonctions différentes. Dans la pratique, cet ensemble est simplifié dans des packages courants. Ainsi, pour Visual Basic, on peut utiliser le package DSSock.OCX (de Dolphin Systems) qui comporte 22 propriétés et 7 événements ; pour utiliser DSSock, il faut ajouter dans la liste des contrôles de Visual Basic (VB4), le contrôle DSSock32.OCX qui se trouve dans le sous-répertoire "system" du répertoire "windows" de Windows95. Le principe de l'utilisation de DSSock est simple : il suffit d'ajouter aux modules que l'on programme le module DSSock.bas qui contient les constantes globales et les fonctions utilitaires. exemple : obtenir la correspondance entre l'adresse IP et le nom de la machine sur laquelle on travaille. On crée un projet sous VB4, on ajoute DSSock.bas au projet, on ajoute le contrôle DSSock dans une feuille de travail Form1 dont le code sera : ● Private Sub Form_Load() Caption=DSSocket1.LocalDotAddr&"_"&DSSocket1.LocalName End Sub DSSocket1.LocalDotAddr donne l'adresse IP de la machine locale, DSSocket1.LocalName donne le nom de la machine locale. IP Rappelons tout d'abord le modèle en couche correspondant à la famille TCP/IP en détaillant un peu plus chaque couche : Le passage d'une couche à l'autre implique un habillage/déshabillage des données : Au niveau de la couche réseau, nous avons vu que les paquets utilisent des adresses IP, appartenant à des classes définies. Ces adresses sont sur 32 bits, or les adresses de la couche liaison ne sont pas nécessairement sur 32 bits ; par exemple, si Ethernet est le protocole utilisé dans la couche liaison, l'adressage Ethernet est sur 48 bits. Pour effectuer la conversion entre une adresse IP et une adresse Ethernet, les protocoles ARP (Address Resolution Protocol) et RARP (Reverse Address Resolution Protocol) sont utilisés. Les paquets IP sont des datagrammes : ils peuvent circuler indépendamment les uns des autres. Le format d'un paquet IP est décrit ci-dessous : L'en-tête du paquet IP comprend plusieurs champs : ● ● ● ● ● ● ● ● ● ● Version : ce champ de 4 bits identifie la version de IP (actuellement 4) ; HLEN : longueur de l'en-tête (en mots de 32 bits) sur 4 octets ; cette longueur permet d'atteindre directement les données utiles du paquet : 1er octet "utile" = 1er octet "en-tête" + 4*HLEN ; TOS : type de service ; ces 8 bits permettent de définir une qualité de service (priorité, délai de délivrance, ...) ; Longueur du paquet : la longueur est exprimée en nombre de mots de 32 bits ; cette longueur a de l'importance en raison de la taille maximale de l'unité de transmission (MTU = Maximum Transfer Unit) qui dépend du réseau basique employé (MTU = 1500 octets pour Ethernet, MTU=4464 octets pour Token Ring) ; si la taille du paquet est plus grande, il s'opérera une fragmentation (notamment au niveau d'un routeur lors du passage d'un réseau à un autre) ; Identification : numéro d'identification du datagramme ; Flag et Fragment Offset : champs relatifs à la fragmentation ; Time To Live : ce champ de 8 bits indique le temps de vie d'un paquet dans le réseau ; quand ce temps est dépassé le paquet est automatiquement détruit avec message via le protocole ICMP (Internet Control Message Protocol) ; Protocol : ce champ indique le protocole de la couche transport qui a donné naissance au datagramme : TCP ou UDP ; Header Checksum : champ de contrôle d'erreur sur l'en-tête uniquement ; adresses IP de la source et du destinataire : adresses IP sur 32 bits ; si la transmission est "broadcast" (pour tout le monde), l'adresse du destinataire ne contient que des "1" ; Le routage des paquets IP est effectuée grâce à des tables de routage. Ces tables utilisent le fait que le début d'une adresse IP indique le numéro de réseau et la suite le numéro de machine sur ce réseau. La transmission d'un paquet peut se faire suivant deux modes : le mode direct et le mode indirect : ● le mode direct est utilisé quand le paquet peut être transmis sous la forme d'une trame de la couche inférieure (liaison) ; ce mode est employé lorsque le destinataire est directement relié au routeur qui a reçu le paquet ; ● le mode indirect est employé lorsque le destinataire appartient à un réseau autre que celui auquel appartient le routeur qui a reçu le paquet ; la table de routage consultée doit indiquer alors l'adresse du routeur vers lequel diriger ce paquet. Une situation typique pour un routeur est indiquée ci-dessous : table de routage pour le routeur B : adresse route 200.0.0.0 direct 300.0.0.0 direct 100.0.0.0 300.0.0.7 TCP et UDP La couche réseau utilise un protocole unique : IP. La couche transport utilise deux protocoles, exclusifs, TCP (Transport Control Protocol) et UDP (User Datagramme Protocol). Alors que IP utilise des adresses de machines, TCP et UDP utilisent des ports ; on trouvera donc, dans les blocs manipulés par TCP ou UDP des ports source et destinataire. La différence entre TCP et UDP est basée sur la propriété "connexion". Un protocole est "avec connexion" (ou orienté connexion) si un chemin de parcours des blocs est défini : c'est le cas de TCP ; un protocole est dit "sans connexion" s'il n'y a pas de chemin défini : c'est le cas de UDP qui utilise des datagrammes (comme IP). La structure d'un datagramme UDP est la suivante : L'en-tête de 64 bits ne comporte que 4 champs : ● ● ● les ports source et destination ; la longueur du datagramme UDP incluant l'en-tête ; le champ de contrôle d'erreur qui porte sur le datagramme entier. UDP ne garantit pas la remise d'un datagramme à son destinataire, ni que les datagrammes d'un message arrivent dans leur ordre d'émission. TCP, au contraire, possède les qualités requises au prix, bien sûr, d'une complexité plus grande. De plus, TCP optimise l'utilisation de la bande passante de la voie de communication en effectuant un contrôle de flux dynamique. Ce contrôle de flux et la garantie de délivrance d'un message sont basés sur la technique de l'acquittement ; dans la technique de base de l'acquittement, un message reçu est acquitté par le destinataire par l'envoi d'un message de service ACK qui doit revenir à l'émetteur dans un temps déterminé ; si ce temps est expiré, le message doit être ré-émis. TCP utilise une amélioration de cette technique : un acquittement est envoyé, mais il n'est reçu par l'émetteur qu'après l'émission de plusieurs messages par utilisation de la méthode de la fenêtre "glissante". La taille de la fenêtre est le nombre d'octets que l'on peut envoyer avant de commencer à recevoir des acquittements. Cette taille est négociée lors de l'établissement d'une connexion TCP ; des tailles de 4086, 8192 et 16384 sont courantes. Un message ou unité d'information transportée par TCP est appelé segment et constitue une fraction d'un flux continu de bits. La structure d'un segment TCP est donnée ci-dessous : On constate tout de suite que l'en-tête est plus importante que celle d'un datagramme UDP. Les champs de l'en-tête sont les suivants : ● le port source et le port destinataire ; ● le numéro de séquence qui identifie le premier octet de données de la zône de données ; ● le champ acquittement qui identifie le prochain octet qui devra être envoyé ; ● long HD qui représente la longueur de l'en-tête (en mots de 32 bits) ; ● le drapeau URG qui indique que le champ "urgent pointer" contient un pointeur vers des données urgentes ; ● le drapeau ACK qui valide le champ d'acquittement ; ● le drapeau PSH qui indique que le récepteur doit transmettre immédiatement les données reçues à l'application concernée ; ● le drapeau RST qui indique une demande de ré-initialisation de la connexion TCP ; ● ● ● ● ● le drapeau SYN qui indique une demande de synchronisation ; le drapeau FIN qui indique une fin d'émission ; la taille de la fenêtre en octets ; le champ de contrôle d'erreur ; urgent pointer qui pointe le dernier octet de données urgentes dans la zône de données ; Lors de l'établissement d'une connexion TCP, une conversation en trois étapes s'effectue (three-way handshake) : 1. l'émetteur envoie un segment avec un drapeau SYN et un numéro de séquence initial (qui peut être une valeur aléatoire) 2. le récepteur répond par un segment comportant le champ ACK validé et un numéro d'acquittement qui est le prochain numéro de séquence qu'il espère recevoir ; le segment indique également la validation avec SYN et le numéro de séquence initial propre au récepteur (ainsi émetteur et récepteur échangent leurs numéros de séquence initiaux) 3. l'émetteur acquitte le segment envoyé par le récepteur par l'envi d'un segment comportant le champ ACK validé et le champ numéro d'acquittement rempli. Lors de l'échange ultérieur, chaque segment comportera un numéro de séquence et un numéro d'acquittement. Si le volume de données par segment est de n octets et si le numéro de séquence initial est s0, alors un numéro de séquence sera de la forme : s = s0 + k*n + 1 si k segments de données ont été déjà envoyés sans problème. Il en est de même pour le numéro d'acquittement. La fin d'une connexion peut être décidée par l'un quelconque des interlocuteurs. Celui qui décide de mettre fin à la connexion envoie un segment comportant le drapeau FIN, l'autre répond par un acquittement. Cependant, comme une connexion TCP est full-duplex, cette procédure est à effectuée dans les deux sens (autrement dit mettre fin à une connexion d'émission n'empêche pas de continuer à recevoir des segments de la part du récepteur). Les deux protocoles UDP et TCP correspondent à des besoins différents : ● TCP a pour rôle d'établir une connexion , de contrôler les erreurs, de ré-ordonnancer les datagrammes pour reconstituer le message ou à l'inverse de fractionner un message en plusieurs datagrammes. Ce protocole est utile pour un volume important d'informations. ● UDP n'est pas orienté connexion et n'effectue pas de contrôle d'erreur. Par suite, il est plus rapide, mais moins fiable. Ce protocole est utilisé pour la transmission d'informations de faible taille, voire répétitive. HTTP HTTP (HyperText Transport Protocol) est un exemple de protocole de la couche application d'Internet. HTTP désigne le protocole utilisé par l'application communément appelée World Wide Web (WWW) ou simplement Web. Cette application est un dispositif client-serveur où le client demande à un serveur de lui envoyer des documents. Ces documents sont simples ou composites et la demande comme la réception de documents est effectuée sur le poste client par un logiciel spécifique appelé navigateur (browser). Principe du serveur http Un serveur HTTP est un ensemble composé d'une plate-forme informatique, d'un logiciel serveur et de documents. Le logiciel serveur est appelé httpd (http daemon) ou https (http server). Dans la suite, on désignera le logiciel serveur par httpd. Les types de documents pouvant être transmis du serveur au client sont des pages HTML, du texte pur (txt), du texte Postscript (ps), du son (au), des images (gif, jpg), des images animées (mpeg), des animations 3D (vrml), des applets (java). Mais attention aux documents composites pour les temps de réponse (1 document HTML contenant 3 images nécessite 4 requêtes). HTML (HyperText Mark-up Language) est un langage de description de document dérivé de SGML. Il permet de décrire un document composite comportant du texte et des images. Fonctionnement du protocole http Examinons le protocole HTTP dans le cas où le client demande un document. ● Etape 1 : Le serveur attend une requête ● Etape 2 : Un client émet une requête vers le serveur dont il connaît l'adresse URL : GET /document.htm HTTP/1.0 <CRLF> ● ● Cette chaîne de caractères est mémorisée par le serveur. GET est une méthode ; /document.htm est un document HTML situé sous la racine du serveur ; HTTP/1.0 indique le protocole et sa version. Etape 3 : Le serveur analyse la requête. Etape 4 : Le serveur lit la suite de la requête : Accept : */* <CRLF> Accept : image/gif <CRLF> Accept : image/jpeg<CRLF> Accept : text/plain <CRLF> Accept : text/HTML<CRLF> <CRLF> ● L'attribut Accept indique le type de document que le navigateur peut recevoir. Le code <CRLF>, situé tout seul sur une ligne indique la fin de la requête. Etape 5 : Exécution de la méthode : recherche du document à partir du gestionnaire de fichier du système d'exploitation. Deux cas sont à considérer : Succès : envoi du document : HTTP/1.0 200 Document follows <CRLF> Server : NCSA/1.4 <CRLF> Date : Mon, 20 Dec 1997 22.00.00 GMT <CRLF> Content-type : text/html <CRLF> Content-length : 1328 <CRLF> Last-modified : Mon, 15 Jun 1993 14.23.96.78 GMT <CRLF> Envoi du fichier demandé <CRLF> <CRLF> Echec : envoi d'un message ● HTTP/1.0 403 Not Found <CRLF> Server : NCSA/1.4 <CRLF> Date : Mon, 20 Dec 1997 22.00.00 GMT <CRLF> Content-type : text/html <CRLF> Content-length : 0 <CRLF> <CRLF> Etape 6 : Fermeture du fichier, fermeture de la connexion entre le client et le serveur. ● Etape 7 : Le serveur httpd se remet à l'écoute. Dans la description ci-dessus, un certain nombre d'attributs méritent quelques explications : a) méthodes : Il n'y en a pas beaucoup : GET retourner l'objet demandé HEAD retourner seulement les informations sur l'objet demandé POST stocker l'information (généralement via un script) PUT envoyer une nouvelle copie DELETE détruire l'objet (les deux dernières ne sont pas toujours autorisées sur le serveur) b) codes : 200 Document follows (tout va bien) 301 Moved Permanently (le document a été déplacé définitivement) 302 Moved Temporarily (le document a été déplacé temporairement) 304 Not Modified (document non modifié depuis une date spécifiée) 401 Unauthorized (document protégé) 402 Payment Required (droits à acquitter) 403 Forbidden (illégal) 404 Not Found (pas trouvé) 500 Server Error (erreur de serveur) 501 Not implemented (non implémenté) c) type MIME (Multipurpose Internet Mail Extensions) définition des types de documents : text/plain ascii pur text/html document HTML application postscript document en Postscript image/gif image en format gif image/jpeg image en format jpeg audio/basic son video/mpeg images animées x-world/x-vrml animation 3D exemple : récupération de pages Web sur un serveur http. En Visual Basic, il est possible de programmer une application qui affiche le contenu d'une page Web dans une fenêtre de texte. On constitue pour cela un projet contenant le module DSSock.bas et un module Webessai.frm (dans la feuille associée, on place un contrôle DSSock). Le source de Webessai.frm est donné ci-dessous : Option Explicit Dim szReceived As String Dim serv As String Dim fic As String Private Sub DSSocket1_Connect() gnConnected = True End Sub Private Sub DSSocket1_Receive(ReceiveData As String) szReceived = szReceived & ReceiveData End Sub Private Sub DSSocket1_SendReady() gnSendReady = True End Sub Private Sub DSSocket1_Close(ErrorCode As Integer, ErrorDesc As String) Me.txtText.SelStart = L'en(Me.txtText) + 1 Me.txtText.SelText = szReceived szReceived = "" Screen.MousePointer = vbDefault Enabled = True gnConnected = False End Sub Private Sub Form_Load() dsSocket1.LineMode = True dsSocket1.EOLChar = 10 Enabled = False Screen.MousePointer = vbHourglass Show serv = "gmcpc" fic = "index.htm" If SocketConnect(dsSocket1, 80, serv, 20) Then Screen.MousePointer = vbDefault Enabled = True MsgBox "Erreur de connexion : " & Error Exit Sub Else SendData dsSocket1, vbCrLf & "GET /" & fic & vbCrLf & vbCrLf End If End Sub Le nom du serveur est placé dans la variable serv et le nom du fichier html est placé dans la variable fic. Requêtes simultanées Un logiciel httpd se doit de gérer des requêtes simultanées. Plusieurs méthodes sont employées. ● méthode de la filiation : httpd crée un processus fils httpdi à chaque connexion pour gérer celle-ci. Pour 3 connexions simultanées, on aura donc la situation suivante : ● méthode du " temps partagé " : les connexions sont traitées morceau par morceau avec des temps d'attente et des temps d'exécution. ● méthode du pool d'auxiliaires : httpd se borne à écouter, comme dans la méthode de la filiation, mais au contraire de celle-ci, seul un nombre fixé d'auxiliaires exécutent les requêtes. Il convient de noter qu'une machine peut être multi-serveur, c'est à dire héberger plusieurs serveurs Web ; il faut évidemment leur attribuer des ports différents. Par exemple , une machine peut héberger 3 serveurs Truc, Chose et Machin avec les affectations : Truc : port 80 ; Chose : port 8080 ; Machin : port 8081 Quelques serveurs httpd Les serveurs httpd disponibles à un coût raisonnable sont de plus en plus nombreux. Donnons en quelques exemples : ● Apache est le serveur http le plus utilisé et est disponible pour la plupart des plates formes, mais à l'origine conçu pour les plates formes Unix (en fait Linux).Il peut être téléchargé à partir de ftp://ftp.ibp.fr/pub/www/apache/dist/apache_1.1.1.tar.gz. ● MIIS (Microsoft Internet Information Server) est un serveur Web/FTP/Gopher qui comprend Windows NT 4.0 et MSDN (MicroSoft Developer Network). On peut le télécharger depuis le serveur de Microsoft (http://www.microsoft.com/). Il est assez complet et bien répandu actuellement. ● EMWAC (Centre Académique Européen de Microsoft Windows NT en république tchèque) offre un serveur gratuit pour Windows NT (mais qui ne supporte pas WinCGI - voir plus loin). Voir http://emwac.ed.ac.uk/html/internet_toolchest/https/contents.htm. ● HTTPD, le serveur de Bob Denny que l'on peut télécharger à partir de http://www.city.net/win-httpd/ peut être acquis pour un coût de l'ordre de 550 F (version 1.4C pour Windows NT) WebSite est aussi conçu par Bob Denny ; c'est un produit qui a une bonne critique et qui peut être téléchargé à partir de http://website.ora.com pour un coût de l'ordre de 3000F. Voir aussi http://gnn.com/gnn/bus/ora/news/c.website.html. ● ● Netscape propose des serveurs à partir de 3000F . Voir http://home.mcom/comprod/server_central/index.html ou http://www.netscape.com/comprod/netscape_commun.html. Ces serveurs ne supportent pas WinCGI maisWeblink pour Visual Basic le remplace. Serveur Web Personnel (Personal Web Server - PWS) de MicroSoft est un petit serveur très pratique qui permet de tester ses sites Internet et même de monter un Intranet. Il est également téléchargeable gratuitement à partir du serveur Web de MicroSoft. En fait, PWS est un sous-produit de IIS. Il ne faut toutefois pas le confondre avec le serveur personnel de FrontPage qui porte le même nom, mais qui est beaucoup moins performant (quand on utilise FrontPage, il faut soit utiliser le serveur personnel FrontPage, soit PWS (mieux), mais il est déconseillé d'utiliser simultanément les deux). ● Webstar est un serveur pour Macintosh. Voir http://www.starnine.com. ● Pour trouver des références de logiciels serveurs Web : http://www.w3.org/hypertext/WWW/Svers.html, http://sunsite.unc.edu/chris/daemons/index.html, http://www.yahoo.com/Computers_and_Internet/Internet/Word_Wide_Web/HTTP/Servers. HTML HTML (HyperText Mark-up Language) est le langage de description d'un document fourni par un serveur http. Il dérive de SGML (Standard Generalized Mark-up Language) et a été développé spécifiquement pour le Web. Ce langage utilise des balises (tags) signalées par les signes "<" et ">"pour indiquer comment sont formatés les documents. La structure d'un document HTML est la suivante : <HTML> <HEAD> ------------ </HEAD> <BODY> -----------</BODY> </HTML> La plupart des balises s'utilisent par paires : <balise> et </balise> pour encadrer la partie du document qui doit hériter des attributs spécifiés dans les balises. <HTML> et </HTML> indiquent le début et la fin du document HTML. Ce document se compose de deux parties : l'en-tête, encadrée par <HEAD> et </HEAD> et le corps, encadré par <BODY> et </BODY>. Les balises permettent ● de préciser le style ● d'insérer des images de définir des listes ● ● ● ● de définir des tableaux de définir des cadres de définir des formulaires Par ailleurs, l'hypertexte permet de définir des liens sur des objets du document (texte ou image). Chaque lien définit une référence à un fichier par son URL (Uniform Resource Locator). Les URL sont également utilisées pour lier des ressources à un document HTML ; ainsi pour insérer une image on utilisera la balise IMG : <IMG src="http://www.truc/site_untel/images/image08> On trouvera aux adresses (URL) suivantes des guides de HTML : http://www.yahoo.com/Computers_and_Internet/Internet/World_Wide_Web/Information_and_Documentation/Beginner_s_Guides/Beginner_s_HTML/ http://www-leland.stanford.edu/~ttores/Internet/toc.html CGI, Perl, java, javascript L'interactivité, toujours recherchée, nécessite de pouvoir donner à l'utilisateur la possibilité d'effectuer des traitements (exécuter des programmes). Diverses techniques sont employés dans ce but : ● la plus ancienne est CGI (Common Gateway Interface) qui est un protocole permettant d'effectuer un programme qui se trouve au niveau du serveur. Ces programmes peuvent être, en principe, écrits dans un langage de programmation quelconque ; un langage très employé pour l'écriture de "scripts CGI" est Perl. Java est également un langage assez employé. CGI a été (et est encore) utilisé pour des serveurs sur plate-forme UNIX ; il existe aussi des possibilités pour les serveurs sous Windows : WinCGI. ● une autre façon de procéder est de lier un document à des programmes qui peuvent être téléchargés de manière transparente pour l'utilisateur. Dans ce cas, l'exécution s'opère au niveau du poste client. Les applets java appartiennent à cette catégorie. Il s'agit de programmes écrits en java et compilés qui sont liés à des documents HTML. ● une version du procédé ci-dessus est également fournie avec javascript qui est un langage interprété, plus simple que java ; les scripts écrits en javascript apparaissent en clair dans le document HTML et font partie inhérente du document. On trouvera une introduction à javascript à l'adresse : http://www.u-picardie.fr/~cochard/javascript. Bibliographie K.JAMSA,K.COPE Internet Programming Jamsa C. SERVIN Telecoms, de la transmission à l'architecture de réseaux Masson W. STALLINGS Data and Computer Communications Prentice Hall P. ROLLIN, G. MARTINEAU, L. TOUTAIN, A. LEROY Les Réseaux, principes fondamentaux Hermes A. TANENBAUM Réseaux InterEditions N.J. YEAGER, R.E. McGRATH Technologie des serveurs Web International Thomson Publishing C. FRANKLIN Programmation Internet en Visual Basic International Thomson Publishing CNRS & Universités L'Internet professionnel CNRS Editions