Vous êtes sur la page 1sur 59

UNIVERSITE SIDI MOHAMED BEN ABDELLAH ‫جامعة سيدي محمد بن عبد هللا‬

Faculté des Sciences Dhar El Mahraz – Fès ‫كلية العلوم ظهر المهراز‬
-‫ ف اس‬-
Année universitaire 2019-2020

Programmation Réseaux
Filière SMI, S6

Enseignant: Hassan SATORI

hsatori@gmail.com
Chap.3: Les Sockets
I- Généralités
I-1 Sockets
I- 3 Création d ’une socket
I-3-1 Exemple de création de socket
I-4 La suppression d'une socket : close()
I- 5 Adresses
I- 6 La programmation réseau
I- 7 L’interconnexion de réseaux
I- 8 Modèle client – serveur
I-8-1 client
I-8-2 Serveur
I- 9 Démon Daemon
I-9-1 Démon
I- 10 Numéro de Port
I- 10-1 commande netstate
I- 10-2 commande nmap

Programmation Réseaux , SMI S6 H. SATORI 2


Chap.3: Les Sockets
I- Généralités
I-1 Sockets
➢ Les données transmises sur le réseau sont structurées et encapsulées dans
des paquets, ou datagrammes.
▪ Chaque datagramme contient une section en-tête et un corps.
▪ L'en-tête contient toutes les informations nécessaires au transport de
l'information,
▪ et le corps contient les données a transmettre.
➢ .

Programmation Réseaux , SMI S6 H. SATORI 3


Chap.3: Les Sockets
I- Généralités
I- 1 socket (suite)

➢ Lors de l'affichage d’une page web (www.google.com) , une multitude de


paquets sont échangés
▪ les données sont divisées en plusieurs morceaux et réassemblés à
l'arrivée en utilisant l’un des deux modes;
o mode Stream protocole TCP
o mode datagramme protocole UDP.

Programmation Réseaux , SMI S6 H. SATORI 4


Chap.3: Les Sockets
I- Généralités
I- 1 socket (suite)

Interface socket

Programmation Réseaux , SMI S6 H. SATORI 5


Chap.3: Les Sockets
I- Généralités
I- 1 socket (suite)
Les connexions réseau entre deux machines s’effectuent par des sockets. Une
socket est une connexion entre deux points via un réseau.

Une machine dispose d’une adresse IP et de ports (virtuels) de connexion


numérotés, auxquels sont rattachés des services.

➢ Un client établit une connexion depuis un port de sa machine (port > 1024,
généralement choisi aléatoirement parmi les ports libres) vers un port donné
d’une autre machine, par exemple un serveur Web sur le port 80.

➢ La communication établie entre les deux passe par une socket.

Programmation Réseaux , SMI S6 H. SATORI 6


Chap.3: Les Sockets
I- Généralités
I- 1 socket (suite)
➢ Modèle Unix permettant la communication inter processus (IPC) afin de
permettre à divers processus de communiquer aussi bien sur une même
machine qu’à travers un réseau TCP/IP.

Programmation Réseaux , SMI S6 H. SATORI 7


Chap.3: Les Sockets
I- Généralités
I- 1 socket (suite)
➢ Les sockets permettent de transformer une communication réseau en une
simple lecture-écriture dans un fichier.

➢ C’est une interface générique pour la communication entre processus, par


divers moyens.

➢ On s’en sert pour la communication à travers les réseaux (Internet ou


autres),
➢ ils sont utilisables également pour la communication locale entre processus
qui s’exécutent sur une même machine (comme les tuyaux, et les files de
messages IPC).

Programmation Réseaux , SMI S6 H. SATORI 8


Chap.3: Les Sockets
I- Généralités
I- 1 socket (suite)
Encapsulation décapsulation des données

Programmation Réseaux , SMI S6 H. SATORI 9


Chap.3: Les Sockets
I- Généralités
I- 1 socket (suite)

➢ Elles permettent de :

o se connecter à une machine distante ;


o recevoir et envoyer des données ;
o fermer une connexion établie ;
o attendre une connexion de l'extérieur ;
o écouter les communications entrantes ;
o utiliser un port.

Programmation Réseaux , SMI S6 H. SATORI 10


Chap.3: Les Sockets
I- Généralités
I- 1 Socket définition

Une socket est un point de communication par lequel un processus peut


émettre ou recevoir des informations.

➢ Interface de programmation pour les communications


▪ Ensemble de primitives assurant le service de communication,
▪ Générique : s’adapte aux différents besoins de communication,
▪ Indépendant des protocoles et des réseaux :
▪ Développé à l’origine sous Unix 4BSD, pour Internet
▪ N’utilise pas forcément un réseau :
▪ Programmation de communication locale (interne à une station) :
domaine Unix

Programmation Réseaux , SMI S6 H. SATORI 11


Chap.3: Les Sockets
I- 3 Création d ’une socket

➢ Tout processus souhaitant communiquer doit demander à son système local


la création d’une socket en spéciant le type, le domaine et le protocole.

#include <sys/types.h>
#include <sys/socket.h>
int socket(
int domain, /* AF_UNIX, AF_INET, ... */
int type, /* SOCK_DGRAM, SOCK_STREAM, ... */
int protocol /* 0 protocle par defaut */
);

Programmation Réseaux , SMI S6 H. SATORI 12


Chap.3: Les Sockets
I- 3 Création d ’une socket

La valeur de retour est un descripteur sur la socket nouvellement créée si


cette création est
possible et -1 en cas d'erreur.

En cas d'erreur, errno vaut :


❑ EACCES : incompatibilité type / protocole,
❑ EMFILE : table des descripteurs pleine,
❑ EPROTONOSUPPORT : protocole non-supporté,
❑ ... (peut dépendre du système utilisé).

Programmation Réseaux , SMI S6 H. SATORI 13


Chap.3: Les Sockets
I-3 Création d ’une socket (suite)

AF_UNIX, ou
AF_INET, etc.

Programmation Réseaux , SMI S6 H. SATORI


Chap.3: Les Sockets
I-3 Création d ’une socket (suite)

➢ Le type indique le style de communication désiré entre les deux participants.


Les deux styles principaux sont:

▪ SOCK_DGRAM : communication par messages (blocs contenant des


octets) appelés datagrammes

▪ SOCK_STREAM : la communication se fait par un flot (bidirectionnel)


d’octets une fois que la connection est établie.

Programmation Réseaux , SMI S6 H. SATORI 15


Chap.3: Les Sockets
I-3 Création d ’une socket (suite)

➢ Enfin, le paramètre protocol indique le protocole sélectionné.


➢ La valeur 0 correspond au protocole par défaut pour le domaine et le type
indiqué..

Programmation Réseaux , SMI S6 H. SATORI 16


Chap.3: Les Sockets
I- 3 Création d ’une socket (suite)

AF_UNIX protocole local


AF_INET protocole Internet
domain
AF_INET6 protocole
Internet IPv6
SOCK_STREAM Garantie l'intégrité de la transmission.
SOCK_DGRAM Transmission sans connexion, sans
garantie de datagrammes de longueur fixe.
type SOCK_RAW programmation de niveau 3,
administrateur seulement
IPPROTO_TCP, IPPROTO_UDP, IPPROTO_RAW
En général, il y a un protocole par type et il n'est pas utile
Protocol
de le spécifier. S'il y en a plusieurs, on peut l'indiquer.
0 = mode auto

Programmation Réseaux , SMI S6 H. SATORI 17


Chap.3: Les Sockets
I- 3 Création d ’une socket
I-3-1 Exemple de création de socket

Socket internet sans connexion (UDP/IP)


socket (AF_INET,SOCK_DGRAM,IPPROTO_UDP)
socket (AF_INET,SOCK_DGRAM,0)

Socket internet avec connexion (TCP/IP)


socket (AF_INET,SOCK_STREAM,IPPROTO_TCP)
socket (AF_INET,SOCK_STREAM,0)

Socket unix sans connexion


socket (AF_UNIX,SOCK_DGRAM,0)

Programmation Réseaux , SMI S6 H. SATORI 18


Chap.3: Les Sockets
I-4 La suppression d'une socket : close()

➢ Une socket est supprimée lors de la fermeture du dernier descripteur


permettant d'y accéder (appel-système close).
➢ Cette suppression libère toutes les ressources allouées.

#include <unistd.h>
close(Socket);

Programmation Réseaux , SMI S6 H. SATORI 19


Chap.3: Les Sockets
I- 5 Adresses

➢ Pour désigner un socket sur une machine il faut une adresse de socket.
Comme il existe différents types de sockets, les opérations sur les adresses
concerne un type d’adresse général abstrait (struct sockaddr) qui recouvre
tous les types concrets particuliers.

Programmation Réseaux , SMI S6 H. SATORI 20


Chap.3: Les Sockets
I- 5 Adresses

➢ Pour TCP-IP (Inet), les adresses de sockets sont déterminées par un


numéro IP, et un numéro de port. Pour IPv4, on utilise des struct
sockaddr_in, qui possèdent 3 champs importants :

▪ sin_family, la famille d’adresses, valant AF_INET

▪ sin_addr, pour l’adresse IP.

▪ sin_port, pour le numéro de port

Programmation Réseaux , SMI S6 H. SATORI 21


Chap.3: Les Sockets
I- 5 Adresses (suite)

➢ La fonction socket() crée un socket anonyme.


➢ Pour qu’un autre processus puisse le désigner, il faut lui associer un nom
par l’intermédiaire d’une adresse contenue dans une structure
sockaddr_un

#include <sys/un.h>
struct sockaddr_un {
sa_family_t sun_family; /* AF_UNIX */
char sun_path[UNIX_PATH_MAX]; /* pathname */
};

Programmation Réseaux , SMI S6 H. SATORI 22


Chap.3: Les Sockets
I- Généralités
I- 4 Adresses (suite)

➢ Attention, les octets de l’adresse IP et le numéro de port sont stockés dans


l’ordre réseau (big-endian),

➢ qui n’est pas forcément celui de la machine hôte sur laquelle s’exécute le
programme.

➢ Voir plus loin les fonctions de conversion hôte/réseau.

Programmation Réseaux , SMI S6 H. SATORI 23


Chap.3: Les Sockets
I- Généralités
I- 6 La programmation réseau

La programmation réseau sous Linux s’appuie sur les sockets (interface de


programmation) sockets.

▪ C ’est un ensemble de fonctions qui permettent l’accès aux couches de protocoles


TCP/IP.

▪ Une socket est un point de communication et une interface de programmation placée


entre la couche application et la couche transport de la pile de protocoles TCP/IP,

▪ Une socket est repéré par une adresse IP de la machine sur lequel ce point est ouvert
et d’un numéro de port.

▪ Le numéro de port UDP ou TCP en fonction du protocole transport choisi pour


réaliser le transfert de données de l’application considéré.

Programmation Réseaux , SMI S6 H. SATORI 24


Chap.3: Les Sockets
I- Généralités
I- 6 La programmation réseau

Interface socket

Programmation Réseaux , SMI S6 H. SATORI 25


Chap.3: Les Sockets
I- Généralités
I- 7 L’interconnexion de réseaux

❑ Le but de l’interconnexion de réseaux est d’interconnecter entre eux des réseaux


hétérogènes, en créant un réseau virtuel qui masque complètement les
caractéristiques des réseaux physiques empruntés.
❑ Une machine M1 dialoguant avec une machine M2 passe ainsi par différents
réseaux physiques sans en avoir conscience.
❑ L’interconnexion des différents réseaux s’effectue au travers de machines
charnières appelées passerelles

Programmation Réseaux , SMI S6 H. SATORI 26


Chap.3: Les Sockets
I- Généralités
I- 8 Modèle client - serveur

❑ De point de vue rôle des ordinateurs reliés à un réseau sont répartis en deux
catégories (client et serveur), en fonction des actions qu’ils effectuent sur celui-ci (c-
à-d le réseau).
➢ La communication client–serveur désigne un mode de communication à travers un
réseau entre plusieurs programmes;

Programmation Réseaux , SMI S6 H. SATORI 27


Chap.3: Les Sockets
I- Généralités
I- 8 Modèle client - serveur

client–serveur

Programmation Réseaux , SMI S6 H. SATORI 28


Chap.3: Les Sockets
I- Généralités
I- 8 Modèle client – serveur
I-8-1 client

Un client est un programme qui utilise une ressource réseau en se connectant


dynamiquement au serveurs appropriés.
➢ Il peut être éventuellement sur une autre machine que le serveur.

Programmation Réseaux , SMI S6 H. SATORI 29


Chap.3: Les Sockets
I- Généralités
I- 8 Modèle client – serveur
I-8-2 Serveur

Un serveur est un programme qui rend une ressource ou un service


disponibles au travers du réseau.

➢ Il s'exécute sur la machine qui possède la ressource.


➢ Il attend passivement et acceptent les demandes de connexion des clients.

Programmation Réseaux , SMI S6 H. SATORI 30


Chap.3: Les Sockets
I- Généralités
I- 9 Démon Daemon
I-9-1 Démon

Un daemon désigne un programme informatique ou un processus qui n'est pas


contrôlé par l'utilisateur et qui s'exécute en arrière-plan.

➢ Le rôle principal du daemon consiste à apporter une réponse à une ou


plusieurs requêtes d'un réseau, d'un matériel ou d'un programme.

Programmation Réseaux , SMI S6 H. SATORI 31


Chap.3: Les Sockets
I- 9 Démon Daemon
I-9-1 Démon

Les daemons opèrent lors du démarrage d'un ordinateur et lors du chargement


d'un système d'exploitation.
➢ Son nom se termine par « d »
➢ Exemple:
▪ lpd : démon d'impression.
▪ ftpd : démon de transfert de fichiers.
▪ inetd : super démon

Programmation Réseaux , SMI S6 H. SATORI 32


Chap.3: Les Sockets
I- 10 Numéro de Port

Le numéro de port correspond à un service d’un ordinateur.


➢ Le numéro de port TCP et UDP est un entier sur 16 bits soit de 1 à 65535. La
plage de valeurs de 1 à 1024 est ces serveurs par leurs numéros de port.

➢ Les ports connus ont la particularité d'être assignés par l’ IANA.

➢ les détails sur les ports avec Tcp et Udp sont dans la RFC 793 et la RFC
768.
➢ La liste est divisée en trois parties nommées :

▪ Les port connues, compris entre 0 et 1023


▪ Les ports enregistrés, compris entre 1024 et 49151
▪ Les ports dynamique ou privés, compris entre 49152 et 65535.

Programmation Réseaux H. SATORI 33


Chap.1: Introduction aux réseaux informatiques

I-10 Numéro de Port


I-10-1- commande netstate
La commande netstat permet d'afficher les statistiques de protocole et des connexions
réseau TCP/IP actives sur la machine.

Proto Local Address Foreign Address State


TCP 192.168.1.114:53352 fra02-002:http ESTABLISHED
TCP 192.168.1.114:53671 wq-in-f188:5228 ESTABLISHED
TCP 192.168.1.114:58430 wb-in-f189:https ESTABLISHED
TCP 192.168.1.114:58825 51.105.249.223:https ESTABLISHED
TCP 192.168.1.114:58887 a104-123-23-222:http TIME_WAIT
TCP 192.168.1.114:58888 mrs08s02-in-f14:https TIME_WAIT
TCP 192.168.1.114:58889 e1-ha:https TIME_WAIT
TCP 192.168.1.114:58890 mrs09s06-in-f14:https TIME_WAIT
TCP 192.168.1.114:58892 40.79.66.194:https ESTABLISHED
TCP 192.168.1.114:58893 mrs09s08-in-f5:https TIME_WAIT
TCP 192.168.1.114:58894 mrs08s02-in-f14:https TIME_WAIT
TCP 192.168.1.114:58895 mrs08s02-in-f14:https TIME_WAIT
TCP 192.168.1.114:58896 e1-ha:https TIME_WAIT
TCP 192.168.1.114:58897 e1-ha:https TIME_WAIT
TCP 192.168.1.114:62632 204.79.197.222:https ESTABLISHED

Programmation Réseaux H. SATORI 34


Chap.1: Introduction aux réseaux informatiques

I-10 Numéro de Port


I-10-1- commande netstate
La commande netstat permet d'afficher les statistiques de protocole et des connexions
réseau TCP/IP actives sur la machine.

Proto Local Address Foreign Address State


TCP 192.168.1.114:53352 fra02-002:http ESTABLISHED
TCP 192.168.1.114:53671 wq-in-f188:5228 ESTABLISHED
TCP 192.168.1.114:58430 wb-in-f189:https ESTABLISHED
TCP 192.168.1.114:58825 51.105.249.223:https ESTABLISHED
TCP 192.168.1.114:58887 a104-123-23-222:http TIME_WAIT
TCP 192.168.1.114:58888 mrs08s02-in-f14:https TIME_WAIT
TCP 192.168.1.114:58889 e1-ha:https TIME_WAIT
TCP 192.168.1.114:58890 mrs09s06-in-f14:https TIME_WAIT
TCP 192.168.1.114:58892 40.79.66.194:https ESTABLISHED
TCP 192.168.1.114:58893 mrs09s08-in-f5:https TIME_WAIT
TCP 192.168.1.114:58894 mrs08s02-in-f14:https TIME_WAIT
TCP 192.168.1.114:58895 mrs08s02-in-f14:https TIME_WAIT
TCP 192.168.1.114:58896 e1-ha:https TIME_WAIT
TCP 192.168.1.114:58897 e1-ha:https TIME_WAIT
TCP 192.168.1.114:62632 204.79.197.222:https ESTABLISHED

Programmation Réseaux H. SATORI 35


Chap.1: Introduction aux réseaux informatiques

I-10 Numéro de Port


I-10-1- commande netstate (suite)

Afficher toutes les connexions et les ports d'écoute actifs :


$ netstat -a
Afficher les fichiers exécutables à l'origine des connexions ou des ports d'écoute :
$ netstat -b
Couplée avec l'option -v, cela permet d'actualiser la liste automatiquement toutes les n
secondes.
$ netstat -b -v 5
Afficher les statistiques ethernet :
$ netstat -e
Afficher les adresses et les numéros de ports :
$ netstat -n

Programmation Réseaux H. SATORI 36


Chap.1: Introduction aux réseaux informatiques
I-10 Numéro de Port
I-10-1- commande netstate (suite)

Afficher toutes les connexions


et les ports d'écoute actifs :
$ netstat -a

Programmation Réseaux H. SATORI 37


Chap.1: Introduction aux réseaux informatiques

VI- Numéro de Port


VI- 1 commande netstate (suite)

Afficher toutes les connexions et les ports d'écoute actifs :


$ netstat -a
Afficher les fichiers exécutables à l'origine des connexions ou des ports d'écoute :
$ netstat -b
Couplée avec l'option -v, cela permet d'actualiser la liste automatiquement toutes les n
secondes.
$ netstat -b -v 5
Afficher les statistiques ethernet :
$ netstat -e
Afficher les adresses et les numéros de ports :
$ netstat –n
Afficher le PID du processus associé à chaque connexion :

Programmation Réseaux H. SATORI 38


Chap.1: Introduction aux réseaux informatiques

VI- Numéro de Port


VI- 1 commande netstate (suite)

Afficher les statistiques ethernet :


$ netstat -e

Programmation Réseaux H. SATORI 39


Chap.1: Introduction aux réseaux informatiques

VI- Numéro de Port


VI- 1 commande netstate (suite)

$ netstat -o
Afficher les connexions par protocole :
$ netstat -p protocole
protocole = TCP, UDP, TCPv6 ou UDPv6
Afficher la table de routage :
$ netstat -r
Afficher les statistiques par protocole :
$ netstat -s

Programmation Réseaux H. SATORI 40


Chap.1: Introduction aux réseaux informatiques

VI- Numéro de Port


VI- 1 commande netstate (suite)

Proto Local Address Foreign Address State


TCP 192.168.1.114:53352 fra02-002:http ESTABLISHED
TCP 192.168.1.114:53671 wq-in-f188:5228 ESTABLISHED
TCP 192.168.1.114:58430 wb-in-f189:https ESTABLISHED
TCP 192.168.1.114:58825 51.105.249.223:https ESTABLISHED
TCP 192.168.1.114:58887 a104-123-23-222:http TIME_WAIT
TCP 192.168.1.114:58888 mrs08s02-in-f14:https TIME_WAIT
TCP 192.168.1.114:58889 e1-ha:https TIME_WAIT
TCP 192.168.1.114:58890 mrs09s06-in-f14:https TIME_WAIT
TCP 192.168.1.114:58892 40.79.66.194:https ESTABLISHED
TCP 192.168.1.114:58893 mrs09s08-in-f5:https TIME_WAIT
TCP 192.168.1.114:58894 mrs08s02-in-f14:https TIME_WAIT
TCP 192.168.1.114:58895 mrs08s02-in-f14:https TIME_WAIT
TCP 192.168.1.114:58896 e1-ha:https TIME_WAIT
TCP 192.168.1.114:58897 e1-ha:https TIME_WAIT
TCP 192.168.1.114:62632 204.79.197.222:https ESTABLISHED

Programmation Réseaux H. SATORI 41


Chap.1: Introduction aux réseaux informatiques

VI- Numéro de Port


VI- 1 commande netstate (suite)

La commande netstat permet d’obtenir des informations et des statistiques


réseau sur une machine locale.
Notamment vous pouvez vérifier quels sont les ports à l’écoute sur votre
machine, qui a établi une connexion, et quels sont les processus (services)
locaux à l’écoute :

Programmation Réseaux H. SATORI 42


Chap.1: Introduction aux réseaux informatiques

VI- Numéro de Port


VI- 2 commande nmap
➢ nmap est un outil d'exploration réseau et d’audit de sécurité permettant de
découvrir les machines présentes ainsi que les services qu'elles utilisent.

➢ Il permet de tester les connexions réseaux d’une machine donnée et de


retourner un grand nombre d’informations.

➢ Lister les machines à explorer


➢ Scanner les machines du réseau
➢ Scanner une machine

Programmation Réseaux H. SATORI 43


Chap.1: Introduction aux réseaux informatiques

VI- Numéro de Port


VI- 2 commande nmap (suite)
Lister les machines à explorer

$ nmap -sL 192.168.0.1/24

Exemple
➢ cette commande permet de lister les machines le réseau en question.
➢ La valeur 24 indique que les trois premières octets sont fixes et que seule le
dernier va varier.

Programmation Réseaux H. SATORI 44


Chap.1: Introduction aux réseaux informatiques

VI- Numéro de Port


VI- 2 commande nmap (suite)
Scanner les machines du réseau

$ nmap -sP 192.168.0.1/24

Scanner une machine

$ nmap 192.168.0.72

Ou Scanner une machine plus en détail

$ nmap -A 192.168.0.72

Programmation Réseaux H. SATORI 45


Chap.1: Introduction aux réseaux informatiques

VI- RFC
Les RFC (Requests for Comments) sont des documents officiels spécifiant les
différentes implémentations, standardisations, normalisations représentant alors la
définition de Tcp/IP.
Ces documents sont utilisés par IETF (Internet Engineering Task Force) ainsi que
d’autre organismes de normalisation.
.
Les RFC concernent les standards définissant les protocoles de la pile TCP/IP, des
applications telles que le courrier électronique, des informations concernant la mise en
oeuvre du protocole IP sur d’autres piles protocolaires (Ethernet, Liaison série, réseau
X25 (e.g. Transpac), ATM...), l’état de la normalisation, les valeurs que l’on retrouve
dans les PDU...

Programmation Réseaux H. SATORI 46


Chap.1: Introduction aux réseaux informatiques

VI- RFC
Principaux protocoles Internet et RFC correspondantes

❑ RFC 1700: Offre des informations sur les routeurs ;


❑ RFC 1256: Offre des informations sur les routeurs ;
❑ RFC 1034 : Donne des informations sur les Serveur de noms de domaines DNS ;
❑ RFC 1918 : définit les Classes d'Adresses Privées.
❑RFC 3261 : définit le Protocol SIP (Session Initiation Protocol) est un protocole
utilisé dans les télécommunications multimédia (son, image, etc.) est la VoIP.

Programmation Réseaux H. SATORI 47


VI- Représentation des nombres
La représentation des nombres sur des machines hétérogènes peut poser des
problèmes d'interprétation (Little-Endian ou Big-Endian).

❑ Une représentation standard est adoptée : Celle dite Big Endian où les octets
de poids fort sont les plus à gauche.

Programmation Réseaux H. SATORI 48


VI- Représentation des nombres (suite)

❑ Des fonctions de conversion (en général macro-dénies) sont fournies dans le


chier <netinet/in.h>.

❑ htnol et ntohl permettent la manipulation des adresses, et htnos et ntohs


permettent celles des numéros de port :

▪ u_short ntohs(u_short); /* network to host short */

▪ u_short htons(u_short); /* host to network short */

▪ u_long ntohl(u_long); /* network to host long */

▪ u_long htonl(u_long); /* host to network long */

Programmation Réseaux H. SATORI 49


VI- Le boutisme endianness
❑ Un nombre entier est un type de données qui est représenté sur plusieurs
octets.

❑ Le boutisme (endianness en anglais) désigne l'ordre dans lequel ces octets


sont placés.

❑ Il existe deux conventions:

▪ l'orientation Big Endian ou gros-boutiste (ou gros-boutienne) qui


démarre avec les octets de poids forts,
▪ et l'orientation inverse Little Endian ou petit-boutiste (ou petit-
boutienne) qui commence avec les octets de poids faible,

Programmation Réseaux H. SATORI 50


VI- Le boutisme endianness (suite)
❑ Nombres entiers stockés sur 4 octets pour un processeur type big endian

Base binaire Base Base


hexadécimale décimale
0110 0010 0000 1111 0010 1000 1111 0011 62 0F 28 F3 1645160691
1110 0010 0000 1111 0010 1000 1111 0011 E2 0F 28 F3 -502322957
0000 0000 0000 0000 0000 0000 0000 0001 00 00 00 01 1
1000 0000 0000 0000 0000 0000 0000 0001 80 00 00 01 -1
1111 1111 1111 1111 1111 1111 1111 1111 FF FF FF FF -2147483647
0111 1111 1111 1111 1111 1111 1111 1111 7F FF FF FF 2147483647

Programmation Réseaux H. SATORI 51


VI- Le boutisme endianness (suite)
❑ Nombres entiers stockés sur 4 octets pour un processeur type Little Endian

Base binaire Base Base


hexadécimale décimale
0011 1111 1000 0010 1111 0000 0010 0110 F3 28 0F 62 1645160691
0011 1111 1000 0010 1111 0000 0010 1110 F3 28 0F E2 -502322957
0001 0000 0000 0000 0000 0000 0000 0000 00 00 00 01 1
0000 0000 0000 0000 0000 0000 0000 1000 00 00 00 80 -1
1111 1111 1111 1111 1111 1111 1111 1111 FF FF FF FF -2147483647
1111 1111 1111 1111 1111 1111 1111 0111 7F FF FF FF 2147483647

Programmation Réseaux H. SATORI 52


VI- Le boutisme endianness
VI- 1Taille des données
L'encodage dépend du nombre d'octet alloué pour chaque nombre

➢ On considère généralement les types suivants (en langage C):

▪ short: nombre entier sur 2 octets


▪ int: nombre entier sur 4 octets
▪ long: nombre entier sur 8 octets
▪ long long: nombre entier sur 16 octets (parfois 8 octets)

Programmation Réseaux H. SATORI 53


Chap.1: Introduction aux réseaux informatiques

VI- Le boutisme endianness


VI- 1 Taille des données
Type Octets Valeur (architecture 32)
char 1 -128 à 127
unsigned char 1 0 à 255
Short 2 -32768 à 32767
unsignet short 2 0 à 65535
Int 4 -2147483648 à 2147483647
unsigned int 4 0 à 4294967295
long 4 -2147483648 à 2147483647
Unsigned long 4 0 à 4294967295

long long 8 -264 à 264-1


foat 4 -1,7e38 à - 0.29 e-38 et 0.29 e-38 à 1,7e38

double 8 -0.9e308 à - 0.5 e-308 et 0.5e-308 à 0.9e308

Programmation Réseaux H. SATORI 54


Chap.1: Introduction aux réseaux informatiques

VI- Le boutisme endianness (suite)


❑ Exercice:
1- On considère le nombre 7663 écrit en base 10 son équivalent en
hexadécimale 1DEF et en binaire 1 1101 1110 1111. Sur une architecture Big
Endian comment il sera placé en mémoire dans les cas suivants:
a) il est déclaré short ?
b) il est déclaré int ?
c) il est déclaré long ?
d) il est déclaré long long ?

2- et sur une architecture de type Little Endian?

Programmation Réseaux H. SATORI 55


Chap.1: Introduction aux réseaux informatiques

VI- Le boutisme endianness (suite)


❑ Réponse:
1- Sur une architecture Big Endian
Type Base binaire Base Base
hexadécimale décimale
Short (2 octet) 0001 1101 1110 1111 1D EF 7663
Int (4 octet) 0001 1101 1110 1111 1D EF 00 00 7663
0000 0000 0000 0000

Long (4 octet) 0001 1101 1110 1111 1D EF 00 00 7663


0000 0000 0000 0000 00 00 00 00

long long 0001 1101 1110 1111 1D EF 00 00 7663


0000 0000 0000 0000 00 00 00 00
0000 0000 0000 0000 00 00 00 00
0000 0000 0000 0000 00 00 00 00

Programmation Réseaux H. SATORI 56


Chap.1: Introduction aux réseaux informatiques

VI- Le boutisme endianness (suite)


❑ Réponse:
2- sur une architecture de type Little Endian

Type Base binaire Base Base


hexadécimale décimale
Short (2 octet) 1110 1111 0001 1101 EF 1D 7663
Int (4 octet) 0000 0000 0000 0000 00 00 EF 1D 7663
1110 1111 0001 1101

Long (4 octet) 0000 0000 0000 0000 00 00 00 00 7663


1110 1111 0001 1101 00 00 EF 1D
long long 0000 0000 0000 0000 00 00 00 00 7663
0000 0000 0000 0000 00 00 00 00
0000 0000 0000 0000 00 00 00 00
1110 1111 0001 1101 00 00 EF 1D

Programmation Réseaux H. SATORI 57


Chap.1: Introduction aux réseaux informatiques

VI- Le boutisme et le réseau (suite)


❑ Le but de l’interconnexion de réseaux est de faire communiquer entre réseaux
hétérogènes, chaque machine représente et mémorise les nombres d’une manière
interne.

❑ Pour les entiers il y a deux grands type de codage:

▪ petit-boutiste ou petit-boutien (little endian) , poids faibles en tête;

▪ grand-boutiste ou grand-boutien (big endian), poids forts en tête.

❑ Les valeurs transitant sur le réseau doivent toujours être en big endian

❑ Il y a aussi le codage middle-endian

Programmation Réseaux H. SATORI 58


Bibliographie

▪ A. Tanenbaum Réseaux, 4 eme édition, Pearson Education, 2003.


▪ G. Pujoll . Les réseaux. Edition Eyrolles , 2003.
▪ H. SATORI. Cours et TD Réseaux Informatiques II, SMI S6, Université Md Premier
Faculté Pluridisciplinaire Nador, année 2013-2014

▪ Gay, W. W.. Linux socket programming: by example. Que Corp. (2000)

59

Vous aimerez peut-être aussi