Programmation IP. Cours de Réseaux. Tuyêt Trâm DANG NGOC. Université de Cergy-Pontoise
|
|
- Ariane François
- il y a 8 ans
- Total affichages :
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 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étailApplications 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étailLA 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étail1. 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étailProgrammation 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étailTravaux 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étailProgrammation 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étailIntroduction. 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étailCommunication 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étailLe 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étailCouche 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étailCommunication 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étailRappels 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étailUDP/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étailDevoir 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étailDHCP 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étailServices 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étailCapture, 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étailConfiguration 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étailInternet 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étailPlan. 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étailProgrammation 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étailPré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étail2. 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étailPlan 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étailChapitre 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étailExercice 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étailConfiguration 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étailWindows 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étailOutils 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étailCouche 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étail18 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étailRé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étailRé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étailCours 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étailCommunication 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étailLe 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étailDIFF 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étailLe 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étailAdministration 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étailProgrammation 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étailCours 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étailU.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étailArchitecture 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étailSé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étailDynamic 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étailDNS 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étailRappel: 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étailDé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étailCisco 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étailProtocoles 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étailIntroduction 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étailIPFIX (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étailProtocoles 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étailRé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étailAnné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étailCahier 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étailSé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étailII/ 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étailAdministration 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étailFILTRAGE 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étailRé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étailProgrammation 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étailTP : 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étailFiltrage 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étailSYSTEME 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étailCours 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étailCh2 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étailL3 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étailProgrammation 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étail2. 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étailL 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étailRé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étailInstallation 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étailIntroduction à 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étailInté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étailOS 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étail1. 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étail03/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étailGESTION 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étailIntroduction 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étailPlan. É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étailLe 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étailAlgorithmique 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étailFirewall. 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étailSé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étailSTS 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étailPowerShield 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étailSkype (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étailRé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étailTravaux 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étailLes 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étailMaster 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étailDomain 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étailCours 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étailTP 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étailGENERALITES. 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étailTP4 : 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étailUniversité 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étailPlan 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