tcp-ip et technologie de l'internet

publicité
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
Téléchargement