Système et réseau (partie réseau) provisoire

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

Download "Système et réseau (partie réseau) provisoire"

Transcription

1 Système et réseau (partie réseau) provisoire Christophe Fouqueré 1 Généralités Un réseau vise à fournir les moyens matériels et logiciels pour faire communiquer et permettre l échange d informations entre plusieurs équipements ou machines informatiques de manière souple et fiable. Le réseau (network) comprend l ensemble des équipements. Les réseaux sont omniprésents : Téléphone, Internet, capteurs, Réseaux transactionnels bancaires, TV, etc. On distingue parmi les nœuds réseaux : Noeud terminal (hôte) : PC, station de travail, imprimante, téléphone filaire, sans fil (DECT, GSM, UMTS, WiFi, bluetooth), fax, etc. Nœud intermédiaire : noeud de commutation (switch, PABX), noeud d interconnexion (routeur, passerelle) Les informations à échanger peuvent être de nature multiple : Données pures : Parole (conversation téléphonique), Musique (fichiers mp3 ou wav) Données informatiques (Web, mail etc.), Images fixes, Séquences vidéo, Combinaisons de ces différents médias (information multimédia) Données de signalisation : Messages protocolaires échangés entre les nœuds pour assurer le fonctionnement du réseau et l envoi correct des données pures. Exemples : Téléphone : Tonalité, Messages Web : HTTP, Tarification, Gestion du réseau (e.g. détecter une panne, mesurer l atténuation du signal..) 1.1 Modèle OSI La transmission des informations est régi par un ensemble de protocoles correspondant aux différents niveaux de fonctionnalités. Le modèle en couche simplifie la description globale et permet l encapsulation des mécanismes. Le modèle OSI est construit en 7 couches, chaque couche s appuyant sur la précédente, et céractérisée par un niveau de fonctionnalité : Couche physique : est responsable de la transmission des bits sur un circuit de communication, spécifie les connecteurs physiques, détermine les caractéristiques électriques des circuits, définit des procédures d utilisation des connexions physiques. Couche liaison de données : est responsable de la transmission fiable de trames sur une connexion physique, contrôle d accès au support, contrôle de flux, contrôle d erreur. Couche réseau : est responsable du transfert de données à travers le réseau : adressage, routage. Couche transport : est responsable du transfert de bout en bout, avec fiabilité et efficacité : contrôle de congestion et reprise sur erreur. Couche session : est responsable des mécanismes nécessaires à la gestion d une session : organisation du dialogue entre 2 processus, synchronisation du dialogue, établissement et libération d une session. Couche présentation : est responsable de la représentation des données échangées entre applications : traduction des données, compression, cryptage. Couche application : fournit à l usager des services pour réaliser une application répartie et pour accéder à l environnement de communication répartie (OSI, TCP/IP,...). LIPN UMR 7030, Université Paris-Nord & CNRS, Villetaneuse, cf@lipn.univ-paris13.fr 1

2 2 Cas TCP/IP 2.1 Modèle TCP/IP couche application FTP HTTP DNS SMTP couche transport TCP UDP couche IP couche physique IP WiFi Ethernet 4G Outre TCP et UDP, il existe d autres protocoles de transport (ICMP,...), il existe aussi de nombreuses autres applications utilisant tel ou tel protocole de transport! IP (Internet Process) est le point angulaire du réseau Internet. Il fait abstraction des caractéristiques des sous réseaux, et réalise le transfert en datagramme. L adressage des machines permet d identifier les noeuds du réseau. 2 formats : IPv4 sur 4 octets (p.e ), IPv6 sur 16 octets (p.e. fe80:0000:44ee:9cff:fe98:737c). Dans la suite nous ne parlerons que de IPv4. Le routage (par les routeurs) consiste à trouver un chemin (une route) entre la source et la destination. Une table de routage sur chaque routeur permet de préciser les routes possibles. 2

3 Le protocole IP définit l unité de donnée transférée dans les interconnexions. Le datagramme est l unité de transfert de base dans un réseau internet. Le datagramme est constitué d un en-tête et d un champ de données. IP définit les règles qui permettent la remise de paquets en mode non connecté. Le service offert par le protocole IP est dit non fiable : remise de paquets non garantie, sans connexion (paquets traités indépendamment les uns des autres), pour le mieux (best effort, les paquets ne sont pas éliminés sans raison). Un paquet IP est lui-même encapsulé dans une trame qui sera envoyé par la couche physique. Par exemple : En-tête Ethernet En-tête IP En-tête TCP/UDP Données de l application Bourrage Ethernet données segment TCP ou datagramme UDP paquet IP trame Ethernet 2.2 Structure d un paquet IPv version hlen type de service longueur totale identifiant flags fragment offset TTL protocole somme de contrôle adresse IP source adresse IP destinataire (options IP) (bourrage) (données) version : 4 pour IPv4, 6 pour IPv6 hlen : longueur de l en-tête en mots de 4 octets (=5 s il n y a pas d option) type de service : indique comment le paquet doit être géré (sur 3 bits DTR) : D signifie délai court, T signifie débit élevé et R signifie grande fiabilité. longueur totale : longueur totale du paquet en octets. identifiant : entier qui identifie le datagramme initial (utilisé pour la reconstitution à partir des fragments qui ont tous la même valeur). Chaque fragment a une structure identique à celle du datagramme initial, seuls les champs FLAGS et FRAGMENT OFFSET sont spécifiques. flags : contient un bit appelé do not fragment (01X), un autre bit M appelé More fragments. FLAGS = 001 signifie d autres fragments à suivre. fragment offset : indique le déplacement des données contenues dans le fragment par rapport au datagramme initial. C est un multiple de 8 octets ; la taille du fragment est donc également un multiple de 8 octets. TTL : (time to live) Ce champ indique en secondes, la durée maximale de transit du datagramme sur l internet. La machine qui émet le datagramme définit sa durée de vie. Les routeurs qui traitent le datagramme doivent décrémenter sa durée de vie du nombre de secondes (1 au minimum) que le datagramme a passé pendant son séjour dans le routeur ; lorsque celle-ci expire le datagramme est détruit et un message d erreur est renvoyé à l émetteur. protocole : identifiant du protocole de niveau supérieur dont le message est véhiculé dans le champ données du paquet : 6 = TCP, 17 = UDP, 1 = ICMP. 3

4 somme de contrôle : Ce champ permet de détecter les erreurs survenant dans l en-tête du datagramme, et par conséquent l intégrité du datagramme. Le total de contrôle d IP porte sur l en-tête du datagramme et non sur les données véhiculées. Lors du calcul, Ce champ est supposé contenir la valeur 0. options : champ facultatif et de longueur variable. Les options concernent essentiellement des fonctionnalités de mise au point. Rarement utilisé, car ralenti les routeurs. 2.3 Fragmentation Un paquet initial peut être fragmenté si le réseau dans lequel il doit passer n accepte pas cette taille de datagramme. Un lien entre 2 machines est caractérisé par une taille maximale de datagramme (MTU : Maximal Transfer Unite). Le réassemblage ne se fait qu au niveau du nœud terminal. Il n est en effet pas certain que tous les fragments passent par le même chemin. Le destinataire final reconstitue le datagramme initial à partir de l ensemble des fragments reçus. La taille de ces fragments correspond au plus petit MTU emprunté sur le réseau. Si un seul des fragments est perdu, le datagramme initial est considéré comme perdu : la probabilité de perte d un datagramme augmente donc avec la fragmentation. Réseau 1 Réseau 2 Réseau 3 R1 MTU=620 R2 MTU=1500 MTU=1500 Données 1400 octets EF1 600 octets EF1 600 octets En-tête datagramme EF2 600 octets EF2 600 octets EF3 200 oct. EF3 200 oct. EF1 et EF2 ont le bit More (M) positionné. Le déplacement (depl) est relatif au datagramme initial. En-tête fragments: M=0; depl=1200 En-tête fragments: M=1; depl=600 En-tête fragments: M=1; depl= Adressage IP : généralités et classes IP Dans un réseau une machine est identifiée soit par un (ou plusieurs) nom logique : par exemple ou smtp.free.fr, soit par une (ou plusieurs) adresse IP : par exemple Une carte de communication est identifiée par une adresse physique : par exemple (adresse MAC) 00 :1b :63 :bd :30 :a8. On mémorise facilement les noms de machines, parfois leur adresses IP, mais jamais leur adresse physique. Une base de données distribuée contient la traduction de noms de machines en adresses IP. Une partie de cette base de donnée peut être hébergée par un serveur : le serveur DNS. La machine interroge cette base de données grâce au protocole DNS. A chaque interface est allouée une adresse IP. Un routeur ou une passerelle a plusieurs adresses IP : une par réseau auquel il est connecté. Les adresses doivent être uniques sur le réseau Internet. Il existe des organismes d attribution d adresses ou de plages d adresses IP : e.g en France, l AFNIC. 4

5 Une adresse IP (IP address) est sur 32 bits (en version 4) et peut s écrire au format binaire ou au format décimal (4 entiers séparés par des points). Une adresse IP contient : l adresse du réseau (Network Identifier = Netid), l adresse de l hôte dans le réseau (Host Identifier = Hostid). Afin de simplifier la création des réseaux (et pour définir des tailles de réseaux différentes), l adressage IP est décomposé selon les bits de poids le plus fort : Classe A : net-id (subnet+) host-id Classe B : 1 0 net-id (subnet+) host-id Classe C : net-id (subnet+) host-id Classe D : Classe E : multicast-id (réservé à l expérimentation) 2 adresses particulières (qui ne peuvent pas servir à définir des adresses particulières de machines ou de réseaux) : adresse de réseau : mise à 0 des bits host-id (et subnet). Par exemple, est une adresse réseau de classe B. adresse de broadcast réseau : mise à 1 des bits host-id (et subnet). Par exemple, est une adresse broadcast de classe B : toutes les machines sur le réseau seront destinataires du paquet. De plus il existe des adresses à signification particulière : 127.x.x.x correspond au loopback. Par exemple définit la boucle locale sur l interface réseau 3 plages d adresses sont dites privées : elles ne sont pas visibles sur le réseau Internet (les paquets IP ne sont pas tranférés par les routeurs) : à à à Un routeur effectue la liaison entre deux réseaux différents, un pont effectue la liaison entre deux couches physiques différentes (par exemple ethernet et wifi) pour le même réseau IP. Pour résumer : Classe A [1.x.x.x ; 126.x.x.x], 27-2 = 126 réseaux, = 16,7 millions d hôtes / réseau Classe B [128.x.x.x ; 191.x.x.x], 214 = réseaux, = hôtes / réseau Classe C [192.x.x. ; 223.x.x.x], 221 = 2 millions de réseaux, 28-2 = 254 hôtes / réseau 2.5 Adressage IP : sous-réseau Problème des classes A/B/C : Les adresses IP sont une ressource rare, qu on ne peut pas gaspiller. Le champ IdHost peut servir à identifier X hôtes, mais cette plage d adresse n est pas pleinement utilisée sur des réseaux de petite taille. Ex : une adresse de classe B a assez de place pour 65K hôtes, même si il n y a que 2K hôtes dans ce réseau. Le mécanisme CIDR (Classless InterDomain Routing) est une solution à ce problème. Il consiste à découper le champ machine hôte en deux sous champs : sous-réseau, machine hôte. Un masque est donné comme une suite de bits à 1 suivi d une suite de bits à 0. Il permet de retrouver la paire (adresse réseau, adresse sous-réseau) en effectuant une opération AND entre l adresse IP et le masque. Le nombre de bits du masque peut aussi être donné sous la forme /xx où xx est le nombre de nits à 1. Par exemple : 5

6 /20 adresse IP (décimal) adresse IP (binaire) AND masque sur 20 bits = masque de sous-réseau adresse réseau et sous-réseau réseau sous-réseau AND complément du masque masque complémentaire sur 12 bits = id. machine identifiant machine dans le sous-réseau 3 Communication par sockets Le principe des sockets a été introduit dans la distribution de Berkeley du système d exploitation Unix, c est la raison pour laquelle on parle de sockets BSD (Berkeley Software Distribution). Il s agit d un modèle permettant la communication inter processus (Application logicielle) aussi bien sur une même machine qu à travers un réseau TCP/IP. On distingue deux modes de communication : le mode connecté, utilisant le protocole TCP le mode non connecté, utilisant le protocole UDP Les sockets se situent juste au-dessus de la couche transport du modéle OSI (protocoles TCP et UDP). Ce mécanisme utilise les services de la couche réseau (Protocole IP/ARP). Telnet FTP SMTP DNS SOCKET TCP UDP IP ARPANET SATNET Packet# Radio LAN Dans ce mode de communication une connexion durable est établie entre les deux processus de la façon suivante : le processus serveur est en attente de connexions de la part de un ou plusieurs processus distants clients. 6

7 socket() socket() Côté Client : crée une socket se connecte au serveur lit et écrit dans la socket ferme la socket connect() write() read() Etablissement de la connexion Transfert de données bind() listen() accept() read() write() Côté Serveur : crée une socket associe une adresse à la socket se met à l écoute accepte une connexion entrante lit et écrit sur la socket ferme la socket close() close() Un socket est une structure similaire à un descripteur de fichier, il est référencé par un indice (un entier) dans la table des sockets. Les opérations de connexions (connect et bind) associent au socket une entrée dans la table des ports. La table des ports est gérée par le système d exploitation, un port est identifié par son indice dans la table (un entier sur 2 octets). Donc l adresse d un processus (client comme serveur) est donnée par l adresse IP de la machine et le numéro de port sur la machine. Le mécanisme est alors le suivant : Attente de connexions du serveur sur la paire (IP-serveur,port-serveur) Lorsque le client exécute la fonction connect() : envoi par le client de sa paire (IP-client,port-client) vers l adresse (IP-serveur,port-serveur) La fonction accept() du serveur est bloquante pour le processus serveur tant que le serveur n a pas reçu de demande d un client. Quand il reçoit une demande de connexion, donc une paire (IP-client,port-client), le système utilise un nouveau port libre dans sa table des ports et, s il en trouve, envoi la paire (IP-serveur, nouveau port-serveur) au client, i.e. à l adresse (IP-client,port-client). La fonction accept() retourne le nouveau port serveur et le processus serveur continue son exécution. Ainsi le port-serveur initial est utilisable pour attendre des connexions d autres clients. Sous Unix les numéros de port < 1024 sont réservés à l administrateur (root). Exemple de numéros réservés : FTP : port 21/TCP TELNET : port 23/TCP La liste des numéros de ports et de leur services se trouvent dans le fichier /etc/services. 3.1 Fonctions système (langage C) pour TCP #include <sys/types.h> #include <sys/socket.h> int socket(int domaine, int type, int protocole) ; crée une socket et retourne : -1 si erreur lors de la création son identifiant de socket sinon. Domaine domaine de communication pour le dialogue séléctionne la famille de protocole à utiliser valeurs définies dans le fichier <sys/socket> : AF UNIX, AF LOCAL = communication locale AF INET = communication IPv4 protocole internet AF INET6 = communication IPv6 protocole internet AF IPX = IPX protocole Novell AF APPLETALK = AppleTalk protocole Apple etc. Type fixe la sémantique des données (intégrité des données, type de flux de données, ordre de délivrance) valeurs définies dans le fichier <sys/socket> : SOCK STREAM = flux d octets full-duplex, mode connecté (garantit l intégrité des données). Opération de lecture/écriture : read/write ou send/recv. 7

8 SOCK RAW = Accès direct aux données du réseau SOCK DGRAM, SOCK RDM, SOCK SEGPACKET : mode non connecté (pas de garantie d intégrité des données). Opération de lecture/écriture : sendto/recvfrom. Protocole le protocole à employer sur la socket normalement, un seul protocole par type de socket valeurs définies dans le fichier <sys/socket> : 0 : le système choisit le protocole IPPROTO UDP pour l UDP (SOCK DGRAM, SOCK RDM, SOCK SEGPACKET) IPPROTO TCP pour le TCP (SOCK STREAM) etc. int bind(int sock, struct sockaddr * adr, socklen t size) Associe l adresse locale (IP+port) adr au socket sock. Le paramètre size est la taille de la structure adr. Format générique (pour tout domaine) : struct sockaddr { short sa family ; /* domaine AF UNIX, AF INET */ char sa data[14] ; /* adresse */ Format Internet : #include <netinet/in.h> struct in addr { u long s addr ; ; /* adresse IP au format condensé : entier long non signé */ struct sockaddr in { short sin family ; /* domaine AF INET */ u short sin port ; /* port */ struct in addr sin addr ; /* adresse IP */ char sin zero[8] ; /* 8 caractères nuls */ ; Exemple de numéro de port fixé par l utilisateur : struct sockaddr in adr ; adr.sin family = AF INET ; /* réseau IP version 4 */ adr.sin port = 4536 ; Numéro de port alloué aléatoirement par le système : adr.sin port = 0 ; La représentation des entiers varie d une machine à l autre. Par exemple, un entier court non signé, u short int i = 2231 ; (0x08B7 en représentation hexadécimale) est codé sur deux octets. Sur une machine big-endian, l octet de plus fort poids (08) est enregistré à l adresse mémoire la plus petite, l octet de poids inférieur (B7) est enregistré à l adresse mémoire suivante. Si dans cette machine l espace mémoire est incrémenté de gauche à droite alors i sera enregistré 08B7. Sur une machine little-endian, l octet de plus faible poids (B7) est enregistré à l adresse mémoire la plus petite, l octet de poids fort (08) est enregistré à l adresse mémoire suivante. Si dans cette machine l espace mémoire est incrémenté de gauche à droite alors i sera enregistré B708. Si i est transmis depuis une machine little-endian A vers une machine big-endian B en écrivant les octets dans le sens de la lecture de l espace mémoire : de gauche à droite, alors nous aurons un problème d inversion. En effet, B recevra B708 ce qui correspond pour elle à en décimale. Pour communiquer il faut donc s accorder sur l ordre des octets. Le protocole IP définit un standard, le network byte order (l ordre réseau standard) : big-endian. Pour rendre le code portable, il faut alors utiliser les fonctions suivantes : #include <arpa/inet.h> net16value=htons(host16value) ; /* host-to-network-short */ host16value=ntohs(net16value) ; /* network-to-host-short */ net32value=htonl(host32value) ; /* host-to-network-long */ host32value=ntohl(net32value) ; /* network-to-host-long */ 8

9 Les deux premières fonctions sont à utiliser pour affecter à la socket les numéros de port (entier court non signé : 16 bits). Les suivantes, sont à utiliser pour les adresses IP (entier long non signé : 32 bits). Par exemple : adr.sin port = htons(4536) ; Comment mettre au bon format l adresse IP d une machine? Premier cas : si on connaît l adresse IP de la machine distante alors on peut utiliser la fonction suivante : int inet aton(const char *cp, struct in addr *in) ; Transforme une adresse IP donnée du format chaîne de caractères a.b.c.d au format condensée (entier long non signé) dans la structure in addr. Retourne 0 en cas d erreur. Sinon un entier > 0. Par exemple : inet aton(" ", &adr.sin addr) ; Inversement, on peut convertir l adresse IP du format condensées vers le format chaîne de caractères (au format a.b.c.d ) grâce à la fonction suivante : char * inet ntoa(struct in addr in) ; Par exemple : printf("adresse IP : %s", inet ntoa(adr)) ; Deuxième cas : si on connaît le nom de la machine distante alors on peut utiliser la fonction suivante : struct hostent * gethostbyname(char * hostname) ; Cette fonction permet d obtenir via les mécanismes de résolution de noms (DNS) l adresse IP d une machine à partir de son nom. Elle, retourne un pointeur sur une structure du type struct hostent { char * h name ; /* nom de la machine */ char **h aliases ; /* noms alternatifs */ int h addrtype ; /* type d adresse : AF INET */ int h length ; /* taille de l adresse en octets*/ char ** h addr list ; /* adresses de la machine */ /* de type struct in addr */ Exemple : struct hostent* hote ; struct in addr* addr ; hote = gethostbyname(" ; adr = (struct in addr*) res->h addr list[0] ; On peut convertir l adresse IP du format condensé vers le format chaîne de caractères (au format a.b.c.d ) grâce à la fonction suivante : char * inet ntoa(struct in addr in) ; Par exemple : printf("adresse IP : %s", inet ntoa(adr)) ; Troisième cas : on veut l adresse locale : long gethostid() ; Récupére, sous format condensé, l adresse IP de la machine courante Quatrième cas : on veut une des adresses locales : INADDR ANY Cet entier long non signé est une constante, équivalente à une adresse IP Elle peut être utilisée pour associer la socket à n importe quelle adresse IP de la machine locale (s il en existe plusieurs). Elle est souvent utilisée par le programme serveur pour associer une adresse d écoute à la socket (i.e. adresse locale du serveur). Par exemple : adr.sin addr.s addr = htonl(inaddr ANY) ; int listen(int sock, int backlog) ; Permet de déclarer un service (i.e. un serveur) auprès du système local. Fonction NON bloquante renvoi 0 s il réussit, ou -1 en cas d échec sock : le descripteur de socket crée avec la fonction socket() backlog : indique le nombre maximum de demandes de connexions mises en attentes avant d être traitèes par accept() 9

10 int accept(int sock, struct sockaddr *adresse, socklen t *longueur) ; Fonction BLOQUANTE : en attente de l arrivée d une demande de connexion d une machine distante (le client) Renvoi un nouveau descripteur de socket ou -1 en cas d échec sock : socket qui a été créée avec la fonction socket adresse : l argument adresse est un pointeur sur une structure sockaddr. La structure sera remplie avec l adresse du correspondant qui s est connecté (le client) longueur (l argument longueur est un paramètre résultat) : il doit contenir initialement la taille de la structure pointée par adresse, et est renseigné au retour par la longueur réelle (en octet) de l adresse remplie. int connect(int sock, struct sockaddr *addr serv, socklen t longueur) ; Fonction BLOQUANTE permettant l établissement d une connexion avec une machine où se trouve un serveur Renvoi 0 si la connexion est établie ou -1 en cas d échec sock : le descripteur de la socket addr serv : adresse de la machine distante (le serveur) longueur : taille de la structure addr_serv ssize t write(int sock, const void *msg, size t count) ; write écrit jusqu à count octets dans le descripteur de la socket sock depuis le buffer pointé par msg. Fonction BLOQUANTE jusqu à ce que le transfert soit effectué renvoie le nombre d octets effectivement envoyés. Sinon un entier < 0 en cas d erreur. Peut être utlisé pour les sockets en mode connecté ou en mode non connecté. int send(int sock, const void *msg, size t count, int flags) ; send ne peut être utilisé qu avec les sockets connectées renvoie le nombre d octets effectivement envoyés. Sinon un entier < 0 en cas d erreur. msg : le tampon contenant les octets à envoyer count : le nombre d octets à envoyer flags : drapeaux correspondant au type d envoi à adopter. Par exemple : le flag 0 indique un envoi normal le flag MSG OOB indiquera que les données urgentes (Out Of Band) doivent être envoyées le flag MSG DONTROUTE indiquera que les données ne doivent pas être routées ssize t read(int sock, void *msg, size t count) ; read lit jusqu à count octets depuis le descripteur de socket sock et les place dans le buffer pointé par msg. renvoie le nombre d octets effectivement lus. Sinon un entier < 0 en cas d erreur. Fonction BLOQUANTE jusqu à réception d un paquet. Si count vaut zéro, read renvoie zéro et n a pas d autres effets. Si count est supérieur à SSIZE\_MAX, le résultat est indéfini int recv(int sock, void *msg, int count, unsigned int flags) ; recv ne peut être utilisé qu avec les sockets en mode connecté renvoie le nombre d octets effectivement lus. Sinon un entier < 0 en cas d erreur. msg : le tampon qui recevra les octets lus count : le nombre d octets à lire flags : drapeaux correspondant au type de lecture à adopter. Par exemple : le flag 0 indique une lecture normale le flag MSG OOB indiquera que les données urgentes (Out Of Band) doivent être lues le flag MSG PEEK indiquera que les données lues ne sont pas retirées de la queue de réception int close(int sock) ; ferme le descripteur sock en permettant au système d envoyer les données restantes renvoie 0 s il réussit, ou -1 en cas d échec int shutdown(int sock, int how) ; Permet la fermeture partielle d une socket dans un des deux sens (pour une connexion full-duplex) : Si how est égal á 0, le socket est fermé en réception 10

11 Si how est égal á 1, le socket est fermé en émission Si how est égal á 2, le socket est fermé dans les deux sens renvoie 0 s il réussit, ou -1 en cas d échec 3.2 Exemple de serveur TCP #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <string.h> #include <netdb.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #define MAXMSGSIZE 1024 void erreur(char *message_erreur) { perror(message_erreur) ; exit(1) ; int main(int argc, char **argv) { int sock, newsock ; unsigned short port ; struct sockaddr_in serveuradr ; struct sockaddr_in clientadr ; char *client_addr ; char message[maxmsgsize] ; int nb_octets ; int len ; if (argc!= 2) { fprintf(stderr, "usage : %s <port>\n", argv[0]) ; exit(1) ; port = (unsigned short) atoi(argv[1]) ; sock = socket(af_inet, SOCK_STREAM, 0) ; if (sock < 0) erreur("erreur de creation de la socket") ; len = sizeof(struct sockaddr_in) ; bzero((char *) &serveuradr, len) ; serveuradr.sin_family = AF_INET ; serveuradr.sin_addr.s_addr = htonl(inaddr_any) ; serveuradr.sin_port = htons(port) ; if (bind(sock, (struct sockaddr *) &serveuradr, len) < 0) erreur("erreur attachement socket") ; if (listen(sock, 5) < 0) erreur("erreur d ecoute sur la socket") ; while (1) { newsock = accept(sock, (struct sockaddr *) &clientadr, (socklen_t *)&len) ; if (newsock < 0) erreur("erreur accept") ; printf("connexion etablie avec %s\n", inet_ntoa(clientadr.sin_addr)) ; bzero(message, MAXMSGSIZE) ; nb_octets = read(newsock, message, MAXMSGSIZE) ; if (nb_octets < 0) erreur("erreur de lecture sur la socket") ; printf("le serveur a recu %d octets : %s", nb_octets, message) ; nb_octets = write(newsock, message, strlen(message)) ; if (nb_octets < 0) erreur("erreur d ecriture sur la socket") ; close(newsock) ; 11

12 3.3 Exemple de client TCP #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #define MAXMSGSIZE 1024 void erreur(char *message_erreur) { perror(message_erreur) ; exit(1) ; int main(int argc, char **argv) { int sock ; unsigned short port ; struct sockaddr_in serveuradr ; struct hostent *serveur ; char *nom_serveur ; char message[maxmsgsize] ; int nb_octets ; int len ; if (argc!= 3) { fprintf(stderr,"usage : %s <nom_serveur> <port>\n", argv[0]) ; exit(0) ; nom_serveur = argv[1] ; port = (unsigned short) atoi(argv[2]) ; len = sizeof(struct sockaddr_in) ; sock = socket(af_inet, SOCK_STREAM, 0) ; if (sock < 0) erreur("erreur de creation de la socket") ; serveur = gethostbyname(nom_serveur) ; if (serveur == NULL) erreur("le nom de serveur n est pas connu") ; bzero((char *) &serveuradr, len) ; serveuradr.sin_family = AF_INET ; bcopy((char *)serveur->h_addr, (char *)&serveuradr.sin_addr.s_addr, len) ; serveuradr.sin_port = htons(port) ; if (connect(sock, (struct sockaddr *)&serveuradr, len) < 0) erreur("erreur de connexion") ; printf("tapez le message a envoyer : ") ; bzero(message, MAXMSGSIZE) ; fgets(message, MAXMSGSIZE, stdin) ; nb_octets = write(sock, message, strlen(message)) ; if (nb_octets < 0) erreur("erreur d ecriture sur la socket") ; bzero(message, MAXMSGSIZE) ; nb_octets = read(sock, message, MAXMSGSIZE) ; if (nb_octets < 0) erreur("erreur de lecture depuis la socket") ; printf("reponse du serveur : %s", message) ; close(sock) ; 12

13 3.4 Connexion UDP Dans ce mode de communication une connexion n est pas durable. Ce mode nécessite l adresse de destination à chaque envoi, et aucun accusé de réception n est donné. Le principe est défini ci-dessous : Côté Client : crée une socket, écrit au serveur (avec adresse du serveur). Client Serveur Côté Serveur : socket() bind() crée une socket associe une adresse à la socket reçoit du client (avec adresse du recvfrom() client) socket() sendto() 3.5 Fonctions système (langage C) pour UDP Outre les donctions système déjà vues plus haut. int sendto(int sock, const void *msg, size t count, int flags, const struct sockaddr *destinataire, socklen t adrlen) ; ne peut être utilisé qu avec les sockets connectées renvoie le nombre d octets effectivement envoyés. Sinon un entier < 0 en cas d erreur. msg : le tampon contenant les octets à envoyer count : le nombre d octets à envoyer flags : drapeaux correspond au type d envoi à adopter. Les mêmes que send. destinataire : L adresse de la cible adrlen : taille en octets de l adresse de la cible int recvfrom(int sock, void *msg, int count, unsigned int flags, struct sockaddr *emetteur, socklen t *adrlen) ; peut être utilisé avec les sockets en mode connecté ou en mode non connecté renvoie le nombre d octets effectivement lus. Sinon un entier < 0 en cas d erreur. msg : le tampon qui recevra les octets lus count : le nombre d octets à lire flags : drapeaux correspond au type de lecture à adopter. Les mêmes que recv. emetteur : L adresse de l émetteur adrlen : taille en octets de l adresse de l émetteur 3.6 Exemple de serveur UDP #include <arpa/inet.h> #include <stdio.h> #include <unistd.h> #include <errno.h> #include <string.h> #include <stdlib.h> #define MAXMSGSIZE 1024 void erreur(char *message_erreur) { perror(message_erreur) ; exit(1) ; 13

14 int main(int argc, char **argv) { int sock ; struct sockaddr_in serveur_adr ; struct sockaddr_in client_adr ; int len ; int nb_octets ; char message[maxmsgsize] ; sock = socket(af_inet, SOCK_DGRAM, 0) ; if (sock < 0) erreur("erreur de creation de la socket") ; serveur_adr.sin_family = AF_INET ; serveur_adr.sin_port = htons(5000) ; serveur_adr.sin_addr.s_addr = htonl(inaddr_any) ; bzero(&(serveur_adr.sin_zero),8) ; len = sizeof(struct sockaddr_in) ; if (bind(sock,(struct sockaddr *) &serveur_adr, len) == -1) erreur("erreur attachement socket") ; printf("\n Attente client sur port 5000") ; fflush(stdout) ; while (1) { nb_octets = recvfrom(sock, message, MAXMSGSIZE, 0, (struct sockaddr *) &client_adr, (socklen_t *) &len) ; message[nb_octets] = \0 ; printf("\n(%s",inet_ntoa(client_adr.sin_addr)) ; printf(",%d)",ntohs(client_adr.sin_port)) ; printf(" a dit : %s", message) ; fflush(stdout) ; exit(0) ; 3.7 Exemple de client UDP #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h> #include <stdio.h> #include <unistd.h> #include <errno.h> #include <string.h> #include <stdlib.h> #define MAXMSGSIZE 1024 void erreur(char *message_erreur) { perror(message_erreur) ; exit(1) ; int main(int argc, char *argv[]) { int sock ; struct sockaddr_in serveur_adr ; char message[maxmsgsize] ; int len ; if (argc!= 2) { fprintf(stderr,"usage : %s <@IP_Serveur>\n", argv[0]) ; exit(0) ; sock = socket(af_inet, SOCK_DGRAM, 0) ; 14

15 if (sock < 0) erreur("erreur de creation de la socket") ; serveur_adr.sin_family = AF_INET ; serveur_adr.sin_port = htons(5000) ; serveur_adr.sin_addr.s_addr = inet_addr(argv[1]) ; bzero(&(serveur_adr.sin_zero),8) ; len = sizeof(struct sockaddr_in) ; while (1) { printf("tapez votre message (q ou Q pour quitter) :") ; gets(message) ; if ((strcmp(message, "q") == 0) strcmp(message, "Q") == 0) exit(0) ; else sendto(sock, message, strlen(message), 0, (struct sockaddr *)&serveur_adr, len) ; 3.8 Multiplexage Le multiplexage consiste, pour le serveur, à se remettre en mode attente de connexion, donc à créer un processus fils (ou un thread) pour traiter les requêtes d un client. Dans chacun des schémas ci-dessous (TCP et UDP), la figure à gauche correspond au mode de communication non multiplexé, celle à droite multiplexé. Dans le cas du multiplexage, il est aussi possible de scruter l ensemble des clients actuellement connectés (cf. sous-section suivante). Mode connecté (TCP) Mode non connecté (UDP) 15

16 Exemple : serveur multiplexé en mode connecté (TCP) #include <stdio.h> #include <stdlib.h> #include <strings.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> void erreur(char *msg) { perror(msg) ; exit(1) ; void activite(int sock) { char buffer[256] ; bzero(buffer,256) ; if (read(sock,buffer,255) < 0) erreur("erreur de lecture sur la socket") ; printf("voici le message : %s\n",buffer) ; if (write(sock,"i got your message",18) < 0) erreur("erreur d ecriture sur la socket") ; int main(int argc, char *argv[]) { int sock, newsock, port, clilen, pid ; struct sockaddr_in serv_adr ; struct sockaddr_in cli_adr ; if (argc < 2) { fprintf(stderr,"usage : %s <port>\n", argv[0]) ; exit(1) ; sock = socket(af_inet, SOCK_STREAM, 0) ; if (sock < 0) erreur("error opening socket") ; bzero((char *)&serv_adr,sizeof(serv_adr)) ; port = atoi(argv[1]) ; serv_adr.sin_family = AF_INET ; serv_adr.sin_addr.s_addr=htonl(inaddr_any) ; serv_adr.sin_port = htons(port) ; if (bind(sock, (struct sockaddr *) &serv_adr, sizeof(serv_adr)) < 0) erreur("erreur attachement socket") ; listen(sock,5) ; clilen = sizeof(cli_adr) ; while (1) { newsock = accept(sock, (struct sockaddr *) &cli_adr, (socklen_t *) &clilen) ; if (newsock < 0) erreur("erreur accept") ; pid = fork() ; if (pid < 0) erreur("erreur de creation de processus fork") ; if (pid == 0) { close(sock) ; activite(newsock) ; exit(0) ; else close(newsock) ; return 0 ; 16

17 3.9 Multiplexage : Mécanisme de scrutation passive D un point de vue client, la situation est similaire aux cas non multiplexés. Du point de vue du serveur, on utilise trois tableaux de structures de test. Une structure de test est un bit associé à un descripteur : un tableau de structures de test pour savoir si la lecture est possible sur un ou plusieurs de ces descripteurs, un tableau de structures de test pour savoir si l écriture est possible sur un ou plusieurs de ces descripteurs, un tableau de structures de test pour savoir si une exception est détectée pour un ou plusieurs de ces descripteurs. Le mécanisme est utilisé ici avec des sockets mais peut aussi être utilisé avec des descripteurs de fichiers. Le fichier d en-tête <sys/select.h> est nécessaire. int select(int n, fd set * rdfds, fd set * wrfds, fd set * exfds, struct timeval * timeout) ; permet de définir les tableaux de descripteurs et le délai entre chaque test. Si un des tableaux est à NULL : aucun descripteur à tester pour ce type. retourne -1 en cas d erreur, le nombre de structures testées sinon. n : nombre maximal de descripteurs + 1 (dimensionnement de masques internes) rdfds : descripteurs à surveiller en lecture wrfds : descripteurs à surveiller en écriture exfds : descripteurs à surveiller pour exception timeout : délai d attente maximal avant le retour ( si pointeur nul). struct timeval { long tv sec ; /* secondes */ long tv use ; /* microsecondes */ FD ZERO(fd set * set) Cette macro vide l ensemble set FD SET(int fd,fd set * set) Cette macro permet de rajouter le descripteur fd à l ensemble set FD CLR(int fd,fd set * set) permet de retirer le descripteur fd de l ensemble set. FD ISSET(int fd,fd set * set) permet de vérifier si le descripteur fd est contenu dans l ensemble set. Cette macro est principalement utile après le retour de select. Le principe de fonctionnement est le suivant : Initialiser les ensembles de descripteurs avec FD_ZERO Insérer les descripteurs avec FD_SET selon l opération souhaitée Lecture : read(), recv(), recvfrom() ou accept() Ecriture : write() ou send() (régulation producteur/consommateur) Circonstances exceptionnelles : peu utilisé Faire un calcul de max. pour déterminer le plus grand descripteur Préparer éventuellement un timeout Effectuer l appel à select Pour chaque descripteur précédemment inséré Tester avec FD_ISSET s il est toujours présent dans son ensemble Si oui : faire l opération souhaitée (correspondant à l ensemble) Exemple de serveur avec multiplexage avec scrutation : #include <stdio.h> #include <errno.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> 17

18 #define PORT 5555 #define MAXMSG 512 void erreur(char *msg) { perror(msg) ; exit(1) ; int read_from_client (int sock) { char buffer[maxmsg] ; int nbytes ; nbytes = read (sock, buffer, MAXMSG) ; if (nbytes < 0) erreur("probleme de lecture") ; else if (nbytes == 0) return -1 ; else { fprintf (stderr, "Le Serveur a recu le message : %s \n", buffer) ; return 0 ; int main (void) { int sock, i ; fd_set active_fd_set, read_fd_set ; struct sockaddr_in clientname, serv_adr ; size_t size = sizeof (struct sockaddr_in) ; sock = socket(af_inet, SOCK_STREAM, 0) ; if (sock < 0) erreur("erreur d ouverture de la socket") ; bzero((char *)&serv_adr,sizeof(serv_adr)) ; serv_adr.sin_family = AF_INET ; serv_adr.sin_addr.s_addr=htonl(inaddr_any) ; serv_adr.sin_port = htons(5555) ; if (bind(sock, (struct sockaddr *) &serv_adr, size) < 0) erreur("erreur attachement socket") ; if (listen(sock, 5) < 0) erreur("erreur d ecoute sur la socket") ; FD_ZERO (&active_fd_set) ; FD_SET (sock, &active_fd_set) ; while (1) { read_fd_set = active_fd_set ; if (select (FD_SETSIZE, &read_fd_set, NULL, NULL, NULL) < 0) erreur("erreur dans la primitive Select") ; for (i = 0 ; i < FD_SETSIZE ; ++i) if (FD_ISSET (i, &read_fd_set)) { /* Demande de connexion sur la socket initale */ if (i == sock) { int new ; size = sizeof (clientname) ; new = accept (sock, (struct sockaddr *) &clientname, &size) ; if (new < 0) erreur("erreur accept") ; fprintf (stderr, "Serveur : connectiont depuis") ; fprintf (stderr, "%s, port",inet_ntoa (clientname.sin_addr)) ; fprintf (stderr, "%hd.\n", ntohs (clientname.sin_port)) ; FD_SET (new, &active_fd_set) ; /* Arrivee de donnee sur une socket connectee */ else { if (read_from_client (i) < 0) { close (i) ; FD_CLR (i, &active_fd_set) ; 18

19 4 Compléments sur la couche transport : cas de UDP et TCP La couche transport doit définir la structure des paquets (qui seront encapsulés par IP) contenant les données et les informations source/destination. Dans le cas de TCP le mécanisme d envoi/réception doit aussi s assurer de la fiabilité des données envoyées/reçues. 4.1 Cas de UDP UDP (User Datagram Protocol) fournit un service de transport sans connexion. Un transfert UDP est caractérisé par une IP source, une IP destination : informations données dans l en-tête IP, un port source, un port destination : informations fournies dans l en-tête UDP. La connexion est à usage unique. Le port client est rendu après utilisation. Le port serveur attend un autre client. Comme pour TCP, un port est un entier non signé sur 2 octets. La fiabilité est minimale. Toutefois, en option, il y a possibilité de détection des erreurs sur le contenu reçu, mais sans possibilité automatique de retransmission. Un segment UDP a la structure suivante : 32 bits port source longueur segment données de l application port destination somme de contrôle L en-tête a une longueur fixe de 8 octets. longueur segment est la longueur totale du segment UDP, en-tête inclus. La somme de contrôle vaut 0 par défaut. Sert à la vérification de l intégrité de tout le segment : entête + données. Si détection d erreur alors le segment est détruit. Le protocole est léger : seulement 8 octets d en-tête pour (jusqu à) 64Ko de données. Toutefois, il n y a aucune garantie sur l ordre d arrivée (si plusieurs paquets doivent être envoyés). C est un protocole adapté pour des applications à faible envoi ou très sensibles aux délais (e.g. VoIP), ou celles exigeantes en terme de débit (e.g Vidéostreaming). Non adapté à des applications nécessitant un transfert fiable (e.g. mail). 4.2 Cas de TCP TCP (Transport Control Protocol) fournit un service de transport fiable sur IP. La communication est en mode connecté : Ouverture d un canal, communication Full-Duplex, fermeture du canal. La connexion fiabilise la communication : négociation entre source et destination des paramètres de fonctionnement mutuels. La fiabilité est assurée. Pour la réduction des pertes de paquets, il y a un mécanisme de contrôle de congestion. Pour la gestion des pertes, il y a un mécanisme de détection et retransmissions. Pour chaque partie client et serveur, on trouve : un tampon pour stocker les données reçues (qui seront ensuite recopiées vers la zone mémopire de l application utilisant ce socket) un statut déterminant l état de la connexion (en initialisation, en envoi/réception, en fermeture). des valeurs permettant de gérer la communication : taille d un paquet, valeur du timeout. les informations sur les données : adresse de la prochaine donnée en attente de réception, adresse de la prochaine donnée en attente d envoi. La structure d un paquet TCP est la suivante : 19

20 port source port destination numéro de séquence numéro d acquittement hlen reserved codes window checksum options urgency pointer bourrage données de l application Ports source et destination (16 bits) : identifient les applications émettrice et réceptrice. Numéro de séquence (32 bits) : identifie l octet dans le flux de données que représente le premier octet de ce segment. Numéro d acquittement (32 bits) : prochain numéro de séquence que l émetteur du segment s attend à recevoir = numéro de séquence du dernier octet reçu correctement et en séquence + 1. hlen (4bits) : longueur de l en-tête en mots de 32 bits. Reserved (6 bits) : champ réservé pour de futures utilisations. Codes (6 bits) : bits indiquant le type du segment (multi-information possible) URG : le pointeur de données urgentes est valide, les données sont émises sans délai, les données reçues sont remises sans délai. SYN : utilisé à l initialisation de la connexion pour indiquer où la numérotation séquentielle commence. SYN occupe lui-même un numéro de séquence bien que ne figurant pas dans le champ de données. Le Numéro de séquence inscrit dans le datagramme (correspondant à SYN) est un Initial Sequence Number (ISN) produit par un générateur garantissant l unicité de l ISN sur le réseau (indispensable pour identifier les duplications). FIN : utilisé lors de la libération de la connexion. ACK : utilisé lorsque le segment transporte un acquittement PSH : fonction push : un récepteur TCP décodant le bit PSH, transmet à l application réceptrice, les données correspondantes sans attendre plus de données de l émetteur. Exemple : émulation terminal, pour envoyer chaque caractère entré au clavier (mode caractère asynchrone). RST : utilisé par une extrémité pour indiquer à l autre extrémité qu elle doit réinitialiser la connexion. Ceci est utilisé lorsque les extrémités sont désynchronisées. Fenêtre (16 bits) : Contrôle de flux et transmission efficiente = nombre d octets supplémentaires que le récepteur est prêt à recevoir, i.e. taille courante des tampons de réception du récepteur. Somme de contrôle (16 bits) : permet de vérifier si les données sont intactes, si elles ont atteint la bonne destination et si IP les a passées au bon protocole. Pointeur urgence (16 bits) : déplacement positif à ajouter au numéro de séquence du segment pour récupérer le numéro de séquence du dernier octet de donnée urgente. Permet à une extrémité de la connexion d envoyer des données hors bande (spécifiées comme urgentes) sans avoir à attendre que l autre extrémité ait consommé les octets déjà dans le flux. Options : Permettent de négocier la taille maximale des segments échangés (MSS : Maximal Segment Size). Cette option n est présente que dans les segments d initialisation de connexion (avec bit SYN). TCP calcule une taille maximale de segment de manière à ce que le datagramme IP résultant corresponde au MTU du réseau. La recommandation est de 536 octets. La taille optimale du segment correspond au cas où le datagramme IP n est pas fragmenté. A noter qu il n existe pas de mécanisme pour connaître le MTU, que le routage peut entraîner des variations de MTU, que la taille optimale dépend de la taille des en-têtes (donc des options). Le principe de communication entre deux machines A et B est le suivant (outre la spécification de ports source/destinataire) : (on suppose que A commence) A et B choisissent chacun un numéro d identifiant (ISN). Phase de synchronisation (3-way handshaking) Phases d envoi/accusé de récpeption et récupération si nécessaire Phase de terminaison (2x2-way handshaking) 20

21 4.2.1 phases d initialisation et de terminaison A (actif) B (passif) temps SYN SENT ESTABLISHED SYN (0) <MSS 1024> SYN (0) ACK <MSS 1024> ACK (0) ISN de A ISN de A + 1 SYN RCVD ISN de B ISN de B + 1 accord sur MSS ESTABLISHED 3-way handshaking En bleu l état des connexions, en rouge les données transférées : A envoie son ISN, avec une proposition de MSS. B envoie son ISN, accuse réception de l ISN de A (donc envoie le premier octet qu il attend = ISN de A + 1), et accepte le MSS. A accuse réception de l ISN de B (donc envoie le premier octet qu il attend = ISN de B + 1). A (actif) B (passif) temps FIN WAIT 1 FIN WAIT 2 TIME WAIT FIN (0) ACK (0) ACK FIN (0) ACK CLOSE WAIT LAST ACK 2x2-way handshaking En bleu l état des connexions, en rouge les données transférées : A envoie un signal de fin FIN, et accuse réception du dernier paquet reçu de B. B envoie l accusé de réception du dernier paquet reçu de A. B envoie un signal de fin de données. A accuse réception de cette fin des données. ACK Le fait que l initialisation soit en 3 parties et la fin en 4 parties permet éviter les erreurs quand les paquets arrivent croisés (donc en interprétant mal la demande de l autre partie) gestion des pertes, contrôle de flux et contrôle de congestion En phase d envoi/réception de paquets, des paquets peuvent être perdus, en particulier un accusé de réception peut ne jamais arriver. Il est donc nécessaire de définir un délai (timeout) au-delà duquel le paquet ou son accusé de réception aura été considéré comme perdu. La vitesse d envoi doit aussi être contrôlée. Gestion de pertes : par rapport aux acquittements (ACK), si l émetteur ne reçoit pas d acquittement au délai, alors réenvoi de tous les paquets à partir de celui qui n a pas été acquitté (sauf si un acquittement arrive entre-temps). Contrôle de flux : par rapport au récepteur, l émetteur adapte le nombre de paquets envoyés à la taille du tampon de réception. Contrôle de congestion : par rapport au réseau, l émetteur adapte le débit des données envoyées à la bande passante instantanée du réseau. Ce n est pas la taille des paquets, mais leur débit d envoi qui change. Le buffer de réception permet d entreposer les données reçues avant que celles-ci ne soient traitées par l application : 21

22 dernier octet envoyé à l application prochain octet attendu dernier octet reçu tampon de réception fenêtre Contrôle de flux : Système envoyer et attendre (send and wait) : Après l envoi de chaque paquet, l émetteur s arrête et attend que le récepteur soit prêt (acquittement) à accepter un autre paquet : l émetteur attend l acquittement (ACK) du récepteur avant d envoyer un nouveau paquet. Système de fenêtre glissante (sliding window) : L émetteur et le récepteur vont utiliser une taille de fenêtre. LA taille de la fenêtre définit la quantité maximale de données qu on peut envoyer avant de recevoir un accusé de réception. La fenêtre peut être de taille fixe ou variable. La valeur est donnée dans le champ fenêtre/window dans un paquet TCP. Contrôle de congestion : But : éviter la surcharge du réseau en déterminant la capacité réseau disponible. Dépend des autres connexions qui partagent les ressources. Stratégie : TCP n envoie pas plus vite que ce que le composant le plus lent - le réseau ou l hôte de destination - peuvent atteindre. Hypothèse : une perte est interprétée comme de la congestion dans le réseau 2 algorithmes possibles qui contrôlent la quantité d information injectée dans le réseau : Slow Start (démarrage lent) : La transmission des données commence sans avoir connaissance de l état du réseau. TCP sonde le réseau en le mettant lentement à l épreuve pour en déterminer la capacité disponible. L algorithme de slow start est utilisé au début d un transfert ou après la réparation d une perte détectée par temporisateur de retransmission. Pendant le slow start, la cwnd (nombre maximal d octets que l émetteur peut envoyer sans recevoir aucun accusé) est augmentée de x octets pour chaque ACK reçu acquittant de nouvelles données. L accroissement est multiplicatif jusqu à détection de congestion ou atteinte d un seuil (estimation de la bande passante). Congestion Avoidance (évitement de congestion) : idem mais accroissement additif jusqu à détection de congestion. en cas de congestion (i.e. perte), le décroissement est multiplicatif. 22

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

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

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

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

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

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

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

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

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

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

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 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

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

Systèmes et Réseaux (ASR 2) - Notes de cours Cours 14

Systèmes et Réseaux (ASR 2) - Notes de cours Cours 14 Systèmes et Réseaux (ASR ) - Notes de cours Cours Anne Benoit May, 0 PARTIE : Systèmes PARTIE : Réseaux Architecture des réseaux de communication La couche -liaison La couche -réseau Algorithmes de routage

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

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

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

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

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

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

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

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

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

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

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

Réseaux Locaux. Objectif du module. Plan du Cours #3. Réseaux Informatiques. Acquérir un... Réseaux Informatiques. Savoir.

Réseaux Locaux. Objectif du module. Plan du Cours #3. Réseaux Informatiques. Acquérir un... Réseaux Informatiques. Savoir. Mise à jour: Mars 2012 Objectif du module Réseaux Informatiques [Archi/Lycée] http://fr.wikipedia.org/ Nicolas Bredèche Maître de Conférences Université Paris-Sud bredeche@lri.fr Acquérir un... Ressources

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

NOTIONS DE RESEAUX INFORMATIQUES

NOTIONS DE RESEAUX INFORMATIQUES NOTIONS DE RESEAUX INFORMATIQUES GENERALITES Définition d'un réseau Un réseau informatique est un ensemble d'équipements reliés entre eux afin de partager des données, des ressources et d'échanger des

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

TP 2 Réseaux. Adresses IP, routage et sous-réseaux

TP 2 Réseaux. Adresses IP, routage et sous-réseaux TP 2 Réseaux Adresses IP, routage et sous-réseaux C. Pain-Barre INFO - IUT Aix-en-Provence version du 24/2/2 Adressage IP. Limites du nombre d adresses IP.. Adresses de réseaux valides Les adresses IP

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

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

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

Le Multicast. A Guyancourt le 16-08-2012

Le Multicast. A Guyancourt le 16-08-2012 Le Multicast A Guyancourt le 16-08-2012 Le MULTICAST Définition: On entend par Multicast le fait de communiquer simultanément avec un groupe d ordinateurs identifiés par une adresse spécifique (adresse

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

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

Computer Networking: A Top Down Approach Featuring the Internet, 2 nd edition. Jim Kurose, Keith Ross Addison-Wesley, July 2002. ENPC.

Computer Networking: A Top Down Approach Featuring the Internet, 2 nd edition. Jim Kurose, Keith Ross Addison-Wesley, July 2002. ENPC. Computer Networking: A Top Down Approach Featuring the Internet, 2 nd edition. Jim Kurose, Keith Ross Addison-Wesley, July 2002. Réseau 1 Architecture générale Couche : IP et le routage Couche : TCP et

Plus en détail

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

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 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

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

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

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

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

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

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

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

Informatique Générale Les réseaux

Informatique Générale Les réseaux Informatique Générale Les réseaux 1 Réseaux locaux, étendus, Internet Comment permettre à l information de circuler d un ordinateur à un autre. 2 Les réseaux le modèle OSI les topologies adressage du matériel

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

Algorithmique et langages du Web

Algorithmique et langages du Web Cours de Algorithmique et langages du Web Jean-Yves Ramel Licence 1 Peip Biologie Groupe 7 & 8 Durée totale de l enseignement = 46h ramel@univ-tours.fr Bureau 206 DI PolytechTours Organisation de la partie

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

Réseaux grande distance

Réseaux grande distance Chapitre 5 Réseaux grande distance 5.1 Définition Les réseaux à grande distance (WAN) reposent sur une infrastructure très étendue, nécessitant des investissements très lourds. Contrairement aux réseaux

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

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

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

N o t i o n s d e b a s e s u r l e s r é s e a u x C h a p i t r e 2

N o t i o n s d e b a s e s u r l e s r é s e a u x C h a p i t r e 2 N o t i o n s d e b a s e s u r l e s r é s e a u x C h a p i t r e 2 1 Quelles affirmations parmi les suivantes définissent correctement le rôle des périphériques intermédiaires sur le réseau? (Choisissez

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

Cisco Certified Network Associate

Cisco Certified Network Associate Cisco Certified Network Associate Version 4 Notions de base sur les réseaux Chapitre 5 01 Dans un environnement IPv4, quelles informations un routeur utilise-t-il pour transmettre des paquets de données

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

Internet - Outils. Nicolas Delestre. À partir des cours Outils réseaux de Paul Tavernier et Nicolas Prunier

Internet - Outils. Nicolas Delestre. À partir des cours Outils réseaux de Paul Tavernier et Nicolas Prunier Plan Internet - Outils Nicolas Delestre 1 DHCP 2 Firewall 3 Translation d adresse et de port 4 Les proxys 5 DMZ 6 VLAN À partir des cours Outils réseaux de Paul Tavernier et Nicolas Prunier 7 Wake On Line

Plus en détail

Contrôleur de communications réseau. Guide de configuration rapide DN1657-0606

Contrôleur de communications réseau. Guide de configuration rapide DN1657-0606 K T - N C C Contrôleur de communications réseau Guide de configuration rapide DN1657-0606 Objectif de ce document Ce Guide de configuration rapide s adresse aux installateurs qui sont déjà familiers avec

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

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

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

UFR de Mathématiques et Informatique Année 2009/2010. Réseaux Locaux TP 04 : ICMP, ARP, IP

UFR de Mathématiques et Informatique Année 2009/2010. Réseaux Locaux TP 04 : ICMP, ARP, IP Université de Strasbourg Licence Pro ARS UFR de Mathématiques et Informatique Année 2009/2010 1 Adressage IP 1.1 Limites du nombre d adresses IP 1.1.1 Adresses de réseaux valides Réseaux Locaux TP 04 :

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

Windows Internet Name Service (WINS)

Windows Internet Name Service (WINS) Windows Internet Name Service (WINS) WINDOWS INTERNET NAME SERVICE (WINS)...2 1.) Introduction au Service de nom Internet Windows (WINS)...2 1.1) Les Noms NetBIOS...2 1.2) Le processus de résolution WINS...2

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

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

Les Réseaux Informatiques

Les Réseaux Informatiques Les Réseaux Informatiques Licence Informatique, filière SMI Université Mohammed-V Agdal Faculté des Sciences Rabat, Département Informatique Avenue Ibn Batouta, B.P. 1014 Rabat Professeur Enseignement

Plus en détail

La couche réseau Le protocole X.25

La couche réseau Le protocole X.25 La couche réseau Le protocole X.25 Michel Gardie GET/INT/LOR/RIP 20 décembre 2004 Réseau / X.25 Informations La version de ce document à la date d impression et de révision est temporaire. Quelkes feautes

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

Cisco Discovery - DRSEnt Module 7

Cisco Discovery - DRSEnt Module 7 Page 1 of 7 Cisco Discovery - DRSEnt Module 7 Select language : English Mode examen : Oui (Changer la couleur du site, écriture noire sur fond blanc). Liens utiles : Site Netacad Télécharger Packet Tracer

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

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

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

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

20/09/11. Réseaux et Protocoles. L3 Informatique UdS. L3 Réseaux et Protocoles. Objectifs du cours. Bibliographie

20/09/11. Réseaux et Protocoles. L3 Informatique UdS. L3 Réseaux et Protocoles. Objectifs du cours. Bibliographie L3 Réseaux et Protocoles Jean-Jacques PANSIOT Professeur, Département d informatique UdS Pansiot at unistra.fr TD/TP : Damien Roth 2011 Réseaux et Protocoles 1 Objectifs du cours Mécanismes de base des

Plus en détail

Chapitre 1: Introduction générale

Chapitre 1: Introduction générale Chapitre 1: Introduction générale Roch Glitho, PhD Associate Professor and Canada Research Chair My URL - http://users.encs.concordia.ca/~glitho/ Table des matières Définitions et examples Architecture

Plus en détail

Chapitre : Les Protocoles

Chapitre : Les Protocoles Chapitre : Les Protocoles Outils de l Internet Joyce El Haddad DU1 MI2E Université Paris Dauphine 2009-2010 1 Plan 1. Le modèle TCP/IP 2. Les adresses IP 3. Le Protocole IP 4. Le Protocole TCP 5. Les Protocoles

Plus en détail

Les clés d un réseau privé virtuel (VPN) fonctionnel

Les clés d un réseau privé virtuel (VPN) fonctionnel Les clés d un réseau privé virtuel (VPN) fonctionnel À quoi sert un «VPN»? Un «VPN» est, par définition, un réseau privé et sécurisé qui évolue dans un milieu incertain. Ce réseau permet de relier des

Plus en détail

SIP. Plan. Introduction Architecture SIP Messages SIP Exemples d établissement de session Enregistrement

SIP. Plan. Introduction Architecture SIP Messages SIP Exemples d établissement de session Enregistrement SIP Nguyen Thi Mai Trang LIP6/PHARE Thi-Mai-Trang.Nguyen@lip6.fr UPMC - M2 Réseaux - UE PTEL 1 Plan Introduction Architecture SIP Messages SIP Exemples d établissement de session Enregistrement UPMC -

Plus en détail

Cours Programmation Système

Cours Programmation Système Cours Programmation Système Filière SMI Semestre S6 El Mostafa DAOUDI Département de Mathématiques et d Informatique, Faculté des Sciences Université Mohammed Premier Oujda m.daoudi@fso.ump.ma Février

Plus en détail

CCNA Discovery Travailler dans une PME ou chez un fournisseur de services Internet

CCNA Discovery Travailler dans une PME ou chez un fournisseur de services Internet Curriculum Name Guide du participant CCENT 3 Section 9.3 Dépannage de l adressage IP de la couche 3 Cette section consacrée au dépannage vous permettra d étudier les conditions nécessaires à l obtention

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

Chapitre VII : Principes des réseaux. Structure des réseaux Types de réseaux La communication Les protocoles de communication

Chapitre VII : Principes des réseaux. Structure des réseaux Types de réseaux La communication Les protocoles de communication Chapitre VII : Principes des réseaux Structure des réseaux Types de réseaux La communication Les protocoles de communication Introduction Un système réparti est une collection de processeurs (ou machines)

Plus en détail

Programmation système en C/C++

Programmation système en C/C++ Programmation système en C/C++ Jean-Baptiste Vioix (jb.vioix@free.fr) LE2I - ENESAD http://jb.vioix.free.fr 1-41 Programmation en C/C++ sous Unix Il existe des très nombreux outils de développement sous

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

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

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

DHCP. Dynamic Host Configuration Protocol

DHCP. Dynamic Host Configuration Protocol DHCP Dynamic Host Configuration Protocol DHCP : Dynamic Host Configuration Protocol Permet la configuration des paramètres IP d une machine: adresse IP masque de sous-réseau l adresse de la passerelle

Plus en détail

Réseaux M2 CCI SIRR. Introduction / Généralités

Réseaux M2 CCI SIRR. Introduction / Généralités Réseaux M2 CCI SIRR Introduction / Généralités Isabelle Guérin Lassous Isabelle.Guerin-Lassous@ens-lyon.fr http://perso.ens-lyon.fr/isabelle.guerin-lassous 1 Objectifs Connaissances générales sur les réseaux

Plus en détail

Culture informatique. Cours n 9 : Les réseaux informatiques (suite)

Culture informatique. Cours n 9 : Les réseaux informatiques (suite) Culture informatique Cours n 9 : Les réseaux informatiques (suite) 1 Un réseau : Nécessité de parler un langage commun pour pouvoir communiquer dans un réseau. Différents niveaux de communication Physique,

Plus en détail

M1 Informatique, Réseaux Cours 9 : Réseaux pour le multimédia

M1 Informatique, Réseaux Cours 9 : Réseaux pour le multimédia M1 Informatique, Réseaux Cours 9 : Réseaux pour le multimédia Olivier Togni Université de Bourgogne, IEM/LE2I Bureau G206 olivier.togni@u-bourgogne.fr 24 mars 2015 2 de 24 M1 Informatique, Réseaux Cours

Plus en détail

SOMMAIRE : CONFIGURATION RESEAU SOUS WINDOWS... 2 INSTRUCTIONS DE TEST DE CONNECTIVITE... 5

SOMMAIRE : CONFIGURATION RESEAU SOUS WINDOWS... 2 INSTRUCTIONS DE TEST DE CONNECTIVITE... 5 SOMMAIRE : CONFIGURATION RESEAU SOUS WINDOWS... 2 INTRODUCTION... 2 CONFIGURATION DE L INTERFACE RESEAU... 3 INSTRUCTIONS DE TEST DE LA CONNECTIVITE.... 5 INTRODUCTION... 5 INSTRUCTIONS DE TEST DE CONNECTIVITE...

Plus en détail

Cours des réseaux Informatiques (2010-2011)

Cours des réseaux Informatiques (2010-2011) Cours des réseaux Informatiques (2010-2011) Rziza Mohammed rziza@fsr.ac.ma Supports Andrew Tanenbaum : Réseaux, cours et exercices. Pascal Nicolas : cours des réseaux Informatiques, université d Angers.

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

Administration des ressources informatiques

Administration des ressources informatiques 1 2 La mise en réseau consiste à relier plusieurs ordinateurs en vue de partager des ressources logicielles, des ressources matérielles ou des données. Selon le nombre de systèmes interconnectés et les

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

3IS - Système d'exploitation linux - Programmation système

3IS - Système d'exploitation linux - Programmation système 3IS - Système d'exploitation linux - Programmation système 2010 David Picard Contributions de : Arnaud Revel, Mickaël Maillard picard@ensea.fr Environnement Les programmes peuvent être exécutés dans des

Plus en détail