Académique Documents
Professionnel Documents
Culture Documents
intermédiaires
1.1 Introduction.
1.1.1Principe
a) modèle en couche
Le modèle en couche permet une approche simplificatrice du fonctionnement d'un réseau, quoi qu'il
en soit, rares sont les implémentations pratiques qui
respectent vraiment le modèle ISO avec ses 7 couches. Application
Les premières sont liées à des protocoles simples style ftp ou telnet, où les couches intermédiaires
n'ont pas d'utilité. La totalité des fonctions du protocole se retrouve dans la couche application qui
est dans un format ASCII.
1
Du coup ces protocoles simples ont une
interopérabilité quasi totale quels que soient la Application
machine et son système d'exploitation à
condition qu'ils soient basées sur TCP/IP, ce qui Couche
est le cas pour tous les échanges réseaux locaux Application... FTP
actuellement.
Couche
TCP
La deuxième catégories d'implémentations Transport
concerne des protocoles complexes où le modèle
possède beaucoup plus de couches, il se IP
rapproche du modèle complet de l'OSI même si
les fonctions de chaque couche ne coïncident pas Ethernet
avec celle du modèle OSI. Elles sont souvent
associées au partage de fichiers et d'imprimantes.
Ethernet
C'est ce qui va nous intéresser dans ce chapitre.
Les PDU sont complexes est souvent de format binaire. Elles ne sont pas forcément normalisées,
mais peuvent être propriétaires (exemple de NetBIOS). Certaines sont décrites dans des RFC
(NBT), d'autres sont seulement fournies par le constructeur (NIS).
Les SDU, ensemble de fonctions assurant l’interface, sont regroupées dans des bibliothèques de
fonctions exécutées sur un ordinateur. Elles sont souvent liées à un système d’exploitation et
associées à des services particuliers. Elles se présentent sous forme d’API.
Ces caractéristiques font que de nombreux problèmes d’interopérabilité apparaissent lorsqu'il s'agit
de faire fonctionner ensemble des applications de ce type provenant de constructeurs différents.
Exemples : partage de ressources (disque/imprimante...)
Le partage de fichiers sous Windows est basé sur une couche d'interface : NetBIOS (Couche
« Session ») et une couche de services : SMB ou CIFS (Couche « Application/Présentation »). Si
SMB/CIFS est resté quasiment constant au cours du temps, la couche d'interface a beaucoup
évoluée en fonction des couches inférieures, pour en arriver à NBT (NetBIOS over TCP/IP) au
dessus d'une couche Transport TCP.
2
R éseau IB M A p p l ic a t io n A p p l ic a t io n A p p l ic a t io n
xxx S M B /x x x S M B /x x x
xxx S M B /x x x N e tB IO S N e tB IO S
N e tB IO S L L C (8 0 2 .2 ) IP X IP
IB M E th e rn e t/x x x E th e rn e t E th e rn e t
IB M E th e rn e t/x x x E th e rn e t P h E th e rn e t P h
NetBIOS a existé directement sur une sous-couche MAC ou LLC pour des réseaux locaux, mais
aussi au-dessus de IPX/SPX. Plusieurs encapsulations peuvent exister en même temps sur une
même machine (surtout serveur), mais actuellement seule NBT doit être utilisé sur des réseaux de
machines récentes.
De la même manière que sous Windows, sous UNIX, le partage de fichiers est mis en place en
utilisant la plupart des couches du modèle en couche. Seules les couches hautes diffèrent dans un
réseau TCP/IP. C'est à dire les couches Session/Présentation/Application. Sous UNIX, un
mécanisme particulier les RPC (Remote Procedure Call) permet de rendre transparent le fait que le
fichier ne se situe pas sur la machine où il est utilisé. Le format des PDU est complexe et de type
binaire.
Application
Couche Application NFS (Network File System)
Couche Présentation XDR (eXchange Data Representation)
3
1.2 Couche NetBIOS sur TCP/IP.
1.2.1 Historique
1.2.2 Principe.
Netbios sur TCP/IP a été défini par les RFC1001 (principes) et RFC1002 (format des trames). Il est
donc public, ce qui a été une nouveauté venant de Microsoft. De fait, la généralisation des échanges
via TCP/IP concernant les échanges inter-réseaux a rendu obligatoire, la mise en oeuvre de
NetBIOS sur un protocole pouvant être routé sur tout l'Internet. Certains y ont même vu un
abandon progressif des protocoles propriétaire Windows, mais depuis la publication des RFC, il
reste toujours le standard, en association avec SMB/CIFS (pour les couches supérieures), de la
communication pour le partage des ressources sous Windows.
Application
Couche Transport
TCP
IP
Ethernet
Ethernet
4
Le service le plus complexe est le Name Service car il doit prendre en charge tous les problèmes de
compatibilité, les 2 autres s'appuyant largement sur TCP/IP sont plus simples.
a) Principe
C'est la déclaration des noms pour une machine. Pour des raisons de compatibilité, les anciens
noms NetBIOS ont été conservés, mais s'y rajoute des noms compatibles DNS. Ce deuxième aspect
est de plus en plus présent surtout avec les dernières versions de Windows Server où un serveur
DNS est intégré, et sert de base à de nombreuses fonctions d'Active Directory. Il va permettre de
réaliser des communications à l'échelle de l'Internet.
Il y a plusieurs service (SDU) : Add Name ; Add Group Name ; Delete Name qui vont permettre de
déclarer des noms de machines, et de découvrir celles avec qui communiquer. Ces services
s'appuient sur des échanges d'informations (PDU).
b) Nom NetBIOS
Initialement, les noms NetBIOS étaient codés sur 16 octets. 15 octets servent au nom, le dernier
étant le type de service. Il existe plusieurs catégories de nom :
Nom individuel (plusieurs pour une machine : aliases)
Nom de groupe (équivalent au workgroup sous windows)
Le 16ème octet permet d'identifier le service associé à une machine (server...).
Pour des raisons de compatibilité avec le système DNS, une représentation dérivée est utilisée pour
la représentation des noms dans les paquets NBT. Elle permet d'utiliser encore une représentation
interne de type NetBIOS 16 octets mais d'avoir un échange compatible DNS. Ce changement de
représentation se fait à 2 niveaux :
1er niveau : traduction des noms NetBIOS en pseudo noms de machine+domaine
2ème niveau : traduction au format DNS
Puis on complète par le NetBIOS Scope, c'est à dire le pseudo nom de domaine. Si celui-ci est
telecom.com, le nom complet devient :
EGFCEFEECACACACACACACACACACACACA.telecom.com
5
c) Mécanisme du Name Service
Le mécanisme du Name Service est un mécanisme assez complexe car il prend en charge plusieurs
types de machines entre autre pour des raisons de compatibilité.
Serveur NBNS (NetBIOS name server) ou Serveur WINS (Windows Internet Name Server) qui est
l'implémentation Microsoft de NBNS.
Serveur NBDD (NetBIOS datagram distribution) qui permet de passer des datagrammes sur
Internet (~passerelle)
Principe :
Une machine va réclamer un nouveau nom via une requête envoyée en multicast sur le réseau local,
si le nom existe la machine le possédant répond. S'il n'y a pas de réponse donc de conflit, la
machine peut se l'attribuer et les serveurs WINS peuvent l'ajouter au voisinage.
6
0 8 16 21 28 31
Transaction ID Opcode Flag Rcode
Qd Count An Count
NS Count AR Count
Question Entries
C'est un service non fiable, unicast ou broadcast. Il comprend 4 primitives de service (SDU) :
– Send Datagram,
– Send BroadCast Datagram,
– Receive Datagram,
– Receive BroadCast Datagram
7
0 8 16 31
Type Flag Datagram ID
Source IP
Source Port Datagram Length (opt)
Data (Opt)
Champ Flag :
B0 B1 B2 B3 B4 B5 B6 B7
0 0 0 0 SNT F M
Symbol Description
Les champs « Datagram Length » et « Data » sont optionnels et vont dépendre du type de
datagramme.
8
– Arrêt de la session
Client Serveur
SYN (IP+Port=139)
SYN/ACK
ACK
PDU de maintien : Session Keep Alive : envoi périodique si le poste est configuré
9
1.3 Couche Application : CIFS/SMB
Le protocole de couche application sous Windows est SMB (Server Message Blocks), renommé
plus tard CIFS (Common Internet File System). Il permet le partage de fichiers en mode
Client/serveur. Il assure une compatibilité avec les différentes versions de Windows. Il existe une
gestion de la sécurité (authentification) et un cryptage des informations sensibles. C'est un échange
de type Client/Serveur simple : Une question -> une réponse
Après connexion, le dialogue est basé sur des commandes simples mais nombreuses.
Il y a plus de 100 commandes :
– SMBmkdir : 0x00 : Create Directory
– SMBOpen : 0x02 : Open a file
– SMBunlink : 0x06 : Delete file
– SMBsends : 0xd0 : Send message...
SMB/CIFS utilise le rassemblement des commandes ANDX batching, c'est à dire que plusieurs
commandes peuvent être passées par la même trame.
Il y a verrouillage des fichiers distants lors de l’utilisation. Plusieurs questions peuvent être en
cours grace au champ "MultiplexID". Ce champ permet au client d’identifier à quelle question
correspond les réponses provenant du serveur.
C lie n t O u v e r t u r e S e s s io n S erv eu r
D e m a n d e S e s s io n N e t B I O S
O u v e rtu re
P o s it iv e A c k n o w le d g e m e n t S e s s io n
N e tB IO S
S M B _ C O M _ N E G O C IA T E
N e g o c ia te
S M B _ C O M _ N E G O C IA T E C IF S
D ia le c t
S M B _ C O M _ S E S S IO N _ S E T U P _ A N D X
U s e r L o g in
S M B _ C O M _ S E S S IO N _ S E T U P _ A N D X -> U ID
10
1.3.2 Protocole.
SMB Packet
0 8 16 24
0xFF S M B
E r ro r C o d e ( c o n tin u e d ) F la g F la g 2
P a d o r S e c u r it y s ig n a t u r e ( 1 2 b y t e s )
T ree ID P ro c e ss ID
U ser ID M u lt ip le x I D
W o rd C o u n t
P a ra m e te r W o rd s
B y te C o u n t B u ffe r
Les RPC Remote Procedure Calls (RFC 1831) sont une extension de la notion d’appel de
procédures locales. Les RPC fournissent une API pour que le programmeur ne voit pas de
différence entre l'utilisation d'une procédure locale ou distante.
L’accès aux services en local se fait par des appels à des fonctions systèmes
L’accès Client/Serveur se fera par des RPC
Indépendant de la couche transport
11
– Fonctionnement
– Appel identique à une fonction avec des paramètres
– Appel distant bloque le thread jusqu’au retour de la réponse (ou time out)
– La machine serveur exécute réellement la fonction
Mise en œuvre :
un programme est en attente en permanence côté serveur : Daemon (démon), à la réception d’une
demande, il exécute, puis il renvoie le résultat
Client Serveur
Démon
Demande
Réponse
Le démon gère plusieurs fonctions (procédures), il doit identifier la demande grâce aux
informations dans la PDU
Informations nécessaires à la mise en œuvre (Informations qui doivent transiter dans la PDU) :
– Identifier la procédure que le serveur doit exécuter
12
– Vérifier les droits d’accès du client aux fonctionnalités du serveur
– Définir le format des données d’entrée à envoyer
– Définir le format des données de retour
Numéro de programme
0x00000000 à 0x1FFFFFFF : définie par Sun
0x20000000 à 0x3FFFFFFF : définie par l’utilisateur
0x40000000 à 0x5FFFFFFF : numéros attribués dynamiquement
0x60000000 à 0xFFFFFFFF : Réservés
Exemples
0x100003 et version 3 : NFS services ; 0x100000 version 2 portmap
L'échange des données se fait dans un format XDR (décrit ensuite) : RFC 1832 dans la zone
dépendante de la procédure appelée.
1.4.2 La PDU
Echange sur 2 phases PDU Call - PDU Reply
Application Application
13
0 8 16 31
Transaction ID
Type
RPC version
Program
Program version
Procedure
Credential...
Verifier...
0 8 16 31
Transaction ID
Type
RPC version
Program
Program version
Procedure
Reply state
Verifier...
Accept state
Champ Type :
0 : Envoi d'une PDU de demande (Call)
1 : Retour d'une PDU de réponse (Reply)
14
0: Exécuté
1: Non exécuté
1.4.3 Implémentation
La création de programme basés sur les RPC se fait via la fourniture d’une API de haut niveau (au
dessus des sockets). Puis on utilise un compilateur spécifique pour créer le programme.
Publication et découverte
Publication : faire connaître ce que propose le serveur
Découverte : déterminer ce que propose le serveur
Résolution d’adresses + numéro de ports
15
Service lookup (RFC 1823)
portmapper (version 2)
rpcbind (version 3 et 4)
Ecoute sur le port 111 (UDP et TCP)
Redirection du client sur le port du programme
La connexion d'un client sur un servcie se fait en plusieurs étapes. Pour éviter la multiplication des
ports ouverts, le serveur est en attente sur un port unique (Port 111). Pour répondre à des demandes
de services, il va rediriger les demandes du client vers des ports applicatifs. Les services disponibles
sur le serveur sont préalablement déclarés auprès du Port Mapper.
Déclaration :
Client Serveur
Port 111 Port Mapper
Déclaration
Program
Client Serveur
Port 111 Port Mapper
Program
Port xxxx
Demande de connexion :
16
Client Serveur
Port 111 Port Mapper
Port xxxx
Program
Port xxxx
Client Serveur
Port 111 Port Mapper
Program
Port xxxx
1.5.1 Principe.
XDR (External Data Representation) est un protocole de présentation des données en un format
portable. Il est dans un format proche du Langage C.
Il existe d'autres possibilités : XML...
Aucun échange ne correspond à ce protocole (pas de zone dans la PDU). En effet, la couche
présentation n’a pas besoin de paramètres dans ce cas, il suffit que le format de représentation soit
le même aux deux bouts.
17
Application Application
NFS NFS
XDR XDR
RPC RPC
TCP TCP
IP IP
Ethernet Ethernet
Ethernet Ethernet
18
Il y a encore 2 cas :
Réponse d'acceptation :
struct accepted_reply {
opaque_auth verf ;
union switch (accept_stat stat) {
case SUCCESS :
opaque results[0];
/* procedure specific results start here*/
case PROG_MISMATCH :
struct {
unsigned int low ;
unsigned int high ;
} mismatch_info ;
default ;
} ;
1.6 NFS
Généralités
Network File System version 3 (rfc 1813)
Network File System version 4 (rfc 3010, rfc 3530)
Généralisation de la notion de systèmes de fichiers pour des ressources en réseau
Montage de systèmes de fichiers distants
Mise à disposition de ressources (exportation côté serveur)
Utilisation locale (montage côté client)
Communication via des descripteurs (fichier/répertoire)
stocké côté client (serveur sans état)
résultats des requêtes, contenus des répertoires, file handle, noms et attributs des fichiers, valeur du
temps.
Ce service est mise en œuvre par plusieurs démons : nfsd, mountd (rpc.nfsd ; rpc.mountd)
19
Il ya plusieurs fichiers de configuration dont /etc/exports : systèmes de fichiers exportable
20
struct WRITE3resok { struct WRITE3resfail {
wcc_data file_wcc; wcc_data
file_wcc;
count3 count; };
stable_how committed;
writeverf3 verf;
};
1.7 NIS
NIS est lui aussi basé sur les RPC suivant le même principe que NFS. NIS étant un produit SUN
Microsystem, il n'y a pas de description dans les RFC. Quoi qu'il en soit le code source se trouve
dans toutes les distributions Linux par exemple.
21
1.8TP n°3 suite : Etude des protocoles réseaux NetBIOS
Ce TP vient en complément de celui sur le serveur Windows, afin de bien comprendre les
mécanismes des échanges.
1) Par la commande net name, créer un nouvel alias (votre nom) pour votre machine. Visualiser les
trames envoyées par votre machine.
- Qu'en déduisez–vous sur les protocoles actifs sur votre PC ?
- Sous quelle forme sont envoyés les paquets (type d'adresses en dessous de NetBIOS) ?
- Décrivez les différents systèmes de nommage (adressage) de NetBIOS.
- Analyser le contenu des autres champs des trames NetBIOS.
2) Tenter de créer un nouvel alias, mais d'un nom déjà utilisé par la deuxième machine de votre
binôme. Décrivez les trames échangées, et les champs NetBIOS.
3) Refaire la même manipulation avec un alias correspondant au serveur Windows. Pourquoi y a t’il
une différence ?
4) Détruire les alias créés. Cela génère-t-il des trames sur le réseau ? Si oui lesquelles ?
a) Par le voisinage réseau, aller sur le serveur, accéder à votre répertoire personnel et ouvrir un
fichier texte. Déterminer les différentes trames échangées pour effectuer cette opération. Vous
pourrez séparer l'analyse en plusieurs acquisitions pour bien mettre en évidence le séquencement de
ces trames (si il y a authentification –car pas de connexion antérieure- les mots de passe ne
circulent pas en clair).
b) Analyser le champ NetBIOS de ces trames ? Où sont mises en œuvre les différentes fonctions
des trames NetBIOS précédentes ?
a) En utilisant la capture du a) précédent, faire la même analyse sur la partie SMB de ces trames.
Détermination des différents types de trames. Séquencement de l'échange. Analyse du contenu des
champs. Repérer en particulier les trames associées (question-réponse) par les différents ID.
22
b) Par la commande "net use", associer le répertoire applint du serveur ist-bessat à un disque réseau
m: sur votre client. Dans ce cas aussi analyser les échanges SMB. Y a-t-il de nouveaux types de
trames ? Si oui analyser les.
Pour tous ces échanges, seule la partie SMB/CIFS sera à considérer, il sera surtout important de
mettre l’accent sur les catégories de trames utilisées pour chaque fonction ainsi que sur leurs
paramètres spécifiques. L’analyse des champs récurrents ne sera pas nécessaire puisque vous l’aurez
faite à la question a). Il est nécessaire de bien visualiser le début, la fin et les paquets intermédiaires
dans l'échange.
23