Programmation IP. Cours de Réseaux. Tuyêt Trâm DANG NGOC. Université de Cergy-Pontoise

Dimension: px
Commencer à balayer dès la page:

Download "Programmation IP. Cours de Réseaux. Tuyêt Trâm DANG NGOC. <dntt@u-cergy.fr> Université de Cergy-Pontoise"

Transcription

1 Programmation IP Cours de Réseaux Tuyêt Trâm DANG NGOC Université de Cergy-Pontoise Tuyêt Trâm DANG NGOC Programmation IP 1 / 113

2 Rappel 1 Rappel 2 API socket 3 Programmation TCP 4 Programmation UDP 5 Fonction utilitaires 6 Multiconnexion 7 Programmation Raw 8 Programmation IP en Java Tuyêt Trâm DANG NGOC Programmation IP 2 / 113

3 Adresse IP Rappel Une adresse IP référence de manière logique et unique sur l Internet, l interface d une machine Tuyêt Trâm DANG NGOC Programmation IP 3 / 113

4 Protocoles Rappel Application Transport Internet Interface Matériel SMTP HTTP SSH FTP telnet... RPC DNS DHCP SNMP NTP... TCP Ethernet X25 IPv4 UDP RS ICMP Cablage fil (RJ45, coaxial, fibre optique) / sans fil IGMP ARP Longueur Version d en tete Type de service Longueur totale Identification Drapeau Décalage fragment Durée de vie Protocole Somme de controle d en tete Adresse IP Source Adresse IP destination Options IP Remplissage Données ADRESSE ETHERNET DESTINATION TYPE ADRESSE ETHERNET SOURCE DATA ( bytes)... FCS/CRC Checksum En tete En tete En tete Données Application Ethernet IP TCP Segment TCP Datagramme IP Datagramme Ethernet Longueur en tete Port source TCP Réservé Somme de controle Numéro de séquence Numéro d acquittement Code Options Données... Port destination TCP Taille de la fenetre Pointeur urgent Remplissage Tuyêt Trâm DANG NGOC Programmation IP 4 / 113

5 Protocoles Rappel Application Transport Internet Interface Matériel SMTP HTTP SSH FTP telnet... RPC DNS DHCP SNMP NTP... TCP Ethernet X25 IPv4 UDP RS ICMP Cablage fil (RJ45, coaxial, fibre optique) / sans fil IGMP ARP Longueur Version d en tete Type de service Longueur totale Identification Drapeau Décalage fragment Durée de vie Protocole Somme de controle d en tete Adresse IP Source Adresse IP destination Options IP Remplissage Données ADRESSE ETHERNET DESTINATION TYPE ADRESSE ETHERNET SOURCE DATA ( bytes)... FCS/CRC Checksum En tete En tete En tete Données Application Ethernet IP UDP Datagramme UDP Datagramme IP Datagramme Ethernet Port source UDP Longueur du message Données... Port destination UDP Somme de controle Tuyêt Trâm DANG NGOC Programmation IP 4 / 113

6 Protocoles Rappel Application Transport Internet Interface Matériel SMTP HTTP SSH FTP telnet... RPC DNS DHCP SNMP NTP... TCP Ethernet X25 IPv4 UDP RS ICMP Cablage fil (RJ45, coaxial, fibre optique) / sans fil IGMP ARP ADRESSE ETHERNET DESTINATION TYPE ADRESSE ETHERNET SOURCE DATA ( bytes)... FCS/CRC Checksum Longueur Version d en tete Type de service Longueur totale Identification Drapeau Décalage fragment Durée de vie Protocole Somme de controle d en tete En tete Ethernet Adresse IP Source Adresse IP destination Options IP Données... En tete En tete Données IP ICMP Datagramme ICMP Datagramme IP Datagramme Ethernet... Remplissage Type Code Données Somme de controle En tete IP + 64 premiers bits du datagramme IP ayant provoqué l erreur Tuyêt Trâm DANG NGOC Programmation IP 4 / 113

7 Ports Rappel Le mécanisme de port est utilisé afin de pouvoir permettre de gérer plusieurs services simultanés depuis une seule interface réseau. Une connexion est identifiée par un couple de points appelés socket permettant l identification des deux extrêmités de la connexion. Il y a ports TCP et ports UDP possibles. Certains étant dont les services associés sont par convention universellement connus (Well-Known Port Number). echo 7/udp ftp-data 20/tcp File Transfer (Default Data) ftp 21/tcp File Transfer (Control) telnet 23/tcp smtp 25/tcp Simple Mail Transfer domain 53/tcp Domain Name Server domain 53/udp Domain Name Server tftp 69/udp Trivial File Transfer finger 79/tcp http 80/tcp World Wide Web HTTP nfsd 2049/udp NFS server daemon Interface d adresse IP : Module TCP Module UDP Module TCP Module UDP N Port ouvert (numéro N ) N N Port en écoute (numéro N ) Socket (connexion TCP) Socket (connexion UDP) Interface d adresse IP : Module TCP Module UDP Module TCP Module UDP Interface d adresse IP : Interface d adresse IP : Tuyêt Trâm DANG NGOC Programmation IP 5 / 113

8 TCP Rappel TCP (Transport Control Protocol) est un protocole basé sur IP qui : Protocole fiable Les applications utilisant TCP ne s occupent que de l aspect dialogue sans se préoccuper de la fiabilité de la connexion. Programmation d application très simple. Protocole Point à Point Notion de ports Lent Longueur en tete Port source TCP Réservé Somme de controle Numéro de séquence Numéro d acquittement Code Options Données... Port destination TCP Taille de la fenetre Pointeur urgent Remplissage Tuyêt Trâm DANG NGOC Programmation IP 6 / 113

9 UDP Rappel UDP (User Datagram Protocol) est -tout comme TCP- un protocole basé sur IP qui : Protocole non fiable Les applications utilisant UDP doivent savoir gérer les erreurs durant les transmissions Protocole non connecté. Diffusion possible. Notion de ports Rapide UDP = simplicité de IP accessible par les applications Port source UDP Port destination UDP Longueur du message Somme de controle Données... Tuyêt Trâm DANG NGOC Programmation IP 7 / 113

10 Rappel Quand utiliser TCP ou UDP? Dans l écriture d une application : TCP : UDP : Ecrire l application simplement sans se préoccuper de la fiabilité de la connexion. Sur une utilisation locale sans trop de risque d erreurs et avec des besoins en rapidité (NFS, TFTP) Si un paquet perdu n est pas vital et qu il vaudrait mieux faire une autre requête (NTP) En diffusion (BOOTP, DHCP, RIP, SNMP, etc.) Tuyêt Trâm DANG NGOC Programmation IP 8 / 113

11 ICMP Rappel ICMP (Internet Control MessageProtocol) est un protocole basé sur IP qui : Est généré par la destination ou un routeur intermédiaire indiquent une condition (d erreur) à l émetteur Protocole non fiable Protocole non connecté. Diffusion possible. Pas de notion de ports Des types et des codes prédéfinis pour la plupart (Destination Unreachable, Echo request/reply, TTL exceeded, etc.) Type Code Données... Somme de controle En tete IP + 64 premiers bits du datagramme IP ayant provoqué l erreur Tuyêt Trâm DANG NGOC Programmation IP 9 / 113

12 Adresse DNS Rappel Des mécanisme de résolution d adresse permettent de convertir les adresses IP en adresses DNS et vice-versa. jungle.ens.uvsq.fr atlas.ens.uvsq.fr gibet.prism.uvsq.fr nephtys.lip6.fr (alias de atlas) ftp.lip6.fr ftp.apache.org freefall.freebsd.org java.sun.com java.sun.com java.sun.com java.sun.com Tuyêt Trâm DANG NGOC Programmation IP 10 / 113

13 API socket 7 Programmation Raw Tuyêt Trâm DANG NGOC Programmation IP 11 / Rappel 2 API socket sockaddr in socket setsocket bind 3 Programmation TCP 4 Programmation UDP 5 Fonction utilitaires 6 Multiconnexion

14 API socket Interface de programmation Interface de programmation : socket les sockets sont un mécanisme de communication interprocessus disponible sur UNIX les sockets ne sont pas liés à TCP/IP et peuvent utiliser d autres protocoles (AppleTalk, Xerox, XNS, etc.) Objectif des sockets préserver la sémantique des opérations sur les fichiers : open, read, write, close Certains mécanismes rendent l ajout d appels système complémentaires Tuyêt Trâm DANG NGOC Programmation IP 12 / 113

15 API socket Interface de programmation Fichier Fichier Fichier table des descripteurs Processus read write write read write read read write Internet Tuyêt Trâm DANG NGOC Programmation IP 13 / 113

16 API socket Programmation par socket Création de la socket : socket Etablissement de la connexion : bind, listen, connect ou accept échange de données : read et write (socket = descripteur de fichier) ou sendto et recvfrom fermeture de la connexion : close ou shutdown L enchainement des opérations dépend du mode de connexion : mode connecté (TCP) mode non connecté (UDP) Tuyêt Trâm DANG NGOC Programmation IP 14 / 113

17 Structure sockaddr in API socket sockaddr in Adresse AF INET = type d adresse IP (v4 ou v6) + adresse IP + numéro de port TCP ou UDP Adresse IP AF_INET (IPv4) AF_INET6 (IPv6) fe80::216:76ff:fe04:f24a Port TCP Port UDP Tuyêt Trâm DANG NGOC Programmation IP 15 / 113

18 API socket Structure sockaddr in (IPv4) sockaddr in Point de communication défini par une adresse et un port. #include <netinet/in.h> #include <sys/socket.h> struct in_addr { uint32_t s_addr; /* Adresse IP binaire */ /* 32 bits - NBO */ }; struct sockaddr_in { sa_family_t sin_family; /* AF_INET */ uint16_t sin_port; /* Numéro de port - NBO */ struct in_addr sin_addr; /* Adresse IP */ char sin_zero[8]; /* initialisé à zéro */ }; Tuyêt Trâm DANG NGOC Programmation IP 16 / 113

19 API socket Structure sockaddr in (IPv4) sockaddr in sin family représente le type de famille (AF INET pour IPv4) sin port représente le port à contacter. S il est nul, il est laissé au choix du système d utiliser un port libre quelconque. s addr représente l adresse de l hôte. On utilise généralement inet addr (const char * adr) qui convertit une adresse IP notée sous la forme XXX.YYY.ZZZ.TTT INADDR ANY signifie que le socket peut-être associé à n importe quelle adresse IP de la machine locale. sin zero contient uniquement des zéros (étant donné que l adresse IP et le port occupent 6 octets, les 8 octets restants doivent être à zéro) struct sockaddr_in addr ; addr.sin_family = AF INET ; addr.sin_port = htons (80) ; addr.sin_addr.s_addr = inet_addr (" ") ; memset ( &addr.sin_zero, 0, sizeof(addr.sin_zero)); Tuyêt Trâm DANG NGOC Programmation IP 17 / 113

20 API socket Structure sockaddr in6 (IPv6) sockaddr in struct sockaddr_in6 { uint16_t sin6_family; /* AF_INET6 */ uint16_t sin6_port; /* numéro de port */ uint32_t sin6_flowinfo; /* information de flux IPv6 */ struct in6_addr sin6_addr; /* adresse IPv6 */ uint32_t sin6_scope_id; /* Scope ID (nouveauté 2.4) */ }; struct in6_addr { unsigned char s6_addr[16]; /* adresse IPv6, groupe de 16 nombres hexadécimaux sur 2 chiffres, séparés par un deux-points : */ }; Tuyêt Trâm DANG NGOC Programmation IP 18 / 113

21 Socket API socket socket Création d une socket du côté client ou du côté serveur #include <sys/types.h> #include <sys/socket.h> int socket (int famille, int type, int protocole) famille : famille de protocole utilisé (PF INET pour IP) type : type de service (orienté connexion ou non). SOCK STREAM : mode connecté (TCP) SOCK DGRAM : mode déconnecté (UDP) SOCK RAW : (IP) protocole : protocole permettant de fournir le service désiré. Dans le cas d IP, on le mettra ainsi toujours à 0 (le système choisit). int descripteur = socket(af_inet, SOCK_STREAM, 0); Tuyêt Trâm DANG NGOC Programmation IP 19 / 113

22 API socket setsocket Options de la socket : setsockopt Manipule les options associées à une socket. int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen); level : à quel niveau il faut interprêter les options (socket? TCP?) En général SOL SOCKET. optname : options binaires : SO KEEPALIVE : gardant la socket ouverte pour les sockets orientées connexion SO REUSEADDR : autoriser la réutilisa- tion des adresses locales SO LINGER : un appel close ou shutdown ne se terminera pas avant que tous les messages en attente pour la socket aient été correctement émise ou que le délai soit écoulé SO BROADCAST Fixer ou lire l attribut broadcast... (voir pages de manuel) Tuyêt Trâm DANG NGOC Programmation IP 20 / 113

23 API socket setsocket Options SO ACCEPTCONN SO BSDCOMPAT SO BINDTODEVICE SO BROADCAST SO DEBUG SO ERROR SO DONTROUTE SO KEEPALIVE SO LINGER SO OOBINLINE SO PASSCRED SO PEERCRED SO PRIORITY SO RCVLOWAT SO RCVTIMEO SO RCVBUF SO REUSEADDR SO SNDBUF SO TIMESTAMP SO TYPE Description Renvoie une valeur indiquant si la socket a été déclarée comme acceptant les connexions à l aide de listen(). Active la compatibilité BSD bogue-à-bogue. Attache cette socket à un périphérique donné, tel que eth0, comme indiqué dans le nom d interface transmis. Définit ou lit l attribut de diffusion. Active le débogage de socket. Lit et efface l erreur en cours sur la socket. Ne pas émettre par l intermédiaire d une passerelle, n envoyer qu aux hôtes directement connectés. Active l émission de messages périodiques gardant la socket ouverte pour les sockets orientées connexion. Définit ou lit l option SO LINGER. Si cette option est activée, les données hors bande sont placées directement dans le flux des données reçues. Autorise ou interdit la réception des messages de contrôle SCM CREDENTIALS. Renvoie les données d authentification du processus étranger connecté à cette socket. Fixe la priorité définie par le protocole pour tous les paquets envoyés sur la socket. et SO SNDLOWAT Indique le nombre minimal d octets dans le tampon pour que la couche socket passe les données au protocole (SO SNDLOWAT) ou à l utilisateur en réception (SO RCVLOWAT). et SO SNDTIMEO Indique le délai maximal d émission ou de réception avant de signaler une erreur. Définit ou lit la taille maximale en octets du tampon de récep tion. Indique que les règles utilisées pour la validation des adresses fournies dans un appel à bind(2) doivent autoriser la réutilisation des adresses locales. Définit ou lit la taille maximale en octets du tampon d émission. Active ou désactive la réception des messages de contrôle SO TIMESTAMP. Lit le type de socket, sous forme d entier (comme SOCK STREAM). Tuyêt Trâm DANG NGOC Programmation IP 21 / 113

24 bind API socket bind Attache un point de communication (sockaddr) à une socket. #include <sys/types.h> #include <sys/socket.h> int bind (int s, struct sockaddr *adr, int lg) s la socket adr l adresse. Structure sockaddr in pour IPv4, sockaddr in6 pour IPv6. lg est la taille de adr Tuyêt Trâm DANG NGOC Programmation IP 22 / 113

25 API socket Exemple d utilisation de bind bind int s ; struct sockaddr_in addr ; addr.sin_family = AF INET ; addr.sin_port = htons (80) ; addr.sin_addr.s_addr = INADDR_ANY ; s = socket (PF_INET, SOCK_STREAM, 0) ; if ( bind (s, &addr, sizeof addr) == SOCKET_ERROR)) { // Traitement de l erreur } Tuyêt Trâm DANG NGOC Programmation IP 23 / 113

26 Programmation TCP 6 Multiconnexion Tuyêt Trâm DANG NGOC Programmation IP 24 / Rappel 2 API socket 3 Programmation TCP serveur : listen serveur : accept client : connect Le dialogue : read/write ou send/recv Exemple de serveur TCP Exemple de client TCP 4 Programmation UDP 5 Fonction utilitaires

27 Programmation TCP Programmation TCP Mode connecté Serveur socket Client bind listen connexion socket connect attend la connexion Traitement de la connexion accept read write write read close données données données données write read read write close Traitement de la connexion Tuyêt Trâm DANG NGOC Programmation IP 25 / 113

28 Programmation TCP Etapes de programmation TCP Le serveur : 1 crée une socket (SOCK STREAM) 2 définit un point de communication sockaddr in (INADDR ANY, port d écoute) 3 utilise bind pour lier les deux 4 place la socket en mode ouverture passive avec listen 5 attend une connexion d un client avec accept sur la socket d écoute. 6 le dialogue se fait par read/write ou send/recv par la socket de dialogue renvoyée par accept. 7 la socket de dialogue et la socket d écoute sont fermées (close). Le client : 1 crée une socket (SOCK STREAM) 2 se connecte au serveur (désigné par un point de communication adresse IP du serveur, numéro de port d écoute du serveur ) avec connect 3 le dialogue se fait par read/write ou send/recv par la socket. 4 la socket est fermée (close) Tuyêt Trâm DANG NGOC Programmation IP 26 / 113

29 serveur : listen Programmation TCP serveur : listen Pour indiquer que la socket pourra accepter des connexions entrantes. #include <sys/types.h> #include <sys/socket.h> int listen (int s, int nbmax) nbmax : nombre maximal de connexions pouvant être mises en attente. Renvoi SOCKET ERROR en cas d erreur, 0 sinon. if (listen (socket, 5) == SOCKET_ERROR) { // traitement de l erreur } Tuyêt Trâm DANG NGOC Programmation IP 27 / 113

30 serveur : accept Programmation TCP serveur : accept permet la connexion en acceptant un appel. #include <sys/types.h> #include <sys/socket.h> int accept (int s, struct sockaddr *cli addr, int *cli len) En attente de connexion en provenance d un client. Utilisé uniquement par le serveur Fonction bloquante qui ne se débloque qu à la connexion d un client (ou en cas d erreur). cli addr est rempli avec l adresse du client cli len est rempli avec la longueur de cli addr accept retourne un nouveau descripteur de socket pour la phase de dialogue, et INVALID SOCKET si erreur. Tuyêt Trâm DANG NGOC Programmation IP 28 / 113

31 Programmation TCP serveur : listen/accept serveur : accept int s_ecoute, s_dial, cli_len ; struct sockaddr_in serv_addr, cli_addr ; serv_addr.sin_family = AF_INET ; serv_addr.sin_addr.s_addr = INADDR_ANY ; serv_addr.sin_port = htons (5000) ; memset (&serv_addr.sin_zero, 0, sizeof(serv_addr.sin_zero)); s_ecoute = socket (PF_INET, SOCK_STREAM, 0) ; bind (s_ecoute, (struct sockaddr *)&serv_addr, sizeof serv_addr) ; listen (s_ecoute, 5) ; cli_len = sizeof (cli_addr) ; s_dial = accept (s_ecoute, (struct sockaddr *)&cli_addr, &cli_len) ; Tuyêt Trâm DANG NGOC Programmation IP 29 / 113

32 client : connect Programmation TCP client : connect Permet d établir une connexion avec un serveur. #include <sys/types.h> #include <sys/socket.h> int connect (int s, struct sockaddr *serv addr, int serv len) Assure la connexion vers le serveur Utilisé uniquement par le client serv addr l adresse+port du serveur à contacter serv len la longueur de serv addr retourne 0 si la connexion s est bien déroulée, sinon -1. Tuyêt Trâm DANG NGOC Programmation IP 30 / 113

33 Programmation TCP connect sur le programme client client : connect int s_cli ; struct sockaddr_in serv_addr ; serv_addr.sin_family = AF_INET ; serv_addr.sin_addr = inet_addr (" ") ; serv_addr.sin_port = htons (5000) ; memset (&serv_addr.sin_zero, 0, sizeof(serv_addr.sin_zero)); s_cli = socket (PF_INET, SOCK_STREAM, 0) ; connect (s_cli, &serv_addr, sizeof serv_addr) ; Tuyêt Trâm DANG NGOC Programmation IP 31 / 113

34 Programmation TCP Le dialogue : read/write ou send/recv Envoi de données dans la socket avec write #include <unistd.h> ssize_t write(int s, const void *buf, size_t len); s : la socket buffer : tampon contenant les octets à envoyer au client len : nombre d octets à envoyer renvoie le nombre d octets effectivement envoyés char buf [80] ; bzero (buf, 80) ; strcpy (buf, "coucou ca va") ; write (s, buf, sizeof(buf)); Tuyêt Trâm DANG NGOC Programmation IP 32 / 113

35 Programmation TCP Le dialogue : read/write ou send/recv Envoi de données dans la socket avec send #include <sys/types.h> #include <sys/socket.h> ssize_t send(int s, const void *buf, size_t len, int flags); s : la socket buffer : tampon contenant les octets à envoyer au client len : nombre d octets à envoyer flags : type d envoi : MSG DONTROUTE : les données ne routeront pas MSG OOB : les données urgentes (Out Of Band) doivent être envoyées le flag 0 : envoi normal renvoie le nombre d octets effectivement envoyés char buf [80] ; bzero (buf, 80) ; strcpy (buf, "coucou ca va") ; send (s, buf, sizeof(buf)); Tuyêt Trâm DANG NGOC Programmation IP 33 / 113

36 Programmation TCP Le dialogue : read/write ou send/recv Réception de données de la socket avec read #include <unistd.h> ssize_t read(int s, void *buf, size_t len); s : la socket buffer : tampon qui sera rempli avec les octets reçus len : nombre d octets à lire read est une fonction blocante. char buf [80] ; int n ; n = read (s, buf, 80); printf ("J ai lu [%s] (%d caractères)", buf, n) ; Tuyêt Trâm DANG NGOC Programmation IP 34 / 113

37 Programmation TCP Le dialogue : read/write ou send/recv Réception de données de la socket avec recv #include <sys/types.h> #include <sys/socket.h> ssize_t recv(int s, void *buf, size_t len, int flags); s : la socket buffer : tampon qui sera rempli avec les octets reçus len : nombre d octets à lire flags : type de lecture : MSG PEEK : les données lues ne sont pas retirées de la file de réception MSG OOB : les données urgentes (Out Of Band) doivent être lues. le flag 0 : lecture normal renvoie le nombre d octets effectivement lus. recv est une fonction blocante. char buf [80] ; int n ; n = recv (s, buf, sizeof(buf), 0); printf ("J ai lu [%s] (%d caractères)", buf, n) ; Tuyêt Trâm DANG NGOC Programmation IP 35 / 113

38 Programmation TCP Le dialogue : read/write ou send/recv Fermeture de socket close/shutdown Fermeture d un socket en permettant au système d envoyer les données restantes (pour TCP) int close(int socket) La fonction shutdown() permet la fermeture d un socket dans un des deux sens (pour une connexion full-duplex) ou les deux : int shutdown(int s, int sens) Suivant la valeur du sens : 0 : la socket est fermé en réception 1 : la socket est fermé en émission 2 : la socket est fermé dans les deux sens close() comme shutdown() retournent -1 en cas d erreur, 0 si la fermeture se déroule bien. Tuyêt Trâm DANG NGOC Programmation IP 36 / 113

39 Programmation TCP Exemple de serveur TCP Exemple de serveur TCP #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <string.h> #include <stdio.h> int main (){ int s_ecoute, s_dial, cli_len ; struct sockaddr_in serv_addr, cli_addr ; char buf [80] ; serv_addr.sin_family = AF_INET ; serv_addr.sin_addr.s_addr = INADDR_ANY ; serv_addr.sin_port = htons (5000) ; memset (&serv_addr.sin_zero, 0, sizeof(serv_addr.sin_zero)); s_ecoute = socket (PF_INET, SOCK_STREAM, 0) ; bind (s_ecoute, (struct sockaddr *)&serv_addr, sizeof serv_addr) ; listen (s_ecoute, 5) ; cli_len = sizeof cli_addr ; s_dial = accept (s_ecoute, (struct sockaddr *)&cli_addr, &cli_len) ; bzero (buf, 80) ; read (s_dial, buf, 80) ; printf ("J ai lu %s\n", buf) ; write (s_dial, "Coucou, ici serveur", 19) ; close (s_dial) ; close (s_ecoute) ; return 0 ; } Tuyêt Trâm DANG NGOC Programmation IP 37 / 113

40 Programmation TCP Exemple de client TCP Exemple de client TCP #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <string.h> #include <stdio.h> int main (){ int s_cli ; struct sockaddr_in serv_addr ; char buf [80] ; s_cli = socket (PF_INET, SOCK_STREAM, 0) ; serv_addr.sin_family = AF_INET ; serv_addr.sin_addr = inet_addr (" ") ; serv_addr.sin_port = htons (5000) ; memset (&serv_addr.sin_zero, 0, sizeof(serv_addr.sin_zero)); connect (s_cli, (struct sockaddr *)&serv_addr, sizeof serv_addr) ; write (s_cli, "Coucou, ici client", 18) ; bzero (buf, 80) ; read (s_cli, buf, 80) ; printf ("J ai lu %s\n", buf) ; close (s_cli) ; return 0 ; } Tuyêt Trâm DANG NGOC Programmation IP 38 / 113

41 Programmation UDP 7 Programmation Raw Tuyêt Trâm DANG NGOC Programmation IP 39 / Rappel 2 API socket 3 Programmation TCP 4 Programmation UDP sendto recvfrom Exemple de receveur UDP Exemple d expéditeur UDP 5 Fonction utilitaires 6 Multiconnexion

42 Programmation UDP Etapes de la programmation UDP Destinataire socket socket bind bind Expediteur Traitement des données recvfrom données sendto Traitement des données recvfrom close données sendto close Tuyêt Trâm DANG NGOC Programmation IP 40 / 113

43 Programmation UDP Etapes de la programmation UDP Suivant le dialogue, chaque participant est tour à tour receveur et expéditeur. L expéditeur Le receveur 1 crée une socket (SOCK DGRAM) 2 définit un point de communication sockaddr in (INADDR ANY, port d écoute) 3 utilise bind pour lier les deux 4 reçoit les messages avec rcvfrom 5 ferme la socket avec close 1 crée une socket (SOCK DGRAM) 2 définit un point de communication sockaddr in (INADDR ANY, 0) 3 utilise bind pour lier les deux 4 crée le message à envoyer, et le point de communication décrivant le destinataire sockaddr in (adresse + port) 5 envoie les messages avec sendto à cette adresse. 6 ferme la socket avec close Tuyêt Trâm DANG NGOC Programmation IP 41 / 113

44 sendto Programmation UDP sendto Envoyer un message en mode non connecté #include <sys/types.h> #include <sys/socket.h> sendto (int s, char *buf, int len, int flags, struct sockaddr *to, int tolen) buf : le message à transmettre len : la longueur du message flag : 0 pour envoi de messages normaux to : l adresse destinataire tolen : la taille de l adresse destinataire Tuyêt Trâm DANG NGOC Programmation IP 42 / 113

45 recvfrom Programmation UDP recvfrom Recevoir un message en mode non connecté #include <sys/types.h> #include <sys/socket.h> int recvfrom (int s, char *buf, int nb, int flags, struct sockaddr *from, int *len) buf : là où sera stocké le message reçu len : taille max du buffer flag : 0 pour réception de messages normaux from : l adresse+port de la source du message y sera insérée len : taille de l adresse y sera insérée le retour est la taille réelle du message Tuyêt Trâm DANG NGOC Programmation IP 43 / 113

46 Programmation UDP Exemple de receveur UDP Exemple de receveur UDP #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <string.h> #include <stdio.h> int main () { int sock, n, exp_len ; struct sockaddr_in recv_addr, exp_addr ; char buf [80] ; sock = socket (PF_INET, SOCK_DGRAM, 0) ; bzero ((char *) &recv_addr, sizeof recv_addr) ; recv_addr.sin_family = AF_INET ; recv_addr.sin_addr.s_addr = INADDR_ANY ; recv_addr.sin_port = htons (5000) ; bind (sock, (struct sockaddr *)&recv_addr, sizeof recv_addr) ; n = recvfrom (sock, buf, 80, 0, (struct sockaddr *)&exp_addr, &exp_len) ; printf ("%s a envoyé le message %s\n", inet_ntoa (exp_addr), buf) ; close (sock) ; return 0 ; } Tuyêt Trâm DANG NGOC Programmation IP 44 / 113

47 Programmation UDP Exemple d expéditeur UDP Exemple d expéditeur UDP #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <string.h> #include <strings.h> int main (){ int sock ; struct sockaddr_in recv_addr, exp_addr ; char buf [80] ; sock = socket (PF_INET, SOCK_DGRAM, 0) ; bzero ((char *) &exp_addr, sizeof exp_addr) ; exp_addr.sin_family = AF_INET ; exp_addr.sin_addr.s_addr = INADDR_ANY ; bind (sock, (struct sockaddr *)&exp_addr, sizeof exp_addr) ; bzero ((char *) &recv_addr, sizeof recv_addr) ; recv_addr.sin_family = AF_INET ; recv_addr.sin_addr.s_addr = inet_addr (" ") ; recv_addr.sin_port = htons (5000) ; strncpy (buf, "Coucou, c est l envoyeur", 24) ; sendto (sock, buf, 24, 0, (struct sockaddr *)&recv_addr, sizeof recv_addr) ; close (sock) ; return 0 ; } Tuyêt Trâm DANG NGOC Programmation IP 45 / 113

48 Fonction utilitaires 7 Programmation Raw Tuyêt Trâm DANG NGOC Programmation IP 46 / Rappel 2 API socket 3 Programmation TCP 4 Programmation UDP 5 Fonction utilitaires htonl, htons, ntohs, ntohl Les fonctions de conversion numériques d adresses Fonctions de conversions de nom vers adresses IP et de nom de services vers numéro de protocole + port 6 Multiconnexion

49 Fonction utilitaires Network-Byte Order (NBO) htonl, htons, ntohs, ntohl big-endian ou gros-boutiste : poids fort en tête Motorola 68000, les SPARC (Sun Microsystems) ou encore les System/370 (IBM). little-endian ou petit-boutiste : poids faible en tête : x86 Ordre des octets du réseau (NBO) : big-endian Fonctions de conversion des données entre l ordre des octets de l hôte et du réseau. htonl : host to network (long) htons : host to network (short) ntohs : network to host (long) ntohl : network to host (short) Tuyêt Trâm DANG NGOC Programmation IP 47 / 113

50 Fonction utilitaires Les fonctions de conversion numériques d adresses Fonctions de conversions numériques d adresses IP Convertir une adresse IP sous la forme XXX.YYY.ZZZ.TTT (resp. aaaa :bbbb :cccc :dddd :eeee :ffff :gggg :hhhh (ou version abrégée)) en struct in addr (resp. struct in addr6) et inversement. Fonctions spécifiques à IPv4 : ne plus utiliser, non compatible IPv6 inet addr : conversion chaine adresse vers structure inet ntoa : conversion structure vers chaine adresse Fonctions normalisée IPv4/IPv6 : à utiliser de préférence inet pton : convertit une adresse textuelle en sa forme binaire inet ntop : Convertir une adresse sous forme binaire en sa forme textuelle. Tuyêt Trâm DANG NGOC Programmation IP 48 / 113

51 Fonction utilitaires inet addr et inet ntoa (obsolète) Les fonctions de conversion numériques d adresses Convertir une adresse IP sous la forme XXX.YYY.ZZZ.TTT en struct in addr et inversement. in_addr t inet addr(const char *cp); char *inet ntoa(struct in addr in); Attention : fonctions spécifiques à IPv4. Utiliser de préférence inet pton et inet ntop. Tuyêt Trâm DANG NGOC Programmation IP 49 / 113

52 inet pton Fonction utilitaires Les fonctions de conversion numériques d adresses Convertir une adresse textuelle en sa forme binaire : #include <sys/socket.h> #include <arpa/inet.h> int inet_pton(int af, const char src, void *dst) ; af AF INET ou AF INET6 src l adresse (chaine de caract.) à traiter dst le tampon où est rangé le résultat retourne 1 si conversion réussie, 0 si chaine de caractères qui lui a été fournie n est pas une adresse valide et -1 en cas d erreur. Tuyêt Trâm DANG NGOC Programmation IP 50 / 113

53 char * inet_ntop(int af, const void *src, char *dst, size_t size) af AF INET ou AF INET6 src l adresse binaire à traiter dst le tampon où est rangé le résultat Il doit être d une taille suffisante, à savoir 16 octets pour les adresses IPv4 et 46 octets pour les adresses IPv6. Les tailles sont définies dans netinet/in.h par : #define INET_ADDRSTRLEN 16 #define INET6_ADDRSTRLEN 46 size la taille de ce tampon retourne un pointeur vers le tampon où est rangé le résultat de la conversion. nul si erreur (famille d adresses non reconnue ou taille du tampon insuffisante). Tuyêt Trâm DANG NGOC Programmation IP 51 / 113 inet ntop Fonction utilitaires Les fonctions de conversion numériques d adresses Convertir une adresse sous forme binaire en sa forme textuelle. #include <sys/socket.h> #include <arpa/inet.h>

54 inet pton/inet ntop Fonction utilitaires Les fonctions de conversion numériques d adresses char resultat6 [16], resultat4 [16];... inet_pton(af_inet6, "fe80::0216:76ff:fe04:f24a", resultat6); inet_pton(af_inet4, " ", resultat4);... char buffer6 [100], buffer4 [100] ;... inet_ntop(af_inet6, resultat6, buffer6, sizeof(buffer6)); inet_ntop(af_inet, resultat4, buffer4, sizeof(buffer4));... Tuyêt Trâm DANG NGOC Programmation IP 52 / 113

55 Fonction utilitaires Fonctions de conversions de nom vers adresses IP et de nom de services vers numéro de protocole + port Fonctions de conversions de nom vers adresses IP et de nom de services vers numéro de protocole + port Fonctions spécifiques à IPv4 : ne plus utiliser, non compatible IPv6 gethostbyname (resp. gethostbyaddr) : renvoie une structure hostent (contenant entre autre le nom et l adresse IP) pour un nom d hôte donné (resp. pour une adresse IP donnée). getservbyname (resp. getservbyport) : renvoi une structure servent (contenant entre autre le nom et le numéro de port) pour un nom de service donné (resp. pour un numéro de port donné). getprotobyname (resp. getprotobynumber) : renvoi une structure protoent (contenant entre autre le nom et le numéro de protocole) pour un nom de protocole donné (resp. pour un numéro de protocole donné). Fonctions normalisée IPv4/IPv6 : à utiliser de préférence getnameinfo : convertit une adresse de socket en un hôte et un service correspondants, de façon indépendante du protocole getaddrinfo : convertit un nom d hôte et un nom de service en une adresse Internet, un numéro de protocole et un numéro de service Tuyêt Trâm DANG NGOC Programmation IP 53 / 113

56 Fonction utilitaires gethostbyname (obsolète) Fonctions de conversions de nom vers adresses IP et de nom de services vers numéro de protocole + port Obtenir l adresse d une machine connaissant son nom (etc/hosts, /etc/resolv.conf, host.conf) #include <netdb.h> struct hostent *gethostbyname (char *nom) struct hostent { char *h_name; /* Nom officiel de l h^ote. */ char **h_aliases; /* Liste d alias. */ int h_addrtype; /* Type d adresse de l h^ote.*/ int h_length; /* Longueur de l adresse. */ char **h_addr_list; /* Liste d adresses. */ } #define h_addr h_addr_list[0] h aliases : Une table, terminée par zéro, d alternatives au nom officiel de l hôte. h addrtype = AF INET. h addr list : Une table, terminée par zéro, d adresses réseau pour l hôte, NBO Tuyêt Trâm DANG NGOC Programmation IP 54 / 113

57 Fonction utilitaires exemple : gethostbyname (obsolète) Fonctions de conversions de nom vers adresses IP et de nom de services vers numéro de protocole + port bzero (&sonadr, sizeof sonadr) ; sonadr.sin_family = AF_INET ; sonadr.sin_port = htonl (5000) ; sonadr.sin_addr.s_addr = inet_addr (argv [1]) ; if (sonadr.sin_addr.s_addr!= -1) { r = connect (s, (struct sockaddr *) &sonadr, sizeof sonadr) ; } else { struct hostent *hp ; int i, r ; hp = gethostbyname (argv [1]) ; i = 0 ; r = -1 ; while (r == -1 && hp->h_addr_list [i]!= NULL) { bcopy (hp->h_addr_list [i], &sonadr.sin_addr, sizeof (sonadr.sin_addr)) ; r = connect (s, (struct sockaddr *) &sonadr, sizeof sonadr) ; i++ ; } Tuyêt Trâm DANG NGOC Programmation IP 55 / 113

58 Fonction utilitaires gethostbyaddr (obsolète) Fonctions de conversions de nom vers adresses IP et de nom de services vers numéro de protocole + port Obtenir le nom d une machine connaissant son adresse #include <netdb.h> struct hostent *gethostbyaddr (char *adr, int lg, int type) lg : longueur de adr type = AF INET Tuyêt Trâm DANG NGOC Programmation IP 56 / 113

59 Fonction utilitaires getservbyname (obsolète) Fonctions de conversions de nom vers adresses IP et de nom de services vers numéro de protocole + port Obtenir le numéro d un port à partir de son nom (cf. /etc/protocols) #include <netdb.h> struct servent *getservbyname (char *nom, char *prot) struct servent { char *s_name; /* Nom officiel du service */ char **s_aliases; /* Liste d alias */ int s_port; /* Numéro de port */ char *s_proto; /* Protocole utilisé */ } Exemple : struct servent *sp ; sp = getservbyname ("http", "tcp") ; bzero (&sonadr, sizeof sonadr) ; addr.sin_family = AF_INET ; addr.sin_port = sp->s_port ; addr.sin_addr.s_addr = inet_addr (" ") ; Tuyêt Trâm DANG NGOC Programmation IP 57 / 113

60 Fonction utilitaires getprotobyname (obsolète) Fonctions de conversions de nom vers adresses IP et de nom de services vers numéro de protocole + port Obtenir le numéro du protocole à partir de son nom (cf. /etc/protocols) #include <netdb.h> struct protoent *getprotobyname (char *nom) struct protoent { char *p_name; /* Nom officiel du protocole */ char **p_aliases; /* Liste d alias */ int p_proto; /* Numéro du protocole */ } Tuyêt Trâm DANG NGOC Programmation IP 58 / 113

61 Structure addrinfo Fonction utilitaires Fonctions de conversions de nom vers adresses IP et de nom de services vers numéro de protocole + port Les primitives gethostbyname, gethostbyaddr, getservbyname et getservbyport ont été remplacées par les deux primitives indépendantes de la famille d adresses getaddrinfo et getnameinfo (RFC 3493 ). struct addrinfo { int ai_flags; /* AI_PASSIVE, AI_CANONNAME,... */ int ai_family; /* AF_UNSPEC ou AF_INET ou AF_INET6 */ int ai_socktype; /* 0 ou SOCK_DGRAM ou SOCK_STREAM */ int ai_protocol; /* 0 ou IPPROTO_xxx pour IPv4 et IPv6 */ size_t ai_addrlen; /* la taille de l adresse binaire ai_add char *ai_canonname; /* le nom complétement qualifié */ struct sockaddr *ai_addr; /* l adresse binaire */ struct addrinfo *ai_next; /* la structure suivante dans la liste c }; Lorsque la liste de résultat n est plus nécessaire, la mémoire allouée peut être libérée par la primitive freeaddrinfo. void freeaddrinfo(struct addrinfo *res); Tuyêt Trâm DANG NGOC Programmation IP 59 / 113

62 getaddrinfo Fonction utilitaires Fonctions de conversions de nom vers adresses IP et de nom de services vers numéro de protocole + port int getaddrinfo(const char *nodename, const char *servname, const struct addrinfo *hints, struct addrinfo **res); nodename nom DNS ou adresse IP (v4 ou v6) d une machine à résoudre servname nom ou numéro d un service à résoudre hints permet de choisir les réponses souhaitées. NULL si la liste des réponses doit contenir toutes les adresses et tous les protocoles structure addrinfo dont les champs ai family, ai socktype et ai protocol définissent les types de résultat attendus. res la structure contenant le résultat. Tuyêt Trâm DANG NGOC Programmation IP 60 / 113

63 Fonction utilitaires Exemple d utilisation de getaddrinfo #include <stdio.h> #include <unistd.h> #include <sys/socket.h> #include <netdb.h> int open_conn(char *host, char *serv) { int s, errcode; struct addrinfo *res; char* serv = "http"; Fonctions de conversions de nom vers adresses IP et de nom de services vers numéro de protocole + port struct addrinfo hints = { 0, PF_UNSPEC, SOCK_STREAM, 0, 0, NULL, NULL, NULL }; errcode = getaddrinfo (host, serv, &hints, &res); if (errcode) { fprintf(stderr, "getaddrinfo: %s", gai_strerror(errcode)); exit(1); } if ((s = socket (res->ai_family, res->ai_stype, res->ai_protocol)) < 0) { freeaddrinfo(res); perror("s"); return -1; } if ( connect(s, res->ai_addr, res->ai_addrlen) < 0) { close(s); freeaddrinfo (res); perror("connect"); return -1; } freeaddrinfo(res); Tuyêt Trâm DANG NGOC Programmation IP 61 / 113

64 getnameinfo Fonction utilitaires Fonctions de conversions de nom vers adresses IP et de nom de services vers numéro de protocole + port #include <sys/socket.h> #include <netdb.h> int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, size_t hostlen, char *serv, size_t servlen, int flags); Tuyêt Trâm DANG NGOC Programmation IP 62 / 113

65 Fonction utilitaires Fonctions de conversions de nom vers adresses IP et de nom de services vers numéro de protocole + port Programmation normalisée : comment faire un programme compatible IPv4 et IPv6 Ne pas manipuler directement les structures sockaddr in et sockaddr in6. Fonctions concernées : int bind (int s, struct sockaddr *adr, int lg) int connect (int s, struct sockaddr *serv addr, int serv len) int accept (int s, struct sockaddr *cli addr, int *cli len) sendto (int s, char *buf, int len, int flags, struct sockaddr *to, int tolen) int recvfrom (int s, char *buf, int nb, int flags, struct sockaddr *from, int *len) Tuyêt Trâm DANG NGOC Programmation IP 63 / 113

66 Fonction utilitaires Programme TCP client normalisé Fonctions de conversions de nom vers adresses IP et de nom de services vers numéro de protocole + port int sock ; struct addrinfo *res; char* serv = "6667"; struct addrinfo hints = { 0, PF_UNSPEC, SOCK_STREAM, 0, 0, NULL, NULL, NULL }; getaddrinfo (host, serv, &hints, &res); sock = socket (res->ai_family, res->ai_socktype, res->ai_protocol) ; connect (sock, res->ai_addr, res->ai_addrlen) ; freeaddrinfo (res); /* travail de lecture/reception du sock*/ Tuyêt Trâm DANG NGOC Programmation IP 64 / 113

67 Fonction utilitaires Programme TCP serveur normalisé Fonctions de conversions de nom vers adresses IP et de nom de services vers numéro de protocole + port struct addrinfo *res, hints; int sock ; char* serv = "6667"; memset(&hints, 0, sizeof hints) ; hints.ai_flags = AI_PASSIVE; hints.ai_socktype = SOCK_STREAM; hints.ai_family = PF_UNSPEC; getaddrinfo (NULL, serv, &hints, &res); sock = socket(res->ai_family, res->ai_socktype, res->ai_protocol); bind(sock, res->ai_addr, res->ai_addrlen) ; listen(sock, SOMAXCONN); freeaddrinfo(res) ; /* travail de lecture/reception du sock*/ Tuyêt Trâm DANG NGOC Programmation IP 65 / 113

68 Multiconnexion 8 Tuyêt Programmation Trâm DANG NGOC IP en Java Programmation IP 66 / Rappel 2 API socket 3 Programmation TCP 4 Programmation UDP 5 Fonction utilitaires 6 Multiconnexion Multiplexage : select Démons 7 Programmation Raw

69 Multiconnexion Connexions simultanées 3 méthodes : 1 par duplication de processus (fork) 2 par thread while (true) { 1. Accepter une connexion 2. Créer un processus ou un thread permettant de dialoguer avec ce client } 3 par multiplexage avec select : while (true) { 1. surveiller un ensemble de descripteurs (dont celui d écoute) 2. lorsque l un d entre eux au moins recoit quelque chose le traiter } Tuyêt Trâm DANG NGOC Programmation IP 67 / 113

70 Multiconnexion Multiconnexion int s_ecoute, s_dial, cli_len ; struct sockaddr_in serv_addr, cli_addr ; char buf [80] ; bzero (buf, 80) ; serv_addr.sin_family = AF_INET ; serv_addr.sin_addr.s_addr = htonl (INADDR_ANY) ; serv_addr.sin_port = htons (5000) ; memset (&serv_addr.sin_zero, 0, sizeof(serv_addr.sin_zero)); s_ecoute = socket (PF_INET, SOCK_STREAM, 0) ; bind (s_ecoute, (struct sockaddr *)&serv_addr, sizeof serv_addr) ; listen (s_ecoute, 5) ; cli_len = sizeof cli_addr ; while (1) { s_dial = accept (s_ecoute, (struct sockaddr *)&cli_addr, &cli_len) ; if (fork () == 0) { dialogue_client (s_dial) ; /*Ici un processus dialogue avec le client */ exit (0) ; } close (sc) ; } Tuyêt Trâm DANG NGOC Programmation IP 68 / 113

71 Multiconnexion Multiplexage : select Multiplexage d entrées/sorties synchrones : select #include <sys/select.h> int select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); Attente passive blocante débloquée soit : lors du timeout lors d un changement d état de descripteur parmi ceux surveillés trois ensembles indépendants (et éventuellement NULL) de descripteurs surveillés simultanément : lecture, écriture, erreur. n est le numéro du plus grand descripteur des 3 ensembles, plus 1. Tuyêt Trâm DANG NGOC Programmation IP 69 / 113

72 select Multiconnexion Multiplexage : select Les fonctions suivantes sont disponibles pour la manipulation des ensembles : FD_CLR(int fd, fd_set *set); FD_ISSET(int fd, fd_set *set); FD_SET(int fd, fd_set *set); FD_ZERO(fd_set *set); Structure de timeout (seconde/microseconde). timeout peut être mis à NULL si pas de timeout voulu struct timeval { long tv_sec; /* secondes */ long tv_usec; /* microsecondes */ }; Tuyêt Trâm DANG NGOC Programmation IP 70 / 113

73 Multiconnexion Multiplexage : select Exemple d utilisation de select (1/2) int s1, s2 ; struct timeval reveil ; struct fd_set ens_desc ; int nb_desc_aff ; /*... */ reveil.tv_sec = 60 ; reveil.tv_usec = 10 ; FD_ZERO (&ens_desc) ; /* Initialisation des ensembles */ FD_SET (s1, &ens_desc) ; /* a surveiller */ FD_SET (s2, &ens_desc) ; nb_desc_aff = select (s2 + 1, ens_desc, NULL, NULL, reveil) ; Tuyêt Trâm DANG NGOC Programmation IP 71 / 113

74 Multiconnexion Multiplexage : select Exemple d utilisation de select (1/2) if(nb_desc_aff) { if((fd_isset (s1, ens_desc))) { bzero (buf, MAXLEN) ; printf ("C est s1 qui veut parler") ; nb_lu = read (s1, buf, MAXLEN) ;... } if((fd_isset (s2, ens_desc))) { bzero (buf, MAXLEN) ; printf ("C est s2 qui veut parler") ; nb_lu = read (s2, buf, MAXLEN) ;... } else { printf ("erreur FD_ISSET") ; } } else { printf ("TIME OUT du serveur!") ; } Tuyêt Trâm DANG NGOC Programmation IP 72 / 113

75 Démons Multiconnexion Démons Les serveurs sont réalisés sous Unix grâce à des démons Processus utilisateurs ordinaires, mais : fonctionnement en arrière plan (non lié à un terminal) souvent avec les droits du super-utilisateur lancés en général au démarrage du système ne s arrêtent jamais. Tuyêt Trâm DANG NGOC Programmation IP 73 / 113

76 Règles de démons Multiconnexion Démons Les démons doivent suivre certaines règles de conception pour répondre aux contraintes : faire un fork, terminer le père et continuer dans le fils nouveau père = init ; appeler setsid créer une nouvelle session, non rattachée à un terminal ; changer le répertoire courant pour un répertoire qui existe forcément (/) par exemple) modifier le masque de création des fichiers (umask=0) possibilité de créer n importe quel fichier ; fermer les descripteurs de fichiers inutiles. Tuyêt Trâm DANG NGOC Programmation IP 74 / 113

77 Multiconnexion Démons Exemple de serveur TCP avec démon (1/3) #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <syslog.h> #define MAXLEN 1024 #define SERVICE "exemple" int main (int argc, char *argv []) { switch (fork ()) { case -1 : perror ("cannot fork") ; exit (1) ; case 0 : /* le démon proprement dit */ setsid () ; chdir ("/") ; umask (0) ; close (0) ; close (1) ; close (2) ; openlog ("exemple", LOG_PID LOG_CONS, LOG_DAEMON) ; demon () ; exit (1) ; default : exit (0) ; } } Tuyêt Trâm DANG NGOC Programmation IP 75 / 113

78 Programmation Raw 7 Programmation Raw Structure prédéfinie IP Structure prédéfinie TCP Structure prédéfinie UDP Structure prédéfinie ICMP Tuyêt Trâm DANG NGOC Programmation IP 76 / Rappel 2 API socket 3 Programmation TCP 4 Programmation UDP 5 Fonction utilitaires 6 Multiconnexion

79 raw socket Programmation Raw Programmation au niveau de la couche IP Pas d utilisation des couches de transports TCP ou UDP Quand utiliser les raw socket? lorsque l on veut accéder à un protocole qui ne s appuie pas sur les couches TCP ou UDP. Ex : ICMP, IGMP pour implémenter son propre protocole de transport pour des besoins très spécifiques : sniffeur, compression ou cryptographie au niveau IP, etc. Tuyêt Trâm DANG NGOC Programmation IP 77 / 113

80 socket raw bpf Programmation Raw #include <sys/socket.h> #include <netinet/in.h> socket(pf_inet, SOCK_RAW, IPPROTO_UDP); socket(pf_inet, SOCK_RAW, IPPROTO_TCP); socket(pf_inet, SOCK_RAW, IPPROTO_ICMP); Tuyêt Trâm DANG NGOC Programmation IP 78 / 113

81 Programmation Raw Accéder à une raw socket BPF (Berkeley Packet Filter) sur les systèmes BSD /dev/bpfx strcpy(ifreq.ifr_name,"re0") ioctl (bpf_file_descriptor,biocsetif,&ifreq) ioctl(bpf_file_descriptor,biocgblen,&buflen) int true=1; ioctl(bpf_file_descriptor,biocimmediate,&true) LSF (Linux Socket Filter) sur les systèmes Linux (basé sur BPF) Peu de différences. bpf nécessite les droits administrateurs et pas LSF. #include <sys/types.h> #include <sys/socket.h> #include <net/bpf.h> struct bpf_program bp; bp.bf_len = filelength / sizeof(struct bpf_insn); bp.bf_insns = filebuffer; setsockopt(fd, SOL_SOCKET, SO_ATTACH_FILTER, &bp, sizeof(bp)); Simple, no? The include file net/bpf.h can be found in libpcap. winpcap sous windows Tuyêt Trâm DANG NGOC Programmation IP 79 / 113

82 Structure bpf Programmation Raw /* Structure prepended to each packet. */ struct bpf_hdr { struct timeval bh_tstamp; /* time stamp */ bpf_u_int32 bh_caplen; /* length of captured portio bpf_u_int32 bh_datalen; /* original length of packe u_short bh_hdrlen; /* length of bpf header (this st plus alignment padding) }; /* The instruction data structure. */ struct bpf_insn { u_short code; u_char jt; u_char jf; bpf_u_int32 k; }; /* Structure for BIOCSETF. */ struct bpf_program { u_int bf_len; struct bpf_insn *bf_insns; }; Tuyêt Trâm DANG NGOC Programmation IP 80 / 113

83 Programmation Raw Structure prédéfinie IP Structure IP (RFC 791) : linux/ip.h (linux) struct iphdr { u8 ihl:4, version:4; u8 tos; be16 tot_len; be16 id; be16 frag_off; u8 ttl; u8 protocol; sum16 check; be32 saddr; be32 daddr; }; inverser ihl avec version si BIG ENDIAN (voir NBO sur asm/byteorder.h) Longueur Version d en tete Type de service Longueur totale Identification Drapeau Décalage fragment Durée de vie Protocole Somme de controle d en tete Adresse IP Source Adresse IP destination Options IP Données... Remplissage Tuyêt Trâm DANG NGOC Programmation IP 81 / 113

84 Programmation Raw Structure prédéfinie IP Structure IP (RFC 791) : netinet/ip.h (BSD) struct ip { u_int ip_hl:4, ip_v:4; u_char ip_tos; u_short ip_len; u_short ip_id; u_short ip_off; u_char ip_ttl; u_char ip_p; u_short ip_sum; struct in_addr ip_src ; struct in_addr ip_dst ; }; inverser ip hl avec ip v si BIG ENDIAN (voir NBO sur asm/byteorder.h) Longueur Version d en tete Type de service Longueur totale Identification Drapeau Décalage fragment Durée de vie Protocole Somme de controle d en tete Adresse IP Source Adresse IP destination Options IP Données... Remplissage Tuyêt Trâm DANG NGOC Programmation IP 82 / 113

85 Programmation Raw Structure prédéfinie IP Exemple de forgement de paquet IP struct iphdr *ip; ip = (struct iphdr *) malloc(sizeof(struct iphdr)); ip->ihl = 5; /* en octets*/ ip->version = 4; ip->tos = 0; ip->tot_len = sizeof(struct iphdr) + TAILLE_DONNEES_TRANSPORTEES ; ip->id = htons(getuid()); ip->ttl = 255; ip->protocol = IPPROTO_TCP; ip->saddr = inet_addr(" "); ip->daddr = inet_addr(" "); ip->check = in_cksum((unsigned short *)ip, sizeof(struct iphdr)); Tuyêt Trâm DANG NGOC Programmation IP 83 / 113

86 Programmation Raw Structure prédéfinie TCP Structure TCP (RFC 793) : linux/tcp.h (linux) struct tcphdr { be16 source; be16 dest; be32 seq; be32 ack_seq; u16 res1:4, doff:4, fin:1, syn:1, rst:1, psh:1, ack:1, urg:1, ece:1, cwr:1; be16 window; sum16 check; be16 urg_ptr; }; Longueur en tete Port source TCP Réservé Somme de controle Numéro de séquence Numéro d acquittement Code Options Données inverser doff avec res1 si BIG ENDIAN puis toute la liste de 1 bit (voir NBO sur asm/byteorder.h)... Port destination TCP Taille de la fenetre Pointeur urgent Remplissage Tuyêt Trâm DANG NGOC Programmation IP 84 / 113

87 Programmation Raw Structure prédéfinie TCP Structure TCP (RFC 793) : netinet/tcp.h (bsd) struct tcphdr { u_short th_sport; u_short th_dport; tcp_seq th_seq; tcp_seq th_ack; u_int th_x2:4, th_off:4; u_char th_flags; u_short th_win; u_short th_sum; u_short th_urp; }; Longueur en tete Port source TCP Réservé Somme de controle Numéro de séquence Numéro d acquittement Code Options Données inverser th x2 avec th off si BIG ENDIAN. th x2 n est pas utilisé (voir NBO sur asm/byteorder.h)... Port destination TCP Taille de la fenetre Pointeur urgent Remplissage th flags étant un masque de TH FIN (0x01), TH SYN (0x02), TH RST (0x04), TH PUSH (0x08), TH ACK (0x10), TH URG (0x20), TH ECE (0x40), TH CWR (0x80) Tuyêt Trâm DANG NGOC Programmation IP 85 / 113

Programmation Réseau. Anthony Busson IUT Info Lyon 1

Programmation Réseau. Anthony Busson IUT Info Lyon 1 Programmation Réseau Anthony Busson IUT Info Lyon 1 Plan du cours Introduction Rôles du système et des applications Rappel TCP-IP Panorama des langages Couche socket : introduction Panorama de la couche

Plus en détail

Applications client/serveur TCP/IP - Sockets Rappels. C.Crochepeyre Applications CS 1

Applications client/serveur TCP/IP - Sockets Rappels. C.Crochepeyre Applications CS 1 Applications client/serveur TCP/IP - Sockets Rappels C.Crochepeyre Applications CS 1 PLAN Modèle client/serveur Modèle ISO et protocole TCP/IP Comment ça marche? La programmation: les sockets Exemples

Plus en détail

LA COUCHE TRANSPORT CONTRÔLE LE FLOT DE DONNEES TRANSMISES par la couche Réseau

LA COUCHE TRANSPORT CONTRÔLE LE FLOT DE DONNEES TRANSMISES par la couche Réseau M1 Informatique Réseaux Cours 6 Couche Transport : TCP et UDP Notes de Cours LA COUCHE TRANSPORT CONTRÔLE LE FLOT DE DONNEES TRANSMISES par la couche Réseau dans le but d offrir des garanties de service

Plus en détail

1. Fonctionnement de l Internet 2. Protocoles applicatifs 3. Programmation réseau

1. Fonctionnement de l Internet 2. Protocoles applicatifs 3. Programmation réseau 1. Fonctionnement de l Internet 2. Protocoles applicatifs 3. Programmation réseau Fonctionnement de l Internet Fonctionnement de l Internet Basé sur une architecture TCP/IP du nom des deux principaux protocoles

Plus en détail

Programmation système de commandes en C

Programmation système de commandes en C Programmation système de commandes en C Cours de Programmation système Tuyêt Trâm DANG NGOC Université de Cergy-Pontoise 2012 2013 Tuyêt Trâm DANG NGOC Programmation système de commandes

Plus en détail

Travaux Pratiques Introduction aux réseaux IP

Travaux Pratiques Introduction aux réseaux IP Université de Savoie Initiation aux réseaux IP Travaux Pratiques Introduction aux réseaux IP Sylvain MONTAGNY sylvain.montagny@univ-savoie.fr Bâtiment chablais, bureau 13 04 79 75 86 86 TP1 : Analyse la

Plus en détail

Programmation Réseau. ! UFR Informatique ! 2013-2014. Jean-Baptiste.Yunes@univ-paris-diderot.fr

Programmation Réseau. ! UFR Informatique ! 2013-2014. Jean-Baptiste.Yunes@univ-paris-diderot.fr Programmation Réseau Jean-Baptiste.Yunes@univ-paris-diderot.fr! UFR Informatique! 2013-2014 1 Programmation Réseau Introduction Ce cours n est pas un cours de réseau on y détaillera pas de protocoles de

Plus en détail

Introduction. Adresses

Introduction. Adresses Architecture TCP/IP Introduction ITC7-2: Cours IP ESIREM Infotronique Olivier Togni, LE2I (038039)3887 olivier.togni@u-bourgogne.fr 27 février 2008 L Internet est basé sur l architecture TCP/IP du nom

Plus en détail

Communication sous UNIX les sockets

Communication sous UNIX les sockets Communication sous UNIX les sockets Chaput Emmanuel Version 1.04 Résumé Ce but de ce petit document est de décrire la programmation des sockets sous Unix afin d aider le programmeur à développer des applications

Plus en détail

Le protocole TCP. Services de TCP

Le protocole TCP. Services de TCP Le protocole TCP TCP (Transmission Control Procedure) est un protocole de transport bout-en-bout (Host-To- Host) Ajoute les fonctions que le réseau ne peut offrir et qui sont demandées par les applications

Plus en détail

Couche Transport TCP et UDP

Couche Transport TCP et UDP Partie 7: Couche Transport TCP et UDP Ahmed Mehaoua - 1 Le Modèle OSI Application Présentation Session Transport Réseau Liaison Physique Application Présentation Session Transport Réseau Liaison Physique

Plus en détail

Communication par sockets

Communication par sockets Rappel : le réseau vu de l!utilisateur (1) Communication par sockets Sacha Krakowiak Université Joseph Fourier Projet Sardes (INRIA et IMAG-LSR) http://sardes.inrialpes.fr/~krakowia (demande un service)

Plus en détail

Rappels réseaux TCP/IP

Rappels réseaux TCP/IP Rappels réseaux TCP/IP Premier Maître Jean Baptiste FAVRE DCSIM / SDE / SIC / Audit SSI jean-baptiste.favre@marine.defense.gouv.fr CFI Juin 2005: Firewall (1) 15 mai 2005 Diapositive N 1 /27 Au menu Modèle

Plus en détail

UDP/TCP - Protocoles transport

UDP/TCP - Protocoles transport UDP/TCP - Protocoles transport ISEN/ITII- UDP/TCP 1 Plan UDP : LE PROTOCOLE TRANSPORT DATAGRAM Concept de ports Format du datagramme TCP : LE PROTOCOLE DE TRANSPORT FIABLE Connexion Segmentation Fenêtrage

Plus en détail

Devoir Surveillé de Sécurité des Réseaux

Devoir Surveillé de Sécurité des Réseaux Année scolaire 2009-2010 IG2I L5GRM Devoir Surveillé de Sécurité des Réseaux Enseignant : Armand Toguyéni Durée : 2h Documents : Polycopiés de cours autorisés Note : Ce sujet comporte deux parties. La

Plus en détail

DHCP et NAT. Cyril Rabat cyril.rabat@univ-reims.fr. Master 2 ASR - Info09115 - Architecture des réseaux d entreprise 2012-2013

DHCP et NAT. Cyril Rabat cyril.rabat@univ-reims.fr. Master 2 ASR - Info09115 - Architecture des réseaux d entreprise 2012-2013 DHCP et NAT Cyril Rabat cyril.rabat@univ-reims.fr Master 2 ASR - Info09115 - Architecture des réseaux d entreprise 22-23 Cours n 9 Présentation des protocoles BOOTP et DHCP Présentation du NAT Version

Plus en détail

Services Réseaux - Couche Application. TODARO Cédric

Services Réseaux - Couche Application. TODARO Cédric Services Réseaux - Couche Application TODARO Cédric 1 TABLE DES MATIÈRES Table des matières 1 Protocoles de gestion de réseaux 3 1.1 DHCP (port 67/68)....................................... 3 1.2 DNS (port

Plus en détail

Capture, Filtrage et Analyse de trames ETHERNET avec le logiciel Wireshark. Etape 1 : Lancement des machines virtuelles VMWARE et de Wireshark

Capture, Filtrage et Analyse de trames ETHERNET avec le logiciel Wireshark. Etape 1 : Lancement des machines virtuelles VMWARE et de Wireshark Capture, Filtrage et Analyse de trames ETHERNET avec le logiciel Wireshark Wireshark est un programme informatique libre de droit, qui permet de capturer et d analyser les trames d information qui transitent

Plus en détail

Configuration automatique

Configuration automatique Configuration automatique (/home/terre/d01/adp/bcousin/polys/internet:gestion_reseau/6.dhcp.fm- 29 Septembre 1999 12:07) PLAN Introduction Les principes de DHCP Le protocole DHCP Conclusion Bibliographie

Plus en détail

Internet Protocol. «La couche IP du réseau Internet»

Internet Protocol. «La couche IP du réseau Internet» Internet Protocol «La couche IP du réseau Internet» Rôle de la couche IP Emission d un paquet sur le réseau Réception d un paquet depuis le réseau Configuration IP par l administrateur Noyau IP Performance

Plus en détail

Plan. Programmation Internet Cours 3. Organismes de standardisation

Plan. Programmation Internet Cours 3. Organismes de standardisation Plan Programmation Internet Cours 3 Kim Nguy ên http://www.lri.fr/~kn 1. Système d exploitation 2. Réseau et Internet 2.1 Principes des réseaux 2.2 TCP/IP 2.3 Adresses, routage, DNS 30 septembre 2013 1

Plus en détail

Programmation Réseau en C sous Unix

Programmation Réseau en C sous Unix Chapitre 1 : Notions de base I. Structure d adresse : En programmation réseau, nous allons utiliser les sockets. C est un moyen de communication qui se définit par un port et une adresse. Elle est représentée

Plus en détail

Présentation du modèle OSI(Open Systems Interconnection)

Présentation du modèle OSI(Open Systems Interconnection) Présentation du modèle OSI(Open Systems Interconnection) Les couches hautes: Responsables du traitement de l'information relative à la gestion des échanges entre systèmes informatiques. Couches basses:

Plus en détail

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant. http://robert.cireddu.free.

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant. http://robert.cireddu.free. 2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES 2.2 Architecture fonctionnelle d un système communicant Page:1/11 http://robert.cireddu.free.fr/sin LES DÉFENSES Objectifs du COURS : Ce cours traitera essentiellement

Plus en détail

Plan global. Programmation système II. Socket du domaine UNIX. Plan. Socket UNIX, Terminaux, Async IO, Mémoire, ELF.

Plan global. Programmation système II. Socket du domaine UNIX. Plan. Socket UNIX, Terminaux, Async IO, Mémoire, ELF. Programmation système II Socket UNIX, Terminaux, Async IO, Mémoire, ELF Timothée Ravier LIFO, INSA-CVL, LIPN 1 re année cycle ingénieur STI 2013 2014 Plan global 1 Socket UNIX 2 Terminaux 3 Autres modèles

Plus en détail

Chapitre I. La couche réseau. 1. Couche réseau 1. Historique de l Internet

Chapitre I. La couche réseau. 1. Couche réseau 1. Historique de l Internet Chapitre I La couche réseau 1. Couche réseau 1 Historique de l Internet Né 1969 comme projet (D)ARPA (Defense) Advanced Research Projects Agency; US Commutation de paquets Interconnexion des universités

Plus en détail

Exercice sur les Dockers

Exercice sur les Dockers Exercice sur les Dockers Les parties composant les Dockers: 1 docker daemon: est un démon qui gère les dockers (les conteneurs LXC) qui tournent sur la machine hôte 2 docker CLI: une série de commandes

Plus en détail

Configuration automatique

Configuration automatique Configuration automatique (C:\Documents and Settings\bcousin\Mes documents\enseignement\res (UE18)\14.DHCP.fm- 25 janvier 2009 13:22) PLAN Introduction Les principes de DHCP Le protocole DHCP Conclusion

Plus en détail

Windows Vista, Windows Server 2008, IPv6 et les applications. Bernard Ourghanlian Chief Technology & Security Officer Microsoft France

Windows Vista, Windows Server 2008, IPv6 et les applications. Bernard Ourghanlian Chief Technology & Security Officer Microsoft France Windows Vista, Windows Server 2008, IPv6 et les applications Bernard Ourghanlian Chief Technology & Security Officer Microsoft France La vision d un réseau «sans couture» Zone de confiance Isolation IPsec

Plus en détail

Outils d'analyse de la sécurité des réseaux. HADJALI Anis VESA Vlad

Outils d'analyse de la sécurité des réseaux. HADJALI Anis VESA Vlad Outils d'analyse de la sécurité des réseaux HADJALI Anis VESA Vlad Plan Introduction Scanneurs de port Les systèmes de détection d'intrusion (SDI) Les renifleurs (sniffer) Exemples d'utilisation Conclusions

Plus en détail

Couche application. La couche application est la plus élevée du modèle de référence.

Couche application. La couche application est la plus élevée du modèle de référence. Couche application La couche application est la plus élevée du modèle de référence. Elle est la source et la destination finale de toutes les données à transporter. Couche application La couche application

Plus en détail

18 TCP Les protocoles de domaines d applications

18 TCP Les protocoles de domaines d applications 18 TCP Les protocoles de domaines d applications Objectifs 18.1 Introduction Connaître les différentes catégories d applications et de protocoles de domaines d applications. Connaître les principaux protocoles

Plus en détail

Réseaux - Cours 3. BOOTP et DHCP : Amorçage et configuration automatique. Cyril Pain-Barre. IUT Informatique Aix-en-Provence

Réseaux - Cours 3. BOOTP et DHCP : Amorçage et configuration automatique. Cyril Pain-Barre. IUT Informatique Aix-en-Provence Réseaux - Cours BOOTP et DHCP : Amorçage et configuration automatique Cyril Pain-Barre IUT Informatique Aix-en-Provence Semestre 2 - version du 2/4/2 /67 Cyril Pain-Barre BOOTP et DHCP /7 Introduction

Plus en détail

Réseaux IUP2 / 2005 IPv6

Réseaux IUP2 / 2005 IPv6 Réseaux IUP2 / 2005 IPv6 1 IP v6 : Objectifs Résoudre la pénurie d'adresses IP v4 Délai grâce à CIDR et NAT Milliards d'hôtes même avec allocation inefficace des adresses Réduire la taille des tables de

Plus en détail

Cours de sécurité. Pare-feux ( Firewalls ) Gérard Florin -CNAM - - Laboratoire CEDRIC -

Cours de sécurité. Pare-feux ( Firewalls ) Gérard Florin -CNAM - - Laboratoire CEDRIC - Cours de sécurité Pare-feux ( Firewalls ) Gérard Florin -CNAM - - Laboratoire CEDRIC - 1 Plan pare-feux Introduction Filtrage des paquets et des segments Conclusion Bibliographie 2 Pare-Feux Introduction

Plus en détail

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle F. Butelle, E. Viennet, Système GTR2 IUT Paris 3 Communication inter-processus (IPC) : tubes & sockets exemples en C et en Java F. Butelle F. Butelle, E. Viennet, Système GTR2 IUT Paris 3 Java : implémentation

Plus en détail

Le système de gestion des fichiers, les entrées/sorties.

Le système de gestion des fichiers, les entrées/sorties. Le système de gestion des fichiers, les entrées/sorties. Luigi Santocanale Laboratoire d Informatique Fondamentale, Centre de Mathématiques et Informatique, 39, rue Joliot-Curie - F-13453 Marseille 19

Plus en détail

DIFF AVANCÉE. Samy. samy@via.ecp.fr

DIFF AVANCÉE. Samy. samy@via.ecp.fr DIFF AVANCÉE Samy samy@via.ecp.fr I. RETOUR SUR QUELQUES PROTOCOLES COUCHE FONCTIONS Protocoles 7 Application 6 Présentation 5 Session 4 Transport 3 Réseau 2 Liaison 1 Physique Interface entre l utilisateur

Plus en détail

Le protocole ARP (Address Resolution Protocol) Résolution d adresses et autoconfiguration. Les protocoles ARP, RARP, TFTP, BOOTP, DHCP

Le protocole ARP (Address Resolution Protocol) Résolution d adresses et autoconfiguration. Les protocoles ARP, RARP, TFTP, BOOTP, DHCP Résolution d adresses et autoconfiguration Les protocoles ARP, RARP, TFTP, BOOTP, DHCP Le protocole ARP (Address Resolution Protocol) Se trouve au niveau de la couche réseau Interrogé par le protocole

Plus en détail

Administration UNIX. Le réseau

Administration UNIX. Le réseau Administration UNIX Le réseau Plan Un peu de TCP/IP Configuration réseau sous linux DHCP Démarrage PXE TCP/IP Unix utilise comme modèle de communication TCP/IP Application Transport TCP - UDP Réseau IP

Plus en détail

Programmation système I Les entrées/sorties

Programmation système I Les entrées/sorties Programmation système I Les entrées/sorties DUT 1 re année Université de Marne La vallée Les entrées-sorties : E/O Entrées/Sorties : Opérations d échanges d informations dans un système informatique. Les

Plus en détail

Cours 6 : Tubes anonymes et nommés

Cours 6 : Tubes anonymes et nommés Cours 6 : Tubes anonymes et nommés Mécanisme de communications du système de fichiers I-node associé. Type de fichier: S_IFIFO. Accès au travers des primitives read et write. Les tubes sont unidirectionnels

Plus en détail

U.E. ARES - TD+TME n 1

U.E. ARES - TD+TME n 1 U.E. ARES - TD+TME n 1 Introduction à la plateforme d expérimentation Ce premier support permet de se familiariser avec l environnement expérimental des TD+TME de l U.E. ARES. Nous débuterons par quelques

Plus en détail

Architecture TCP/IP. Protocole d application. client x. serveur y. Protocole TCP TCP. TCP routeur. Protocole IP IP. Protocole IP IP.

Architecture TCP/IP. Protocole d application. client x. serveur y. Protocole TCP TCP. TCP routeur. Protocole IP IP. Protocole IP IP. Protocole TCP (Transmission Control Protocol) M1 Info Cours de Réseaux Z. Mammeri Protocole TCP M1 Info Z. Mammeri - UPS 1 1. Généralités Architecture TCP/IP client x Protocole d application serveur y

Plus en détail

Sécuriser son réseau. Sécuriser son réseau Philippe Weill (IPSL/LATMOS) Frédéric Bongat (SSI/GOUV/FR)

Sécuriser son réseau. Sécuriser son réseau Philippe Weill (IPSL/LATMOS) Frédéric Bongat (SSI/GOUV/FR) Sécuriser son réseau Sécuriser son réseau Philippe Weill (IPSL/LATMOS) Frédéric Bongat (SSI/GOUV/FR) Plan Rappel IP Techniques et outils Réseaux Outils réseaux ( sniffer,scanner ) Translation d adresse

Plus en détail

Dynamic Host Configuration Protocol

Dynamic Host Configuration Protocol Dynamic Host Configuration Protocol 1 2 problèmes de gestion avec IP La Gestion des adresses IP Les adresses IP doivent être unique Nécessité d une liste d ordinateurs avec leurs adresses IP respectives

Plus en détail

DNS Server RPC Interface buffer overflow. Céline COLLUMEAU Nicolas BODIN

DNS Server RPC Interface buffer overflow. Céline COLLUMEAU Nicolas BODIN Mémoire DNS Server RPC Interface buffer overflow Céline COLLUMEAU Nicolas BODIN 3 janvier 2009 Table des matières 1 Introduction 2 2 Présentation de la faille 3 3 Exemple d exploitation 5 4 Solutions 10

Plus en détail

Rappel: Le routage dans Internet. Contraintes. Environnement et contraintes. La décision dans IP du routage: - Table de routage:

Rappel: Le routage dans Internet. Contraintes. Environnement et contraintes. La décision dans IP du routage: - Table de routage: Administration d un Intranet Rappel: Le routage dans Internet La décision dans IP du routage: - Table de routage: Adresse destination (partie réseau), netmask, adresse routeur voisin Déterminer un plan

Plus en détail

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée) Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée) Propriétés Description Intitulé long Formation concernée Matière Présentation Développement d un logiciel de messagerie

Plus en détail

Cisco Certified Network Associate

Cisco Certified Network Associate Cisco Certified Network Associate Version 4 Notions de base sur les réseaux Chapitre 3 01 Quel protocole de la couche application sert couramment à prendre en charge les transferts de fichiers entre un

Plus en détail

Protocoles IP (2/2) M. Berthet. Les illustrations sont tirées de l ouvrage de Guy Pujolle, Cours réseaux et Télécom Contributions : S Lohier

Protocoles IP (2/2) M. Berthet. Les illustrations sont tirées de l ouvrage de Guy Pujolle, Cours réseaux et Télécom Contributions : S Lohier Protocoles IP (2/2) M. Berthet. Les illustrations sont tirées de l ouvrage de Guy Pujolle, Cours réseaux et Télécom Contributions : S Lohier Plan 1. ARP 2. DHCP 3. ICMP et ping 4. DNS 5.Paquet IPv4 1.

Plus en détail

Introduction aux Technologies de l Internet

Introduction aux Technologies de l Internet Introduction aux Technologies de l Internet Antoine Vernois Université Blaise Pascal Cours 2006/2007 Introduction aux Technologies de l Internet 1 Au programme... Généralités & Histoire Derrière Internet

Plus en détail

IPFIX (Internet Protocol Information export)

IPFIX (Internet Protocol Information export) IPFIX (Internet Protocol Information export) gt-metro, réunion du 20/11/06 Lionel.David@rap.prd.fr 20-11-2006 gt-metro: IPFIX 1 Plan Définition d IPFIX Le groupe de travail IPFIX Les protocoles candidats

Plus en détail

Protocoles DHCP et DNS

Protocoles DHCP et DNS Protocoles DHCP et DNS DHCP (Dynamic Host Configuration Protocol) est un protocole qui permet à un serveur DHCP (Unix, Windows, AS400...) d'affecter des adresses IP temporaires (et d'autres paramètres)

Plus en détail

Réseaux. Moyens de sécurisation. Plan. Evolutions topologiques des réseaux locaux

Réseaux. Moyens de sécurisation. Plan. Evolutions topologiques des réseaux locaux Réseaux Evolutions topologiques des réseaux locaux Plan Infrastructures d entreprises Routeurs et Firewall Topologie et DMZ Proxy VPN PPTP IPSEC VPN SSL Du concentrateur à la commutation Hubs et switchs

Plus en détail

Année Universitaire 2010-2011 session 1 d automne Parcours : CSB5 Licence 3 STS Informatique

Année Universitaire 2010-2011 session 1 d automne Parcours : CSB5 Licence 3 STS Informatique Année Universitaire 2010-2011 session 1 d automne Parcours : CSB5 Licence 3 STS Informatique UE : INF157 Épreuve : Examen Utilisation des réseaux Date : 13 décembre 2010 Heure : 8h30 Durée : 1h30 Modalités

Plus en détail

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7 Cahier des charges driver WIFI pour chipset Ralink RT2571W sur hardware ARM7 RevA 13/03/2006 Création du document Sylvain Huet RevB 16/03/2006 Fusion des fonctions ARP et IP. SH Modification des milestones

Plus en détail

Sécurité des réseaux Firewalls

Sécurité des réseaux Firewalls Sécurité des réseaux Firewalls A. Guermouche A. Guermouche Cours 1 : Firewalls 1 Plan 1. Firewall? 2. DMZ 3. Proxy 4. Logiciels de filtrage de paquets 5. Ipfwadm 6. Ipchains 7. Iptables 8. Iptables et

Plus en détail

II/ Le modèle OSI II.1/ Présentation du modèle OSI(Open Systems Interconnection)

II/ Le modèle OSI II.1/ Présentation du modèle OSI(Open Systems Interconnection) II/ Le modèle OSI II.1/ Présentation du modèle OSI(Open Systems Interconnection) II.2/ Description des couches 1&2 La couche physique s'occupe de la transmission des bits de façon brute sur un canal de

Plus en détail

Administration réseau Résolution de noms et attribution d adresses IP

Administration réseau Résolution de noms et attribution d adresses IP Administration réseau Résolution de noms et attribution d adresses IP A. Guermouche A. Guermouche Cours 9 : DNS & DHCP 1 Plan 1. DNS Introduction Fonctionnement DNS & Linux/UNIX 2. DHCP Introduction Le

Plus en détail

FILTRAGE de PAQUETS NetFilter

FILTRAGE de PAQUETS NetFilter TP RESEAUX MMI Semestre 3 FILTRAGE de PAQUETS NetFilter OBJECTIF : Introduction à Netfilter. Configuration d'un firewall. MATERIELS : (Machines Virtuelles) 1 Serveur Debian avec apache d'installé, 1 Poste

Plus en détail

Réseaux Internet & Services

Réseaux Internet & Services Préambule Réseaux Internet & Services SRC2 Meaux 2008-2009 Aurélie Quidelleur aurelie.quidelleur@univ-mlv.fr D après le support de cours Réseaux Internet et Services, SRC2 Meaux 2007-2008, de C. Bernard

Plus en détail

Programmation Internet en Java

Programmation Internet en Java Chapitre 8 Programmation Internet en Java Vous avez déjà utilisé Internet, le plus connu des inter-réseaux mondiaux d ordinateurs et quelques-uns de ses services, en particulier le web et le courrier électronique.

Plus en détail

TP : Introduction à TCP/IP sous UNIX

TP : Introduction à TCP/IP sous UNIX 1 Introduction TP : Introduction à TCP/IP sous UNIX Le but de cette séance est de vous familiariser au fonctionnement de la pile TCP/IP sous UNIX. Les systèmes UNIX (Linux, FreeBSD, Solaris, HPUX,...)

Plus en détail

Filtrage IP MacOS X, Windows NT/2000/XP et Unix

Filtrage IP MacOS X, Windows NT/2000/XP et Unix Filtrage IP MacOS X, Windows NT/2000/XP et Unix Cette présentation, élaborée dans le cadre de la formation SIARS, ne peut être utilisée ou modifiée qu avec le consentement de ses auteur(s). MacOS/NT/Unix

Plus en détail

SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM

SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM Copyright TECH 2012 Technext - 8, avenue Saint Jean - 06400 CANNES Société - TECHNEXT France - Tel : (+ 33) 6 09 87 62 92 - Fax :

Plus en détail

Cours de Système : Gestion de Fichiers

Cours de Système : Gestion de Fichiers Cours de Système : Gestion de Fichiers Bertrand Le cun et Emmanuel Hyon bertrand.le cun{at}u-paris10.fr et Emmanuel.Hyon{at}u-paris10.fr Université Paris Ouest Nanterre 25 octobre 2011 B.L.C. & E.H. (UPO)

Plus en détail

Ch2 La modélisation théorique du réseau : OSI Dernière maj : jeudi 12 juillet 2007

Ch2 La modélisation théorique du réseau : OSI Dernière maj : jeudi 12 juillet 2007 Ch2 La modélisation théorique du réseau : OSI Dernière maj : jeudi 12 juillet 2007 I. LA NORMALISATION... 1 A. NORMES... 1 B. PROTOCOLES... 2 C. TECHNOLOGIES RESEAU... 2 II. LES ORGANISMES DE NORMALISATION...

Plus en détail

L3 informatique Réseaux : Configuration d une interface réseau

L3 informatique Réseaux : Configuration d une interface réseau L3 informatique Réseaux : Configuration d une interface réseau Sovanna Tan Septembre 2009 Révision septembre 2012 1/23 Sovanna Tan Configuration d une interface réseau Plan 1 Introduction aux réseaux 2

Plus en détail

Programmation client-serveur sockets - RPC

Programmation client-serveur sockets - RPC Master Informatique M Plan de la suite Programmation client-serveur sockets - RPC Sacha Krakowiak Université Joseph Fourier Projet Sardes (INRIA et IMAG-LSR) http://sardes.inrialpes.fr/people/krakowia

Plus en détail

2. DIFFÉRENTS TYPES DE RÉSEAUX

2. DIFFÉRENTS TYPES DE RÉSEAUX TABLE DES MATIÈRES 1. INTRODUCTION 1 2. GÉNÉRALITÉS 5 1. RÔLES DES RÉSEAUX 5 1.1. Objectifs techniques 5 1.2. Objectifs utilisateurs 6 2. DIFFÉRENTS TYPES DE RÉSEAUX 7 2.1. Les réseaux locaux 7 2.2. Les

Plus en détail

L annuaire et le Service DNS

L annuaire et le Service DNS L annuaire et le Service DNS Rappel concernant la solution des noms Un nom d hôte est un alias assigné à un ordinateur. Pour l identifier dans un réseau TCP/IP, ce nom peut être différent du nom NETBIOS.

Plus en détail

Réseaux. 1 Généralités. E. Jeandel

Réseaux. 1 Généralités. E. Jeandel 1 Généralités Réseaux Couche Application E. Jeandel Couche application Dernière couche du modèle OSI et TCP/IP Échange de messages entre processus Protocole Un protocole de niveau application doit spécifier

Plus en détail

Installation et configuration d un serveur DHCP (Windows server 2008 R2)

Installation et configuration d un serveur DHCP (Windows server 2008 R2) Installation et configuration d un serveur DHCP (Windows server 2008 R2) Contenu 1. Introduction au service DHCP... 2 2. Fonctionnement du protocole DHCP... 2 3. Les baux d adresse... 3 4. Etendues DHCP...

Plus en détail

Introduction à la Programmation Parallèle: MPI

Introduction à la Programmation Parallèle: MPI Introduction à la Programmation Parallèle: MPI Frédéric Gava et Gaétan Hains L.A.C.L Laboratoire d Algorithmique, Complexité et Logique Cours du M2 SSI option PSSR Plan 1 Modèle de programmation 2 3 4

Plus en détail

Intérêt du NAT (Network Address Translation) Administration Réseau Niveau routage. Exemple d Intranet. Principe NAT

Intérêt du NAT (Network Address Translation) Administration Réseau Niveau routage. Exemple d Intranet. Principe NAT Administration Réseau Niveau routage Intérêt du NAT (Network Address Translation) Possibilité d utilisation d adresses privées dans l 4 2 1 Transport Réseau Liaison Physique Protocole de Transport Frontière

Plus en détail

OS Réseaux et Programmation Système - C5

OS Réseaux et Programmation Système - C5 OS Réseaux et Programmation Système - C5 Rabie Ben Atitallah rabie.benatitallah@univ-valenciennes.fr RPC - XDR Rappel RPC: Remote Procedure Call Besoin d un environnement de haut niveau pour le développement

Plus en détail

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

Plus en détail

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing 3/4/27 Programmation Avancée Multimédia Multithreading Benoît Piranda Équipe SISAR Université de Marne La Vallée Besoin Programmes à traitements simultanés Réseau Réseau Afficher une animation en temps

Plus en détail

GESTION DES FICHIERS C/UNIX

GESTION DES FICHIERS C/UNIX Licence IG Page 1 sur 6 GESTION DES FICHIERS C/UNIX Introduction Deux modes d appel - Par la bibliothèque standard C (appel de haut niveau) - Par appels système (bas niveau) Nécessite les includes suivant

Plus en détail

Introduction aux réseaux

Introduction aux réseaux GI 62-Réseaux : Introduction aux réseaux 1 Introduction aux réseaux Jean-Yves Didier & Samir Otmane LSC Université d'evry {didier, otmane}@iup.univ-evry.fr} http://lsc.univ-evry.fr/~otmane/ GI 62-Réseaux

Plus en détail

Plan. École Supérieure d Économie Électronique. Plan. Chap 9: Composants et systèmes de sécurité. Rhouma Rhouma. 21 Juillet 2014

Plan. École Supérieure d Économie Électronique. Plan. Chap 9: Composants et systèmes de sécurité. Rhouma Rhouma. 21 Juillet 2014 École Supérieure d Économie Électronique Chap 9: Composants et systèmes de sécurité 1 Rhouma Rhouma 21 Juillet 2014 2 tagging et port trunk Création des via les commandes sur switch cisco 1 / 48 2 / 48

Plus en détail

Le prototype de la fonction main()

Le prototype de la fonction main() Le prototype de la fonction main() 1. Introduction...1 2. Paramètres et type de retour de la fonction main()...1 3. Exemple 1...2 4. La fonction exit() du C...2 5. Détecter le code de retour d un programme

Plus en détail

Algorithmique des Systèmes Répartis Protocoles de Communications

Algorithmique des Systèmes Répartis Protocoles de Communications Algorithmique des Systèmes Répartis Protocoles de Communications Master Informatique Dominique Méry Université de Lorraine 1 er avril 2014 1 / 70 Plan Communications entre processus Observation et modélisation

Plus en détail

Firewall. Souvent les routeurs incluent une fonction firewall qui permet une première sécurité pour le réseau.

Firewall. Souvent les routeurs incluent une fonction firewall qui permet une première sécurité pour le réseau. Firewall I- Définition Un firewall ou mur pare-feu est un équipement spécialisé dans la sécurité réseau. Il filtre les entrées et sorties d'un nœud réseau. Cet équipement travaille habituellement aux niveaux

Plus en détail

Sécurité des réseaux Les attaques

Sécurité des réseaux Les attaques Sécurité des réseaux Les attaques A. Guermouche A. Guermouche Cours 2 : Les attaques 1 Plan 1. Les attaques? 2. Quelques cas concrets DNS : Failles & dangers 3. honeypot A. Guermouche Cours 2 : Les attaques

Plus en détail

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi 802.11 module

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi 802.11 module François SCHNEIDER Lycée Victor-Hugo BESANÇON. STS SE FreeRTOS Programmation réseau WIFI Programmation réseau Socket Tcp FlyPort smart Wi-Fi 802.11 module Prérequis : langage C, connaissance réseau : Ip,

Plus en détail

PowerShield 3 fournit toutes les informations nécessaires pour un diagnostic de premier niveau.

PowerShield 3 fournit toutes les informations nécessaires pour un diagnostic de premier niveau. Connectivité PowerShield 3 Logiciel de communication Toutes les marques et les produits cités appartiennent à leurs propriétaires respectifs. CONTROLE GRAPHIQUE DE L ETAT DE L ASI et des Capteurs d environnement

Plus en détail

Skype (v2.5) Protocol Data Structures (French) Author : Ouanilo MEDEGAN http://www.oklabs.net

Skype (v2.5) Protocol Data Structures (French) Author : Ouanilo MEDEGAN http://www.oklabs.net Skype (v2.5) Protocol Data Structures (French) Author : Ouanilo MEDEGAN http://www.oklabs.net : Champ Encodé SKWRITTEN() : Champ Variable défini Précédemment & définissant l état des champs à suivre ECT

Plus en détail

Réseaux et protocoles Damien Nouvel

Réseaux et protocoles Damien Nouvel Réseaux et protocoles Plan Les couches du réseau Suite de protocoles TCP/IP Protocoles applicatifs pour les sites web Requêtes HTTP 2 / 35 Plan Les couches du réseau Suite de protocoles TCP/IP Protocoles

Plus en détail

Travaux pratiques : collecte et analyse de données NetFlow

Travaux pratiques : collecte et analyse de données NetFlow Topologie Table d adressage Objectifs Périphérique Interface Adresse IP Passerelle par défaut R1 G0/0 192.168.1.1/24 N/A S0/0/0 (DCE) 192.168.12.1/30 N/A R2 G0/0 192.168.2.1/24 N/A S0/0/0 192.168.12.2/30

Plus en détail

Les firewalls libres : netfilter, IP Filter et Packet Filter

Les firewalls libres : netfilter, IP Filter et Packet Filter Les firewalls libres : netfilter, IP Filter et Packet Filter Linux Expo Paris 1er Février 2002 Jean-Baptiste Marchand Jean-Baptiste.Marchand@hsc.fr Hervé Schauer Consultants Firewalls libres : netfilter,

Plus en détail

Master d'informatique 1ère année. Réseaux et protocoles. Architecture : les bases

Master d'informatique 1ère année. Réseaux et protocoles. Architecture : les bases Master d'informatique 1ère année Réseaux et protocoles Architecture : les bases Bureau S3-203 Mailto : alexis.lechervy@unicaen.fr D'après un cours de Jean Saquet Réseaux physiques LAN : Local Area Network

Plus en détail

Domain Name System. F. Nolot

Domain Name System. F. Nolot Domain Name System F. Nolot 1 Domain Name System Principe F. Nolot 2 Les besoins Internet est composé de plusieurs réseaux Chaque réseau est composé de sous réseaux Les sous réseaux sont constitués de

Plus en détail

Cours 6 : Programmation répartie

Cours 6 : Programmation répartie Cours 6 - PC2R - M2 STL - UPMC - 2008/2009 p. 1/49 Cours 6 : Programmation répartie modèle à mémoire répartie Interneteries Client/serveur Exemples en O Caml Classe Java clients/serveur multi-langages

Plus en détail

TP 1 : LES COMMANDES RESEAUX Matière: RESEAUX LOCAUX

TP 1 : LES COMMANDES RESEAUX Matière: RESEAUX LOCAUX TP 1 : LES COMMANDES RESEAUX Matière: RESEAUX LOCAUX Enseignant: Ramzi BELLAZREG 1 La commande PING Cette commande permet de vérifier si un hôte est joignable ou non. Cette commande est basée sur le protocole

Plus en détail

GENERALITES. COURS TCP/IP Niveau 1

GENERALITES. COURS TCP/IP Niveau 1 GENERALITES TCP/IP est un protocole inventé par les créateurs d Unix. (Transfer Control Protocol / Internet Protocole). TCP/IP est basé sur le repérage de chaque ordinateur par une adresse appelée adresse

Plus en détail

TP4 : Firewall IPTABLES

TP4 : Firewall IPTABLES Module Sécurité TP4 : Firewall IPTABLES Ala Rezmerita François Lesueur Le TP donnera lieu à la rédaction d un petit fichier texte contenant votre nom, les réponses aux questions ainsi que d éventuels résultats

Plus en détail

Université Pierre Mendès France U.F.R. Sciences de l Homme et de la Société Master IC²A. TP réseau firewall

Université Pierre Mendès France U.F.R. Sciences de l Homme et de la Société Master IC²A. TP réseau firewall Université Pierre Mendès France U.F.R. Sciences de l Homme et de la Société Master IC²A TP réseau firewall L objectif de ce TP est de comprendre comment mettre en place un routeur pare-feu (firewall) entre

Plus en détail

Plan du Travail. 2014/2015 Cours TIC - 1ère année MI 30

Plan du Travail. 2014/2015 Cours TIC - 1ère année MI 30 Plan du Travail Chapitre 1: Internet et le Web : Définitions et historique Chapitre 2: Principes d Internet Chapitre 3 : Principaux services d Internet Chapitre 4 : Introduction au langage HTML 2014/2015

Plus en détail