2. Transfer FFTI 2
Introduction
Vous êtes bien sûr invités à ajouter vos notes personnelles sur les marges, et
à me signaler toute ambiguïté, toute erreur (même au niveau de l’orthographe) à
l’adresse thomas.noel@auf-francophonie.org.
3. Transfer FFTI Le modèle OSI 3
1 Le modèle OSI
1.1 Introduction
Le modèle de référence OSI (Open Systems Interconnection) est issu d’une
proposition de l’Organisation Internationale de Normalisation (ISO). On l’appelle
couramment le modèle OSI.
1.2 Transparents
1.2.1 Une architecture en couches
Les sept couches
7 Application
Interface
6 Présentation
Interface
5 Session
Interface
4 Transport
Interface
paquet 3 Réseau
Interface
trame 2 Liaison
Interface
bit 1 Physique
Transparent 1
4. Transfer FFTI Le modèle OSI 4
Communication entre couches
7 Application
Interface
6 Présentation
5 Session
4 Transport données
3 Réseau données
2 Liaison données
1 Physique
Transparent 2
Communication entre deux systèmes
7 Application Application 7
6 Présentation Présentation 6
5 Session Session 5
4 Transport Transport 4
protocole
3 Réseau réseau Réseau 3
protocole
2 Liaison liaison Liaison 2
protocole
1 Physique physique Physique 1
Support physique
Transparent 3
5. Transfer FFTI Le modèle OSI 5
Dans le modèle OSI, chaque couche propose des services précis à ses deux
couches supérieure et inférieure, et à ces deux là seulement. Chaque couche joue
un rôle précis, et ne doit pas empieter sur le domaine de ses voisines.
Voici une présentation rapide des couches, en commençant par la couche de
plus bas niveau.
Physique transmission des bits de façon brute sur le support de transmission, par
exemple modulation/démodulation sur de la paire torsadée. Aucune gestion
des erreurs.
Liaison de données rend la communication sûre au niveau des erreurs. Découpage
du message en trames, avec messages d’acquittement
Réseau gestion du sous-réseau. Transporte les paquets, effectue le routage.
Transport accepte les informations de la couche session, les découpe en paquet
pour les envoyer à la couche réseau. En réception, recolle les morceaux
Session gestion du dialogue entre «utilisateurs»
Présentation définit la syntaxe et la sémantique des informations
Application définit des protocoles génériques (pour la transmission de fichiers, la
gestion des terminaux, etc.)
Routage
7 Application Application 7
6 Présentation Présentation 6
5 Session Session 5
4 Transport Transport 4
3 Réseau Réseau Réseau Réseau 3
2 Liaison Liaison Liaison Liaison 2
1 Physique Physique Physique Physique 1
hote 1 routeur 2 routeur 1 hote 2
Transparent 4
6. Transfer FFTI Le modèle OSI 6
1.2.2 Le modèle TCP/IP
Le modèle TCP/IP
7 Application Application Telnet, FTP, SMTP,
DNS, ...
protocoles
6 Présentation
5 Session
4 Transport Transport TCP, UDP
3 Réseau Internet IP
réseaux
2 Liaison ArpaNet, SatNet,
"Réseau" LAN, ...
1 Physique
Et protocoles de contrôle : ICMP, ARP, RARP, BOOTP.
Transparent 5
Le modèle TCP/IP est beaucoup plus simple que le modèle OSI. Il s’est imposé
par le seul fait de son existence, alors qu’aucune des implémentations du modèle
OSI n’est vraiment fonctionnelle (trop lourdes).
On retrouve dans TCP/IP ce qui fait le succès d’Unix : la simplicité. Par exemple,
les applications ne sont pas «ennuyées» par des couches présentation ou session. La
communication sur le réseau se fait octet par octet : à chaque application de définir
comment elle va utiliser ces informations. On retombe sur le principe des fichiers
Unix, qui ne sont pas du tout structurés, et ne sont qu’une suite d’octet (ou de bits,
même).
7. Transfer FFTI Adressage IP 7
2 Adressage IP
2.1 Introduction
Cette partie du cours donne une vision des techniques et des méthodes d’adres-
sage IP. Rien n’est vraiment compliqué, mais il faut maitriser ces aspects pour en-
suite parler de routage. En effet, l’adressage ne consiste pas seulement à affecter
une adresse à chaque machine : il faut d’abord définir un plan d’adressage.
Par exemple, il est vivement conseillé de découper les ensembles d’adresses en
plusieurs groupes d’adresses bien distincts (sous-réseaux, subnets) pour prendre en
considération, dés le départ, les aspects organisation, optimisation et sécurisation
d’un réseau IP.
2.2 Transparents
2.2.1 La théorie
Adresse IP
Une adresse = un entier codé sur 32 bits (donc 4 octets)
Notation «décimale pointée» : A.B.C.D
Exemples :
– 193.104.111.65, en héxadécimal : C1686F41
– 10.0.0.2, en binaire : 00001010000000000000000000000010
– 157.159.40.55, en décimal 2644453431
– 123.343.231.665 n’est pas une adresse IP
Transparent 6
Précision : 123.343.231.665 n’est pas une adresse IP car 343 et 665 ne
représentent pas des octets (un octet est représenté par une valeur entre 0 et 255).
8. Transfer FFTI Adressage IP 8
Découpage en réseaux
Les adresses sont regroupées dans des réseaux.
Exemples :
– l’ensemble des adresses commençant par 193.104.111
– celles commençant par 157.159.
– celles commençant par 34
On a donc une arborescence : de gauche à droite = du général au particulier
(comme les n de téléphone)
Transparent 7
Classes IP
Des classes d’adresses définissent la grandeur des réseaux.
– Classe A : 126 réseaux de 16 millions d’adressesa
0 id_res id_ord
– Classe B : 16 382 réseaux de 65 536 adresses
10 id_res id_ord
– Classe C : 2 millions de réseaux de 254 adresses
110 id_res id_ord
a id_res : identifiant réseau et id_ord : identifiant ordinateur
Transparent 8
9. Transfer FFTI Adressage IP 9
Adresses spéciales
Deux adresses spécifiques définissent le réseau :
Adresse de réseau : donnée par la valeur «tout à 0»
Exemples : 157.159.0.0, 193.104.111.0
Adresse de diffusion (broadcast) : donnée par la valeur «tout à 1»
Exemples : 157.159.255.255, 193.104.111.255
Adresses spéciales «non diffusables»
127.*.*.* : adresses de rebouclage (loopback)
0.0.0.0 et 0.id_ord : «cet» ordinateur sur «ce» réseau (au démarrage)
Transparent 9
10. Transfer FFTI Adressage IP 10
2.2.2 La commande ifconfig
ifconfig
aide en ligne : man ifconfig
Syntaxe Linux :
ifconfig interface options
ifconfig interface <adresse> netmask xxx broadcast
xxx
Exemple :
ifconfig eth0 193.104.111.122 netmask
255.255.255.192 broadcast 193.104.111.127
ifconfig eth0 up ou ifconfig eth0 down
ifconfig sans argument donne la configuration actuelle.
Transparent 10
Sous Linux, on peut avoir une aide rapide sur la syntaxe de ifconfig en
passant l’option -h à la commande :
thomas@ip$ /sbin/ifconfig -h
Usage: ifconfig [-a] [-i] [-v] interface
[[family] address]
[[-]broadcast [aa.bb.cc.dd]]
[[-]pointopoint [aa.bb.cc.dd]]
[netmask aa.bb.cc.dd]
[dstaddr aa.bb.cc.dd]
[hw class address]
[metric NN] [mtu NN]
[[-]trailers] [[-]arp]
[[-]allmulti] [[-]promisc]
[multicast]
[mem_start NN] [io_addr NN] [irq NN]
[media type]
[txqueuelen len]
[up] [down] ...
Un exemple de sortie avec la commande ifconfig utilisée sans argument
(sous Linux) :
thomas@ip$ /sbin/ifconfig
11. Transfer FFTI Adressage IP 11
lo Link encap:Local Loopback
inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0
UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1
RX packets:5428 errors:0 dropped:0 overruns:0 frame:0
TX packets:5428 errors:0 dropped:0 overruns:0 carrier:0
Collisions:0
eth0 Link encap:Ethernet HWaddr 00:80:C8:43:3C:A7
inet addr:193.104.111.122 Bcast:193.104.111.127
Mask:255.255.255.192
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:67044 errors:0 dropped:0 overruns:0 frame:0
TX packets:20372 errors:0 dropped:0 overruns:0 carrier:0
Collisions:0
Interrupt:10 Base address:0xfc00
N’oubliez pas que lancer la commande ifconfig ne fait que modifier la confi-
guration courante du système. En aucun cas les paramètres ne seront sauvegardés.
Si vous désirez modifier de façon permanente ces informations, il vous faut exami-
ner les fichiers de démarrage de votre systèmes, c’est-à-dire en général les scripts
situés dans le répertoire /etc/init.d (voir le cours sur init System V)1 .
Sur une distribution Debian 2.2, la configuration prise en compte au démarrage
est contenue dans /etc/network/interfaces. Exemple d’un tel fichier :
# The loopback interface
iface lo inet loopback
# first ethernet interface
iface eth0 inet static
address 207.50.225.54
network 207.50.225.0
netmask 255.255.255.0
broadcast 207.50.225.255
gateway 207.50.225.33
Lors du démarrage, le script /etc/init.d/networking reçoit l’argument
start. Il exécute alors un ensemble de commandes ifup pour activer les inter-
faces par rapport à cette configuration. Si l’on désire modifier définitivement les
paramètres, il faut donc :
– modifier le fichier /etc/network/interfaces
– relancer le système de configuration du réseau avec la commande
/etc/init.d/networking reload
1 n’oubliez pas non plus qu’il n’est absolument pas nécessaire de redémarrer le système ensuite :
utilisez plutôt les commandes start et stop des scripts de démarrage
12. Transfer FFTI Réseaux IP 12
3 Réseaux IP
3.1 Introduction
Nous allons maintenant voir que la notion de classe IP est devenue aujourd’hui
obsolète. A ce propos, il faut bien noter que cette notion n’était imposée par aucune
loi mathématique, mais bien inventée par l’homme pour se repérer plus facilement.
Or, cette technique de découpage en trois grandes familles de réseaux avait un
inconvénient majeur : les classes B étaient trop grandes et les classes C trop petites.
On s’est donc débarrassé de cette notion, nous allons ici étudier comment.
3.2 Transparents
3.2.1 Masque de sous-réseau
Par rapport aux classes A,B,C
On va indiquer en plus de l’adresse une autre information : le masque de
réseau ou netmask. C’est un nombre à 32 bits qui se compose d’un
ensemble de 1 suivi d’un ensemble de 0.
– Les 1 indiquent la partie réseau
– Les 0 indiquent la partie machine
Exemples avec nos classes A, B et C :
– A : 11111111000000000000000000000000 soit 255.0.0.0
– B : 255.255.0.0
– C : le célèbre 255.255.255.0
Transparent 11
L’idée qui vient alors à l’esprit est de ne pas se limiter à travailler sur des octets,
mais bit par bit. On obtient alors des réseaux de taille beaucoup plus flexible.
14. Transfer FFTI Réseaux IP 14
Autre notation
Puisque les masques ne représentent qu’un certain nombre de 1 complétés
par des 0 (pour obtenir 32 bits), la seule information intéressante est ce
nombre de 1. Ce nombre correspond au nombre de bits bloqués.
Quelques exemples :
– 10.0.0.0 masque 255.0.0.0 : 10.0.0.0/16
– 207.50.2.0 masque 255.255.255.0 : 207.50.2.0/24
– 202.86.0.0 masque 255.255.248.0 : 202.86.0.0/21
– 202.86.0.0 masque 255.255.248.0 : 202.86.0.0/21
– réseau de 8192 adresses : 202.86.16.0/20
– réseau de 1024 adresses : 202.86.8.0/22
Transparent 14
15. Transfer FFTI Communication en TCP et UDP 15
4 Communication en TCP et UDP
4.1 Introduction
Maintenant que vous avons des machines avec des adresses, et avant de pour-
suivre plus avant dans le routage des messages, nous examinons ici le fonction-
nement interne des protocoles IP (et des couches supérieures TCP et UDP). Cela
nous permettra de mieux comprendre comment fonctionne IP, et de mieux cerner
les problèmes.
On notera par exemple que dans le cas général, aucune information sur le rou-
tage (le chemin à employer) n’est indiqué dans les messages IP. Il conviendra donc
de configurer correctement nos passerelles pour qu’elles sachent quoi faire avec les
messages qu’elles recevront.
4.2 Transparents
4.2.1 Un datagramme IP
Un datagramme IP
version long ent type de service longueur totale du datagramme
identification du datagramme drapeau localisation du fragment
durée de vie protocole total de controle d’entete
adresse source
adresse destination
options (longueur variable, peut etre vide)
données
version : on est encore aujourd’hui en version 4
long ent : longueur de l’entête ( 32 bits), options comprises
protocole : TCP, UDP, ICMP, etc.
options : extensions possibles pour le protocole
Transparent 15
Quelques indications supplémentaires :
type de service : donne une priorité au datagramme et en précise le type
d’acheminement (delai, débit, fiabilité). Peu utilisé car tous les routeurs ne
gèrent pas ces options
16. Transfer FFTI Communication en TCP et UDP 16
longueur du datagramme : longueur totale (entête et données). La taille
maximale est donc de 65 536 octets.
identification : en cas de fragmentation, indique à quel datagramme apar-
tient le fragment
drapeau : deux bits utilisés. DF (don’t fragment) pour empêcher la fragmentation
et MF (more fragment) si le fragment n’est pas le dernier (en cas de fragmen-
tation)
localisation : en cas de fragmentation, indique la position du fragment dans
le datagramme
durée de vie : décompte du temps en secondes. En pratique, est décrémenté
à chaque passage dans un système. Si égal à zéro, le datagramme est détruit
(avec message d’avertissement à l’expéditeur)
total de contrôle : vérifie la validité de l’entête.
options : 5 options standards
sécurité : donne un niveau de sécurité au datagramme
routage strict : l’expéditeur (la source) donne un chemin spécifique à suivre
par le datagramme
routage lâche : donne une liste de routeurs obligatoires (mais pas de chemin
complet)
enregistrement de route : chaque système réseau traversé ajoute son adresse
IP dans le datagramme
horodatage : même chose avec en plus une horodate
17. Transfer FFTI Communication en TCP et UDP 17
4.2.2 Entête TCP
Entête TCP
port source port destination
numéro de séquence
numéro d’accusé de réception
long. U A P R S F
R C S S Y I taille de la fenetre
ent. TCP G K H T N N
total de controle pointeur sur urgence
options (mots de 32 bits)
données (optionnelles)
Transparent 16
Ports source et destination : numéros précisant la connexion (voir transparent 18)
Numéros de séquence et d’accusé de réception : gestion classique du flot TCP
(le second indique le prochain octet attendu)
Longueur de l’entête : nombre de mots de 32 bits dans l’entête
Drapeaux :
URG : utilisation du pointeur sur urgence pour indiquer des données impor-
tantes
ACK : utilisation de l’accusé de réception (si 0, pas d’acquittement)
PSH (pushed) : les données doivent être directement envoyées à l’applica-
tion, sans passer par un système de cache
RST (reset) : demande de réinitialisation en cas de problème
SYN : pour établir une connexion (demande : SYN=1 et ACK=0, accepta-
tion : SYN=1 et ACK=1)
FIN : libération de la connexion
Taille de la fenêtre : fenêtre d’anticipation à taille variable pour le contrôle du flot
TCP.
Total de contrôle : fiabilisation supplémentaire
Pointeur sur urgence : si URG=1, indique l’emplacement des données urgentes
Options : pour les possibilités non offertes dans l’entête
18. Transfer FFTI Communication en TCP et UDP 18
4.2.3 Entête UDP
Entête UDP
port source port destination
longueur totale UDP total de controle UDP
Transparent 17
Pour aller encore plus vite, le total de contrôle être optionnel (une valeur 0
indique qu’il n’y a pas de total).
19. Transfer FFTI Communication en TCP et UDP 19
4.2.4 Ports et sockets
Ports et sockets
Port : numéro (nombre sur 16 bits) identifiant une connexion. Permet le
multiplexage des connexions sur une machine. Derrière chaque port
utilisé, on trouve une application qui communique ou est en attente de
connexion.
Socket : couple adresse + port identifiant une connexion sur une machine.
Une connexion entre deux machines en TCP ou UDP est donc
complétement définie par un couple sockets : la connexion sur le «serveur»
et celle sur le «client».
Pour voir les sockets «activées» sur une machine : netstat -a
Transparent 18
Exemple de netstat -a sur une machine Linux (tronqué en largeur pour
tenir sur la page) :
zep:~/cotonou/reseau/ip$ netstat -a
Active Internet connections (including servers)
Proto Local Address Foreign Address State
tcp ppp-amiens-007.neu:1182 mailx.nnx.com:pop-3 ESTABLISHED
tcp ppp-amiens-007.neu:1181 mailx.nnx.com:smtp ESTABLISHED
tcp ppp-amiens-007.neu:1180 www.minet.net:www ESTABLISHED
tcp *:printer *:* LISTEN
(...)
20. Transfer FFTI Communication en TCP et UDP 20
4.2.5 Primitives de programmation TCP
Primitives de programmation TCP
client/serveur primitive signification
cs socket création d’un point de connexion
s bind attachement de l’adresse au socket
s listen acceptation de connexion
s accept attente d’une connexion
c connect demande de connexion
cs send envoi de données
cs receive reception de données
cs close fin de la connexion
Transparent 19
21. Transfer FFTI Description rapide des travaux pratiques 21
5 Description rapide des travaux pratiques
5.1 Introduction
Lors des différents travaux pratiques, on va successivement :
– créer un réseau unique où toutes les machines pourront communiquer entre
elles ;
– puis, scinder ce réseau en trois réseaux distincts ;
– ensuite configurer des passerelles entre les réseaux.
5.2 Transparents
TP 1 : un seul réseau
masques et adresses reseaux identiques
adresse : ____.____.____.____
masque : ____.____.____.____
réseau : ____.____.____.____
diffusion : ____.____.____.____
notation CIDR : ____.____.____.____/____
Transparent 20
Pour configurer les adresses des machines :
ifconfig eth0 ... : configure temporairement
/etc/network/interfaces : sur Debian 2.2, configuration permanente de
la machine, qui est prise en compte par le script /etc/init.d/networking.
Pour vérifier et tester :
ifconfig eth0 : affiche la configuration.
ping : envoi de messages ICMP ECHO_REQUEST et affiche des ICMP ECHO_RESPONSE.
traceroute : envoi de datagrammes UDP avec TTL incrémental et analyse des
résultats renvoyés (permet de suivre un message à travers les différents rou-
teurs).
22. Transfer FFTI Description rapide des travaux pratiques 22
TP 2 : trois réseaux
A B
C
réseau : (A) (B) (C)
adresse : ____.____.____.____
masque : ____.____.____.____
adr. réseau : ____.____.____.____
diffusion : ____.____.____.____
notation CIDR : ____.____.____.____/____
Transparent 21
23. Transfer FFTI Description rapide des travaux pratiques 23
TP 3 : interconnexion
A B
C
echo 1 /proc/sys/net/ipv4/ip_forward
Transparent 22