Application Hypermedia
Application Hypermedia
1
TCP / IP
I - TCP/IP et les réseaux
I-A- Pourquoi un protocole ?
Un protocole de communication est un ensemble de règles permettant à plusieurs ordinateurs,
éventuellement sur des réseaux physiques différents et utilisant des OS différents, de dialoguer entre eux.
Ainsi grâce à TCP/IP, des ordinateurs sous UNIX et sur un réseau Ethernet peuvent dialoguer avec des
ordinateurs sous NT sur un réseau Token-Ring.
TCP/IP peut fonctionner :
- sur des réseaux locaux physiques de type Ethernet, Fast Ethernet, Token-Ring, FDDI
- sur des réseaux de type WAN comme ATM, LAPB ou des liaisons par RTC ou LS.
I-B- Rappel du modèle OSI de l’ISO
I- B- 1- Les couches
Le modèle OSI1 de l’ISO2 permet de définir un modèle pour des ordinateurs communicants. Tout ordinateur
conforme à ce modèle peut dialoguer avec ces homologues en utilisant le même "langage" et les mêmes
méthodes de communication.
Le modèle est composé de 7 couches.
Chaque couche assure une fonction bien déterminée.
Chaque couche utilise les services de la couche inférieure. Par exemple la couche Réseau utilise les
services de la couche Liaison qui utilise elle-même les services de la couche Physique.
Chaque couche possède un point d'entrée pour les services offerts, nommé SAP =Service Access Point.
Ainsi la couche Session possède un point d'accès SSAP et la couche Transport un point d'accès TSAP.
Chaque couche d'un ordinateur dialogue avec la couche homologue d'un autre ordinateur en utilisant un
protocole spécifique à la couche (Données de protocole = PDU =Protocol Data Unit).
Ordinateur Ordinateur
A Data Data B
Application
Application A A Application
Protocol Data Unit
ASAP ASAP
Presentation
Présentation P P Présentation
Protocol Data Unit
SSAP SSAP
Session
Session S Protocol Data Unit S Session
TSAP TSAP
Transport
Transport T Protocol Data Unit T Transport
NSAP NSAP
Network
Réseau N Protocol Data Unit N Réseau
LSAP Data Link LSAP
Liaison L Protocol L Liaison
Data Unit
PSAP PSAP
Physique Bits Physique
Média
Figure I-1 : Modèle OSI de l'ISO.
2
I- B- 2- Rôle des couches
o Dans le mode datagramme, les paquets générés par la couche contiennent une adresse source et
une adresse destination. Aucun chemin n'est établi par avance et les paquets peuvent passer par
des chemins différents. Aucune vérification n’est assurée tant qu’au séquencement des paquets à leur
arrivée.
o Dans le mode circuit virtuel, une connexion est établie entre les nœuds communicants ainsi qu’un
contrôle du séquencement et de la validité des trames transmises. Un contrôle de flux est aussi
assuré.
La couche LLC peut assurer trois types de services aux couches supérieures:
Type 1 : Service de datagramme sans accusé de réception en mode point à point, multipoint
ou diffusion.
Type 2 : Services de circuits virtuels. Assure les services de séquencement, de contrôle de
flux et de correction d’erreur.
Type 3 : Service de datagramme avec accusé de réception.
Application
Protocoles
des
Présentation
couches
supé-
rieures
Session
Transport
IEEE 802.2
Type 1 : Mode datagramme sans accusé de réception.
LLC Type 2 : Mode avec circuit virtuel.
Réseau LLC Type 3 : Mode datagramme avec accusé de réception.
MAC MAC MAC
MAC CSMA CD Token Bus Token Ring
Liaison MAC
802.3
802.5
802.4
UTP Coaxial Paires
Couche 10 ou 100 Mbps 1 5 et 10 Mbps torsadées
Physique Physique Physique Coaxial Fibre optique 4 ou 16 Mbps
Fibre Optique 5 10 20 Mbps
Data Data
Messages
Application A A Application
Segments
Hôte à hôte T T Hôte à hôte
Datagramme
Internet N N Internet
Trame
L L
Accès réseau Bits
Accès réseau
ISO DoD
Applicatio
n
Présentati Application
on
Session
Transport Hôte à hôte
Réseau Internet
Liaison
Accès
Physique
réseau
Figure I-5 : Comparaison modèle OSI et modèle DoD.
PPP
115.0.0.0
Dans la figure ci-dessus, imaginons que le nœud 25 du réseau Token-Ring désire envoyer des données au
nœud 36 du réseau Ethernet 2. Le type de trame, la méthode d’accès, le système d’adressage et le débit du
réseau Token-Ring sont incompatibles avec ceux du réseau Ethernet. Les données ne peuvent être
transmises en l’état. Elles doivent, grâce aux routeurs du réseau, changer de type de trame à chaque nouveau
type de réseau.
Un système d’adressage, indépendant du type de réseau physique, doit être utilisé pour désigner de façon
unique chaque nœud sur l’inter-réseau. Le protocole IP possède ce type d’adressage composé d’une adresse
réseau (NetID= Network ID ) et d’une adresse nœud (HostID = Host ID) sur chaque réseau.
Par exemple, 125, 120, 115 et 119 désignent respectivement les adresses réseaux des réseaux Token-Ring,
Ethernet 2, la liaison asynchrone en PPP7 et Ethernet 1.
L’adresse 125.0.0.25 désigne l’adresse du nœud 25 sur le réseau 125. L’adresse 119.0.0.36 désigne le nœud
36 sur le réseau 119 Ethernet 2.
Chaque routeur est équipé d’au moins 2 interfaces réseaux. Des tables de routage internes à chaque routeur
permettent de connaître le chemin à emprunter pour transporter des données d’un nœud à un autre. Lorsque
le paquet IP arrive dans une trame Token-Ring dans le routeur 1 à destination du nœud 36 du réseau Ethernet
2, celui-ci lit l’adresse IP de destination, et repositionne le paquet IP dans une trame Ethernet. Lorsque la
trame parvient au routeur 2, le paquet est positionné dans des trames PPP. Puis lorsqu'il arrive au routeur 3,
il est repositionné dans une trame Ethernet. L’adresse IP de destination n’a pas changé pendant tout le
parcours, par contre, les adresses physiques (MAC) ont été modifiées sur chaque réseau.
5
V -IV - Couches
V-A- IV-A- TCP/IP et les modèles ISO et DoD
La suite des protocoles appelée aussi pile de protocoles8 IP ne correspond pas au modèle OSI de l’ISO,
celui-ci a été normalisé en 1979, il est donc postérieur à la création de TCP/IP.
La pile de protocoles IP correspond au modèle DoD (Department of Defence). Le dessin suivant montre
l’équivalence entre ces couches et les différents protocoles de la pile. Les protocoles correspondant aux
couches 6 et 7 ISO sont des applications de transmissions qui s'appuient sur TCP/IP. Les couches 1 et 2
dépendent du type de réseau utilisé.
Tous les standards (normes) de la communauté Internet sont publiés sous forme de RFC9. Chacune est
identifiée par un numéro et décrit le fonctionnement d'un protocole de la pile TCP/IP ou d'un matériel comme
par exemple les routeurs IP.
8 Protocol Stack
9 RFC = Request For Comments
6
Protocoles transport
HTTP HyperText Transfert Service de distribution de pages en hypertexte sur des serveurs WEB.
Protocol
Telnet Telecommunications Fournit un service d’émulation de Terminal.
Network
Rlogin Remote Login Commande Unix permettant la connexion des terminaux à d'autres serveurs
Unix du réseau.
FTP File Transfert Protocol Permet l'échange de fichiers complets entre ordinateurs.
SMTP Simple Mail Transfer Offre une fonction importante de messages de texte entre hôtes.
Protocol
DNS Domain Name Service Propose des services de répertoires. DNS est un service complexe qui
permet d'associer un nom et une adresse.
SNMP Simple Network Protocole de management de réseau.
Management Protocol
NFS Network File System Système de fichiers en réseau.
TFTP Trivial File Transfert Protocole simplifié de transfert de fichiers utilisé principalement par les
Protocol clients sans disque.
BOOTP Bootstrap Protocol Protocoles fournissant une adresse IP de façon dynamique au démarrage
Dynamic Host des stations.
DHCP Configuration Protocol
Figure IV-4 : Couches 6 et 7. Applications utilisées avec TCP / IP.
7
VI -V - Fonctionnement de la pile de protocoles IP
Hôte source Hôte destination
Application Messages ou flot (stream) Application
Accès Accès
Réseau Réseau
Trames du Réseau Physique
Réseau Physique
Données utilisateur
Application
En-tête Données utilisateur
applicatif
8
Les protocoles ARP, RARP, ICMP et IGMP attaquent directement le datagramme IP. Le champ type de cette
trame permet de savoir quel est le protocole utilisé dans le champ de données.
VI- A- 1-V- A- 1- Encapsulation IP dans les diverses trames Ethernet
Le standard réseau Ethernet d'origine a été repris et modifié par le Comité 802 de l'IEEE. Il existe donc
plusieurs définitions de types de trames Ethernet. Quel que soit le type de trame, il faut cependant que les
paquets IP puissent y être encapsulés. Dans la norme de l'IEEE la couche liaison est divisée en 2 sous-
couches :
la couche MAC (802.3) qui correspond à la gestion de CSMA/CD et à l'interfaçage avec la couche
physique.
la couche LLC (802.2) qui définit le contrôle de la liaison. Cette fonction est commune a tous les
types de réseaux physiques.
La trame Ethernet_802.2 définie par l'IEEE contient des champs supplémentaires par rapport à la trame
Ethernet. Ce sont les champs DSAP et SSAP (Destination et Source Service Access Point). Le champ
contrôle contient la valeur 03 en hexadécimal.
Dans la trame Ethernet_SNAP, les 3 octets du champ Org sont à 0. Le champ type contient la valeur qui est
contenue dans le champ Type de la trame Ethernet. Cette valeur représente le code du protocole utilisé dans
le champ de données de la trame Ethernet.
Encapsulation Trame Ethernet II RFC 894
Adresse Adresse type FCS
Destination Source
Données
6 6 2 46-1500 4
type
0800 Datagramme IP
2 46-1500
type Requête/réponse PAD
0806 ARP
2 28 18
type Requête/réponse PAD
8035 RARP
2 28 18
Figure V-3 : Encapsulation de IP dans des trames Ethernet II.
6 6 2 1 1 1 3 2 33-1492 4
type
0800 Datagramme IP
2 38-1492
type Requête/réponse PAD
0806 ARP
2 28 10
type Requête/réponse PAD
8035 RARP
2 28 10
9
VI-B- V-B- Multiplexage et Démultiplexage
VI- B- 1-V- B- 1- Multiplexage
Le champ "Type" dans une trame Ethernet permet d'indiquer le code des différents types de protocoles (IP,
ARP et RARP). De même au niveau IP, le champ "Type" de l’en-tête IP, permet de transporter TCP ou UDP.
Enfin au niveau transport, les numéros de ports indiquent les applications concernées. Cette propriété de
mélanger les protocoles est appelée multiplexage
HTTP FTP Telnet SNMP TFTP HTTP FTP Telnet SNMP TFTP
IP IP
Ordinateur Ordinateur
A ETHERNET B ETHERNET
Réseaux
ARP RARP
Code 0806 Code 0800 Code 8035 Le démultiplexage à ce niveau
Driver est assuré grâce au code
Ethernet contenu dans le champ 'Type'
de l'en-tête Ethernet.
Trame Ethernet
10
VII -VI - Adresses IP
Au niveau de la couche Liaison, les nœuds du réseau communiquent avec les autres stations en utilisant des
adresses qui dépendent du type de réseau utilisé. Un nœud peut être un micro-ordinateur, un serveur de
fichier, une imprimante réseau ou n’importe quel périphérique utilisant TCP/IP. Chaque nœud possède une
adresse physique ou adresse MAC10.
Dans les réseaux Ethernet et Token-Ring, l’adresse physique est contenue dans une ROM sur chaque
interface réseau. Toutes les adresses sont différentes et comportent 6 octets. Cette adresse est déterminée
par le constructeur de l’interface selon un plan de numérotation à l'échelle mondiale.
Dans le réseau X25, l’adresse déterminée par le concessionnaire du réseau comporte au maximum 15 chiffres
décimaux.
Dans le réseau LocalTalk d'Apple, l’adresse comporte un octet pour déterminer le numéro du réseau et 2 pour
déterminer le numéro de la station.
VII-A- VI-A- Généralités
Les adresses IP au contraire sont des adresses logiques. Elles sont indépendantes du type de réseau utilisé.
Dans la version 4 de IP, elles comportent toujours 32 bits, dont une partie identifie le réseau (NetID), l’autre
le nœud sur ce réseau (HostID).
VII- A- 1-VI- A- 1- Types d'adresses
Unicast : Adresse permettant l'adressage d'une seule machine.
Multicast : Adresse correspondant à un groupe de machines.
Broadcast : Adresse correspondant à toutes les machines d'un réseau.
VII-B- VI-B- Représentation des adresses IP
La représentation de cette adresse se fait dans une notation “décimale pointée” (dotted-decimal notation),
c’est-à-dire que chaque octet de l’adresse est représenté par un nombre décimal, séparé du suivant par un
point. Par exemple :
7 bits 24 bits
0 Net ID Host ID
10 Net ID Host ID
10MAC = Medium Access Control
11
Figure VI-3 : Adressage IP Classe B.
VII- C- 3-VI- C- 3- Classe C
Dans cette classe l’adresse du réseau est codifiée sur 21 bits et l’adresse hôte sur 8 bits
21 bits 8 bits
Pour faciliter le routage les adresses IP de classe C correspondent à des emplacements géographiques :
Adresses Zone géographique
192.0.0 à 193.255.255 Adresses allouées avant la répartition géographique. Elles correspondent donc à
plusieurs régions.
194.0.0 à 195.255.255 Europe
198.0.0. à 199.255.255 USA
200.0.0 à 201.255.255 Amériques centrale et du Sud
202.0.0 à 203.255.255 Pacifique
28 bits
27 bits
11110 Réservé
13
VIII -VII - Réseaux et sous-réseaux
Un réseau peut être divisé en sous-réseaux afin de pouvoir :
- éviter le gaspillage des adresses nœuds d’un réseau
- utiliser des supports physiques différents.
- réduire le trafic sur le réseau.
- isoler une partie du réseau en cas de défaillance d'un composant du réseau.
- augmenter la sécurité.
Chaque sous-réseau est relié à un autre par un routeur.
Exemple :
Sous-réseau 1
Routeur
Réseau
195.123.125.0 Sous-réseau 2
Internet
Sous-réseau 3
Net ID Host ID
Routeur
14
Net ID Host ID
Masque de
11111111 11111111 11111111 1111 0000 sous-réseau
124
15
VIII-B- VII-B- Exemple en classe B
16
IX -VIII - Les services d’application utilisant TCP
Des applications réseau sont directement liées à la pile de protocole TCP/IP et la version "client" de ces
applications est souvent livrée avec la pile de protocoles. Ces applications permettent par exemple le transfert
de fichier (FTP), l'émulation de terminal en réseau (Telnet), l'affichage de page HTML (serveur et navigateur
WEB), fonctions de nommage (DNS), …
Suivant les cas et le besoin de fiabilité des applications, elles utilisent soit le protocole TCP, soit le protocole
UDP comme protocole de transport.
IX-A- VIII-A- Ping
Ping (Packet Internet Grouper) est une application qui permet de vérifier le bon fonctionnement des
composants d'un réseau utilisant TCP/IP. Elle permet par essais successifs de tester la pile IP et l'interface
réseau de l'ordinateur sur lequel on se trouve, puis de tester les liaisons avec les autres machines du réseau.
Cette application utilise le protocole ICMP véhiculé par IP.
Connexion TCP
sur réseau
17
Le système renvoie un message, précédé de son code (150), suivi du nom du fichier, de l'adresse IP destination et du port FTP.
Telnet Telnet
xxx CLIENT
23
TCP Telnet TCP
IP IP Serveur
Login
Physique Telnet
Physique
Driver de TCP/IP
terminal Driver
TCP/IP Pseudo terminal
Connexion TCP
sur réseau
Commande Fonction
rlogin Permet une connexion sur l'ordinateur spécifié.
rexec Permet d'exécuter une commande sur l'ordinateur distant
rsh Permet d'exécuter un shell sur un ordinateur distant.
rcp Permet la copie de fichiers entre machines distantes.
rwho Affiche les utilisateurs connectés sur le réseau.
18
rwall Transmet un message aux utilisateurs connectés aux machines indiquées.
ruptime Affiche des informations sur les ordinateurs du réseau.
Figure VIII-6 : Commandes r*
TCP TCP
- HTTP – TCP - IP IP
IP
sur le réseau
19
IX- F- 2-VIII- F- 2- POP et IMAP4
Le message est ensuite acheminé vers le serveur sur lequel est connecté le destinataire. Celui-ci n'étant pas
forcément relié en permanence à ce serveur, il existe une boîte aux lettres personnelle dans laquelle seront
stockés tous les messages non lus.
Le destinataire consulte sa boîte aux lettres et récupère ses messages grâce au protocole POP3 17. Un
protocole plus récent IMAP418 est parfois utilisé. Il possède l'avantage de permettre la consultation des
messages sur le serveur sans forcement les rapatrier dans la station.
Le destinataire
L'utilisateur A
Serveur de Serveur de va lire son
envoie le
messagerie messagerie message sur le
message
SMTP Internet POP3 serveur POP3
RTC RTC
Racine
Domaines
premier arpa com edu gov int mil net org ae fr us zw
niveau
Domaines
troisième market paye compta
niveau
DNS Légende
53 Serveur DNS au Requête
UDP Réponse
niveau racine
IP
Physique
3 4
1 2 6 5
Serveur DNS
du domaine Serveur DNS
7 de Dubois
Serveur Web
8 www.dubois.fr
Figure IX-2 : Fonctionnement DNS.
-1- L'utilisateur tape l'URL dans le navigateur Web de sa station http://www.dubois.fr. Un programme
nommé résolveur de nom va interroger le serveur DNS de la zone de l'utilisateur pour connaître
l'adresse IP correspondant à www.dubois.fr.
-2- Une requête est envoyée par le résolveur au serveur DNS. Ce serveur de noms de domaine ne
connaît pas l'adresse IP. Il va donc interroger le serveur de nom du niveau racine.
-3- Le serveur DNS de la zone de l'utilisateur envoie une requête au serveur DNS du niveau racine.
-4- Ce serveur ne connaît pas non plus l'adresse IP. Il interroge le serveur DNS du domaine dubois.fr
-5- Ce serveur DNS renvoie une réponse qui contient l'adresse IP. Elle est mise en cache dans le
serveur DNS du niveau racine.
-6- Ce serveur renvoie la réponse vers le serveur DNS demandeur. Celui-ci met l'adresse dans un
cache pour éviter d'autres requêtes ultérieures
-7- L'adresse IP demandée est fournie au résolveur de la station utilisateur qui la met aussi en cache.
-8- La connexion est établie à travers le réseau Internet vers le serveur Web .
/ C E:
:
usr etc bin Dos Win alain michel
export pierre
Ordinateur sous alain michel PC Sous DOS , Montage du répertoire
Unix avec client Windows ou OS2 NFS exporté
pierre
NFS avec client NFS
Montage distant
Figure IX-4 : Exportation NFS.
La figure ci-dessus montre un répertoire export exporté par le serveur NFS d'un ordinateur tournant sous
UNIX.
L'ordinateur client UNIX voit ce répertoire comme une extension de son propre système de fichiers UNIX.
La station PC monte le répertoire exporté pour le faire apparaître comme une unité de logique DOS-Windows
E:.
23
X-C- IX-C- TFTP
TFTP22 est un protocole qui est une version allégée de FTP. Il utilise UDP comme protocole de transport.
Celui-ci n'étant pas fiable, TFTP se sert de son propre système d'accusé de réception pour assurer une bonne
qualité de transmission.
TFTP est utilisé principalement pour charger à partir d'un serveur TFTP, le système d'exploitation d'ordinateurs
sans disque ou de terminaux X-Windows par exemple. Il est aussi utilisé pour assurer le mise à jour des OS
des matériels réseaux (hubs, ponts, commutateurs, routeurs) contenus dans des mémoires non volatiles, mais
réinscriptibles.
Routeur Cisco
Ancienne TFTP TFTP
version de EEPROM xxxx 69 Fichier
l'IOS Cisco UDP UDP contenant
Client IP IP la nouvelle
TFTP version de
Physique Paquets de Physique
512 octets l'IOS Cisco
Serveur SNMP
xxx
Agent
Agent Routeur Snmp
UDP
Snmp IP
Physique Agent Hub
Snmp
Station de gestion de
réseau NMS SNMP
Agent 161
Pont
Snmp UDP
IP
Physique
24
A partir de la station de gestion, l'administrateur du réseau peut consulter ou modifier la configuration des
éléments du réseau. Cette fonction est réalisée grâce à une procédure du type requête-réponse.
Trap Alarme
25
XI -X - Fichiers associés à TCP/IP
TCP/IP utilise 4 fichiers de base de données pour convertir des données internes, telles que les adresses IP,
en noms plus faciles à utiliser. Le contenu de ces fichiers une fois lu, est placé en mémoire cache pour éviter
des accès répétitifs aux disques. Ces fichiers, en mode texte, se trouvent en général dans le répertoire \etc
des hôtes TCP/IP.
XI-A- X-A- Fichier Hosts
Ce fichier, que l'on écrira avec un éditeur de texte simple, contient des entrées qui permettent de rendre une
adresse IP équivalent à un ou plusieurs noms.
La syntaxe est la suivante :
adresse_IP nom_d'hôte [alias [...]]
L'adresse_IP est donnée en notation décimale point ou en valeur hexadécimale commençant par 0x.
Le nom_hôte est le nom du système associé à l'adresse IP. Ce nom ne doit pas contenir d'espace et doit être
unique.
L'alias est un autre nom qui désigne le système ou une autre manière de l'écrire (Majuscules-minuscules ou
abréviations).
Exemple de fichier \etc\hosts : Les lignes précédées de # sont des commentaires.
#
# Mapping of host names and host aliases to IP Addresses
#
127.0.0.01 loopback lb localhost # loopback address
#
# exemples d'adresses, de noms d'hôtes et d'alias
126.0.0.1 Mugix MUGIX mugix mu
126.0.0.2 Jarrix JARRIX jarrix ja
126.0.2.1 GEMINI gemini gem
126.0.2.2 APOLLO apollo apo APO Apo
Figure X-1 : Exemple de fichiers hosts.
#
# Networks numbers
#
loopback 127 # réseau fictif interne pour bouclage
#
# réseaux de l'inter-réseaux
angers 126 ang #réseau local afpa angers
greno 123 gre #réseau local afpa grenoble
Figure X-2 : Exemple de fichiers networks.
26
XI-C- X-C- Fichier Protocol
Le fichier \etc\protocol contient des informations sur les protocoles connus utilisés sur l'inter-réseau. Chaque
ligne fournit des informations sur un protocole.
La syntaxe est la suivante :
nom_protocole numéro_protocole [alias [...]]
Le nom_protocole est le nom du protocole associé au numéro qui suit.
Le numéro_protocole est le numéro du protocole.
L'alias est un autre nom donné au protocole.
Exemple de fichier \etc\protocol :
# internet (IP) protocols
ip 0 IP # protocol internet
icmp 1 ICMP #protocol de message d'erreurs dans l'inter-réseau
igmp 2 IGMP # protocol multicast
ggp 3 GGP # gateway-gateway protocol
tcp 6 TCP # protocol de transmission
udp 17 UDP # user datagram protocol
Figure X-3 : Exemple de fichier \etc\protocol.
XI-D- X-D- Fichier Services
Le fichier \etc\services contient des informations sur les services utilisés sur l'inter-réseau IP. La syntaxe est
la suivante :
nom_service numéro_port/nom_protocole [alias [...]]
Le nom_service est le nom de service associé au port dont le nom ou le numéro suit. Ces services sont des
services des couches session, présentation ou application, tels Telnet, FTP, TFTP ou SMTP.
Le numéro_port est le numéro de port utilisé par le service.
Le nom_protocole désigne le protocole auquel le service est lié. Il s'agit, en général, d'un protocole du niveau
transport comme TCP ou UDP.
L'alias est un autre nom donné au service
Exemple de fichier \etc\service
TCP Ports #UDP ports
# Service Name Port/Protocol Aliases # Service Name Port/Protocol Aliases
echo 7/tcp echo 7/udp
discard 9/tcp sink null discard 9/udp sink null
systat 11/tcp users systat 11/udp users
daytime 13/tcp daytime 13/udp
netstat 15/tcp netstat 15/udp
qotd 17/tcp quote qotd 17/udp quote
chargen 19/tcp ttytst source chargen 19/udp ttytst
ftp-data 20/tcp source
ftp 21/tcp time 37/udp timserver
telnet 23/tcp rlp 39/udp resource
smtp 25/tcp mail name 42/udp nameserver
time 37/tcp timserver whois 43/udp nicname
name 42/tcp nameserver nameserver 53/udp domain
whois 43/tcp nicname bootps 67/udp bootp
nameserver 53/tcp domain bootpc 68/udp
apts 57/tcp tftp 69/udp
apfs 59/tcp sunrpc 111/udp
rje 77/tcp netrjs erpc 121/udp
finger 79/tcp ntp 123/udp
link 87/tcp ttylink statsrv 133/udp
hostnames 101/tcp hostname profile 136/udp
iso-tsap 102/tcp tsap snmp 161/udp
x400 103/tcp snmp-trap 162/udp
x400-snd 104/tcp at-echo 204/udp
pop-2 109/tcp pop postoffice
Figure X-4 : Ports TCP et UDP.
27
XII -XI - Résolution de noms d'hôtes IP
Problème : Comment résoudre la correspondance entre les noms des ordinateurs en réseau et leur adresse
IP ?
Par exemple, la recherche d'un fichier sur un réseau utilise une UNC composée de 3 parties :
Un nom d'ordinateur NetBIOS précédé de \\
Un nom de partage situé sur l'ordinateur (option)
Un nom de répertoire ou de fichier au format MS-DOS situé dans le partage.
Exemple : \\berlioz\serv_nt4
Les Domaines Windows NT correspondent à un ensemble d'ordinateurs en réseau pour lesquels une base
de données d'authentification a été créée (SAM = Security Account Manager). Ce concept est spécifique à
Windows NT. Les noms de domaine sont créés au moment de l'installation du premier serveur NT dans un
domaine. Ce serveur est nommé Contrôleur Principal de Domaine (CPD).
microsoft.com ou ibm.com
Les noms des serveurs de l'Internet sont associés aux noms de domaines et se présentent sous la forme :
www.microsoft.com www.ibm.com
___________
28
XII-C- XI-C- Correspondance entre les noms des ordinateurs et les adresses IP
XII- C- 1-XI- C- 1- Solution de départ, le fichier Hosts
Pour de petits réseaux non connectés sur l'Internet, la correspondance entre les noms des ordinateurs et les
adresses IP peut être résolue localement grâce à une table consignée dans un fichier nommé hosts sur
chaque ordinateur. Cette méthode ne peut plus être utilisée lorsque le nombre d'ordinateurs sur le réseau
devient important, car tout ajout d'un nouvel ordinateur sur le réseau doit entraîner une mise à jour du fichier
hosts dans chaque ordinateur. De plus, ce système ne résout pas les problèmes de correspondance entre
les noms de serveurs sur Internet et leur adresse IP.
N.B. Le nom d'ordinateur donné dans le fichier hosts est purement local à l'ordinateur où il se trouve et ne
correspond pas forcément au vrai nom de l'ordinateur.
Domain Name System assure la correspondance entre le nom Internet complet d'un ordinateur
(nom de serveur + nom de domaine) et son adresse IP.
Pour utiliser ce service sur une station de travail Win95 ou NT, dans la fenêtre TCP/IP, il faut sélectionner
l'onglet DNS et indiquer l'adresse du serveur DNS primaire.
Dans chaque domaine Internet, il existe un ou plusieurs serveurs de Noms de Domaine. Ces serveurs
contiennent une table de correspondance entre les noms des ordinateurs de la zone et leur adresse IP. Ces
tables sont maintenues manuellement par l'administrateur de la zone.
LMHOSTS
lmosts à l'instar du fichier hosts est un fichier qui contient une table de correspondance statique entre les
noms NetBIOS des ordinateurs du réseau et leur adresse IP. Cette table doit être maintenue manuellement
et ne peut donc être utilisée que sur de petits réseaux.
Cependant, sur certains OS, il est possible d'utiliser un fichier lmhosts partagé, se trouvant sur un autre
ordinateur. Dans ce cas, il est possible de gérer ce fichier d'une manière centralisée.
WINS
Windows Internet Name Service utilise une couche NetBIOS au-dessus de TCP/IP pour établir des
correspondances entre les adresses IP et les noms des ordinateurs NT ou 95.
29
XIII -XII - Protocole IP
XIII-A- XII-A- IP et les réseaux physiques
Le protocole IP permet d’avoir une vue globale de l’inter-réseau sans tenir compte des différents types de
réseaux physiques qui le constituent. Les protocoles TCP et UDP ne dialoguent qu’avec IP sans voir les
réseaux physiques. Les datagrammes IP peuvent être encapsulés dans des trames Ethernet, Token-Ring ou
des paquets X25 ou même des liaisons séries asynchrones en utilisant un protocole de transports sur ce type
de liaison comme PPP25.
IP est aussi utilisable sur des liaisons spécialisées ou des réseaux de type Frame Relay ou ATM 26.
Hôte
Couches supérieures et
applications
IP Couche réseau
Niveau 3
Réseau
Réseau Ethernet Token- TRANSPAC RTC
Ring
TR1 TR2
30
XIII-C- XII-C- Datagramme
IP travaille en mode datagramme sans connexion, c’est-à-dire que chaque paquet IP est véhiculé dans un
internet de manière indépendante. Il se peut donc que plusieurs paquets successifs empruntent des chemins
différents.
Datagramme 1
Datagramme 2
Datagramme 3
32 bits
DM
Identification O Fragment Offset
F F
En-tête
Time to Live Protocol Header checksum
Source Address
Destination Address
Zone
Options Padding optionnelle
Données des
supérieures
couches
Data
31
Octets Nom du champ Signification
1 Version Ce champ est formé par les 4 bits de poids fort du premier octet. Il indique la
version de IP utilisée. La valeur actuelle est 4 (O1OO). Elle passera à 6 lorsque
la version IPV6 sera opérationnelle.
1 IHL Internet Header Length = Longueur de l'en-tête IP. On y trouve une valeur qui
indique la longueur de l'en-tête en multiple de 32 bits. Par exemple si la valeur
est 0101 (5), cela veut dire que l'en-tête mesure 5 fois 32 bits, soit 20 octets. Ce
champ est indispensable, car la longueur de l'en-tête varie s'il y a des options à
la fin de l'en-tête standard.
2 TOS TOS= Type of Service. Ce champ informe les routeurs des réseaux de la qualité
de service désirée. Il est divisé en 6 parties.
1- 'Precedence' : Les 2 bits de poids fort de l'octet indique la 'préséance', c'est
à dire en fait l'importance du paquet IP et la priorité que l'on doit lui accordé.
La valeur par défaut de ce champ peu utilisé est 0.
2- Délai : 0= normal, 1= Elevé.
3- Débit : 0= normal, 1= Elevé.
4- Fiabilité : 0 = Normale, 1= Elevée.
5- Coût: 0= Normal, 1= Elevé.
6- Ce bit doit être à 0.
Le TOS est peu utilisé, mais il est fonctionnel. Les valeurs du TOS sont gérées
par les couches supérieures.
3-4 Total Length Ce champ indique la longueur totale du paquet IP.
5-6 Identification Ce champ indique le numéro du paquet émis par la couche réseau d'un nœud.
Le compteur compte de 0 à 65535, puis repasse à 0.
7-8 Fragment Offset Si le bit DF (Don't Fragment) de ce champ est à 1, cela signifie que le
datagramme IP ne doit pas être fragmenté. Il peut être utilisé par exemple, par
des terminaux sans mémoire de masse qui chargent leur OS à l'aide du
protocole TFTP. En effet le logiciel contenu en ROM est incapable d'assurer le
réassemblage des datagrammes.
Le bit MF (More Frags) est mis à 1 tant que tous les fragments d'un même
datagramme ne sont pas arrivés. Le dernier fragment à donc ce bit MF à 0.
Dans le cas de datagrammes non fragmentés, ce bit est évidemment à 0.
Les autres bits de ce champ indiquent la position des données par rapport à leur
position dans le datagramme d'origine.
9 TTL Time To Live : Ce champ représente en secondes la durée de vie d'un
datagramme IP. La valeur de départ est de 60. A chaque passage dans un
routeur la valeur est décrémentée d'une seconde (pour simplifier le travail).
Lorsque la valeur atteint 0, le routeur qui reçoit le paquet le détruit et envoie un
paquet ICMP sur le réseau. Ce mécanisme a pour but d'éviter que des
datagrammes dont l'adresse est erronée tournent sans fin dans l'internet.
10 Protocol On trouve dans ce champ le code du protocole utilisé au-dessus de IP. Si la
valeur est 6, le protocole qui utilise IP est TCP. Si la valeur est 17, il s'agit d'UDP.
Si la valeur est 1, d'ICMP.
11-12 Header Checksum Ce champ contient une checksum sur 16 bits des octets de l'en-tête IP.
13-16 Source Address Ce champ contient l'adresse du nœud qui a émis le datagramme IP.
17-20 Dest. Address Ce champ contient l'adresse du nœud de destination
20 + Options Ce champ de longueur variable, mais toujours multiple de 32 bits est utilisé
multiple parfois pour définir des informations concernant la sécurité ou le routage
de 32
bits
Figure XII-5 : Signification des champs de l'en-tête IP.
32
Exemple
Cette zone affiche le nom
des différents champs de
l'en-tête Ethernet, ainsi
que les valeurs
correspondantes.
Figure XII-6 : Trame Ethernet avec Datagramme IP affichée sur un analyseur de protocole.
33
Contrôle de flux Non Oui
Multiplexage Non Oui
Contrôle d'erreur Non (Oui en option) Oui
32 bits
Longueur Checksum
Octets de données
Octets de données
34
Exercice
En-tête En-tête
....................... .......................
EXERCICE : Complétez les bulles. En vous aidant de la page précédente, indiquez quelle est la valeur du port
correspondant à l'application SNMP destination dans l'en-tête UDP?. : .....................
Décodage de l'en-
tête Ethernet
Décodage de
l'en-tête IP
Champs concernants
l'application SNMP
35
XIV-B- XIII-B- •TCP
XIV- B- 1-XIII- B- 1- Généralités
Pour la transmission de suites de données très longues comme des fichiers par exemple, on met en œuvre
un protocole plus fiable nommé TCP (RFC 793 de 1981) qui utilise des circuits virtuels. Ce sont des
connexions full-duplex entre les 2 applications dialoguant sur les 2 ordinateurs. Avant de commencer une
transaction, le protocole à chaque extrémité du circuit virtuel ouvre une connexion. Chaque connexion
correspond à un port qui comporte un numéro alloué de manière dynamique côté client et de manière bien
définie côté serveur. Les segments TCP comportent un en-tête et un champ de données. L’ensemble est
passé à la couche IP qui y ajoute l’en-tête IP, puis le tout est inséré dans une trame.
XIV- B- 2-XIII- B- 2- Format de l'en-tête
32 bits
Sequence Number
Acknowledgement Number
Reserved U A P R S F
Data R C S S Y I Window
Offset G K H T N N
Options Padding
DATA
DATA
URG : Ce bit à 1 indique que des données urgentes sont placées dans le
paquet. Dans ce cas, le champ "Urgent Position" est valide et contient un
pointeur qui permet de déterminer la longueur de ces données. Ce type de
36
flag est utilisé par exemple au cours d'une session Telnet pour envoyer une
commande de contrôle au serveur Telnet
15 et 16 Window Ce champ contient le nombre d'octets que la session TCP peut encore
recevoir sans accusé de réception. Lorsque la valeur atteint 0, l'émetteur ne
doit plus émettre. Ce champ permet le contrôle de flux.
17 et 18 Checksum Checksum du paquet TCP y compris l'en-tête.
19 et 20 Urgent position Ce pointeur de données urgentes est valide si le flag URG=1.
Figure XIII-6 : Champs de l'en-tête TCP.
XIV- B- 3-XIII- B- 3- Fonctionnalités TCP
Accusé de réception
La fiabilité de la transmission est assurée par l'utilisation d'accusé de réception. Le flag ACK est alors
positionné à 1. Le champ Achnowledgement Number est aussi utilisé pour les accusés de réception. Il permet
de connaître le numéro du prochain octet attendu par une session TCP et par conséquent le numéro du dernier
octet reçu.
Séquencement et Détection de pertes de données
Les champs Sequence Number et Acknowledgement Number permettent aussi de s'assurer que les octets
arrivent dans l'ordre correct. Ils permettent aussi de détecter si des octets ont été perdus.
37
Multiplexage
Physique
3
2
1
Figure XIII-8 : Multiplexage TCP.
TCP peut servir plusieurs applications dans un même nœud. C'est le multiplexage TCP. Chaque extrémité de
la liaison se caractérise par une adresse IP et un numéro de port.
Par exemple l'application 1 dans le nœud dont l'adresse IP est 126.0.0.1 est l'extrémité 126.0.0.1,80 de la
connexion avec l'application 2 du nœud 126.0.2.66. Cette autre extrémité est dont notée 126.0.2.66,1602.
Connexions
TCP établit une connexion avant de transmettre des données. Cette opération est relativement longue, car
elle nécessite l'envoi de plusieurs paquets de dialogue entre les 2 couches TCP qui veulent établir la
connexion.
Chaque connexion est symbolisée par les valeurs des 2 extrémités. Ainsi la connexion 1 est définie par :
(126.0.01,80,126.0.2.66.1602)
38
XIV- B- 4-XIII- B- 4- Exemple TCP
EXERCICE :
39
XV -XIV - Protocoles de résolution d’adresses IP
XV-A- XIV-A- ARP (Protocole code 0806)
Une adresse IP est liée à une adresse physique en utilisant le protocole ARP28 (RFC 826 de 1982). Pour
trouver l’équivalence entre une adresse physique inconnue et une adresse IP connue, une station diffuse un
paquet ARP contenant une adresse IP destination ainsi qu’une adresse physique source et une adresse IP
source. La station destination renvoie un paquet contenant son adresse physique et son adresse IP. Une table
de correspondance entre les adresses physiques et les adresses IP, est mise à jour dans chaque station.
@IP 126.0.2.55
@IP 126.0.1.23 @IP 126.0.2.43 @IP 126.0.1.12
Quelle est l'@ Mon @ MAC est
MAC du nœud 08 25 66 AD FE AB
dont l'@ IP est
126.0.2.555 ?
C:\>arp -a
Interface : 125.0.0.1 on Interface 2
Adresse Internet Adresse physique Type
125.0.0.2 00-10-7b-3c-3b-70 dynamique
Figure XIV-2 Contenu d'un cache ARP.
XV- A- 1-XIV- A- 1- Format d'un paquet ARP
41
XV-B- XIV-B- RARP (Protocole code 8035)
XV- B- 1-XIV- B- 1- Rôle de RARP
Le protocole RARP29 (RFC 903 de 1984), permet au contraire d'ARP, à une station sans disque ou à un
Terminal X30 de connaître son adresse IP à partir d’une table de correspondance des adresses physiques et
IP maintenue à jour sur un serveur RARP. Lorsqu’une machine veut connaître son adresse IP, elle envoie un
paquet de "requête" RARP contenant son adresse physique et le serveur RARP lui répond en lui envoyant un
paquet RARP réponse contenant l’adresse IP. Pour que le protocole puisse être utilisé, il faut que le réseau
comporte au moins un serveur RARP. Celui-ci utilise une table normalement contenue dans le fichier
/etc/ethers sous UNIX. Le protocole TFTP est ensuite utilisé pour charger le logiciel dans le terminal à partir
du serveur.
Station Table Serveur RARP
sans disque @MAC @IP Ton @IP est
Quelle est 126.0.2.3 !
mon @ IP ? xxxxxxxx 126.0.2.3
xxxxxxxx 126.0.5.9
xxxxxxxx 126.0.1.1
Requête RARP en mode broadcast
Réponse RARP
Figure XIV-6 : Requête et réponse RARP.
Supposons que la station sans disque ne puisse pas stocker son adresse IP. Au démarrage, le logiciel contenu
dans la ROM de Boot va envoyer une requête RARP dans une trame broadcast. Le serveur RARP consulte
la table de correspondance entre les adresses MAC et les adresses IP, établie manuellement par
l’administrateur. Il retourne l’adresse IP de la station dans une réponse RARP.
XV- B- 2-XIV- B- 2- Format RARP
42
XVI -XV - Protocoles de configuration IP automatique
Lorsque les réseaux deviennent très importants, il devient fastidieux de configurer IP sur chaque ordinateur.
D’autre part l’usage de plus en plus répandu d’ordinateurs portables interdit sur ces machines des
configurations fixes. Il faut qu’au cours des déplacements les ordinateurs portables puissent acquérir une
configuration IP (adresse et masque) de manière automatique. L’IETF 31 a développé plusieurs protocoles pour
configurer automatiquement les ordinateurs sur les réseaux TCP/IP dont BOOTP32 et DHCP33
XVI-A- XV-A- BOOTP
BOOTP (RFC 951 de 1985 et 1532 de 1993) est un protocole dont le rôle est le même que celui de RARP,
mais contrairement à ce dernier, il fonctionne sur les réseaux comportant des routeurs. BOOTP peut être
considéré comme une amélioration de RARP et permet d'obtenir des adresses IP pour des stations sans
disques ou des terminaux X à partir d'une table, gérée manuellement, existant sur un serveur BOOTP. Le
protocole de transport de BOOTP est UDP.
43
XVI-B- XV-B- DHCP
Le protocole DHCP est une amélioration de BOOTP. Il permet d’allouer des adresses selon plusieurs
méthodes et il permet comme BOOTP le chargement de fichiers à partir du serveur. Ce protocole est routable,
si on installe un agent de relais DHCP dans les routeurs.
Allocation d’adresses
L’allocation des adresses peut se faire de 3 manières différentes :
Allocation manuelle : C’est l’administrateur qui établit, à la main, une correspondance entre l’adresse
MAC de l’ordinateur client DHCP et son adresse IP
Allocation automatique : Une adresse est attribuée automatiquement à un ordinateur possédant un
client DHCP. L’adresse IP est attribuée au cours de la première requête du client et elle est
définitivement attribuée à l’ordinateur.
Allocation dynamique : Cette méthode permet d’attribuer de manière temporaire une adresse IP à
un ordinateur qui possède un client DHCP. C’est cette méthode qui est utilisée par les fournisseurs
de services Internet pour les clients se connectant par l’intermédiaire du RTC. Cette méthode est aussi
très pratique lorsqu’il existe de nombreux ordinateurs portables qui se connectent sur un réseau, puis
sur un autre. Un système de gestion de durée des "Baux" permet de limiter la durée d’utilisation d’une
adresse par un ordinateur.
Serveur DHCP
Plage des adresses qui
seront allouées de
manière dynamique
Masque de sous-réseau
Si au cours de la
configuration du protocole
TCP/IP sur un ordinateur
avec OS Microsoft, on
coche cette case, le client
DHCP est activé et
l’ordinateur demandera
son adresse IP à un
serveur DHCP.
44
XVII -XVI - Routage
Le terme routage désigne la transmission de datagramme à partir d'un nœud d’un réseau vers un autre nœud
situé sur le même réseau ou sur un réseau différent. Ce terme désigne aussi le cheminement qui est établi
pour transmettre un datagramme IP de son origine vers son point de destination en utilisant les adresses IP
contenues dans le datagramme. Un routeur est une machine qui possède au minimum 2 interfaces différentes
connectées sur des réseaux différents.
XVII-A- XVI-A- Table de routage
Le fonctionnement du routage nécessite la présence de tables de routage dans les routeurs pour déterminer
le chemin à emprunter pour envoyer un datagramme IP d'une machine à une autre à travers l'internet.
La table de routage contient les informations suivantes :
l'adresse IP de destination. Cette adresse peut être une adresse machine ou une adresse réseau
suivant la valeur d'un flag H faisant lui-même partie de la table.
l'adresse IP du routeur suivant (next hop router) ou l'adresse du réseau qui lui est directement
connecté s'il n'y a plus d'autres réseaux.
des flags. (opion)
le nom de l'interface réseau à laquelle il faut envoyer le datagramme pour qu'il soit transmis.
La constitution de cette table est réalisée :
une seule fois par constitution d'un fichier ou par lancement au démarrage d'une commande
particulière (route sous Unix) à l'aide de protocole de routage. On parle alors de routage statique.
avec une remise à jour permanente réalisée par des protocoles spécialisés IGP comme RIP34,
HELLO, OSPF35 ou EGP comme BGP36. On parle alors de routage dynamique.
Les protocoles de type IGP (Interior Gateway Protocol) sont utilisés entre routeurs d'un même internet, alors
que les protocoles de type EGP (Exterior Gateway Protocol) sont utilisés pour des routeurs d'internets
différents.
Destination Gateway Flags RefCnt Use Interface
125.0.25.36 125.0.1.220 UGH x xxxxxx eth0
125.0.25.75 125.0.1.220 UGH x xxxx eth0
127.0.0.1 127.0.0.1 UH x xxxx lo0
125.0.1.10 125.0.1.12 U x xxx eth0
default 125.0.1.220 UG x xxxx eth0
126.0.0.0 125.0.1.220 UG x xxxx eth0
Figure XVI-1 : Exemple de table de routage de Soleil 125.0.1.12 obtenue avec la commande "netstat".
la première colonne contient les adresses des machines reconnues par les protocoles de routage. 127.0.0.0
est l'adresse de test de l'ordinateur SOLEIL. L'adresse "default" est l'adresse par défaut du routeur connecté
au réseau 125, permettant la connexion aux autres réseaux.
la seconde colonne comporte les adresses des routeurs à emprunter.
la troisième colonne comporte des flags. U (Up) indique que la route est en service. G (Gateway) indique
que la route passe par un routeur. H indique que l'adresse de la première colonne est une adresse machine
complète.
Refcnt est le compteur de connexions utilisant la route et Use le nombre d'octets transportés
Interface indique le nom de l'interface machine utilisée sur SOLEIL.
XVII-B- XVI-B- Routeur IP
Le routeur IP effectue les traitements suivants :
Recherche dans la table de routage de l'adresse de destination complète de la machine. Si elle est trouvée,
le datagramme lui est expédiée directement ou à travers un autre routeur. Dans le cas où cette adresse n'est
pas trouvée, il passe à la phase suivante.
Recherche de l'adresse du réseau correspondant à l'adresse de destination. Si elle est trouvée, le
datagramme est expédié. Sinon, le routeur passe à la phase suivante.
Recherche d'une adresse de routage par défaut qui doit correspondre à l'adresse d'un routeur connecté au
réseau. Si aucune adresse n'est trouvée, un message est délivré.
45
XVII-C- XVI-C- Direct
Le routage direct est la transmission d’un datagramme d’une station à une autre à l’intérieur d’un même
réseau.
Jupiter Apollon
00 80 45 56 96 23 00 80 45 3F DA EE
126.0.25.36 126.0.25.75
126.0.25.75
00 80 45 3F DA EE
Soleil Uranus
00 80 45 FD 0A AA 00 80 45 3F BF DA
125.0.1.12 125.0.1.10
Figure XVI-3 : Routage sur un internet.
Le routeur est la machine Vénus. Il comporte 2 cartes réseau, donc 2 adresses MAC et 2 adresses IP
comportant des numéros de réseaux différents. Supposons que la machine Soleil veuille envoyer un
datagramme IP vers la machine Apollon. La couche IP recherche l'adresse IP de destination dans la table de
routage et déterminer le routeur auquel il faut transmettre le paquet. Le processus suivant est utilisé (comme
page précédente) :
-1- Recherche de l'adresse IP destination complète, si elle existe dans la table, pour déterminer
l'adresse du prochain routeur sur le chemin emprunté pour atteindre la destination.
-2- Si l'adresse complète n'est pas trouvée, la couche IP essaye d'utiliser l'adresse réseau destination
(126) et le routeur correspondant.
-3- Si l'adresse réseau destination n'est pas non plus trouvée dans la table, IP utilise l'adresse du
routeur par défaut (125.0.1.220).
En utilisant le contenu du cache ARP présent dans Soleil, la couche IP envoie le datagramme dans une
trame Ethernet avec comme adresse destination MAC celle du routeur Vénus connectée au réseau 125
(00 80 45 56 96 23). L'adresse de destination IP est celle d’Apollon. Dans le routeur, IP analyse l'adresse
de destination IP. Après consultation des tables de routage et du cache ARP, une trame Ethernet avec
l'adresse MAC d'Apollon (00 80 45 3F DA EE) est envoyée sur le réseau 126 avec comme adresse de
destination IP 126.0.25.75.
46
XVIII -XVII - Protocoles de routage
Pour assurer le routage dynamique et mettre à jour automatiquement les tables de routage, IP utilise 2 grands
types de protocoles : les protocoles de passerelles intérieurs (IGP = Interior Gateway Protocol) et les
protocoles de passerelles extérieurs (EGP = Exterior Gateway Protocol). Les IGP sont utilisés à l'intérieur des
inter-réseaux ayant une administration commune appelée systèmes autonomes. Les protocoles de types
EGP sont utilisés entre les systèmes autonomes. Le mot Gateway peut être traduit par passerelle ou routeur.
47
XIX -XVIII - Protocole de gestion des erreurs ICMP
ICMP (Internet Control Message Protocol RFC 792 de 1981) est un protocole qui permet l'envoi des messages
d'erreur.
Message ICMP
Type Code Somme de
En-tête En-tête 8 bits 8 bits contrôle
Contenu du message
Ethernet IP
Figure XIX-3 : Format d'une trame PPP avec compression des en-têtes.
Le protocole PPP est très utilisé par les logiciels permettant la connexion à des serveurs Internet au moyen
de liaisons séries composées de modems et de lignes téléphoniques commutées.
C:\>tracert www.renault.fr
Routage terminé.
50
Des logiciels graphiques reprennent cet outil pour tracer une carte du chemin emprunté pour atteindre le nœud
cible.
C:\>ipconfig /all
Configuration IP de Windows NT
Nom d'hôte . . . . . . . . . . . . : al_sta
Serveurs DNS . . . . . . . . . . . :
Type de nœud. . . . . . . . . . . : Hybride
Id d'étendue NetBIOS . . . . . . . :
Routage IP activé. . . . . . . . . : Oui
WINS Proxy activé. . . . . . . . . : Non
Résolution NetBIOS utilisant DNS . : Oui
Cette commande est remplacée par utilitaire WINIPCFG sous Windows 95.
51
XXI-D- XX-D- Netstat
Netstat.exe affiche de nombreuses statistiques sur les protocoles et les connexions réseau. Cette commande
possède de nombreux paramètres qui donnent des résultats très différents.
C:\>netstat –e
Statistiques interfaces
Reçu Envoyé
Octets 13542338 544425
Paquets unicast 9774 6648
Paquets non-unicast 70 70
Rejets 0 0
Erreurs 0 0
Protocoles inconnus 0
C:\>netstat -n
Connexions actives
Proto Adresse locale Adresse extérieure Etat
TCP 125.0.0.1:139 126.0.0.1:1042 ETABLIE
TCP 125.0.0.1:1025 126.0.0.1:139 ETABLIE
TCP 125.0.0.1:1031 126.0.0.1:139 ETABLIE
TCP 127.0.0.1:1026 127.0.0.1:1030 ETABLIE
TCP 127.0.0.1:1030 127.0.0.1:1026 ETABLIE
Figure XX-5 : Résultats de la commande Netstat avec 2 options différentes
C:\>arp -a
TCP / IP
52
XXII -XXI - TCP/IP et les réseaux
XXII-A- XXI-A- Pourquoi un protocole ?
Un protocole de communication est un ensemble de règles permettant à plusieurs ordinateurs,
éventuellement sur des réseaux physiques différents et utilisant des OS différents, de dialoguer entre eux.
Ainsi grâce à TCP/IP, des ordinateurs sous UNIX et sur un réseau Ethernet peuvent dialoguer avec des
ordinateurs sous NT sur un réseau Token-Ring.
TCP/IP peut fonctionner :
- sur des réseaux locaux physiques de type Ethernet, Fast Ethernet, Token-Ring, FDDI
- sur des réseaux de type WAN comme ATM, LAPB ou des liaisons par RTC ou LS.
XXII-B- XXI-B- Rappel du modèle OSI de l’ISO
XXII- B- 1-XXI- B- 1- Les couches
Le modèle OSI37 de l’ISO38 permet de définir un modèle pour des ordinateurs communicants. Tout ordinateur
conforme à ce modèle peut dialoguer avec ces homologues en utilisant le même "langage" et les mêmes
méthodes de communication.
Le modèle est composé de 7 couches.
Chaque couche assure une fonction bien déterminée.
Chaque couche utilise les services de la couche inférieure. Par exemple la couche Réseau utilise les
services de la couche Liaison qui utilise elle-même les services de la couche Physique.
Chaque couche possède un point d'entrée pour les services offerts, nommé SAP =Service Access Point.
Ainsi la couche Session possède un point d'accès SSAP et la couche Transport un point d'accès TSAP.
Chaque couche d'un ordinateur dialogue avec la couche homologue d'un autre ordinateur en utilisant un
protocole spécifique à la couche (Données de protocole = PDU =Protocol Data Unit).
Ordinateur Ordinateur
A Data Data B
Application
Application A A Application
Protocol Data Unit
ASAP ASAP
P Presentation P
Présentation Protocol Data Unit Présentation
SSAP SSAP
Session
Session S Protocol Data Unit S Session
TSAP TSAP
Transport
Transport T Protocol Data Unit T Transport
NSAP NSAP
Network
Réseau N Protocol Data Unit N Réseau
LSAP Data Link LSAP
Liaison L Protocol L Liaison
Data Unit
PSAP PSAP
Physique Bits Physique
Média
Figure XXI-1 : Modèle OSI de l'ISO.
o Dans le mode datagramme, les paquets générés par la couche contiennent une adresse source et
une adresse destination. Aucun chemin n'est établi par avance et les paquets peuvent passer par
des chemins différents. Aucune vérification n’est assurée tant qu’au séquencement des paquets à leur
arrivée.
o Dans le mode circuit virtuel, une connexion est établie entre les nœuds communicants ainsi qu’un
contrôle du séquencement et de la validité des trames transmises. Un contrôle de flux est aussi
assuré.
La couche LLC peut assurer trois types de services aux couches supérieures:
Type 1 : Service de datagramme sans accusé de réception en mode point à point, multipoint
ou diffusion.
Type 2 : Services de circuits virtuels. Assure les services de séquencement, de contrôle de
flux et de correction d’erreur.
Type 3 : Service de datagramme avec accusé de réception.
Application
Protocoles
des
Présentation
couches
supé-
rieures
Session
Transport
IEEE 802.2
Type 1 : Mode datagramme sans accusé de réception.
LLC Type 2 : Mode avec circuit virtuel.
Réseau LLC Type 3 : Mode datagramme avec accusé de réception.
MAC MAC MAC
MAC CSMA CD Token Bus Token Ring
Liaison MAC
802.3
802.5
802.4
UTP Coaxial Paires
Couche 10 ou 100 Mbps 1 5 et 10 Mbps torsadées
Physique Physique Physique Coaxial Fibre optique 4 ou 16 Mbps
Fibre Optique 5 10 20 Mbps
Data Data
Messages
Application A A Application
Segments
Hôte à hôte T T Hôte à hôte
Datagramme
Internet N N Internet
Trame
L L
Accès réseau Bits
Accès réseau
ISO DoD
Application
Présentation Application
Session
PPP
115.0.0.0
Dans la figure ci-dessus, imaginons que le nœud 25 du réseau Token-Ring désire envoyer des données au
nœud 36 du réseau Ethernet 2. Le type de trame, la méthode d’accès, le système d’adressage et le débit du
réseau Token-Ring sont incompatibles avec ceux du réseau Ethernet. Les données ne peuvent être
transmises en l’état. Elles doivent, grâce aux routeurs du réseau, changer de type de trame à chaque nouveau
type de réseau.
Un système d’adressage, indépendant du type de réseau physique, doit être utilisé pour désigner de façon
unique chaque nœud sur l’inter-réseau. Le protocole IP possède ce type d’adressage composé d’une adresse
réseau (NetID= Network ID ) et d’une adresse nœud (HostID = Host ID) sur chaque réseau.
Par exemple, 125, 120, 115 et 119 désignent respectivement les adresses réseaux des réseaux Token-Ring,
Ethernet 2, la liaison asynchrone en PPP43 et Ethernet 1.
L’adresse 125.0.0.25 désigne l’adresse du nœud 25 sur le réseau 125. L’adresse 119.0.0.36 désigne le nœud
36 sur le réseau 119 Ethernet 2.
Chaque routeur est équipé d’au moins 2 interfaces réseaux. Des tables de routage internes à chaque routeur
permettent de connaître le chemin à emprunter pour transporter des données d’un nœud à un autre. Lorsque
le paquet IP arrive dans une trame Token-Ring dans le routeur 1 à destination du nœud 36 du réseau Ethernet
2, celui-ci lit l’adresse IP de destination, et repositionne le paquet IP dans une trame Ethernet. Lorsque la
trame parvient au routeur 2, le paquet est positionné dans des trames PPP. Puis lorsqu'il arrive au routeur 3,
il est repositionné dans une trame Ethernet. L’adresse IP de destination n’a pas changé pendant tout le
parcours, par contre, les adresses physiques (MAC) ont été modifiées sur chaque réseau.
56
XXV -XXIV - Couches
XXV-A- XXIV-A- TCP/IP et les modèles ISO et DoD
La suite des protocoles appelée aussi pile de protocoles44 IP ne correspond pas au modèle OSI de l’ISO,
celui-ci a été normalisé en 1979, il est donc postérieur à la création de TCP/IP.
La pile de protocoles IP correspond au modèle DoD (Department of Defence). Le dessin suivant montre
l’équivalence entre ces couches et les différents protocoles de la pile. Les protocoles correspondant aux
couches 6 et 7 ISO sont des applications de transmissions qui s'appuient sur TCP/IP. Les couches 1 et 2
dépendent du type de réseau utilisé.
Tous les standards (normes) de la communauté Internet sont publiés sous forme de RFC45. Chacune est
identifiée par un numéro et décrit le fonctionnement d'un protocole de la pile TCP/IP ou d'un matériel comme
par exemple les routeurs IP.
44 Protocol Stack
45 RFC = Request For Comments
57
Protocoles transport
HTTP HyperText Transfert Service de distribution de pages en hypertexte sur des serveurs WEB.
Protocol
Telnet Telecommunications Fournit un service d’émulation de Terminal.
Network
Rlogin Remote Login Commande Unix permettant la connexion des terminaux à d'autres serveurs
Unix du réseau.
FTP File Transfert Protocol Permet l'échange de fichiers complets entre ordinateurs.
SMTP Simple Mail Transfer Offre une fonction importante de messages de texte entre hôtes.
Protocol
DNS Domain Name Service Propose des services de répertoires. DNS est un service complexe qui
permet d'associer un nom et une adresse.
SNMP Simple Network Protocole de management de réseau.
Management Protocol
NFS Network File System Système de fichiers en réseau.
TFTP Trivial File Transfert Protocole simplifié de transfert de fichiers utilisé principalement par les
Protocol clients sans disque.
BOOTP Bootstrap Protocol Protocoles fournissant une adresse IP de façon dynamique au démarrage
Dynamic Host des stations.
DHCP Configuration Protocol
Figure XXIV-4 : Couches 6 et 7. Applications utilisées avec TCP / IP.
58
XXVI -XXV - Fonctionnement de la pile de protocoles IP
Hôte source Hôte destination
Application Messages ou flot (stream) Application
Accès Accès
Réseau Réseau
Trames du Réseau Physique
Réseau Physique
Données utilisateur
Application
En-tête Données utilisateur
applicatif
Segment TCP
En-tête En-tête Données applicatives
IP
IP
TCP
Paquet IP
En-tête En-tête En-tête Données applicatives FCS Driver
Ethernet IP TCP Ethernet
14 20 20 4
Trame Ethernet
46 à 1500 octets Ethernet
59
Les protocoles ARP, RARP, ICMP et IGMP attaquent directement le datagramme IP. Le champ type de cette
trame permet de savoir quel est le protocole utilisé dans le champ de données.
XXVI- A- 1-XXV- A- 1- Encapsulation IP dans les diverses trames Ethernet
Le standard réseau Ethernet d'origine a été repris et modifié par le Comité 802 de l'IEEE. Il existe donc
plusieurs définitions de types de trames Ethernet. Quel que soit le type de trame, il faut cependant que les
paquets IP puissent y être encapsulés. Dans la norme de l'IEEE la couche liaison est divisée en 2 sous-
couches :
la couche MAC (802.3) qui correspond à la gestion de CSMA/CD et à l'interfaçage avec la couche
physique.
la couche LLC (802.2) qui définit le contrôle de la liaison. Cette fonction est commune a tous les
types de réseaux physiques.
La trame Ethernet_802.2 définie par l'IEEE contient des champs supplémentaires par rapport à la trame
Ethernet. Ce sont les champs DSAP et SSAP (Destination et Source Service Access Point). Le champ
contrôle contient la valeur 03 en hexadécimal.
Dans la trame Ethernet_SNAP, les 3 octets du champ Org sont à 0. Le champ type contient la valeur qui est
contenue dans le champ Type de la trame Ethernet. Cette valeur représente le code du protocole utilisé dans
le champ de données de la trame Ethernet.
Encapsulation Trame Ethernet II RFC 894
Adresse Adresse type FCS
Destination Source
Données
6 6 2 46-1500 4
type
0800
Datagramme IP
2 46-1500
type Requête/réponse PAD
0806 ARP
2 28 18
type Requête/réponse PAD
8035 RARP
2 28 18
Figure XXV-3 : Encapsulation de IP dans des trames Ethernet II.
6 6 2 1 1 1 3 2 33-1492 4
type
0800 Datagramme IP
2 38-1492
type Requête/réponse PAD
0806 ARP
2 28 10
type Requête/réponse PAD
8035 RARP
2 28 10
60
XXVI-B- XXV-B- Multiplexage et Démultiplexage
XXVI- B- 1-XXV- B- 1- Multiplexage
Le champ "Type" dans une trame Ethernet permet d'indiquer le code des différents types de protocoles (IP,
ARP et RARP). De même au niveau IP, le champ "Type" de l’en-tête IP, permet de transporter TCP ou UDP.
Enfin au niveau transport, les numéros de ports indiquent les applications concernées. Cette propriété de
mélanger les protocoles est appelée multiplexage
HTTP FTP Telnet SNMP TFTP HTTP FTP Telnet SNMP TFTP
IP IP
Ordinateur Ordinateur
A ETHERNET B ETHERNET
Réseaux
ARP RARP
Code 0806 Code 0800 Code 8035 Le démultiplexage à ce niveau
Driver est assuré grâce au code
Ethernet contenu dans le champ 'Type'
de l'en-tête Ethernet.
Trame Ethernet
61
XXVII -XXVI - Adresses IP
Au niveau de la couche Liaison, les nœuds du réseau communiquent avec les autres stations en utilisant des
adresses qui dépendent du type de réseau utilisé. Un nœud peut être un micro-ordinateur, un serveur de
fichier, une imprimante réseau ou n’importe quel périphérique utilisant TCP/IP. Chaque nœud possède une
adresse physique ou adresse MAC46.
Dans les réseaux Ethernet et Token-Ring, l’adresse physique est contenue dans une ROM sur chaque
interface réseau. Toutes les adresses sont différentes et comportent 6 octets. Cette adresse est déterminée
par le constructeur de l’interface selon un plan de numérotation à l'échelle mondiale.
Dans le réseau X25, l’adresse déterminée par le concessionnaire du réseau comporte au maximum 15 chiffres
décimaux.
Dans le réseau LocalTalk d'Apple, l’adresse comporte un octet pour déterminer le numéro du réseau et 2 pour
déterminer le numéro de la station.
XXVII-A- XXVI-A- Généralités
Les adresses IP au contraire sont des adresses logiques. Elles sont indépendantes du type de réseau utilisé.
Dans la version 4 de IP, elles comportent toujours 32 bits, dont une partie identifie le réseau (NetID), l’autre
le nœud sur ce réseau (HostID).
XXVII- A- 1-XXVI- A- 1- Types d'adresses
Unicast : Adresse permettant l'adressage d'une seule machine.
Multicast : Adresse correspondant à un groupe de machines.
Broadcast : Adresse correspondant à toutes les machines d'un réseau.
XXVII-B- XXVI-B- Représentation des adresses IP
La représentation de cette adresse se fait dans une notation “décimale pointée” (dotted-decimal notation),
c’est-à-dire que chaque octet de l’adresse est représenté par un nombre décimal, séparé du suivant par un
point. Par exemple :
7 bits 24 bits
0 Net ID Host ID
10 Net ID Host ID
46MAC = Medium Access Control
62
Figure XXVI-3 : Adressage IP Classe B.
XXVII- C- 3-XXVI- C- 3- Classe C
Dans cette classe l’adresse du réseau est codifiée sur 21 bits et l’adresse hôte sur 8 bits
21 bits 8 bits
Pour faciliter le routage les adresses IP de classe C correspondent à des emplacements géographiques :
Adresses Zone géographique
192.0.0 à 193.255.255 Adresses allouées avant la répartition géographique. Elles correspondent donc à
plusieurs régions.
194.0.0 à 195.255.255 Europe
198.0.0. à 199.255.255 USA
200.0.0 à 201.255.255 Amériques centrale et du Sud
202.0.0 à 203.255.255 Pacifique
28 bits
27 bits
11110 Réservé
64
XXVIII -XXVII - Réseaux et sous-réseaux
Un réseau peut être divisé en sous-réseaux afin de pouvoir :
- éviter le gaspillage des adresses nœuds d’un réseau
- utiliser des supports physiques différents.
- réduire le trafic sur le réseau.
- isoler une partie du réseau en cas de défaillance d'un composant du réseau.
- augmenter la sécurité.
Chaque sous-réseau est relié à un autre par un routeur.
Exemple :
Sous-réseau 1
Routeur
Réseau
195.123.125.0 Sous-réseau 2
Internet
Sous-réseau 3
Net ID Host ID
Routeur
65
Net ID Host ID
Masque de
11111111 11111111 11111111 1111 0000 sous-réseau
124
66
XXVIII-B- XXVII-B- Exemple en classe B
67
XXIX-B- XXVIII-B- FTP
FTP (port 21) est une application qui permet d'assurer le transfert de fichiers, sans erreur, entre un micro-
ordinateur et un hôte ou entre 2 hôtes. Un certain nombre de commandes propres à cette application
permettent des transferts uniques ou multiples de fichiers dans les 2 sens (à l'alternat).
FTP cl FTP Svr
xxx FTP 21
TCP TCP
Client
IP IP FTP
Physique Système Physique Serveur
de fichiers
Système
Interface PUT, SEND ou MPUT de fichiers
TCP/IP
Terminal TCP/IP
Connexion TCP
sur réseau
Le système renvoie un message, précédé de son code (150), suivi du nom du fichier, de l'adresse IP destination et du port FTP.
Telnet Telnet
xxx CLIENT
23
TCP Telnet TCP
IP IP Serveur
Login
Physique Telnet
Physique
TCP/IP
Driver de
terminal Driver
TCP/IP
Pseudo terminal
Connexion TCP
sur réseau
68
Figure XXVIII-4 : Telnet.
Commande Fonction
rlogin Permet une connexion sur l'ordinateur spécifié.
rexec Permet d'exécuter une commande sur l'ordinateur distant
rsh Permet d'exécuter un shell sur un ordinateur distant.
rcp Permet la copie de fichiers entre machines distantes.
rwho Affiche les utilisateurs connectés sur le réseau.
rwall Transmet un message aux utilisateurs connectés aux machines indiquées.
ruptime Affiche des informations sur les ordinateurs du réseau.
Figure XXVIII-6 : Commandes r*
TCP TCP
- HTTP – TCP - IP IP
IP
sur le réseau
70
XXIX- F- 2-XXVIII- F- 2- POP et IMAP4
Le message est ensuite acheminé vers le serveur sur lequel est connecté le destinataire. Celui-ci n'étant pas
forcément relié en permanence à ce serveur, il existe une boîte aux lettres personnelle dans laquelle seront
stockés tous les messages non lus.
Le destinataire consulte sa boîte aux lettres et récupère ses messages grâce au protocole POP3 53. Un
protocole plus récent IMAP454 est parfois utilisé. Il possède l'avantage de permettre la consultation des
messages sur le serveur sans forcement les rapatrier dans la station.
Le destinataire
L'utilisateur A
Serveur de Serveur de va lire son
envoie le
messagerie messagerie message sur le
message
SMTP Internet POP3 serveur POP3
RTC RTC
Racine
Domaines
premier arpa com edu gov int mil net org ae fr us zw
niveau
Domaines
troisième market paye compta
niveau
53 POP3= Post Office Protocol Version 3.
54 IMAP4= Internet Message Access Protocol Rev4.
55 DNS = Domain Name System. Nom de domaine pleinement qualifié
serv2.paye.comp2.com.
Domaines
71
quatrième Serv1 Serv2
niveau
Domaines génériques Domaines géographiques
Figure XXIX-1 : DNS.
L'arbre démarre par une racine puis, à chaque niveau, on trouve des nœuds qui permettent l'apparition de
nouvelles branches de l'organisation hiérarchique. Chaque nœud de la figure représente un domaine qui
possède un label qui peut comporter jusqu'à 63 caractères.
Le nom de domaine d'un nœud quelconque de l'arbre est la liste des labels permettant d'atteindre la racine.
On commence par écrire le label de plus bas niveau et on termine par celui du plus haut niveau. Chaque label
est séparé du suivant par un point.
Si le nom de domaine se termine par un point, c'est un nom de domaine absolu ou nom de domaine
pleinement qualifié. (FQDN= Fully Qualified Domain Name).
Un nom de domaine doit être unique, mais il peut exister des labels identiques à des niveaux différents. Les
domaines de niveau supérieur com (commercial), edu (éducation), gov (gouvernemental), int (international),
mil, (militaire), net (réseau) et org (autres organisations) sont appelés domaines génériques. Ceux qui au
même niveau représentent un nom de pays ( fr, us, ...) sont appelés domaines géographiques.
XXX- A- 2-XXIX- A- 2- Serveurs de noms de domaine
Une zone est une partie de l'arbre DNS administrée séparément. Chaque zone doit posséder des serveurs
de noms. Pour chaque machine de la zone, l'administrateur doit entrer dans le serveur de noms, l'adresse IP
de cette machine et le nom de domaine. Si un serveur de noms ne contient pas le nom demandé par un
ordinateur, il doit être capable d'interroger les autres serveurs de noms des niveaux supérieurs. Tout nom
demandé et trouvé par un serveur de noms est mis en mémoire cache. Ceci évite des demandes répétées.
Pour le réseau mondial INTERNET, le NISC56 attribue des noms de domaines en respectant des conventions
propres à cet organisme. Chaque société ou chaque université peut recevoir un nom de domaine de haut
niveau (com pour une société commerciale et edu pour un établissement d'éducation par exemple) et un nom
de sous domaine propre à la société ou à l'université (par exemple novell ou ucla).
A partir de ce point l'administrateur du domaine peut continuer la structure hiérarchique et prolonger le nom
de sous-domaine qui peut devenir par exemple : messagerie.service_technique.novell.com pour une société
commerciale ou sectionA.lettres.ucla.edu pour un département d'une université. Le niveau le plus bas de la
hiérarchie apparaît au début du nom de domaine.
L'implémentation de DNS utilisée sur les ordinateurs Unix est appelée BIND57 et le deamon serveur named.
Les serveurs DNS peuvent aussi être implémentés sur système d'exploitation NetWare ou Windows NT 4
Server.
XXX- A- 3-XXIX- A- 3- Exemple d'utilisation de DNS
DNS Légende
53 Serveur DNS au Requête
UDP Réponse
niveau racine
IP
Physique
3 4
1 2 6 5
Serveur DNS
du domaine Serveur DNS
7 de Dubois
Serveur Web
8 www.dubois.fr
Figure XXIX-2 : Fonctionnement DNS.
73
XXX- A- 4-XXIX- A- 4- Désignation des serveurs DNS sur les stations IP
Dans les stations PC sous Windows 95/98 ou NT, pour utiliser le service DNS, il faut dans la configuration des
propriétés de la pile IP, déclarer le nom de la station, le domaine où elle se trouve et l'adresse IP du ou des
serveurs DNS qu'elle doit contacter pour la recherche des adresses IP.
/ C E:
:
usr etc bin Dos Win alain michel
export pierre
Ordinateur sous alain michel PC Sous DOS , Montage du répertoire
Unix avec client Windows ou OS2 NFS exporté
pierre
NFS avec client NFS
Montage distant
Figure XXIX-4 : Exportation NFS.
La figure ci-dessus montre un répertoire export exporté par le serveur NFS d'un ordinateur tournant sous
UNIX.
L'ordinateur client UNIX voit ce répertoire comme une extension de son propre système de fichiers UNIX.
La station PC monte le répertoire exporté pour le faire apparaître comme une unité de logique DOS-Windows
E:.
74
XXX-C- XXIX-C- TFTP
TFTP58 est un protocole qui est une version allégée de FTP. Il utilise UDP comme protocole de transport.
Celui-ci n'étant pas fiable, TFTP se sert de son propre système d'accusé de réception pour assurer une bonne
qualité de transmission.
TFTP est utilisé principalement pour charger à partir d'un serveur TFTP, le système d'exploitation d'ordinateurs
sans disque ou de terminaux X-Windows par exemple. Il est aussi utilisé pour assurer le mise à jour des OS
des matériels réseaux (hubs, ponts, commutateurs, routeurs) contenus dans des mémoires non volatiles, mais
réinscriptibles.
Routeur Cisco
Ancienne TFTP TFTP
version de EEPROM xxxx 69 Fichier
l'IOS Cisco UDP UDP contenant
Client IP IP la nouvelle
TFTP version de
Physique Paquets de Physique
512 octets l'IOS Cisco
Serveur SNMP
xxx
Agent
Agent Routeur Snmp
UDP
Snmp IP
Physique Agent Hub
Snmp
Station de gestion de
réseau NMS SNMP
Agent 161
Pont
Snmp UDP
IP
Physique
75
A partir de la station de gestion, l'administrateur du réseau peut consulter ou modifier la configuration des
éléments du réseau. Cette fonction est réalisée grâce à une procédure du type requête-réponse.
Trap Alarme
76
XXXI -XXX - Fichiers associés à TCP/IP
TCP/IP utilise 4 fichiers de base de données pour convertir des données internes, telles que les adresses IP,
en noms plus faciles à utiliser. Le contenu de ces fichiers une fois lu, est placé en mémoire cache pour éviter
des accès répétitifs aux disques. Ces fichiers, en mode texte, se trouvent en général dans le répertoire \etc
des hôtes TCP/IP.
XXXI-A- XXX-A- Fichier Hosts
Ce fichier, que l'on écrira avec un éditeur de texte simple, contient des entrées qui permettent de rendre une
adresse IP équivalent à un ou plusieurs noms.
La syntaxe est la suivante :
adresse_IP nom_d'hôte [alias [...]]
L'adresse_IP est donnée en notation décimale point ou en valeur hexadécimale commençant par 0x.
Le nom_hôte est le nom du système associé à l'adresse IP. Ce nom ne doit pas contenir d'espace et doit être
unique.
L'alias est un autre nom qui désigne le système ou une autre manière de l'écrire (Majuscules-minuscules ou
abréviations).
Exemple de fichier \etc\hosts : Les lignes précédées de # sont des commentaires.
#
# Mapping of host names and host aliases to IP Addresses
#
127.0.0.01 loopback lb localhost # loopback address
#
# exemples d'adresses, de noms d'hôtes et d'alias
126.0.0.1 Mugix MUGIX mugix mu
126.0.0.2 Jarrix JARRIX jarrix ja
126.0.2.1 GEMINI gemini gem
126.0.2.2 APOLLO apollo apo APO Apo
Figure XXX-1 : Exemple de fichiers hosts.
#
# Networks numbers
#
loopback 127 # réseau fictif interne pour bouclage
#
# réseaux de l'inter-réseaux
angers 126 ang #réseau local afpa angers
greno 123 gre #réseau local afpa grenoble
Figure XXX-2 : Exemple de fichiers networks.
77
XXXI-C- XXX-C- Fichier Protocol
Le fichier \etc\protocol contient des informations sur les protocoles connus utilisés sur l'inter-réseau. Chaque
ligne fournit des informations sur un protocole.
La syntaxe est la suivante :
nom_protocole numéro_protocole [alias [...]]
Le nom_protocole est le nom du protocole associé au numéro qui suit.
Le numéro_protocole est le numéro du protocole.
L'alias est un autre nom donné au protocole.
Exemple de fichier \etc\protocol :
# internet (IP) protocols
ip 0 IP # protocol internet
icmp 1 ICMP #protocol de message d'erreurs dans l'inter-réseau
igmp 2 IGMP # protocol multicast
ggp 3 GGP # gateway-gateway protocol
tcp 6 TCP # protocol de transmission
udp 17 UDP # user datagram protocol
Figure XXX-3 : Exemple de fichier \etc\protocol.
XXXI-D- XXX-D- Fichier Services
Le fichier \etc\services contient des informations sur les services utilisés sur l'inter-réseau IP. La syntaxe est
la suivante :
nom_service numéro_port/nom_protocole [alias [...]]
Le nom_service est le nom de service associé au port dont le nom ou le numéro suit. Ces services sont des
services des couches session, présentation ou application, tels Telnet, FTP, TFTP ou SMTP.
Le numéro_port est le numéro de port utilisé par le service.
Le nom_protocole désigne le protocole auquel le service est lié. Il s'agit, en général, d'un protocole du niveau
transport comme TCP ou UDP.
L'alias est un autre nom donné au service
Exemple de fichier \etc\service
TCP Ports #UDP ports
# Service Name Port/Protocol Aliases # Service Name Port/Protocol Aliases
echo 7/tcp echo 7/udp
discard 9/tcp sink null discard 9/udp sink null
systat 11/tcp users systat 11/udp users
daytime 13/tcp daytime 13/udp
netstat 15/tcp netstat 15/udp
qotd 17/tcp quote qotd 17/udp quote
chargen 19/tcp ttytst source chargen 19/udp ttytst
ftp-data 20/tcp source
ftp 21/tcp time 37/udp timserver
telnet 23/tcp rlp 39/udp resource
smtp 25/tcp mail name 42/udp nameserver
time 37/tcp timserver whois 43/udp nicname
name 42/tcp nameserver nameserver 53/udp domain
whois 43/tcp nicname bootps 67/udp bootp
nameserver 53/tcp domain bootpc 68/udp
apts 57/tcp tftp 69/udp
apfs 59/tcp sunrpc 111/udp
rje 77/tcp netrjs erpc 121/udp
finger 79/tcp ntp 123/udp
link 87/tcp ttylink statsrv 133/udp
hostnames 101/tcp hostname profile 136/udp
iso-tsap 102/tcp tsap snmp 161/udp
x400 103/tcp snmp-trap 162/udp
x400-snd 104/tcp at-echo 204/udp
pop-2 109/tcp pop postoffice
Figure XXX-4 : Ports TCP et UDP.
78
XXXII -XXXI - Résolution de noms d'hôtes IP
Problème : Comment résoudre la correspondance entre les noms des ordinateurs en réseau et leur adresse
IP ?
Par exemple, la recherche d'un fichier sur un réseau utilise une UNC composée de 3 parties :
Un nom d'ordinateur NetBIOS précédé de \\
Un nom de partage situé sur l'ordinateur (option)
Un nom de répertoire ou de fichier au format MS-DOS situé dans le partage.
Exemple : \\berlioz\serv_nt4
Les Domaines Windows NT correspondent à un ensemble d'ordinateurs en réseau pour lesquels une base
de données d'authentification a été créée (SAM = Security Account Manager). Ce concept est spécifique à
Windows NT. Les noms de domaine sont créés au moment de l'installation du premier serveur NT dans un
domaine. Ce serveur est nommé Contrôleur Principal de Domaine (CPD).
microsoft.com ou ibm.com
Les noms des serveurs de l'Internet sont associés aux noms de domaines et se présentent sous la forme :
www.microsoft.com www.ibm.com
___________
79
XXXII-C- XXXI-C- Correspondance entre les noms des ordinateurs et les adresses IP
XXXII- C- 1-XXXI- C- 1- Solution de départ, le fichier Hosts
Pour de petits réseaux non connectés sur l'Internet, la correspondance entre les noms des ordinateurs et les
adresses IP peut être résolue localement grâce à une table consignée dans un fichier nommé hosts sur chaque
ordinateur. Cette méthode ne peut plus être utilisée lorsque le nombre d'ordinateurs sur le réseau devient
important, car tout ajout d'un nouvel ordinateur sur le réseau doit entraîner une mise à jour du fichier hosts
dans chaque ordinateur. De plus, ce système ne résout pas les problèmes de correspondance entre les noms
de serveurs sur Internet et leur adresse IP.
N.B. Le nom d'ordinateur donné dans le fichier hosts est purement local à l'ordinateur où il se trouve et ne
correspond pas forcément au vrai nom de l'ordinateur.
Domain Name System assure la correspondance entre le nom Internet complet d'un ordinateur
(nom de serveur + nom de domaine) et son adresse IP.
Pour utiliser ce service sur une station de travail Win95 ou NT, dans la fenêtre TCP/IP, il faut sélectionner
l'onglet DNS et indiquer l'adresse du serveur DNS primaire.
Dans chaque domaine Internet, il existe un ou plusieurs serveurs de Noms de Domaine. Ces serveurs
contiennent une table de correspondance entre les noms des ordinateurs de la zone et leur adresse IP. Ces
tables sont maintenues manuellement par l'administrateur de la zone.
LMHOSTS
lmosts à l'instar du fichier hosts est un fichier qui contient une table de correspondance statique entre les noms
NetBIOS des ordinateurs du réseau et leur adresse IP. Cette table doit être maintenue manuellement et ne peut
donc être utilisée que sur de petits réseaux.
Cependant, sur certains OS, il est possible d'utiliser un fichier lmhosts partagé, se trouvant sur un autre
ordinateur. Dans ce cas, il est possible de gérer ce fichier d'une manière centralisée.
WINS
Windows Internet Name Service utilise une couche NetBIOS au-dessus de TCP/IP pour établir des
correspondances entre les adresses IP et les noms des ordinateurs NT ou 95.
80
XXXIII -XXXII - Protocole IP
XXXIII-A- XXXII-A- IP et les réseaux physiques
Le protocole IP permet d’avoir une vue globale de l’inter-réseau sans tenir compte des différents types de
réseaux physiques qui le constituent. Les protocoles TCP et UDP ne dialoguent qu’avec IP sans voir les réseaux
physiques. Les datagrammes IP peuvent être encapsulés dans des trames Ethernet, Token-Ring ou des
paquets X25 ou même des liaisons séries asynchrones en utilisant un protocole de transports sur ce type de
liaison comme PPP61.
IP est aussi utilisable sur des liaisons spécialisées ou des réseaux de type Frame Relay ou ATM 62.
Hôte
Couches supérieures et
applications
IP Couche réseau
Niveau 3
Réseau
Réseau Ethernet Token- TRANSPAC RTC
Ring
TR1 TR2
81
XXXIII-C- XXXII-C- Datagramme
IP travaille en mode datagramme sans connexion, c’est-à-dire que chaque paquet IP est véhiculé dans un
internet de manière indépendante. Il se peut donc que plusieurs paquets successifs empruntent des chemins
différents.
Datagramme 1
Datagramme 2
Datagramme 3
32 bits
DM
Identification O Fragment Offset
F F
En-tête
Time to Live Protocol Header checksum
Source Address
Destination Address
Zone
Options Padding optionnelle
Données des
supérieures
couches
Data
82
Octets Nom du champ Signification
1 Version Ce champ est formé par les 4 bits de poids fort du premier octet. Il indique la
version de IP utilisée. La valeur actuelle est 4 (O1OO). Elle passera à 6 lorsque
la version IPV6 sera opérationnelle.
1 IHL Internet Header Length = Longueur de l'en-tête IP. On y trouve une valeur qui
indique la longueur de l'en-tête en multiple de 32 bits. Par exemple si la valeur
est 0101 (5), cela veut dire que l'en-tête mesure 5 fois 32 bits, soit 20 octets. Ce
champ est indispensable, car la longueur de l'en-tête varie s'il y a des options à
la fin de l'en-tête standard.
2 TOS TOS= Type of Service. Ce champ informe les routeurs des réseaux de la qualité
de service désirée. Il est divisé en 6 parties.
1- 'Precedence' : Les 2 bits de poids fort de l'octet indique la 'préséance', c'est à
dire en fait l'importance du paquet IP et la priorité que l'on doit lui accordé.
La valeur par défaut de ce champ peu utilisé est 0.
2- Délai : 0= normal, 1= Elevé.
3- Débit : 0= normal, 1= Elevé.
4- Fiabilité : 0 = Normale, 1= Elevée.
5- Coût: 0= Normal, 1= Elevé.
6- Ce bit doit être à 0.
Le TOS est peu utilisé, mais il est fonctionnel. Les valeurs du TOS sont gérées
par les couches supérieures.
3-4 Total Length Ce champ indique la longueur totale du paquet IP.
5-6 Identification Ce champ indique le numéro du paquet émis par la couche réseau d'un nœud.
Le compteur compte de 0 à 65535, puis repasse à 0.
7-8 Fragment Offset Si le bit DF (Don't Fragment) de ce champ est à 1, cela signifie que le
datagramme IP ne doit pas être fragmenté. Il peut être utilisé par exemple, par
des terminaux sans mémoire de masse qui chargent leur OS à l'aide du
protocole TFTP. En effet le logiciel contenu en ROM est incapable d'assurer le
réassemblage des datagrammes.
Le bit MF (More Frags) est mis à 1 tant que tous les fragments d'un même
datagramme ne sont pas arrivés. Le dernier fragment à donc ce bit MF à 0.
Dans le cas de datagrammes non fragmentés, ce bit est évidemment à 0.
Les autres bits de ce champ indiquent la position des données par rapport à leur
position dans le datagramme d'origine.
9 TTL Time To Live : Ce champ représente en secondes la durée de vie d'un
datagramme IP. La valeur de départ est de 60. A chaque passage dans un
routeur la valeur est décrémentée d'une seconde (pour simplifier le travail).
Lorsque la valeur atteint 0, le routeur qui reçoit le paquet le détruit et envoie un
paquet ICMP sur le réseau. Ce mécanisme a pour but d'éviter que des
datagrammes dont l'adresse est erronée tournent sans fin dans l'internet.
10 Protocol On trouve dans ce champ le code du protocole utilisé au-dessus de IP. Si la
valeur est 6, le protocole qui utilise IP est TCP. Si la valeur est 17, il s'agit d'UDP.
Si la valeur est 1, d'ICMP.
11-12 Header Checksum Ce champ contient une checksum sur 16 bits des octets de l'en-tête IP.
13-16 Source Address Ce champ contient l'adresse du nœud qui a émis le datagramme IP.
17-20 Dest. Address Ce champ contient l'adresse du nœud de destination
20 + Options Ce champ de longueur variable, mais toujours multiple de 32 bits est utilisé
multiple parfois pour définir des informations concernant la sécurité ou le routage
de 32
bits
Figure XXXII-5 : Signification des champs de l'en-tête IP.
83
Exemple
Cette zone affiche le nom
des différents champs de
l'en-tête Ethernet, ainsi
que les valeurs
correspondantes.
Figure XXXII-6 : Trame Ethernet avec Datagramme IP affichée sur un analyseur de protocole.
84
Multiplexage Non Oui
Contrôle d'erreur Non (Oui en option) Oui
32 bits
Longueur Checksum
Octets de données
Octets de données
85
Exercice
En-tête En-tête
....................... .......................
EXERCICE : Complétez les bulles. En vous aidant de la page précédente, indiquez quelle est la valeur du port
correspondant à l'application SNMP destination dans l'en-tête UDP?. : .....................
Décodage de l'en-
tête Ethernet
Décodage de
l'en-tête IP
Champs concernants
l'application SNMP
86
XXXIV-B- XXXIII-B- •TCP
XXXIV- B- 1-XXXIII- B- 1- Généralités
Pour la transmission de suites de données très longues comme des fichiers par exemple, on met en œuvre un
protocole plus fiable nommé TCP (RFC 793 de 1981) qui utilise des circuits virtuels. Ce sont des connexions
full-duplex entre les 2 applications dialoguant sur les 2 ordinateurs. Avant de commencer une transaction, le
protocole à chaque extrémité du circuit virtuel ouvre une connexion. Chaque connexion correspond à un port
qui comporte un numéro alloué de manière dynamique côté client et de manière bien définie côté serveur. Les
segments TCP comportent un en-tête et un champ de données. L’ensemble est passé à la couche IP qui y
ajoute l’en-tête IP, puis le tout est inséré dans une trame.
XXXIV- B- 2-XXXIII- B- 2- Format de l'en-tête
32 bits
Sequence Number
Acknowledgement Number
Reserved U A P R S F
Data R C S S Y I Window
Offset G K H T N N
Options Padding
DATA
DATA
URG : Ce bit à 1 indique que des données urgentes sont placées dans le
paquet. Dans ce cas, le champ "Urgent Position" est valide et contient un
pointeur qui permet de déterminer la longueur de ces données. Ce type de
87
flag est utilisé par exemple au cours d'une session Telnet pour envoyer une
commande de contrôle au serveur Telnet
15 et 16 Window Ce champ contient le nombre d'octets que la session TCP peut encore
recevoir sans accusé de réception. Lorsque la valeur atteint 0, l'émetteur ne
doit plus émettre. Ce champ permet le contrôle de flux.
17 et 18 Checksum Checksum du paquet TCP y compris l'en-tête.
19 et 20 Urgent position Ce pointeur de données urgentes est valide si le flag URG=1.
Figure XXXIII-6 : Champs de l'en-tête TCP.
XXXIV- B- 3-XXXIII- B- 3- Fonctionnalités TCP
Accusé de réception
La fiabilité de la transmission est assurée par l'utilisation d'accusé de réception. Le flag ACK est alors positionné
à 1. Le champ Achnowledgement Number est aussi utilisé pour les accusés de réception. Il permet de connaître
le numéro du prochain octet attendu par une session TCP et par conséquent le numéro du dernier octet reçu.
Séquencement et Détection de pertes de données
Les champs Sequence Number et Acknowledgement Number permettent aussi de s'assurer que les octets
arrivent dans l'ordre correct. Ils permettent aussi de détecter si des octets ont été perdus.
88
Multiplexage
Physique
3
2
1
Figure XXXIII-8 : Multiplexage TCP.
TCP peut servir plusieurs applications dans un même nœud. C'est le multiplexage TCP. Chaque extrémité de
la liaison se caractérise par une adresse IP et un numéro de port.
Par exemple l'application 1 dans le nœud dont l'adresse IP est 126.0.0.1 est l'extrémité 126.0.0.1,80 de la
connexion avec l'application 2 du nœud 126.0.2.66. Cette autre extrémité est dont notée 126.0.2.66,1602.
Connexions
TCP établit une connexion avant de transmettre des données. Cette opération est relativement longue, car elle
nécessite l'envoi de plusieurs paquets de dialogue entre les 2 couches TCP qui veulent établir la connexion.
Chaque connexion est symbolisée par les valeurs des 2 extrémités. Ainsi la connexion 1 est définie par :
(126.0.01,80,126.0.2.66.1602)
89
Figure XXXIII-10 : Même trame non décodée.
EXERCICE :
90
XXXV -XXXIV - Protocoles de résolution d’adresses IP
XXXV-A- XXXIV-A- ARP (Protocole code 0806)
Une adresse IP est liée à une adresse physique en utilisant le protocole ARP64 (RFC 826 de 1982). Pour trouver
l’équivalence entre une adresse physique inconnue et une adresse IP connue, une station diffuse un paquet
ARP contenant une adresse IP destination ainsi qu’une adresse physique source et une adresse IP source. La
station destination renvoie un paquet contenant son adresse physique et son adresse IP. Une table de
correspondance entre les adresses physiques et les adresses IP, est mise à jour dans chaque station.
@IP 126.0.2.55
@IP 126.0.1.23 @IP 126.0.2.43 @IP 126.0.1.12
Quelle est l'@ Mon @ MAC est
MAC du nœud 08 25 66 AD FE AB
dont l'@ IP est
126.0.2.555 ?
C:\>arp -a
Interface : 125.0.0.1 on Interface 2
Adresse Internet Adresse physique Type
125.0.0.2 00-10-7b-3c-3b-70 dynamique
Figure XXXIV-2 Contenu d'un cache ARP.
XXXV- A- 1-XXXIV- A- 1- Format d'un paquet ARP
91
XXXV- A- 2-XXXIV- A- 2- Exemple ARP
92
XXXV-B- XXXIV-B- RARP (Protocole code 8035)
XXXV- B- 1-XXXIV- B- 1- Rôle de RARP
Le protocole RARP65 (RFC 903 de 1984), permet au contraire d'ARP, à une station sans disque ou à un
Terminal X66 de connaître son adresse IP à partir d’une table de correspondance des adresses physiques et
IP maintenue à jour sur un serveur RARP. Lorsqu’une machine veut connaître son adresse IP, elle envoie un
paquet de "requête" RARP contenant son adresse physique et le serveur RARP lui répond en lui envoyant un
paquet RARP réponse contenant l’adresse IP. Pour que le protocole puisse être utilisé, il faut que le réseau
comporte au moins un serveur RARP. Celui-ci utilise une table normalement contenue dans le fichier /etc/ethers
sous UNIX. Le protocole TFTP est ensuite utilisé pour charger le logiciel dans le terminal à partir du serveur.
Station Table Serveur RARP
sans disque @MAC @IP Ton @IP est
Quelle est 126.0.2.3 !
mon @ IP ? xxxxxxxx 126.0.2.3
xxxxxxxx 126.0.5.9
xxxxxxxx 126.0.1.1
Requête RARP en mode broadcast
Réponse RARP
Figure XXXIV-6 : Requête et réponse RARP.
Supposons que la station sans disque ne puisse pas stocker son adresse IP. Au démarrage, le logiciel contenu
dans la ROM de Boot va envoyer une requête RARP dans une trame broadcast. Le serveur RARP consulte la
table de correspondance entre les adresses MAC et les adresses IP, établie manuellement par l’administrateur.
Il retourne l’adresse IP de la station dans une réponse RARP.
XXXV- B- 2-XXXIV- B- 2- Format RARP
93
XXXVI -XXXV - Protocoles de configuration IP automatique
Lorsque les réseaux deviennent très importants, il devient fastidieux de configurer IP sur chaque ordinateur.
D’autre part l’usage de plus en plus répandu d’ordinateurs portables interdit sur ces machines des
configurations fixes. Il faut qu’au cours des déplacements les ordinateurs portables puissent acquérir une
configuration IP (adresse et masque) de manière automatique. L’IETF67 a développé plusieurs protocoles pour
configurer automatiquement les ordinateurs sur les réseaux TCP/IP dont BOOTP 68 et DHCP69
XXXVI-A- XXXV-A- BOOTP
BOOTP (RFC 951 de 1985 et 1532 de 1993) est un protocole dont le rôle est le même que celui de RARP,
mais contrairement à ce dernier, il fonctionne sur les réseaux comportant des routeurs. BOOTP peut être
considéré comme une amélioration de RARP et permet d'obtenir des adresses IP pour des stations sans
disques ou des terminaux X à partir d'une table, gérée manuellement, existant sur un serveur BOOTP. Le
protocole de transport de BOOTP est UDP.
94
XXXVI-B- XXXV-B- DHCP
Le protocole DHCP est une amélioration de BOOTP. Il permet d’allouer des adresses selon plusieurs méthodes
et il permet comme BOOTP le chargement de fichiers à partir du serveur. Ce protocole est routable, si on
installe un agent de relais DHCP dans les routeurs.
Allocation d’adresses
L’allocation des adresses peut se faire de 3 manières différentes :
Allocation manuelle : C’est l’administrateur qui établit, à la main, une correspondance entre l’adresse
MAC de l’ordinateur client DHCP et son adresse IP
Allocation automatique : Une adresse est attribuée automatiquement à un ordinateur possédant un
client DHCP. L’adresse IP est attribuée au cours de la première requête du client et elle est
définitivement attribuée à l’ordinateur.
Allocation dynamique : Cette méthode permet d’attribuer de manière temporaire une adresse IP à un
ordinateur qui possède un client DHCP. C’est cette méthode qui est utilisée par les fournisseurs de
services Internet pour les clients se connectant par l’intermédiaire du RTC. Cette méthode est aussi
très pratique lorsqu’il existe de nombreux ordinateurs portables qui se connectent sur un réseau, puis
sur un autre. Un système de gestion de durée des "Baux" permet de limiter la durée d’utilisation d’une
adresse par un ordinateur.
Serveur DHCP
Plage des adresses qui
seront allouées de
manière dynamique
Masque de sous-réseau
Si au cours de la
configuration du protocole
TCP/IP sur un ordinateur
avec OS Microsoft, on
coche cette case, le client
DHCP est activé et
l’ordinateur demandera
son adresse IP à un
serveur DHCP.
95
XXXVII -XXXVI - Routage
Le terme routage désigne la transmission de datagramme à partir d'un nœud d’un réseau vers un autre nœud
situé sur le même réseau ou sur un réseau différent. Ce terme désigne aussi le cheminement qui est établi pour
transmettre un datagramme IP de son origine vers son point de destination en utilisant les adresses IP
contenues dans le datagramme. Un routeur est une machine qui possède au minimum 2 interfaces différentes
connectées sur des réseaux différents.
XXXVII-A- XXXVI-A- Table de routage
Le fonctionnement du routage nécessite la présence de tables de routage dans les routeurs pour déterminer le
chemin à emprunter pour envoyer un datagramme IP d'une machine à une autre à travers l'internet.
La table de routage contient les informations suivantes :
l'adresse IP de destination. Cette adresse peut être une adresse machine ou une adresse réseau
suivant la valeur d'un flag H faisant lui-même partie de la table.
l'adresse IP du routeur suivant (next hop router) ou l'adresse du réseau qui lui est directement
connecté s'il n'y a plus d'autres réseaux.
des flags. (opion)
le nom de l'interface réseau à laquelle il faut envoyer le datagramme pour qu'il soit transmis.
La constitution de cette table est réalisée :
une seule fois par constitution d'un fichier ou par lancement au démarrage d'une commande
particulière (route sous Unix) à l'aide de protocole de routage. On parle alors de routage statique.
avec une remise à jour permanente réalisée par des protocoles spécialisés IGP comme RIP70,
HELLO, OSPF71 ou EGP comme BGP72. On parle alors de routage dynamique.
Les protocoles de type IGP (Interior Gateway Protocol) sont utilisés entre routeurs d'un même internet, alors
que les protocoles de type EGP (Exterior Gateway Protocol) sont utilisés pour des routeurs d'internets
différents.
Destination Gateway Flags RefCnt Use Interface
125.0.25.36 125.0.1.220 UGH x xxxxxx eth0
125.0.25.75 125.0.1.220 UGH x xxxx eth0
127.0.0.1 127.0.0.1 UH x xxxx lo0
125.0.1.10 125.0.1.12 U x xxx eth0
default 125.0.1.220 UG x xxxx eth0
126.0.0.0 125.0.1.220 UG x xxxx eth0
Figure XXXVI-1 : Exemple de table de routage de Soleil 125.0.1.12 obtenue avec la commande "netstat".
la première colonne contient les adresses des machines reconnues par les protocoles de routage. 127.0.0.0
est l'adresse de test de l'ordinateur SOLEIL. L'adresse "default" est l'adresse par défaut du routeur connecté
au réseau 125, permettant la connexion aux autres réseaux.
la seconde colonne comporte les adresses des routeurs à emprunter.
la troisième colonne comporte des flags. U (Up) indique que la route est en service. G (Gateway) indique
que la route passe par un routeur. H indique que l'adresse de la première colonne est une adresse machine
complète.
Refcnt est le compteur de connexions utilisant la route et Use le nombre d'octets transportés
Interface indique le nom de l'interface machine utilisée sur SOLEIL.
XXXVII-B- XXXVI-B- Routeur IP
Le routeur IP effectue les traitements suivants :
Recherche dans la table de routage de l'adresse de destination complète de la machine. Si elle est trouvée,
le datagramme lui est expédiée directement ou à travers un autre routeur. Dans le cas où cette adresse n'est
pas trouvée, il passe à la phase suivante.
Recherche de l'adresse du réseau correspondant à l'adresse de destination. Si elle est trouvée, le
datagramme est expédié. Sinon, le routeur passe à la phase suivante.
Recherche d'une adresse de routage par défaut qui doit correspondre à l'adresse d'un routeur connecté au
réseau. Si aucune adresse n'est trouvée, un message est délivré.
96
XXXVII-C- XXXVI-C- Direct
Le routage direct est la transmission d’un datagramme d’une station à une autre à l’intérieur d’un même réseau.
Jupiter Apollon
00 80 45 56 96 23 00 80 45 3F DA EE
126.0.25.36 126.0.25.75
En-tête En-tête
Data
Ethernet IP
126.0.25.75
00 80 45 3F DA EE
Soleil Uranus
00 80 45 FD 0A AA 00 80 45 3F BF DA
125.0.1.12 125.0.1.10
Figure XXXVI-3 : Routage sur un internet.
Le routeur est la machine Vénus. Il comporte 2 cartes réseau, donc 2 adresses MAC et 2 adresses IP
comportant des numéros de réseaux différents. Supposons que la machine Soleil veuille envoyer un
datagramme IP vers la machine Apollon. La couche IP recherche l'adresse IP de destination dans la table de
routage et déterminer le routeur auquel il faut transmettre le paquet. Le processus suivant est utilisé (comme
page précédente) :
-1- Recherche de l'adresse IP destination complète, si elle existe dans la table, pour déterminer
l'adresse du prochain routeur sur le chemin emprunté pour atteindre la destination.
-2- Si l'adresse complète n'est pas trouvée, la couche IP essaye d'utiliser l'adresse réseau destination
(126) et le routeur correspondant.
-3- Si l'adresse réseau destination n'est pas non plus trouvée dans la table, IP utilise l'adresse du
routeur par défaut (125.0.1.220).
En utilisant le contenu du cache ARP présent dans Soleil, la couche IP envoie le datagramme dans une
trame Ethernet avec comme adresse destination MAC celle du routeur Vénus connectée au réseau 125
(00 80 45 56 96 23). L'adresse de destination IP est celle d’Apollon. Dans le routeur, IP analyse l'adresse
de destination IP. Après consultation des tables de routage et du cache ARP, une trame Ethernet avec
l'adresse MAC d'Apollon (00 80 45 3F DA EE) est envoyée sur le réseau 126 avec comme adresse de
destination IP 126.0.25.75.
97
XXXVIII -XXXVII - Protocoles de routage
Pour assurer le routage dynamique et mettre à jour automatiquement les tables de routage, IP utilise 2 grands
types de protocoles : les protocoles de passerelles intérieurs (IGP = Interior Gateway Protocol) et les protocoles
de passerelles extérieurs (EGP = Exterior Gateway Protocol). Les IGP sont utilisés à l'intérieur des inter-réseaux
ayant une administration commune appelée systèmes autonomes. Les protocoles de types EGP sont utilisés
entre les systèmes autonomes. Le mot Gateway peut être traduit par passerelle ou routeur.
98
XXXIX -XXXVIII - Protocole de gestion des erreurs ICMP
ICMP (Internet Control Message Protocol RFC 792 de 1981) est un protocole qui permet l'envoi des messages
d'erreur.
Message ICMP
Type Code Somme de
En-tête En-tête 8 bits 8 bits contrôle
Contenu du message
Ethernet IP
99
en utilisant le protocole de négociation IPCP (Internet Protocol Control Protocol). Les champs "Adresse" et
"Contrôle" étant inutiles la liaison établie, le format de la trame après compression devient :
Protocole
0x7E
0x0000 Paquet IP FCS 0x7E
Figure XXXIX-3 : Format d'une trame PPP avec compression des en-têtes.
Le protocole PPP est très utilisé par les logiciels permettant la connexion à des serveurs Internet au moyen de
liaisons séries composées de modems et de lignes téléphoniques commutées.
C:\>tracert www.renault.fr
100
4 140 ms 141 ms 140 ms ARC5-POS-6-0-0.rain.fr [194.51.221.78]
5 140 ms 141 ms 140 ms Sgip2.rain.fr [195.101.10.22]
6 141 ms 150 ms 140 ms styx.sgip.fr [194.206.15.194]
7 160 ms 150 ms 150 ms www.renault.fr [194.51.107.102]
Routage terminé.
101
Des logiciels graphiques reprennent cet outil pour tracer une carte du chemin emprunté pour atteindre le nœud
cible.
C:\>ipconfig /all
Configuration IP de Windows NT
Nom d'hôte . . . . . . . . . . . . : al_sta
Serveurs DNS . . . . . . . . . . . :
Type de nœud. . . . . . . . . . . : Hybride
Id d'étendue NetBIOS . . . . . . . :
Routage IP activé. . . . . . . . . : Oui
WINS Proxy activé. . . . . . . . . : Non
Résolution NetBIOS utilisant DNS . : Oui
Cette commande est remplacée par utilitaire WINIPCFG sous Windows 95.
102
XLI-D- XL-D- Netstat
Netstat.exe affiche de nombreuses statistiques sur les protocoles et les connexions réseau. Cette commande
possède de nombreux paramètres qui donnent des résultats très différents.
C:\>netstat –e
Statistiques interfaces
Reçu Envoyé
Octets 13542338 544425
Paquets unicast 9774 6648
Paquets non-unicast 70 70
Rejets 0 0
Erreurs 0 0
Protocoles inconnus 0
C:\>netstat -n
Connexions actives
Proto Adresse locale Adresse extérieure Etat
TCP 125.0.0.1:139 126.0.0.1:1042 ETABLIE
TCP 125.0.0.1:1025 126.0.0.1:139 ETABLIE
TCP 125.0.0.1:1031 126.0.0.1:139 ETABLIE
TCP 127.0.0.1:1026 127.0.0.1:1030 ETABLIE
TCP 127.0.0.1:1030 127.0.0.1:1026 ETABLIE
Figure XL-5 : Résultats de la commande Netstat avec 2 options différentes
C:\>arp -a
103
Résumé : L'usage d'un cahier des charges fonctionnel peut-il apporter une
réponse à la crise structurelle qui paralyse actuellement l'informatique Internet ?
Propositions concernant l'objet, le contenu et les particularités du CdCF d'une
application informatique complexe sur Internet.
... Et tout le monde se retrouva à la case départ des jeunes années 80, improvisant, bidouillant,
rafistolant comme au bon vieux temps. Oubliées les méthodologies ...
Il faut tout de même reconnaître que celles-ci avaient donné des verges pour se faire battre ! Elles avaient
une image de pesanteur et de coût prohibitif.
En fait, leur drame est de pas avoir été appliquées par les acteurs prévus : Elles avaient été conçues
comme un outil de dialogue, à parité, entre utilisateurs et informaticiens. Or ces derniers étaient trop
souvent amenés à conduire seuls l’analyse, faute d’un goût prononcé pour le dialogue - peut-être - , mais
aussi parce que le formalisme de représentation des traitements (en particulier le MCT/MOT, selon le
vocabulaire Merisien) était illisible pour les utilisateurs, qui ne pouvaient donc pas donner leur
indispensable validation.
En parallèle (1990 - 2000) se développèrent d’autres thèmes porteurs, tels que les structures
clients/serveur (promises à un bel avenir), l’ « orienté Objet » (expression dont on usa et abusa). Puis dans
un cadre beaucoup plus vaste, la « démarche Qualité » et les efforts de normalisation.
L’AFNOR publia en 1991 une série de normes centrées sur l’ « analyse de la valeur » : X 50-100, X 50-
151, X 50-152, X 50-153. La seconde de cette série est axée sur le "cahier des charges fonctionnel"
(abréviation : "CdCF"), et fit figure de référence en la matière.
Cet effort de normalisation se voulait très général : Il ne faut pas perdre de vue que le précurseur de ce
mouvement était le BTP. Beaucoup restait à faire pour que le secteur de l’informatique puisse en tirer un
profit direct. Mais il avait le mérite d’identifier certaines préoccupations majeures qui apparaissent d’une
actualité urgente aujourd’hui, en cette phase de crise, tant la relation entre demandeurs et prestataires
ressemble aujourd’hui, dans le domaine Internet, à un conte du folklore russe intitulé :
« Va je ne sais où, rapporte moi je ne sais quoi ».
104
XLIII -XLII - II. Du « besoin » à l’ « attente »
L’idée directrice est que :
le cahier des charges est l’oeuvre du demandeur
Le demandeur se trouve donc réinvesti dans ses responsabilités et cela avant tout contact avec un
prestataire. Par ailleurs, il n'est astreint aucun formalisme graphique.
Ce demandeur identifie, et exprime par écrit, ses besoins en termes fonctionnels, Il précise
les contraintes et leurs limites (leur « flexibilité »).
Il formule son besoin en terme de résultat attendu, et ne se prononce pas sur le choix des moyens. Il
sort ainsi son besoin des limbes de l’inconscient, et en fait une « attente» dont les contours sont précis,
et qui servira de cadre à un engagement réciproque (le futur document contractuel).
Il élabore ainsi un document qui permettra un appel d’offres, donc une compétition équitable,
Il précise les critères d’appréciation qui orienteront son choix parmi les propositions qui seront
soumises
La norme invite donc à agir dans le cadre d’une certaine éthique professionnelle.
Ce document est conçu pour servir de cadre de réponse aux candidats, Ce qui devrait faciliter la
comparaison de leurs propositions.
Il s’agit donc d’anticiper sur la future relation contractuelle, en permettant à chacun de prendre conscience,
le plus tôt possible, de ses responsabilités,
Pour le demandeur :
L’influence des candidats cherchant à vendre un produit préexistant, qui n’est pas nécessairement
adapté au contexte, ou « poussant à la dépense », La sélection du candidat final sur des critères
irrationnels ,
Des lacunes dans le document contractuel ultérieur (qui sera probablement rédigé par le prestataire
l’engagement financier , une dérive du calendrier, Sur le plan qualitatif, un résultat décevant et ne
En somme, en voulant faire l’économie de cette phase, on favorise l’installation d’une situation de
dépendance vis à vis du prestataire, et on ne fait que retarder un travail d’investigation qui se révélera,
de toute façon, inévitable.
Pour le prestataire :
105
de démontrer qu’il est apte à comprendre une problématique complexe à partir d’un document écrit,
de chiffrer sa prestation ,
Et c’est là la pierre d’achoppement : Aussi surprenant que cela paraisse, en informatique, un
développement original (par opposition à un logiciel simplement adapté au nouveau contexte) est une
opération souvent difficile à chiffrer , sauf à disposer d’un descriptif précis.
... Tout ceci, en y consacrant le moins de temps possible, sachant que ce travail ne lui sera peut-être
jamais rémunéré, et en espérant qu’il ne s’agit pas d’un « faux appel d’offres » (l’heureux élu est déjà
choisi, la procédure ne sert qu’à donner une apparence d’objectivité).
Mais également le « Qui ? »(les différents publics destinataires des pages), le « Pourquoi ? », le «
Quand ? », le « Où ? ».
Attention : ces questions ne correspondent pas à la typologie classique de Merise, par exemple. Ainsi le «
Quoi ? » ne recouvre pas, ici, la notion de MCD. En revanche, il présente bien des analogies avec le
domaine des MCT / MOT.
En bref, il faut exposer à peu près « Tout » … à deux exceptions près, de taille : le «Comment ?» et le
«Combien ?» (budget) qui sont - et c’est le but du jeu - à la charge du candidat.
Ajoutons au lot du prestataire - ce qui est moins évident - un regard critique sur la faisabilité de
l'opération, une identification des risques voire des mises en garde éventuelles, comme le ferait - dans un
autre contexte - un bon avocat, un bon médecin, un bon architecte, parfois au risque de perdre un client
Il s’agit, en somme, de tester les compétences du candidat sans lui imposer une charge de travail
excessive. Il peut donc parfois être utile d’omettre certains points délibérément, permettant ainsi
d’apprécier ses réactions, son aptitude à l’identification des problèmes et son expérience du métier.
Inversement, dans certains cas, il se peut que le demandeur soit amené à empiéter sur le terrain des
prestataires.
Contexte juridique :
Comme pour toute application informatique, il peut être judicieux de préciser un cadre juridique concernant
les règles de propriété sur la future application (afin d’éviter que dans le cas d’un produit coûteux,
réalisé « sur mesure », il ne soit ultérieurement revendu aux concurrents du demandeur), et certains points
de déontologie (confidentialité, concurrence déloyale etc.).
Il ne faut pas non plus perdre de vue l’évolution du contexte juridique concernant Internet, en particulier en
matière de droits d’auteur pour les images, les sons, les textes, les règles de dépôt des noms de
domaine et les responsabilités..
Dans tous les cas, s’il y a lieu à dépôt d’un nom de domaine , préciser les rôles (le dépôt doit-il être
effectué par le prestataire ? y a-t-il lieu à recherche d’antériorité, à dépôt d’un nom de marque auprès de
l’INPI ? Qui se chargera de surveiller les dates d’échéance etc.). Il faut souligner le danger qu'il y a à ne
pas surveiller l'échéance des noms de domaines (surtout les ".com"), certains sites n'hésitant pas à diffuser
la liste des noms susceptibles de tomber prochainement dans le domaine public : En fait, le droit d'usage
d'un nom de domaine n'est que "loué" (comme un nom de marque, d'ailleurs, mais à échéance plus brève).
106
Ne pas oublier, non plus, que la déclaration à la CNIL (Commission nationale Informatique et Liberté) est
obligatoire dès que des données personnelles figurent dans un fichier informatique quel qu'il soit (cela n'a
rien de particulièrement "Internet", mais là, ça ce voit !). Compter un délai de deux mois (sous toute
réserve) pour la réponse.
Rapport entre la nouvelle application et l’existant
S’il l’informatique Internet est appelée à s’articuler avec un système Informatique existant , donner
des informations sur ce dernier (système d’exploitation, langages, gestionnaire de base de données,
structure de la base de données, interfaces, logiciels etc.)
Si le futur site est appelé à remplacer un système existant informatique , prévoir un descriptif (ce
qui permettra de chiffrer la «reprise» des données existantes, qui peut, dans certains cas, représenter
un poste important du budget).
S’il s’agit d’une refonte de site Internet , exposer les motifs de l’insatisfaction.
Hébergement :
Il appartient, en principe, au candidat de faire des suggestions pour le choix de l’hébergeant et de présenter
son coût, les caractéristiques du serveur hôte, les services proposés : En effet, si le prestataire est familier
de l’hébergeant retenu, certains aspects peuvent être facilités.
(Remarque : Si le site est situé à l’étranger, prévoir éventuellement l’impact sur la gestion des dates,
tels que décalage horaire, gestion des dates « mm/jj/aa » etc. ). Ceci étant, il se peut que le
demandeur souhaite imposer un hébergeant.
Par ailleurs, les exigences en matière de disponibilité du site doivent rester vraisemblables : Il est normal
qu’un serveur soit arrêté périodiquement pour des maintenances (actuellement, on ne peut
raisonnablement demander une disponibilité du serveur supérieure à 95% du temps total)
Accessibilité aux pages / sécurité :
Les distinctions Internet / Extranet / Intranet ont perdu de leur netteté. Ceci dit, on
utilise fréquemment « Internet » pour désigner des pages accessibles par tous, alors que ce mot désigne,
en fait, une réalité très vaste constitué d’un ensemble de protocoles (le
Web : "http", les transferts de fichiers : "ftp", email etc.)
Du coup « Extranet » est censé désigner les pages réservées à un public restreint
(abonnés à un service, par exemple) filtré par mot de passe, et « Intranet » des sites à usage exclusif de
l'entreprise, et en principe hébergés sur un serveur installé dans ses locaux (mais ce dernier point est de
moins en moins vrai).
En fait, le principal intérêt de cette distinction est que dans un contexte Intranet, le navigateur est imposé,
ce qui élimine les questions de compatibilités. De plus, si, dans ce contexte, le serveur est physiquement
local, les risques d'intrusions sont relativement limités.
Toujours est-il que les règles d’ accessibilité des pages doivent être détaillées.
Le nombre des intervenants en mise à jour de la base de données doit également être précisé :
Suivant les cas, les problèmes de concurrence d’accès doivent être gérés, ou non, au niveau des
développements.
Sans forcer le trait, le contexte Internet est plus vulnérable que celui de l’informatique générale. La plupart
des sites ne justifient pas de stratégies draconiennes de protection (des règles de bon sens - en particulier
107
au niveau de la programmation - suffisent en général) mais il faut mentionner l'existence éventuelle de
données particulièrement sensibles.
Autre distinction : Un site est en général permanent, mais un site temporaire ou périodique (le temps
d’un salon, par exemple) peut également représenter une formule intéressante, car peu coûteuse (en
raison d’une présentation, en général, plus « standard »).
Choix du gestionnaire de la base de données
Le gestionnaire de base de données est en principe suggéré par le prestataire, mais le demandeur peut
avoir une opinion sur la question : On peut observer des souhaits insistants pour des gestionnaires de gros
calibre (SQL server, pour citer un exemple du contexte Windows), alors que ce type de choix a des
conséquences budgétaires notables au niveau de l’hébergement, des développements et de la
maintenance.
Il faut garder à l’esprit qu’un temps de réponse Internet dépend, comme toute chaîne, de son maillon le
plus faible, et que la qualité de la programmation et le respect de quelques principes simples jouent, en
fait, un rôle essentiel dans ce mécanisme.
Langage de développement :
Là encore, il s’agit d’un point qui est théoriquement du ressort du prestataire. Mais rien n’empêche un
demandeur d’exprimer ses préférences (dans le souci, par exemple, d’assurer la meilleure cohérence
possible entre gestionnaire de base de données et langage).
Structure de la base de données :
Cette question relève typiquement de la réponse des candidats. Néanmoins, le point est mentionné
pour mémoire, car la première tâche à laquelle s’attelleront les candidats sera probablement de tenter
une ébauche de la structure de la base.
Il faut percevoir que la part occupée par les traitements dits « de gestion de la base de données »
représentent la part immergée de l’iceberg, soit facilement les 3/4 de la totalité d’un budget. Il s’agit des
traitements de création / modification / suppression des enregistrements permettant d’actualiser à
distance et instantanément les informations consultables sur les pages « publiques » du site (les références
d’un catalogue, par exemple).
La qualité d’une application informatique dépend, en très grande partie, de ces programmes qui sont longs
et rébarbatifs à écrire et nécessitent des procédures de tests très soigneuses. Dans les produits bon
marché, cette phase est bâclée. Le risque est alors que la base se pollue insidieusement.
Or, en informatique Internet on a plus spécialement tendance à se focaliser sur les pages publiques
(de consultation des données), en sous-estimant l’importance de cette «arrière-boutique» (le «back-
office» pour les anglicistes).
En simplifiant, le coût de cette part des développements est pratiquement proportionnel au nombre de
tables de la base, et dépend également du nombre et de la nature des contrôles effectués sur les
champs de saisie. Pour établir son devis, le candidat doit évaluer approximativement ces données, et
donc disposer d’emblée d’informations relativement complètes.
nombre des langues :
Il faut prévoir qui se chargera des traductions, ce qui reste une question classique.
Mais il faut également percevoir le moment où le nombre des langues risque de bousculer la structure
même des développements.
En effet, pour faire au plus simple, les libellés à traduire peuvent être « statiques » (en clair : écrits
directement dans le code HTML, sans recours à la programmation). On peut alors se contenter de dupliquer
simplement les pages dans les différentes langues, tout en gardant à l’esprit que s'il faut modifier des
pages, il faudra reporter les modifications, manuellement, sur les pages jumelles des autres langues.
En revanche, si les pages sont nombreuses et si le site est multilingue, on peut préférer opter pour une
formule « dynamiques » (concrètement, les libellés, eux-mêmes, sont stockés dans une base de données,
et utilisés sous forme de variables). Les pages n'ont alors pas lieu d'être dupliquées (ce qui simplifie la
maintenance), mais si la mise en page est très précise, elle risque d’être bousculée par le volume du texte,
extensible selon les langues.
navigation
La qualité de la navigation (l’enchaînement, interactif ou non, des pages du site) est l’une des
composantes essentielles de l’efficacité d’une application Internet.
108
L’ergonomie a pour rôle de réussir un compromis harmonieux entre la limpidité de chaque page et un accès
aussi rapide que possible à l’information recherchée. Le travail préparatoire consiste donc à classer
hiérarchiquement des informations en fonction des intentions supposées des visiteurs.
Sur le plan technique la mise au point de la navigation suppose une bonne perception des possibilités
offertes par les découpes de fenêtres (les "frames") et les fenêtres secondaires (fréquemment dénommées
"pop-up").
En contrepartie, la multiplication des pages peut alourdir notablement le budget. En effet (et c’est une
particularité de l’ informatique Internet) la transmission des informations d’un écran à l’autre (ou la
conservation d’informations persistantes au cours d’une même session) peut nécessiter des procédés
acrobatiques si la navigation impose, par exemple, de pouvoir passer de n’importe quelle page à n’importe
quelle autre.
Dans tous les cas, le dialogue serait grandement simplifié si le demandeur était en mesure de fournir, dès
le cahier des charges, une représentation très schématique des pages, permettant au moins d’apprécier
la répartition des zones de saisie, page par page, et les enchaînements entre les différentes pages.
Aspects graphiques :
Si le cahier des charges prévoit des réalisations graphiques, préciser s’il existe déjà une charte graphique
ou si elle doit être élaborée par le prestataire. Dans ce cas, les intentions du demandeurs devraient être
précisées (pour éviter, par exemple, une dérive coûteuse vers une utilisation d’animations qui ne
correspondrait pas au style de site attendu. Idem pour la sonorisation du site).
Si la mise au point graphique n’a pas lieu d’être réalisée par ce prestataire, il faudra tenir compte du fait
que l’articulation entre développements informatiques et réalisations graphiques n’est pas
nécessairement une opération simple, et qu’elle peut révéler des difficultés imprévues, surtout dans le cas
d’une exceptionnelle densité d’information (situation aggravée par l’interdiction des barres de défilement
sur les pages, par exemple)
Exigences en matière de compatibilités :
Comme dans toute application informatique, l’usage des champs de saisie doit toujours être contrôlé. Mais
dans le cadre d’Internet, ces contrôles revêtent une importance particulière (du fait de l’ouverture des pages
au public), et, pour des raisons de confort de l’utilisateur, il est bien préférable que ces contrôles soient
écrits en Javascript, chaque fois que c’est possible.
Or, en cas de développements Javascript importants (qu’il s’agisse de contrôles de saisie ou d’un autre
usage), trop d’exigences en matière de compatibilité peut pénaliser lourdement le budget, en provoquant
une multiplication des tests et des corrections. En effet, l’exécution de ce langage dépend de
l'équipement matériel du visiteur : éditeur et version du navigateur, système d’exploitation (Mac ou PC,
voire UNIX), sans compter le problèmes de variation de mise en page suivant la résolution de l’écran (800
x 600 pixels ou 1024 x 800 pixels).
D’une manière générale, plus le Javascript sera écrit de manière correcte mais rudimentaire, plus il a
des chances d’être largement compatible.
Tests
Les développeurs sont responsables de la qualité des tests «unitaires» (c’est à dire au niveau d’un
traitement pris isolément) et d’ «intégration» (qui ont pour objet de vérifier l’enchaînement des traitements).
Mais le demandeur doit être conscient que ses propres équipes doivent participer aux tests «utilisateurs»,
car ils pratiqueront les traitement selon une démarche qui leur est propre, que l’on ne peut demander aux
informaticiens car ce n’est pas leur métier.
A l’occasion de ces tests, des dysfonctionnements inattendus peuvent être provoqués ce qui est normal,
et doit donc avoir été prévu dans le budget.
On observe, dans la pratique, que cette phase est souvent esquivée par tout le monde !
Le prestataire, bien sûr, craint la détection d’erreur de programmation, (ou d'analyse, ce qui est plus grave),
Mais le demandeur également - qui doit y affecter un budget-temps de son propre personnel - craint de
devoir reconnaître des lacunes au niveau de la définition du chantier.
Il faut admettre que cette phase inconfortable est indispensable, d'autant plus qu'elle prépare la phase
finale de validation. Il est donc préférable qu’ elle soit explicitement prévue.
Transferts de fichiers
Après la mise en place définitive du site, le client disposera-t-il du FTP (protocole de transfert de fichiers,
qu’ils s’agisse des programmes ou des données) ? Si oui, quand le mot de passe lui sera-t-il remis ?
En principe cette opération a lieu après la validation et le règlement du solde du budget.
109
Elle n'a de raison d'être que si le site est installé sur un serveur distant (ce qui est le cas le plus fréquent),
et c'est là un élément important de l'autonomie du demandeur.
Remise des sources des programmes :
Toujours dans le cas où le site est installé sur un serveur distant, il peut être préférable de prévoir
explicitement une remise du texte des programmes après la validation finale (sous la forme d’un CD-Rom,
par exemple).
En effet, si le prestataire disparaît, ou si un conflit survient avec lui, la récupération des programmes via le
FTP peut être une opération aléatoire.
Référencement
Si le placement dans les extractions des moteurs de recherche est un point important pour le demandeur,
les pages-pivôt du site devront satisfaire à certaines contraintes techniques (mots-clés, descriptifs etc.). Il
convient également de définir les rôles pour les opérations de déclaration auprès des moteurs de
recherche.
Aide aux utilisateurs :
Il peut être prévu un manuel (pour les traitements de gestion de la base de données), ou quelques heures
de formation sur place du personnel, ou une hot line.
Ces solutions sont « classiques ». Mais une solution plus «Internet» peut consister à intégrer l’aide aux
pages mêmes du site.
Maintenance et évolution :
Les conditions de la maintenance et de l’évolution doivent être particulièrement prises en compte, car, dans
le contexte Internet plus qu’ailleurs, la pérennité des prestataires fait figure d’illusion (et cette remarque ne
préjuge en rien de leur qualité).
La maintenance sera simplifiée si :
Les traitements sont rédigés de manière modulaire, structurée et bien documentée (c’est là un vœu
formulé dans toutes les branches de l’informatique, mais il peut être bon de le rappeler)
Les traitements sont écrits en «mode natif», plutôt qu’à l’aide de générateurs de source. Bien
entendu, cette position est à nuancer en fonction du générateur, mais il est certain que le mode natif
est moins "propriétaire".
110
Un site Internet complet peut, dans certains cas, être une vaste opération, longue et coûteuse.
Mais, avantage du contexte Internet, les développements peuvent être livrés de manière
échelonnée. Il est probable qu’à ces occasions, des bifurcations s’avéreront
nécessaires, des idées nouvelles se grefferont.
On ne peut que suggérer de ne pas surcharger les premiers développements, mais de procéder
par étapes distinctes, en procédant par cercles concentriques à partir d’un noyau simple mais
très bien conçu, tout en anticipant sur les évolutions ultérieures.
Il est d’ailleurs probable que le prestataire se chargera de faire des suggestions de fonctionnalités
périphériques : moteurs de recherche intégré au site, forum, gestion d’emails, traitements
statistiques etc. La question sera de savoir s’il s’agit là de conseils judicieux, ou d’une incitation
à la dépense.
Echéances de l’opération en cours :
S’il n’y a aucune contrainte particulière concernant la date de mise en service, il vaut mieux laisser
le candidat apprécier le délai nécessaire (La qualité du travail ne gagne rien à une réalisation
dans l’urgence). Ce point pourra d’ailleurs être un bon argument de négociation budgétaire.
En revanche, si des dates de l’échéancier sont réellement impératives, il convient de le
préciser.
Ceci étant, il est indispensable de prévoir dès le début le principe de jalons de
validation :
Certains demandeurs expriment, dès la rédaction du CdDF, des souhaits concernant l’équipe de
développement .
Mais il faut souligner que son importance numérique ne joue pas nécessairement un rôle
positif, car la coordination des travaux de développeurs différents constitue, en soi, une tâche
difficile.
Mais pour un site complexe, un concepteur très qualifié doit impérativement initier le travail
(notamment au moment de la mise au point de la structure de la base de données et du
découpage en traitements). Mais la présence à plein temps de ce type de profil est difficile à
exiger de petites structures.
De même pour les graphistes : il est fréquent qu’il s’agisse de free-lance, et cela ne constitue pas
un point négatif.
En revanche, il est de première importance que des informations soient fournies sur les
méthodes qui sont suivies (en particulier au niveau de la conception et des protocoles de tests).
Par ailleurs, le regroupement des opérations par lots cohérents peut amener à répartir
la tâche entre plusieurs prestataires en fonction de leurs spécialités respectives. L’usage de
l’Internet (comme mode de communication entre eux) leur permettant d’articuler leurs travaux
avec une relative souplesse.
En marge, concernant l’exigence de «références», il faut reconnaître que cette pratique, très
anglo-saxonne, suppose un certain «fair-play» ...
Mais l’usage de l’Internet permet d’alléger cette procédure en mettant en ligne directement et
sans frais le texte intégral du cahier des charges (sous réserve de dispositions confidentielles,
bien entendu).
Tandis que les candidats peuvent, eux-mêmes, transmettre leur proposition par email sous la
forme de documents joints visualisables à l’écran, qu’ils n’envoient sous forme imprimée qu’en
cas de pré-sélection.
Autre possibilité de réponse : créer des pages Internet et fournir l’adresse au demandeur. L’intérêt
de cette formule est d’en permettre l’actualisation de manière permanente et instantanée.
Il peut être tentant de s’adresser à un conseil extérieur. La question sera alors de s’assurer de
sa compétence … et de beaucoup de qualités qui relèvent de l’éthique professionnelle. Vaste
domaine qui va de l’objectivité à la discrétion !
Internet Information
Server
(IIS 5.0)
Introduction
L'administration de IIS 5.0 est réalisée via le Gestionnaire des services Internet, c'est à
dire la MMC (Microsoft
Management Console) munie du snap-in iis.msc,
localement:
Attribution de l'adresse IP à laquelle sera associé le site Web parmi toutes celles définies sur l'hôte
et le port TCP sur lequel le site Web est installé (port Web standard: 80).
Configuration du nombre de connexions simultanées pouvant être gérées ainsi que du délai de
déconnexion automatique en cas d'inactivité
Configuration de la gestion (intervalles de temps, localisation) et des informations enregistrées
(clients, fichiers téléchargés, quantités d'informations, ...) dans le journal de log du site FTP
Configuration avancée du site
Messages d'erreur
Extensions serveur
Contrôle d'accès
Fin de la création
Résultat de la création
Contrôle d'accès
Fin de la création
Résultat de la création
Demande de redémarrage
Redémarrage en cours
de IIS SMTP,
Configuration NNTP,
Les services
FTP et les outils d'administration associés.
Les services
Web La version 6.0 de IIS est installée avec Windows 2003 Serve Les types (version 5.0 avec
Windows 2000, version 4.0 avec Windows N mime 4.0).
¡ ...
Installation
des outils d'administration de IIS et créatio des raccourcis correspondants
dans les outils d'administration et au sein du gestionnaire d'ordinateur.
L'administration de IIS 6.0 est réalisée via le Gestionnaire d services Internet, c'est à dire la
MMC (Microsoft Managemen
Console) munie du snap-in iis.msc,
le site FTP par défaut si le service FTP est installé, le site WEB par défaut si le
service Web est installé, le site WEB d'"Administration de Microsoft SharePoint"
les extensions Frontpage sont installées, le site WEB
d'"Administration" si le site web d'administration à distance est installé.
Attribution de l'adresse IP à laquelle sera associé le site Web parmi toutes celles
définies sur l'hôte et le port TCP sur lequel le site Web est installé (port Web standard:
80).
Configuration du nombre de connexions simultanées pouvant être gérées ainsi que du
délai de déconnexion automatique en cas d'inactivité
Configuration de la gestion (intervalles de temps, localisatio et des informations enregistrées
(clients, fichiers téléchargés, quantités d'informations, ...) dans le journal de log du site Web
sous
..\WINDOWS\system32\LogFiles\W3SVC1\exjjmmaa.log
Configuration avancée du site
Performances du site
Filtres ISAPI
Répertoire de base: Soit un répertoire local, soit un répertoire réseau, soit
une URL.
Accès en lecture seule ou lecture/écriture.
Journalisation et/ou indexation.
Exploration
Documents de base lorsqu'aucun fichier explicite
Messages d'erreur
Extensions serveur
Paramètres de contrôle d'accès et types mime
Contrôle d'accès
Les types MIME
Sécurités d'accès au répertoire
Filtrage IP sur des adresses, des classes d'adresse ou des noms de domaine
Authentification
Extension du serveur BITS
Contrôle d'accès
Fin de la création L'isolation
IIS offre trois possibilités pour gérer l'affectation du répertoire de base implicite lors de l'ouverture d'une
session FTP par un utilisateur.
Dans les trois cas, l'utilisateur ne pourra parcourir que ce répertoire, ses sous-répertoires réels et
virtuels. Il ne pourr pas remonter dans l'arborescence physique.
"Répertoire de base"\LocalUser\Public
pour les connexions anonymous
"Répertoire de base"\UserDomain\UserName pour les connexions non anonymous
Anonymous
Authentifié
Création d'un répertoire physique vide portant le même nom que le répertoire virtuel à la même place
pour rendre visible son existence dans un client FTP
(Le démon FTP bascule sur le répertoire virtuel et pas sur le répertoire vide)
Fin de la création
Résultat de la création
Résultat dans Internet Explorer avec un fichier nommé Default.htm à la racine du répertoire
de base
LXVI -LXV - Création de plusieurs serveurs Web virtuels sur un
même serveur
Création d'un site sur une adresse IP
Création d'un site associé à un nom d'entête
Configuration complémentaire dans les propriétés avancées
d'identification du site
LXVII -LXVI - Résultat dans le gestionnaire IIS
Contrôle d'accès
Création d'un répertoire virtuel (alias) Web
Warning de restauration
Redémarrage en cours
La prise en mains de Dreamweaver peut se faire par les tutoriels de DreamWeaver et la multitude
d’exemples qui sont proposés.
Activité d’apprentissage
Module TDI-23 Applications hypermédias
Technologie Internet
DESCRIPTION DE L’ACTIVITE
A partir du cahier des charges qui définit le contenu et les objectifs de l’application
hypermédia , il s’agit de structurer la navigation logique dans le site .
Exercice :
Travail demandé :
Imaginez les pages web qui seraient nécessaires pour proposer une navigation sur le site
de l’association.
Technologie Internet
Le système de navigation fournit les relations entre les sous-ensembles de contenu (les
rubriques du site web) . Il s’agit maintenant de structurer de manière homogène les pages
de l’application en prévoyant les moyens possibles pour réaliser les enchainements
En règle générale, nous aurons une partie en-tête , une partie menu à gauche , une partie
contenu à droite et une partie pied de page .
La partie menu fournit les éléments qui permettent qui permettent de naviguer : liens,
boutons
La partie contenu contient la rubrique de la page , c'est-à-dire l’information utile
La partie pied de page contient la date de mise à jour de la page, le webmaster à contacter
, etc
On parle aussi de gabarit des pages . Ceci sera réalisé techniquement par des tableaux,
des cadres ou mieux par des feuilles de style.
Exercice
Activité d’apprentissage
Module TDI-23 Applications hypermédias
Technologie HTML
DESCRIPTION DE L’ACTIVITE
<html>
<head>
<title>Document Html minimum</title>
</head>
<body>
</body>
</html>
Vous remarquerez que les balises sont en minuscule comme il est
désormais préconisé dans l’utilisation « moderne » de html ou xhtml.
- Enregistrer le document avec l'extension .html ou .htm, soit
Premier.html ou Premier.htm
-Ouvrir le document dans un navigateur
- Admirer votre premier document Html , qui est … vide !
4. rajouter un paragraphe
<html>
<head>
<title>Document Html avec texte brut</title>
</head>
<body>
Bonjour de la part de Mohamed !
<p>Ceci est un paragraphe</p>
Ceci n’est pas un paragraphe
<p align="center">Ceci est un paragraphe centré</p>
</body>
</html>
Technologie HTML
<a href="Page2.html">Page2.html</a>
3. exécuter Premier.html
4. cliquer sur le lien hypertexte . Que se passe t-il ?
DESCRIPTION DE L’ACTIVITE
<html>
<head>
<title>Affichage d’une image</title>
</head>
<body>
<img src="mas_ombre.jpg"></img>
</body>
</html>
Il s’agit d’utiliser des zones d’une seule image pour déclencher des liens vers
d’autres documents HTML. L’image est découpée en plusieurs zones qui peuvent
être de forme différente : polygonale, rectangulaire, circulaire
Nous allons utiliser l’image legumes.gif fournie dans les ressources pour accéder
à d’autres pages. Cette image est découpée en 3 zones : une zone en polygone
qui contient l’image d’un petit pois, une zone rectangulaire qui contient une tomate
et une zone circulaire qui contient la carotte.
<area shape="rect"
coords="127,9,196,79,5,45,32,18,32,39,52,30,80,56,6
4,85,82,76,51,97,33,68,31,58,4,55,5"
href="tomate.html" alt="tomate" />
7. exécuter legumes.html
8. cliquer sur les zones réactives . Que se passe t-il ?
Il existe de multiples façons d'arriver à ses fins. La première est d'utiliser tout
simplement un lien vers le fichier. Elle est cependant peu efficace, car le film ne
s'intègre pas à la page.
Quicktime :
_Real Player :
<embed type="audio/x-pn-realaudio-plugin" src=" animation.rm" height="200px"
width="200px" controls="all" console="video"/>
Une solution plus universelle existe. Elle consiste à convertir la vidéo en FLV (avec Riva
Encoder ou FFmpeg, par exemple). Ce format est celui utilisé par Flash pour les vidéos.
Un simple lecteur, comme Flash FLV Player, permettra alors de relire le fichier. Voici un
exemple de code permettant de lire une vidéo FLV à partir de ce lecteur :
<p id="player">
<a href="http://www.macromedia.com/go/getflashplayer">Téléchargez Flash</a>
pour voir cette vidéo.</p>
<script type="text/javascript">
var so = new SWFObject('flvplayer.swf','player','400','400','7');
so.addParam("allowfullscreen","true");
so.addVariable("file","video.flv");
so.addVariable("displayheight","300");
so.write('player');
Activité d’apprentissage
Module TDI-23 Applications hypermédias
Technologie HTML
DESCRIPTION DE L’ACTIVITE
En Html, les tableaux servent non seulement à aligner des chiffres mais surtout à placer
des éléments à l'emplacement que vous souhaitez. L'usage des tableaux est donc très
fréquent.
Néanmoins, il est aujourd’hui conseillé d’utiliser plutôt les feuilles de style pour
placer les éléments sur une page HTML.
Un tableau est composé de lignes et de colonnes qui forment les cellules du tableau.
Avant toutes choses, les cellules peuvent contenir tous les éléments Html suivants :
du texte
des images
des liens
des arrière-plans
Je veux un tableau centré qui occupe 60% de la fenêtre avec, sur une ligne, trois colonnes
égales.
Exemple :
<tr>
<td width=33%>cellule1</td>
<td width=33%>cel. 2</td>
<td width=34%>3</td>
</tr>
</table></center>
Je souhaite que la première ligne prenne toute la largeur de la ligne. La première cellule
doit donc déborder sur 3 cellules horizontales.
Dans le même style, je souhaite que la première colonne prenne toute la hauteur de la
colonne. La première cellule doit donc déborder sur 2 cellules verticales.
<center><table width=60% border=1>
<tr>
<td width=33% rowspan=2>cellule 1</td >
<td width=33%>cel 2</td >
<td width=34%>3</ td >
</tr>
<td>
< td width=33%>cel 2</td >
< td width=34%>3</td >
</tr>
</ table ></ center >
Technologie HTML
Il est aujourd’hui conseillé d’utiliser plutôt les feuilles de style pour décomposer un
document en plusieurs parties, aussi la présentation des cadres sera-t-elle
succincte
Pour diviser l'écran en plusieurs fenêtres, les balises sont peu nombreuses :
Zone avec des fenêtres
<frameset> Début de zone avec des fenêtres
Fin de zone avec des fenêtres
</frameset>
Agencement des fenêtres
< frameset rows="..."> Fenêtres horizontales
< frameset cols="..."> Fenêtres verticales
<frameset cols="30%,70%">
<frame>
<frame>
</frameset>
La largeur s'exprime en pixels ou en %. Dans ce cas, on veillera à ce que le total soit égal
à100%.
<frameset cols="30%,70%">
<frame>
< frameset cols="30%,70%">
< frame >
< frame >
</ frameset >
</ frameset >
Pour l'instant, nos frames sont vides. On va donc les compléter par des attributs de la
balise :
On construit 3 fichiers Html élémentaires que l'on place dans le même répertoire que le
fichier de frames :
<frameset rows="30%,70%">
<frame SRC="A.html">
< frameset COLS="30%,70%">
< frame src="B.html">
< frame src="C.html">
</ frameset >
</ frameset >
Les ascenseurs, comme à la fenêtre A, apparaissent automatiquement. Par l'attribut de
la balise <frame> scrolling="yes/no/auto" vous pouvez indiquer si la fenêtre doit ou non
posséder une barre de défilement.
Un autre attribut de cette balise <frame> est name="nom". name indique le nom de la
fenêtre de telle sorte que cette frame puisse être utilisée comme cible d'un lien hypertexte.
Ainsi, je voudrais faire un lien sur B pour afficher le contenu de ce lien (prenons le fichier
A.htm pour éviter de l'encodage) dans C.
<frameset rows="30%,70%">
<frame src="A.htm">
< frameset cols="30%,70%">
<frame src="B.htm">
< frame src="C.htm" name="fenetreC">
</ frameset >
</ frameset >
Et on met un lien vers A.htm dans le fichier B.htm en désignant comme cible la frame C.
_blank qui indique au browser qu'il doit créer une nouvelle fenêtre afin d'y
afficher le fichier. Dans ce cas, vous ouvrez en fait un nouveau browser.
_self qui indique que le fichier sera chargé dans la même fenêtre que celle
dans laquelle se trouve le lien.
Technologie HTML
Technologie HTML
Il existe un langage qui permet de définir la façon de présenter les éléments contenus
dans une page HTML ; différentes possibilités sont offertes . Aujourd’hui, il est
incontournable de définir les styles par des feuilles de styles externes, ce qui offre le
maximum de souplesse pour faire évoluer la présentation d’un site Internet. Par ailleurs,
ces feuilles de style externes permettent aussi de réaliser des positionnements de blocs
qui remplacent l’ancienne technique basée sur des tableaux.
<style type="text/css">
Définition des styles …..
</style>
2. L'élément link pour établir un lien vers une feuille de style externe (fichier texte avec
l'extension .css) :
<html>
<head>
<style type="text/css">
<!--
h1
{
font-size: 12pt;
color: green
}
//-->
</style>
</head>
<body>
<h1>Essai de style </h1>
</body>
</html>
h1
{
font-size: 12pt;
color: green
}
Comme nous l'avons vu plus haut, on peut redéfinir la présentation d'une balise ( <h1>
dans l’exercice précédent ), mais si vous voulez qu’un style s’applique à plusieurs
éléments , alors l'élément class peut être utilisé.
Nous créons une classe test utilisée dans l’exemple avec des balises h2 et h4. Le même
style est appliqué à ces balises si elles possèdent l’attribut class=test. La classe est
identifiée par .test dans la balise de style , comme elle le serait dans la feuille de style.
<html>
<head>
<style type="text/css">
.test
{
font-size: 12pt;
color: red;
}
</style>
</head>
</body>
<h2 class="test">Titre défini avec un attribut
class</h2>
<h2>Titre normal de niveau 2</H2>
<h3>Titre normal</h3>
<h4 class="test"> Titre h4 défini avec un attribut
class »
<body>
<html>
L’attribut ID peut être aussi utilisé pour identifier de manière unique un élément dans un
document.
En effet, on opte pour une ID de préférence lors d'un script Javascript., comme nous le
verrons plus loin.
Exemple :
<html>
<head>
<style type="text/css">
<!--
#test
{
font-size: 10pt;
color: red
}
//-->
</style>
</head>
</body>
<H2 id="test">Titre défini avec un ID</H2>
<H2>Titre normal de niveau 2</H2>
<body>
<html>
Les éléments HTML ont chacun une structure particulière. Il en existe deux
familles : les éléments de type bloc et les éléments au fil du texte, dits en ligne
(ou inline). Ce type dictera tous leurs comportements : positionnement,
affichage, etc.
La distinction fondamentale est assez claire. Les blocs distinguent des parties
entières comme des titres, des paragraphes, des listes, des citations, etc. Les
éléments en ligne sont prévus pour enrichir localement des portions de texte
(lien hypertexte, renforcement, etc.).
Ces deux familles de balises diffèrent également par les contenus qu’elles
acceptent, en dehors du texte à proprement parler :
• Un élément bloc peut contenir un (ou plusieurs) éléments bloc et/ou en ligne,
à l’exception des éléments de paragraphe <p> et des titres <h1>, <h2>…,
limités aux contenus en ligne.
• Un élément en ligne ne peut renfermer que d’autres éléments en ligne.
La balise de bloc <div> englobe les deux blocs de paragraphe, ce qui est
autorisé. En revanche, ce qui suit est invalide :
a ) Le flux normal
<head>
<title>Petites boîtes – Flux normal - div</title>
<style type="text/css">
body {
color: black;
background-color: gray;
padding: 0;
margin:0;
}
div {
background-color: white;
padding: 10px;
border: 1px solid black;
margin: 5px;
}
</style>
</head>
<body>
<div>Boîte 1</div>
<div>Boîte 2</div>
<div>Boîte 3</div>
</body>
Les blocs div sont placés les uns au dessous des autres. Chaque bloc impose sa longueur
et prend la longueur disponible de son parent, c'est-à-dire body.
Si l’on réduit chacun des blocs div avec l’attribut width ( par exemple de 20% ), les boîtes
sont toujours les unes en dessous des autres car la balise div intègre un saut de ligne .
On parle aussi de position :static
<head>
<title>Petites boîtes - position:absolute</title>
<style type="text/css">
body {
color: black;
background-color: gray;
padding: 0;
margin:0;
}
div {
width: 20%;
background-color: white;
padding: 10px;
border: 1px solid black;
margin: 5px;
}
#autre {
position: absolute;
top: 25px;
right: 25px;
background-color: #f3c600;
}
</style>
</head>
<body>
<div id="autre">Boîte 1</div>
<div>Boîte 2</div>
<div>Boîte 3</div>
</body>
<head>
<title>Petites boîtes - position:relative</title>
<style type="text/css">
body {
color: black;
background-color: gray;
padding: 0;
margin:0;
}
div {
width: 20%;
background-color: white;
padding: 10px;
border: 1px solid black;
margin: 5px;
}
#autre {
position: relative;
top: 25px;
right: 25px;
background-color: #f3c600;
}
</style>
</head>
<body>
<div id="autre">Boîte 1</div>
<div>Boîte 2</div>
<div>Boîte 3</div>
</body>
- un bloc div dont l’ID est global contient les autres blocs : blocmenu et
contenu et dont la largeur est de 750 pixels
- un bloc dont l’ID est blocmenu contient le menu à gauche, sous forme de
liste à puce contenant des liens hypertextes. Ce bloc a une largeur fixe de 150
pixels
- un bloc dont l’ID est contenu contient le contenu du document, ici un texte
sans signification.
<div id="contenu">
<p>Bloc contenu</p>
<p> largeur fixe : 600px</p>
<p>
fjefjkùzlkfjùlkzfejdddddddddddddddddddddddddk*mlk*mkd*mml*kkkkkkkkkkkkkkk
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
kkkkkkkkkzzzzzzzzzzzzzzzzzzzzzz </p>
</div>
<p id="pied">Pied de page</p>
</div>
</body>
</html>
LXXIV.A.1.14LXXIII.A.1.14 La feuille de style gabar2c_lf.css
/* auteur: xxxxxxx */
/* date de creation: 12/03/2008 */
body
{
margin:0;
padding:0;
}
p
{
margin:0 0 1em 0;
}
h1
{
height : 50px;
width: 750px;
background-color: #4c4e00;
color: white;
margin:0;
}
#global
{ /* c'est ici que nous définissons
la largeur générale du document */
width:750px;
background-color:#666600;
}
#blocmenu
{
float:left;
width:150px;
background-color:#666600;
color:white;
}
#blocmenu p
{
margin-left:1em;
}
#blocmenu ul
{
margin:0: 0 1em 0;
}
#blocmenu li
{
list-style-type:none;
margin:0: 0 0 1em ;
}
#blocmenu li a
{
color:white;
text-decoration:none;
}
#blocmenu li a:hover
{
text-decoration:underline;
}
#contenu
{
margin-left:150px;
background-color: #eaeae9;
}
#contenu p
{
margin:0 0 0 1em;
}
#pied
{
clear:both;
width:750px;
background-color: #cccc00;
margin:0
}
Exercice :
Créer les deux fichiers html et feuille de style et testez.
Réduisez ou augmenter la taille du navigateur : que
constatez vous ?
h1
{
height : 50px;
/* width: 750px; */
background-color: #4c4e00;
color: white;
margin:0;
}
#global
{ /* pas de largeur définie */
/* width:750px; */
background-color:#666600;
}
#pied
{
clear:both;
/* width:750px ; */
background-color: #cccc00;
margin:0
}
Tester le fonctionnement , réduisez ou augmentez la
taille de la fenêtre : que se passe –t-il ?
Lien utile :
http://css.alsacreations.com/Modeles-de-mise-en-page-en-CSS
Activité d’apprentissage
Module TDI-23 Applications hypermédias
Technologie Javascript
Activité
Chapitre 5
DESCRIPTION DE L’ACTIVITE
<script language="JavaScript">
<!-- Debut script
<script language="JavaScript">
<!-- Debut script
<html>
<head>
<title>mon 1er script</title>
<script language="JavaScript">
<!-- Debut script
</head>
<body>
</body>
</html>
4. Afficher votre page dans un navigateur
Ce qui a pour effet d’écrire dans la page Web : « C’est mon 2ème
script »
<html>
<head>
<title>mon 2ème script</title>
<script language="JavaScript">
<!-- Debut script
Vous pouvez intégrer des balises HTML dans votre texte, ce qui vous
permet de choisir la police, la couleur, de centrer...( bien qu’il soit
préférable de traiter les présentations par des feuilles e style ! )
1er essai
document.write("<center><font face="Arial"
color="#0000ff"><b>C'est mon 2ème script
</b></font></center>");
(tout est sur la même ligne, mais pour des raisons d’affichage la ligne
est coupée)
Pourquoi ?
Comment faire ?
document.write("<center><font face='Arial'
color='#0000ff'><b>C'est mon 2ème
script</b></font></center>");
document.write('<center><font face="Arial"
color="#0000ff"><b>C'est mon 2ème
script</b></font></center>');
document.write("<center><font face=\"Arial\"
color=\"#0000ff\">
<b>C'est mon 2ème script</b></font></center>");
Règle usuelle pour les chaînes de caractères
document.write("<center><font face='Arial'
color='#0000ff'><b>C'est mon 2ème
script</b></font></center>");
Soit des guillemets (") pour délimiter la chaîne et des apostrophes (’)
à l’intérieur, surtout à cause des nombreuses apostrophes (’) du
français. Mais sachez que les deux sont interchangeables.
Technologie Javascript
var Numero = 1 ;
var Prenom = "Abdelilah" ;
Numero = 1 ;
Prenom = "Rachid" ;
Attention! la façon dont on déclare la variable aura une grande importance pour la
"visibilité" de la variable dans le programme Javascript.
Voir à ce sujet, la distinction entre variable locale et variable globale dans le Javascript
avancé de ce chapitre.
Pour la clarté de votre script et votre facilité, on ne peut que conseiller d'utiliser à chaque
fois le mot var pour déclarer une variable.
Type Description
Des nombres Tout nombre entier ou avec virgule tel
que 22 ou 3.1416
Des chaînes de caractères Toute suite de caractères comprise entre
guillemets telle que "suite de caractères"
Des booléens Les mots true pour vrai et false pour faux
Le mot null Mot spécial qui représente pas de valeur
Notons aussi que contrairement au langage C ou C++, Il ne faut pas déclarer le type de
données d'une variable. On n'a donc pas besoin de int, float, double, char et autres long
en Javascript.
Exercice :
Nous allons employer la méthode write() pour afficher des variables. On définit une
variable appelée texte qui contient une chaîne de caractères "Mon chiffre préféré est "
et une autre appelée variable qui est initialisée à 7.
<body>
<script language="Javascript">
<!—
document.write("<h1>Variables en JS</h1>") ;
var texte = "Mon chiffre préféré est le "
var variable = 7
document.write(texte + variable);
//-->
</script>
</ body >
Opérateurs de calcul
Opérateurs de comparaison
Signe Nom Exemple Résultat
Opérateurs d’affectation
On appelle ainsi les opérateurs qui réalisent une affectation directe ou par un calcul
dans la variable située à gauche du signe .
Opérateurs logiques
Opérateurs d’incrémentation/décrémentation
Ces opérateurs vont augmenter ou diminuer la valeur de la variable d'une unité. Ce qui
sera fort utile, par exemple, pour mettre en place des boucles.
Dans les exemples x vaut 3.
Exercice :
Tester des exemples d’opérations avec les différents
opérateurs :
- calculs
- affectation
Activité d’apprentissage
Module TDI-23 Applications hypermédias
Technologie Javascript
- incrémentation/Décrémentation
pour les opérateurs logiques, nous les étudierons plus loin
avec les structures de contrôle SI …ALORS SINON
ou TANT QUE
Voir le chapitre Opérateurs dans le dossier
javascript/DOM de l’aide selfhtml
Les variables déclarées tout au début du script, en dehors et avant toutes fonctions (voir
plus loin...), seront toujours globales, qu'elles soient déclarées avec var ou de façon
contextuelle. On pourra donc les exploiter partout dans le script.
Dans une fonction, une variable déclarée par le mot clé var aura une portée limitée à
cette seule fonction. On ne pourra donc pas l'exploiter ailleurs dans le script. D'où son
nom de locale. Par contre, toujours dans une fonction, si la variable est déclarée
contextuellement (sans utiliser le mot var), sa portée sera globale.
Nous reviendrons sur tout ceci dans l'étude des fonctions
DESCRIPTION DE L’ACTIVITE
Exercice 1 : structure alternative SI … ALORS … SINON
if ( condition vraie )
{
// instructions si c’est vrai
}
Ainsi, si la condition est vérifiée, les instructions s'exécutent. Si elle ne l'est pas, les
instructions ne s'exécutent pas et le programme passe à la commande suivant
l'accolade de fermeture.
if ( condition vraie )
{
// instructions si c’est vrai
}
else
{
// instructions si c’est faux
}
Si la condition est vérifiée (true), le bloc d'instructions 1 s'exécute. Si elle ne l'est pas
(false), le bloc d'instructions 2 s'exécute.
Exercice :
Algorithme :
Aussi longtemps que la condition est vérifiée, Javascript continue à exécuter les
instructions entre les accolades. Une fois que la condition n'est plus vérifiée, la
boucle est interrompue et on continue le script.
Prenons un exemple.
compt=1;
while (compt<5)
{
document.write ("ligne : " + compt + "<br>");
compt++;
}
document.write("fin de la boucle");
Exercice :
Syntaxe
for ( <variable=valeur initiale ;<condition logique d’arrêt>;
<incrément de la variable>)
{
Exemple
Exercice
Technologie Javascript
L'objet Array (ou tableaux) est une liste d'éléments indexés dans lesquels on pourra
ranger (écrire) des données ou aller reprendre ces données (lire).
nom_du_tableau[i] = "elément";
où i est un nombre compris entre 0 et x moins 1.
carnet[0]="Ahmed";
carnet[1]="Abdel";
carnet[2]="Rachid";
Algorithme :
On peut créer des tableaux à deux dimensions (et plus encore) par un petit artifice
de programmation.
Création en javascript :
// remplissage du tableau
nom[0][0]="Chemises";
nom[1][0]="Polos";
nom[2][0]="Tee-shirt"
nom[0][1]="120"; nom[0][2]="125"; nom[0][3]="130";
nom[1][1]="80"; nom[1][2]="85"; nom[1][3]="90";
nom[2][1]="50"; nom[2][2]="52"; nom[2][3]="54";
exploration du tableau :
for ( var i = 0; i<3; i++)
{
for ( var j = 0; j<4; j++)
{
document.write(nom[i][j] + " ");
}
document.write("<br>");}
Technologie Javascript
les fonctions écrites par vous-même pour les besoins de votre script.
Il est judicieux de placer toutes les déclarations de fonction dans l'en-tête de votre
page c.-à-d .dans la balise <HEAD> ...</HEAD>. Vous serez ainsi assuré que vos
fonctions seront déjà prises en compte par l'interpréteur avant qu'elles soient
appelées dans le <BODY>.
. Pour rappel, Javascript est sensible à la case. Ainsi fonction() ne sera pas égal à
Fonction(). En outre, Tous les noms des fonctions dans un script doivent être
uniques.
La mention des arguments est facultative mais dans ce cas les parenthèses doivent
rester. C'est d'ailleurs grâce à ces parenthèses que l'interpréteur Javascript distingue
les variables des fonctions.
Lorsqu’une accolade est ouverte, elle doit impérativement, sous peine de message
d'erreur, être refermée. Prenez la bonne habitude de fermer directement vos
accolades et d'écrire votre code entre elles.
Le fait de définir une fonction n'entraîne pas l'exécution des commandes qui la
composent. Ce n'est que lors de l'appel de la fonction que le code de programme
est exécuté.
<head>
<script language=javascript >
function message()
{
document.write("Bienvenue à ma page");
}
</script>
</head>
function message(texte) {
document.write(texte);}
function message2(texte)
{
return texte + texte ;
}
<script language=javascript>
message() ;
</script>
<script language=javascript>
zonetexte = "salam " ;
zoneretour = message2(zonetexte) ;
document.write(" Retour fonction " +
zoneretour) ;
</script
Avec les fonctions, le bon usage des variables locales et globales prend toute son
importance.
Une variable déclarée dans une fonction par le mot clé var aura une portée limitée à
cette seule fonction. On ne pourra donc pas l'exploiter ailleurs dans le script. On
l'appelle donc variable locale.
function cube(nombre) {
var cube = nombre*nombre*nombre}
Ainsi la variable cube dans cet exemple est une variable locale. Si vous y faites
référence ailleurs dans le script, cette variable sera inconnue pour l'interpréteur
Javascript (message d'erreur).
Si la variable est déclarée contextuellement (sans utiliser le mot var), sa portée sera
globale -- et pour être tout à fait précis, une fois que la fonction aura été exécutée--.
function cube(nombre)
{
cube = nombre*nombre*nombre
}
Les variables déclarées tout au début du script, en dehors et avant toutes fonctions,
seront toujours globales, qu'elles soient déclarées avec var ou de façon contextuelle
sans var.
<script language="javascript">
var cube=1
function cube(nombre) {
cube = nombre*nombre*nombre }
</script>
La variable cube sera bien globale.
Pour la facilité de gestion des variables, on ne peut que conseiller de les déclarer en
début de script (comme dans la plupart des langages de programmation). Cette
habitude vous met à l'abri de certaines complications.
Exercice :
Technologie Javascript
Exercice :
<head>
<script language="javascript">
function controle(form1) {
var test = document.form1.input.value;
alert("Vous avez tapé : " + test); }
</script>
</head>
<body>
<form name="form1">
<input type="text" name="input" value=""><br>
<input type="button" name="bouton"
value="Contrôler" onClick="controle(form1)">
</form>
</body>
Cette fonction controle() définie dans les balises <HEAD> affecte à la variable test,
la valeur de la zone de texte. Pour accéder à cette valeur, on note le chemin complet
de celle-ci
Dans lle document présent, il y a l'objet formulaire appelé form1 qui contient le
contrôle de texte nommé input et qui a comme propriété l'élément de valeur value.
Cette fonction afficher() définie dans les balises <HEAD> prend dans la variable
testin, la valeur de la zone de texte d'entrée.
Les boutons radio sont utilisés pour noter un choix, et seulement un seul, parmi un
ensemble de propositions
Prop
Propriété Description
<HEAD>
<SCRIPT language="javascript">
function choixprop(form3) {
if (form3.choix[0].checked)
{ alert("Vous avez choisi la proposition " + form3.choix[0].value) };
if (form3.choix[1].checked)
{ alert("Vous avez choisi la proposition " + form3.choix[1].value) };
if (form3.choix[2].checked)
{ alert("Vous avez choisi la proposition " + form3.choix[2].value) };
}
</SCRIPT>
</HEAD>
<BODY>
Entrez votre choix :
<FORM NAME="form3">
<INPUT TYPE="radio" checked NAME="choix" VALUE="1">Choix numéro 1<BR>
<INPUT TYPE="radio" NAME="choix" VALUE="2">Choix numéro 2<BR>
<INPUT TYPE="radio" NAME="choix" VALUE="3">Choix numéro 3<BR>
<INPUT TYPE="button"NAME="but" VALUE="Quel et votre choix ?"
onClick="choixprop(form3)">
</FORM>
</BODY>
Les boutons case à cocher sont utilisés pour noter un ou plusieurs choix (pour
rappel : avec les boutons radio un seul choix) parmi un ensemble de propositions. A
part cela, sa syntaxe et son usage est tout à fait semblable aux boutons radio sauf
en ce qui concerne l'attribut name qui doit être différent d’une cas à l’autre.
Propriété Description
name indique le nom du contrôle. Toutes les cases à
cocher portent un nom différent.
checked indique l'état en cours de l'élément case à
cocher.
defaultchecked indique l'état du bouton sélectionné par défaut.
value indique la valeur de l'élément case à cocher.
<head>
<script language="javascript">
function reponse(form4) {
if ( (form4.check1.checked) == true &&
(form4.check2.checked) == true &&
(form4.check3.checked) == false &&
(form4.check4.checked) == true)
<BODY>
Le contrôle liste de sélection vous permet de proposer diverses options sous la forme
d'une liste déroulante dans laquelle l'utilisateur peut cliquer pour faire son choix. Ce
choix reste alors affiché.
La boite de la liste est crée par la balise <SELECT> et les éléments de la liste par
un ou plusieurs tags <OPTION>. La balise </SELECT> termine la liste.
Propriété Description
Name indique le nom de la liste déroulante.
length indique le nombre d'éléments de la liste. S'il est
indiqué dans le tag <SELECT>, tous les éléments
de la liste seront affichés. Si vous ne l'indiquez
pas un seul apparaîtra dans la boite de la liste
déroulante.
selectedIndex indique le rang à partir de 0 de l'élément de la
liste qui a été sélectionné par l'utilisateur.
defaultselected indique l'élément de la liste sélectionné par
défaut. C'est lui qui apparaît alors dans la petite
boite
.
Exemple de liste de sélection
<HEAD>
<script language="javascript"> function liste(form5) {
alert("L\'élément " + (form5.list.selectedIndex + 1)); }
</SCRIPT>
</HEAD>
<BODY>
Entrez votre choix : <FORM NAME="form5">
<SELECT NAME="list">
<OPTION VALUE="1">Elément 1
<OPTION VALUE="2">Elément 2
<OPTION VALUE="3">Elément 3
</SELECT>
<INPUT TYPE="button"NAME="b" VALUE="Quel est
l'élément retenu?" onClick="liste(form5)"> </FORM>
</BODY>
Propriété Description
name Indique le nom du contrôle par lequel on pourra
accéder.
defaultvalue Indique la valeur par défaut qui sera affichée dans
la zone de texte.
value Indique la valeur en cours de la zone de texte. Soit
celle tapée par l'utilisateur ou si celui-ci n'a rien
tapé, la valeur par défaut.
document.Form.Text.value = "ligne1\r\nligne2\r\nligne3".
function afficherarea(form3)
{
var testarea =document.form3.txta.value;
alert(testarea);
}
function modifierarea(form3)
{
document.form3.txta.value= "ligne1\r\nligne2\r\nligne3";
}
Une seule méthode est associée au contrôle Reset, c'est la méthode onClick(). Ce
qui peut servir, par exemple, pour faire afficher une autre valeur que celle par défaut
Une seule méthode est associée au contrôle Submit, c'est la méthode onClick().
Technologie Javascript
Avec Javascript, la barre d'état (petite bande située au bas de la fenêtre du browser et qui vous inform
l'état des transferts et des connections) peut être utilisée pour afficher des messages de votre cru.
Propriété Description
status valeur du texte affiché dans la barre d'état de la fenêtre.
defaultStatus valeur par défaut qui s'affiche dans la barre d'état.
Généralement, cet événement est mis en œuvre par un onmouseOver() sur un lien hypertexte
Exercice
<head>
<title>Barre d'Etat</title>
</head>
<body>
<form name="formulaire">
<input type="text" name=saisie maxlength=40 size=40 value="entrez un texte">
<input type="button" value="changer status" onclick="dercarstatus()">
</form>
<script language="javascript">
function dercarstatus()
{
chaine = new String();
chaine = document.formulaire.saisie.value;
chaine = "le dernier caractere est : " + chaine.charAt(chaine.length - 1);
window.status= chaine;
}
</script>
</body>
Exercice bis
Quand la souris passe sur le lien, le message Page suivante apparaît dans la barre d’état ; quand la
quitte le lien, le texte s’efface.
<head>
<title>Barre d'Etat</title>
</head>
<body>
<a href="Page.htm"
onmouseover="self.status='Page suivante'; return true"
onmouseout="self.status=''; return true">
Survolez-moi SVP</a>
</body>
La syntaxe est :
[window.]open("URL","nom_de_la_fenêtre","caractéristiques_de_la
fenêtre")
URL est l'URL de la page que l'on désire afficher dans la nouvelle fenêtre. Si on ne dési
afficher un fichier htm existant, on mettra simplement ''".
caractéristiques_de_la_fenêtre est une liste des caractéristiques de la fenêtre suivante que l'o
à la suite, séparées par des virgules et sans espaces ni passage à la ligne.
Caractéristique Description
toolbar=yes ou no Affichage de la barre d'outils
location=yes ou non Affichage de champ d'adresse (ou de
localisation)
directories=yes ou no Affichage des boutons d'accès rapide
status=yes ou no Affichage de la barre d'état
menubar=yes ou no Affichage de la barre de menus
scrollbars=yes ou no Affichage des barres de défilement.
resizable=yes ou no Dimensions de la fenêtre modifiables
width=x en pixels Largeur de la fenêtre en pixels
height=y en pixels Hauteur de la fenêtre en pixels
Nous allons ouvrir un petite fenêtre qui affiche le fichier test.htm avec un bouton dans la page.
Fichier test.htm :
<HTML>
<BODY>
<H1>Ceci est un test</HI>
<FORM>
<INPUT TYPE="button" value= " Continuer "
onClick="self.close()">
</FORM>
</BODY>
</HTML>
<SCRIPT LANGUAGE="javascript">
<!--
function new_window() {
xyz="open('test.htm', 'new',
'width=300,height=150,toolbar=no,location=no,
directories=no,status=no,menubar=no,scrollbars=no,resizable=no')">
// sans espaces ni passage à la ligne
}
// -->
</SCRIPT>
<FORM>
<INPUT TYPE ="button" value="Ouvrir une nouvelle fenêtre"
onClick="new_window()">
</FORM>
<HTML>
<BODY onLoad='compt=setTimeout("self.close();",4000)'>
<H1>Ceci est un test</H1>
<FORM>
<INPUT TYPE="button" value=" Continuer "
onClick="clearTimeout(compt);self.close();">
</FORM>
</BODY>
</HTML>
<SCRIPT LANGUAGE="Javascript">
<!--
function opnw(){ msg=window.open("","","width=300,height=50,
toolbar=no,
location=no,directories=no,
status=no,menubar=no,scrollbars=no,resizable=no");
msg.document.write('<HTML> <BODY>' +
'<CENTER><H1>Ceci est un test</H1></CENTER>' +
-->
</SCRIPT>
DESCRIPTION DE L’ACTIVITE
Activité d’apprentissage
Module TDI-23 Applications hypermédias
Technologie Javascript
La méthode indexOf()
Cette méthode renvoie la position, soit x, d'un string partiel (lettre unique, groupe
de lettres ou mot) dans une chaîne de caractères en commençant à la position
indiquée par y. Cela vous permet, par exemple, de voir si une lettre, un groupe de
lettres ou un mot existe dans une phrase.
variable="chaîne_de_caractères";
var="string_partiel";
x=variable.indexOf(var,y);
où y est la position à partir de laquelle la recherche (de gauche vers la droite) doit
commencer. Cela peut être tout entier compris entre 0 et la longueur - 1 de la
chaîne de caractères à analyser.
Si y n'est pas spécifié, la recherche commencera par défaut à la position 0.
Quelques exemples :
variable="Javascript"
var="script" ;
x=variable.indexOf(var,0); // x vaut 4
variable="Casablanca"
var="@"
x=variable.indexOf(var); // x vaut -1
La méthode substring()
La méthode substring() est du même genre que indexOf(), que nous venons
d'étudier. Elle sera particulièrement utile, par exemple, pour extraire différentes
données dans une chaîne de caractères.
str="Javascript";
str1=str.substring(0,4);
str2="Javascript".substring(0,4);
str3=str.substring(6,9);
Les résultats sont :
str1="Java"; soit les positions 0,1,2 et 3.
str2="Java"; soit les positions 0,1,2 et 3.
str3="rip"; soit les positions 6,7 et 8
La méthode toLowerCase()
Cette méthode affiche toutes les majuscules d'une chaîne de caractères variable2
en minuscules.
variable2="chaîne de caractères";
variable1=variable2.toLowerCase();
Exemple :
str="JavaScript";
str1=str.toLowerCase();
str2="JavaScript".toLowerCase();
Le résultat sera :
str1="javascript";
str2="javascript";
La méthode toUpperCase()
Cette méthode affiche toutes les minuscules d'une chaîne de caractères variable2
en majuscules.
variable2="chaîne de caractères";
variable1=variable2.toUpperCase();
Exemple :
str="JavaScript";
str3=str.toUpperCase();
str4="JavasScript".toUpperCase();
Le résultat sera :
str3="JAVASCRIPT"; str4="JAVASCRIPT";
variable=new Date();
Ces informations sont enregistrées par Javascript sous le format :
Pour introduire une date et une heure déterminée, cela se fera sous la forme suivante
:
Toutes les méthodes suivantes vous faciliterons la tâche pour accéder à un point
précis de cette variable (en fait un string) et pour modifier si besoin en est le format
d'affichage.
getYear()
variable_date=new Date();
an=variable_date.getYear();
getMonth()
variable_date=new Date();
mois=variable_date.getMonth();
Retourne le mois dans variable_date sous forme d'un entier compris entre 0 et 11 (0
pour janvier, 1 pour février, 2 pour mars, etc.). Soit ici 11 (le mois moins 1).
getDate()
variable_date=new Date();
jourm=variable_date.getDate();
Retourne le jour du mois dans variable_date sous forme d'un entier compris entre 1
et 31.
Retourne le jour de la semaine dans variable_date sous forme d'un entier compris
entre 0 et 6 (0 pour dimanche, 1 pour lundi, 2 pour mardi, etc.).
getHours()
variable_date=new Date();
hrs=variable_date.getHours();
Retourne l'heure dans variable_date sous forme d'un entier compris entre 0 et 23.
getMinutes()
variable_date=new Date();
min=variable_date.getMinutes();
Retourne les minutes dans variable_date sous forme d'un entier compris entre 0 et
59.
getSeconds()
variable_date=new Date();
sec=variable_date.getSeconds();
Retourne les secondes dans variable_date sous forme d'un entier compris entre 0
et 59.
Cette propriété renvoie toujours "Mozilla". "Mozilla" est un nom de code de Netscape
qui l'a utilisé en premier. Microsoft (pour une raison que je vous laisse deviner) l'a
également repris. On ne pourra donc pas utiliser cette propriété pour différencier un
navigateur de Netscape ou de Microsoft.
navigator.appName
Retourne le nom ou la marque du browser soit "Netscape", soit "Microsoft Internet
Explorer"
Cette propriété sera plus utile pour faire la différence entre la famille Netscape (
Firefox, …) et la famille Microsoft du browser.
navigator.appVersion
Renvoie des informations concernant la version du navigateur, le système
d'exploitation de l'utilisateur, un code de nationalité de la version (avec des
variantes).
navigator.userAgent
Renvoie également des informations (sur le header envoyé dans le protocole HTTPd
du server de votre visiteur).
Technologie Javascript
Exemple
Code source
<html>
<head>
<title>JavaScript - Contrôle Formulaire</title>
<script language="JavaScript">
function verifForm(Formulaire) {
if(Formulaire.txtSaisie.value == "")
{alert("La saisie est obligatoire")};
else
{alert("Vous avez saisi: '" + Formulaire.txtSaisie.value +"'")};
}
</script>
</head>
<body>
Saisissez un texte puis pressez le bouton 'Contrôle'<br>
<form>
<input type="text" name="txtSaisie" size=20>
<input type="button" value="Contrôler" onClick="verifForm(this.form)">
</form>
</body>
</html>
Il est bien entendu que nous pouvons rajouter des informations manuelles dans la zone
de texte.
La valeur "Choisissez" ne doit pas s'afficher dans la zone de texte si elle a été
sélectionnée.
Traitement de l’environnement technique
Chapitre 6
Activité d’apprentissage
Module TDI-23 Applications hypermédias
Technologie HTML-CSS-Javascript
Activité
DESCRIPTION DE L’ACTIVITE
Exercice :
Reprendre les exemples mis en œuvre dans les activités précédentes avec
un éditeur wisywig.
.
DESCRIPTION DE L’ACTIVITE
Activité d’apprentissage
Module TDI-23 Application hypermédia
Toutes les
Précision
précisions
Activité
Le service de gestion du personnel vous demande, en tant que spécialiste des applications hypermédia,
de réaliser une maquette de cette application. Il n’y aura pas de développement côté serveur, aussi
faudra-t-il simuler les réponses de la future application grâce à HTML.
le responsable du personnel
les salariés de l’entreprise
L’accès à cette application sera protégé, c'est-à-dire que chaque utilisateur devra s’authentifier par un
code utilisateur ( userID ) et un mot de passe ( password) .
Réaliser un graphe de navigation. Le sommet du graphe est évidemment la page d’accueil. Toutes les
pages doivent permettre de revenir à cette page.
Il s’agit de structurer logiquement les pages en blocs : en-tête de page , menu, contenu, pied de page
avec leur positionnement respectif.
Ceci se fera par la création d’un gabarit basé sur des blocs <div> comme il été vu dans une activité
d’apprentissage précédente.
Appliquer les règles définies dans le paragraphe précédent en créant une feuille de style CSS