SlideShare une entreprise Scribd logo
Programmation Réseaux
Filière SMI, S6
Enseignant: Hassan SATORI
hsatori@gmail.com
‫هللا‬ ‫عبد‬‫بن‬ ‫محمد‬ ‫سيدي‬ ‫جامعة‬
‫ظهر‬ ‫العلوم‬‫كلية‬
‫از‬‫ر‬‫المه‬
-
‫اس‬‫ف‬
-
UNIVERSITE SIDI MOHAMED BEN ABDELLAH
Faculté des Sciences Dhar El Mahraz – Fès
Année universitaire 2019-2020
2
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
3
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
4
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
5
Chap.3: Les Sockets
I- Généralités
I- 1 socket (suite)
Interface socket
Programmation Réseaux , SMI S6 H. SATORI
6
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
7
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
8
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
9
Chap.3: Les Sockets
I- Généralités
I- 1 socket (suite)
Programmation Réseaux , SMI S6 H. SATORI
Encapsulation décapsulation des données
10
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
11
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
12
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
13
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
AF_UNIX, ou
AF_INET, etc.
Chap.3: Les Sockets
I-3 Création d ’une socket (suite)
Programmation Réseaux , SMI S6 H. SATORI
15
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
16
➢ 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
Chap.3: Les Sockets
I-3 Création d ’une socket (suite)
17
Chap.3: Les Sockets
I- 3 Création d ’une socket (suite)
Programmation Réseaux , SMI S6 H. SATORI
domain
AF_UNIX protocole local
AF_INET protocole Internet
AF_INET6 protocole
Internet IPv6
type
SOCK_STREAM Garantie l'intégrité de la transmission.
SOCK_DGRAM Transmission sans connexion, sans
garantie de datagrammes de longueur fixe.
SOCK_RAW programmation de niveau 3,
administrateur seulement
Protocol
IPPROTO_TCP, IPPROTO_UDP, IPPROTO_RAW
En général, il y a un protocole par type et il n'est pas utile
de le spécifier. S'il y en a plusieurs, on peut l'indiquer.
0 = mode auto
18
Chap.3: Les Sockets
I- 3 Création d ’une socket
I-3-1 Exemple de création de socket
Programmation Réseaux , SMI S6 H. SATORI
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)
19
➢ 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
Chap.3: Les Sockets
I-4 La suppression d'une socket : close()
20
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
21
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
22
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
23
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
24
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
25
Chap.3: Les Sockets
I- Généralités
I- 6 La programmation réseau
Interface socket
Programmation Réseaux , SMI S6 H. SATORI
26
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
27
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
28
Chap.3: Les Sockets
I- Généralités
I- 8 Modèle client - serveur
client–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-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
30
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
31
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
32
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
33
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
Chap.3: Les Sockets
I- 10 Numéro de Port
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
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
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
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
37
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
38
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
39
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
40
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
41
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
42
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
43
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
44
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
45
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
46
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
47
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
48
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
49
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
50
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
51
VI- Le boutisme endianness (suite)
❑ Nombres entiers stockés sur 4 octets pour un processeur type big endian
Programmation Réseaux H. SATORI
Base binaire Base
hexadécimale
Base
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
52
VI- Le boutisme endianness (suite)
❑ Nombres entiers stockés sur 4 octets pour un processeur type Little Endian
Programmation Réseaux H. SATORI
Base binaire Base
hexadécimale
Base
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
53
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
Chap.1: Introduction aux réseaux informatiques
VI- Le boutisme endianness
VI- 1 Taille des données
54
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
55
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
56
Chap.1: Introduction aux réseaux informatiques
VI- Le boutisme endianness (suite)
❑ Réponse:
1- Sur une architecture Big Endian
Programmation Réseaux H. SATORI
Type Base binaire Base
hexadécimale
Base
décimale
Short (2 octet) 0001 1101 1110 1111 1D EF 7663
Int (4 octet) 0001 1101 1110 1111
0000 0000 0000 0000
1D EF 00 00 7663
Long (4 octet) 0001 1101 1110 1111
0000 0000 0000 0000
1D EF 00 00
00 00 00 00
7663
long long 0001 1101 1110 1111
0000 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000
1D EF 00 00
00 00 00 00
00 00 00 00
00 00 00 00
7663
57
Chap.1: Introduction aux réseaux informatiques
VI- Le boutisme endianness (suite)
❑ Réponse:
2- sur une architecture de type Little Endian
Programmation Réseaux H. SATORI
Type Base binaire Base
hexadécimale
Base
décimale
Short (2 octet) 1110 1111 0001 1101 EF 1D 7663
Int (4 octet) 0000 0000 0000 0000
1110 1111 0001 1101
00 00 EF 1D 7663
Long (4 octet) 0000 0000 0000 0000
1110 1111 0001 1101
00 00 00 00
00 00 EF 1D
7663
long long 0000 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000
1110 1111 0001 1101
00 00 00 00
00 00 00 00
00 00 00 00
00 00 EF 1D
7663
58
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
Bibliographie
59
▪ 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)

Contenu connexe

Similaire à cours_sockets_chap3 patie_I_22_03_2020.pdf

module_I6_Sockets.pdf
module_I6_Sockets.pdfmodule_I6_Sockets.pdf
module_I6_Sockets.pdf
Patiento Del Mar
 
SDE 10 - Reseau
SDE 10 - ReseauSDE 10 - Reseau
SDE 10 - Reseau
Alexandru Radovici
 
SdE 11 - Reseau
SdE 11 - ReseauSdE 11 - Reseau
SdE 11 - Reseau
Alexandru Radovici
 
Les socket ing1_issat
Les socket ing1_issatLes socket ing1_issat
Les socket ing1_issat
sloumaallagui
 
Ccna1
Ccna1Ccna1
Chap7_JavaNet.pdf
Chap7_JavaNet.pdfChap7_JavaNet.pdf
Chap7_JavaNet.pdf
Patiento Del Mar
 
Mini guide technique du réseau pour animateurs epn
Mini guide technique du réseau pour animateurs epnMini guide technique du réseau pour animateurs epn
Mini guide technique du réseau pour animateurs epn
epndelamanche
 
Programmation réseau en JAVA
Programmation réseau en JAVAProgrammation réseau en JAVA
Programmation réseau en JAVA
Bachir Benyammi
 
Type de communication allen bradley 500 et 5000
Type de communication allen bradley 500 et 5000Type de communication allen bradley 500 et 5000
Type de communication allen bradley 500 et 5000
InTer TaRik
 
6- Javacousesforenginerss_reseaux_v2.pdf
6- Javacousesforenginerss_reseaux_v2.pdf6- Javacousesforenginerss_reseaux_v2.pdf
6- Javacousesforenginerss_reseaux_v2.pdf
AliouDiallo24
 
Cours6-AdressageIPtgths2wjioy5gvi86tjk.pdf
Cours6-AdressageIPtgths2wjioy5gvi86tjk.pdfCours6-AdressageIPtgths2wjioy5gvi86tjk.pdf
Cours6-AdressageIPtgths2wjioy5gvi86tjk.pdf
bapapambaye4
 
Deploiement_Lora_exo.pdf
Deploiement_Lora_exo.pdfDeploiement_Lora_exo.pdf
Deploiement_Lora_exo.pdf
merazgaammar2
 
COURS D'ADMINISTRATION RESEAU SOUS WINDOWS
COURS D'ADMINISTRATION RESEAU  SOUS WINDOWSCOURS D'ADMINISTRATION RESEAU  SOUS WINDOWS
COURS D'ADMINISTRATION RESEAU SOUS WINDOWS
AlbertSmithTambwe
 
Formation Bus de Terrain _Partie 3_ Ethernet Industriel pour Valve Terminals
Formation Bus de Terrain  _Partie 3_  Ethernet Industriel pour Valve TerminalsFormation Bus de Terrain  _Partie 3_  Ethernet Industriel pour Valve Terminals
Formation Bus de Terrain _Partie 3_ Ethernet Industriel pour Valve Terminals
Wojciech GOMOLKA
 
partie osi ( open system inerconnexion);
partie osi ( open system inerconnexion);partie osi ( open system inerconnexion);
partie osi ( open system inerconnexion);
kawtarelbiraki
 
Coursrseaux 111019081618-phpapp01
Coursrseaux 111019081618-phpapp01Coursrseaux 111019081618-phpapp01
Coursrseaux 111019081618-phpapp01Fabrice Enock
 
ccna1-3.pdf
ccna1-3.pdfccna1-3.pdf
ccna1-3.pdf
bessem ellili
 

Similaire à cours_sockets_chap3 patie_I_22_03_2020.pdf (20)

module_I6_Sockets.pdf
module_I6_Sockets.pdfmodule_I6_Sockets.pdf
module_I6_Sockets.pdf
 
02 java-socket
02 java-socket02 java-socket
02 java-socket
 
SDE 10 - Reseau
SDE 10 - ReseauSDE 10 - Reseau
SDE 10 - Reseau
 
SdE 11 - Reseau
SdE 11 - ReseauSdE 11 - Reseau
SdE 11 - Reseau
 
Chap7 java net
Chap7 java netChap7 java net
Chap7 java net
 
Les socket ing1_issat
Les socket ing1_issatLes socket ing1_issat
Les socket ing1_issat
 
Ccna1
Ccna1Ccna1
Ccna1
 
Chap7_JavaNet.pdf
Chap7_JavaNet.pdfChap7_JavaNet.pdf
Chap7_JavaNet.pdf
 
Mini guide technique du réseau pour animateurs epn
Mini guide technique du réseau pour animateurs epnMini guide technique du réseau pour animateurs epn
Mini guide technique du réseau pour animateurs epn
 
Programmation réseau en JAVA
Programmation réseau en JAVAProgrammation réseau en JAVA
Programmation réseau en JAVA
 
Type de communication allen bradley 500 et 5000
Type de communication allen bradley 500 et 5000Type de communication allen bradley 500 et 5000
Type de communication allen bradley 500 et 5000
 
6- Javacousesforenginerss_reseaux_v2.pdf
6- Javacousesforenginerss_reseaux_v2.pdf6- Javacousesforenginerss_reseaux_v2.pdf
6- Javacousesforenginerss_reseaux_v2.pdf
 
Cours6-AdressageIPtgths2wjioy5gvi86tjk.pdf
Cours6-AdressageIPtgths2wjioy5gvi86tjk.pdfCours6-AdressageIPtgths2wjioy5gvi86tjk.pdf
Cours6-AdressageIPtgths2wjioy5gvi86tjk.pdf
 
Deploiement_Lora_exo.pdf
Deploiement_Lora_exo.pdfDeploiement_Lora_exo.pdf
Deploiement_Lora_exo.pdf
 
COURS D'ADMINISTRATION RESEAU SOUS WINDOWS
COURS D'ADMINISTRATION RESEAU  SOUS WINDOWSCOURS D'ADMINISTRATION RESEAU  SOUS WINDOWS
COURS D'ADMINISTRATION RESEAU SOUS WINDOWS
 
Formation Bus de Terrain _Partie 3_ Ethernet Industriel pour Valve Terminals
Formation Bus de Terrain  _Partie 3_  Ethernet Industriel pour Valve TerminalsFormation Bus de Terrain  _Partie 3_  Ethernet Industriel pour Valve Terminals
Formation Bus de Terrain _Partie 3_ Ethernet Industriel pour Valve Terminals
 
partie osi ( open system inerconnexion);
partie osi ( open system inerconnexion);partie osi ( open system inerconnexion);
partie osi ( open system inerconnexion);
 
Coursrseaux 111019081618-phpapp01
Coursrseaux 111019081618-phpapp01Coursrseaux 111019081618-phpapp01
Coursrseaux 111019081618-phpapp01
 
Cours réseaux
Cours réseauxCours réseaux
Cours réseaux
 
ccna1-3.pdf
ccna1-3.pdfccna1-3.pdf
ccna1-3.pdf
 

Dernier

Presentation powerpoint sur la filiere electrotechnique
Presentation powerpoint sur la filiere electrotechniquePresentation powerpoint sur la filiere electrotechnique
Presentation powerpoint sur la filiere electrotechnique
mohammadaminejouini
 
cours-LasergrammetrieLe « LiDAR», de l’anglais « Light.pptx
cours-LasergrammetrieLe « LiDAR», de l’anglais « Light.pptxcours-LasergrammetrieLe « LiDAR», de l’anglais « Light.pptx
cours-LasergrammetrieLe « LiDAR», de l’anglais « Light.pptx
AbdessamadAmimi1
 
BATIMENT 5.pptx. Fil français tourné en France
BATIMENT 5.pptx. Fil français tourné en FranceBATIMENT 5.pptx. Fil français tourné en France
BATIMENT 5.pptx. Fil français tourné en France
Txaruka
 
Proyecto Erasmus Jardineros y jardineras de paz
Proyecto Erasmus Jardineros y jardineras de pazProyecto Erasmus Jardineros y jardineras de paz
Proyecto Erasmus Jardineros y jardineras de paz
Morzadec Cécile
 
Textes de famille concernant les guerres V2.pdf
Textes de famille concernant les guerres V2.pdfTextes de famille concernant les guerres V2.pdf
Textes de famille concernant les guerres V2.pdf
Michel Bruley
 
Veille Audocdi 90 - mois de juin 2024.pdf
Veille Audocdi 90 - mois de juin 2024.pdfVeille Audocdi 90 - mois de juin 2024.pdf
Veille Audocdi 90 - mois de juin 2024.pdf
frizzole
 
Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union - Bilan de l'année 2023Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union
 

Dernier (7)

Presentation powerpoint sur la filiere electrotechnique
Presentation powerpoint sur la filiere electrotechniquePresentation powerpoint sur la filiere electrotechnique
Presentation powerpoint sur la filiere electrotechnique
 
cours-LasergrammetrieLe « LiDAR», de l’anglais « Light.pptx
cours-LasergrammetrieLe « LiDAR», de l’anglais « Light.pptxcours-LasergrammetrieLe « LiDAR», de l’anglais « Light.pptx
cours-LasergrammetrieLe « LiDAR», de l’anglais « Light.pptx
 
BATIMENT 5.pptx. Fil français tourné en France
BATIMENT 5.pptx. Fil français tourné en FranceBATIMENT 5.pptx. Fil français tourné en France
BATIMENT 5.pptx. Fil français tourné en France
 
Proyecto Erasmus Jardineros y jardineras de paz
Proyecto Erasmus Jardineros y jardineras de pazProyecto Erasmus Jardineros y jardineras de paz
Proyecto Erasmus Jardineros y jardineras de paz
 
Textes de famille concernant les guerres V2.pdf
Textes de famille concernant les guerres V2.pdfTextes de famille concernant les guerres V2.pdf
Textes de famille concernant les guerres V2.pdf
 
Veille Audocdi 90 - mois de juin 2024.pdf
Veille Audocdi 90 - mois de juin 2024.pdfVeille Audocdi 90 - mois de juin 2024.pdf
Veille Audocdi 90 - mois de juin 2024.pdf
 
Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union - Bilan de l'année 2023Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union - Bilan de l'année 2023
 

cours_sockets_chap3 patie_I_22_03_2020.pdf

  • 1. Programmation Réseaux Filière SMI, S6 Enseignant: Hassan SATORI hsatori@gmail.com ‫هللا‬ ‫عبد‬‫بن‬ ‫محمد‬ ‫سيدي‬ ‫جامعة‬ ‫ظهر‬ ‫العلوم‬‫كلية‬ ‫از‬‫ر‬‫المه‬ - ‫اس‬‫ف‬ - UNIVERSITE SIDI MOHAMED BEN ABDELLAH Faculté des Sciences Dhar El Mahraz – Fès Année universitaire 2019-2020
  • 2. 2 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
  • 3. 3 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
  • 4. 4 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
  • 5. 5 Chap.3: Les Sockets I- Généralités I- 1 socket (suite) Interface socket Programmation Réseaux , SMI S6 H. SATORI
  • 6. 6 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
  • 7. 7 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
  • 8. 8 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
  • 9. 9 Chap.3: Les Sockets I- Généralités I- 1 socket (suite) Programmation Réseaux , SMI S6 H. SATORI Encapsulation décapsulation des données
  • 10. 10 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
  • 11. 11 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
  • 12. 12 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
  • 13. 13 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
  • 14. AF_UNIX, ou AF_INET, etc. Chap.3: Les Sockets I-3 Création d ’une socket (suite) Programmation Réseaux , SMI S6 H. SATORI
  • 15. 15 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
  • 16. 16 ➢ 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 Chap.3: Les Sockets I-3 Création d ’une socket (suite)
  • 17. 17 Chap.3: Les Sockets I- 3 Création d ’une socket (suite) Programmation Réseaux , SMI S6 H. SATORI domain AF_UNIX protocole local AF_INET protocole Internet AF_INET6 protocole Internet IPv6 type SOCK_STREAM Garantie l'intégrité de la transmission. SOCK_DGRAM Transmission sans connexion, sans garantie de datagrammes de longueur fixe. SOCK_RAW programmation de niveau 3, administrateur seulement Protocol IPPROTO_TCP, IPPROTO_UDP, IPPROTO_RAW En général, il y a un protocole par type et il n'est pas utile de le spécifier. S'il y en a plusieurs, on peut l'indiquer. 0 = mode auto
  • 18. 18 Chap.3: Les Sockets I- 3 Création d ’une socket I-3-1 Exemple de création de socket Programmation Réseaux , SMI S6 H. SATORI 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)
  • 19. 19 ➢ 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 Chap.3: Les Sockets I-4 La suppression d'une socket : close()
  • 20. 20 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
  • 21. 21 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
  • 22. 22 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
  • 23. 23 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
  • 24. 24 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
  • 25. 25 Chap.3: Les Sockets I- Généralités I- 6 La programmation réseau Interface socket Programmation Réseaux , SMI S6 H. SATORI
  • 26. 26 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
  • 27. 27 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
  • 28. 28 Chap.3: Les Sockets I- Généralités I- 8 Modèle client - serveur client–serveur Programmation Réseaux , SMI S6 H. SATORI
  • 29. 29 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
  • 30. 30 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
  • 31. 31 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
  • 32. 32 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
  • 33. 33 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 Chap.3: Les Sockets I- 10 Numéro de Port
  • 34. 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. 35 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
  • 36. 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 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
  • 37. 37 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
  • 38. 38 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
  • 39. 39 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
  • 40. 40 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
  • 41. 41 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
  • 42. 42 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
  • 43. 43 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
  • 44. 44 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
  • 45. 45 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
  • 46. 46 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
  • 47. 47 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
  • 48. 48 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
  • 49. 49 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
  • 50. 50 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
  • 51. 51 VI- Le boutisme endianness (suite) ❑ Nombres entiers stockés sur 4 octets pour un processeur type big endian Programmation Réseaux H. SATORI Base binaire Base hexadécimale Base 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
  • 52. 52 VI- Le boutisme endianness (suite) ❑ Nombres entiers stockés sur 4 octets pour un processeur type Little Endian Programmation Réseaux H. SATORI Base binaire Base hexadécimale Base 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
  • 53. 53 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
  • 54. Chap.1: Introduction aux réseaux informatiques VI- Le boutisme endianness VI- 1 Taille des données 54 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
  • 55. 55 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
  • 56. 56 Chap.1: Introduction aux réseaux informatiques VI- Le boutisme endianness (suite) ❑ Réponse: 1- Sur une architecture Big Endian Programmation Réseaux H. SATORI Type Base binaire Base hexadécimale Base décimale Short (2 octet) 0001 1101 1110 1111 1D EF 7663 Int (4 octet) 0001 1101 1110 1111 0000 0000 0000 0000 1D EF 00 00 7663 Long (4 octet) 0001 1101 1110 1111 0000 0000 0000 0000 1D EF 00 00 00 00 00 00 7663 long long 0001 1101 1110 1111 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1D EF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7663
  • 57. 57 Chap.1: Introduction aux réseaux informatiques VI- Le boutisme endianness (suite) ❑ Réponse: 2- sur une architecture de type Little Endian Programmation Réseaux H. SATORI Type Base binaire Base hexadécimale Base décimale Short (2 octet) 1110 1111 0001 1101 EF 1D 7663 Int (4 octet) 0000 0000 0000 0000 1110 1111 0001 1101 00 00 EF 1D 7663 Long (4 octet) 0000 0000 0000 0000 1110 1111 0001 1101 00 00 00 00 00 00 EF 1D 7663 long long 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1110 1111 0001 1101 00 00 00 00 00 00 00 00 00 00 00 00 00 00 EF 1D 7663
  • 58. 58 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
  • 59. Bibliographie 59 ▪ 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)