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, 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("www.google.fr") ; 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 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

Chapitre 5 : Protocole TCP/IP

Chapitre 5 : Protocole TCP/IP Chapitre 5 : Protocole TCP/IP 1- IP (Internet Protocol) : Il permet de à des réseaux hétérogène de coopérer. Il gère l adressage logique, le routage, la fragmentation et le réassemblage des paquets. Il

Plus en détail

La programmation client-serveur

La programmation client-serveur La programmation client-serveur Olivier Aubert 1/32 Sources http://www.info.uqam.ca/~obaid/inf4481/a01/plan.htm http://bat710.univ-lyon1.fr/~exco/cours/clientserveur.html man 2 socket http://www.developerweb.net/sock-faq/

Plus en détail

Fabien Garcia ELR. int domain, /* Domaine de la socket */ int type, /* Type de socket */ int protocol); /* Protocole utilisé */

Fabien Garcia ELR. int domain, /* Domaine de la socket */ int type, /* Type de socket */ int protocol); /* Protocole utilisé */ API Socket Fabien Garcia ELR 1 int socket( int domain, /* Domaine de la socket */ int type, /* Type de socket */ int protocol); /* Protocole utilisé */ Création d un TSAP Crée une socket du type demandé

Plus en détail

Introduction. Adresses

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

Plus en détail

Interface des sockets

Interface des sockets Interface des sockets IUT Bordeaux I 03/10/2007 Interface des Sockets 1 A quoi ça sert les sockets? Applications client/serveur Transfert de fichiers Connexion à distance Courrier électronique Groupe de

Plus en détail

Programmation client/serveur

Programmation client/serveur Les sockets Programmation client/serveur Le serveur est la machine à l écoute des requêtes des clients auxquelles il doit répondre. Il exécute une boucle infinie qui attend une requête d un client. Il

Plus en détail

http://www.iana.org/assignments/port-numbers Six drapeaux

http://www.iana.org/assignments/port-numbers Six drapeaux Port source Port de destination Numéro de séquence Pointeur urgent Numéros de port un numéro de port est un entier de 16 bits les ports réservés (well known ports) de à 123 les ports de connexion (registered

Plus en détail

Programmation Réseau

Programmation Réseau TC 3TC PRS Programmation Réseau Département Télécommunications Services & Usages Programmation Réseau - Slides gracieusement mis à disposition par Fabrice Valois - Pourquoi programmation réseau? - Le concept

Plus en détail

Cours de Réseau et communication Unix n 4

Cours de Réseau et communication Unix n 4 Cours de Réseau et communication Unix n 4 Edouard THIEL Faculté des Sciences Université d Aix-Marseille (AMU) Septembre 2014 Les transparents de ce cours sont téléchargeables ici : http://pageperso.lif.univ-mrs.fr/~edouard.thiel/ens/rezo/

Plus en détail

Couche Transport. Le protocole TCP

Couche Transport. Le protocole TCP Couche Transport Assure la transmission des messages entre deux applications sur des stations distantes. Le protocole de transport est un protocole bout-en-bout (Host- To-Host Protocol). A. Obaid - Téléinformatique

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 4 1 D après l en-tête de la couche transport illustré, quelles affirmations parmi les suivantes définissent la session

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

Introduction aux réseaux

Introduction aux réseaux Introduction aux réseaux Présentation de TCP/IP et de la programmation. Julien OLIVAIN julien.olivain@lsv.ens-cachan.fr> LSV - ENS de Cachan Plan Introduction générale. Protocoles de communication. Organisation

Plus en détail

.: TP 5 : TCP/UDP :. Séquence 1 Le protocole TCP...2 Séquence 2 Client/Serveur TCP...3

.: TP 5 : TCP/UDP :. Séquence 1 Le protocole TCP...2 Séquence 2 Client/Serveur TCP...3 .: TP 5 : TCP/UDP :. Copyright 2008 2010 tv Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or

Plus en détail

A l'origine, les FYI sont uniquement des documents officiels issus des organismes de normalisation de l'internet, sans toutefois être des normes.

A l'origine, les FYI sont uniquement des documents officiels issus des organismes de normalisation de l'internet, sans toutefois être des normes. 1 2 Deux groupes guident les évolutions de l Internet : un groupe de recherche, l IRTF (Internet Research Task Force) un groupe de développement, l IETF (Internet Engineering Task Force) ; travaille sur

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

Linux Principes et Programmation

Linux Principes et Programmation Linux Principes et Programmation 5. Programmation réseau Socket, RPC CNAM NSY103 2009/2010 Yann GAUTHERON Extraits : http://fr.wikipedia.org/, LINUX Programmation système et réseau (Joëlle DELACROIX) http://www.cnam.fr/

Plus en détail

Semaine 4 : le protocole IP

Semaine 4 : le protocole IP Semaine 4 : le protocole IP Séance 1 : l adressage... 1 Séance 2 : le protocole IP... 8 Séance 3 : l adresse IP... 16 Séance 1 : l adressage Introduction Au cours de cette séance, nous allons parler de

Plus en détail

Plan de la séance. Ports de communication physiques et virtuels. Adressage Internet. Protocoles de communication. Prise de communication : définition

Plan de la séance. Ports de communication physiques et virtuels. Adressage Internet. Protocoles de communication. Prise de communication : définition 1 Plan de la séance Ports de communication physiques et virtuels Adressage Internet Protocoles de communication Prise de communication : définition Les trois caractéristiques d une prise Les primitives

Plus en détail

TP N o 2 de Réseaux Etude des protocoles ARP et ICMP

TP N o 2 de Réseaux Etude des protocoles ARP et ICMP TP N o 2 de x Etude des protocoles ARP et ICMP Pascal Sicard 1 INTRODUCTION L objectif de ce TP est d observer et comprendre le protocole de résolution d adresse ARP, et un protocole annexe : ICMP. Nous

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

Examen1ère session- Réseaux

Examen1ère session- Réseaux Licence 3 I 21 22 Réseaux T.T. Dang Ngoc dntt@u-cergy.fr Examen1ère session- Réseaux (Date : jeudi 12 avril 22 - durée : 3 heures) Seule une feuille A4 recto-verso est autorisée pour toute documentation.

Plus en détail

Semestre 6 2012-2013. Licence miage Université Lille 1 Pour toutes remarques : Alexandre.Sedoglavic@univ-lille1.fr. Prise de communication (socket)

Semestre 6 2012-2013. Licence miage Université Lille 1 Pour toutes remarques : Alexandre.Sedoglavic@univ-lille1.fr. Prise de communication (socket) V-2 (28-02-2012) Licence miage Université Lille 1 Pour toutes remarques : Alexandre.Sedoglavic@univ-lille1.fr Semestre 6 2012-2013 Ports de physiques et virtuels Il existe des circuits physiques par lesquels

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

0x400. Réseau. 0x410 Modèle OSI

0x400. Réseau. 0x410 Modèle OSI 0x400 Réseau La communication et le langage ont énormément amélioré les capacités de l espèce humaine. Grâce à une langue commune, les êtres humains sont capables de transférer des connaissances, de coordonner

Plus en détail

Pile de protocoles TCP / IP

Pile de protocoles TCP / IP Pile de protocoles TCP / IP Fiche de cours La pile de protocoles TCP/IP est le standard de fait le plus utilisé au monde comme ensemble protocolaire de transmission dans les réseaux informatiques. La raison

Plus en détail

Introduction à TCP/IP

Introduction à TCP/IP Introduction à TCP/IP 2 Introduction à TCP/IP Sommaire 1. Rappel sur le modèle OSI... 3 2. Architecture des protocoles TCP/IP... 3 2.1. Couches de liens... 4 2.2. Couche réseau... 4 2.3. Couche Transport...

Plus en détail

TD2 : CORRECTION. Exercice 1 : 1. Quel est l avantage de la séparation de l adressage en deux parties dans l adressage Internet?

TD2 : CORRECTION. Exercice 1 : 1. Quel est l avantage de la séparation de l adressage en deux parties dans l adressage Internet? TD2 : CORRECTION I. connaître son environnement réseau a. Quelle est l adresse IPv4 de votre PC? l adresse IPv6? ipconfig : Adresse IPv4..............: 192.168.1.13 Masque de sous-réseau.... : 255.255.255.0

Plus en détail

Rappelle : protocole IP

Rappelle : protocole IP Couche transport Introduction Rappelle : protocole IP Fonctionnalités d IP Adressage Routage Fragmentation/Ré-assemblage Mode non-connecté Limitations IP n est pas fiable : il ne fait pas Séquencement

Plus en détail

Adressage de réseaux

Adressage de réseaux Page 1 sur 28 Adressage de réseaux 5.1 Adresses IP et masques de sous-réseau 5.1.1 Rôle de l adresse IP Un hôte a besoin d une adresse IP pour participer aux activités sur Internet. L adresse IP est une

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

Réseaux - Cours 4. IP : introduction et adressage. Cyril Pain-Barre. version du 18/2/2013. IUT Informatique Aix-en-Provence

Réseaux - Cours 4. IP : introduction et adressage. Cyril Pain-Barre. version du 18/2/2013. IUT Informatique Aix-en-Provence Réseaux - Cours 4 : introduction et adressage Cyril Pain-Barre IUT Informatique Aix-en-Provence version du 18/2/2013 1/34 Cyril Pain-Barre : introduction et adressage 1/26 TCP/ l architecture d Internet

Plus en détail

IP - Plan. IP - Plan. Interconnexion. Interconnexion. 1. Interconnexion IP

IP - Plan. IP - Plan. Interconnexion. Interconnexion. 1. Interconnexion IP - Plan 1. Interconnexion 2. Relayage et routage 4. Adressage 5. Datagramme - Plan 1. Interconnexion concept d'interconnexion rôle de service de 2. Relayage et routage 4. Adressage 5. Datagramme Kim Thai

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

Cours de Systèmes des Réseaux p.1/40. Master IST partie Linux

Cours de Systèmes des Réseaux p.1/40. Master IST partie Linux Cours de Systèmes des Réseaux Master IST partie Linux T. Hérault herault@lri.fr Université Paris XI Cours de Systèmes des Réseaux p.1/40 Sockets et Réseau Sockets et Réseaux Cours de Systèmes des Réseaux

Plus en détail

Le Protocole ICMP (1)

Le Protocole ICMP (1) Le Protocole ICMP (1) Le protocole ICMP (Internet Control Message Protocol) permet d envoyer des messages de contrôle ou d erreur vers d autres machines ou passerelles. Beaucoup d erreurs sont causées

Plus en détail

Formation Réseaux : Notions de base

Formation Réseaux : Notions de base Formation x Formation Réseaux : Notions Jean-Philippe André (), p2009 3. Couche Septembre 2007 Que sont les x? Formation x Wikipedia.org : Un est un ensemble de nœuds (ou pôles) reliés entre eux par des

Plus en détail

Cours CCNA 1. Exercices

Cours CCNA 1. Exercices Cours CCNA 1 TD2 Exercices Exercice 1 : Dressez la liste des 5 périphériques finaux, 6 périphériques intermédiaires et 3 formes de support réseau. Périphériques finaux (hôtes): ordinateur de bureau, ordinateur

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE

EPREUVE OPTIONNELLE d INFORMATIQUE EPREUVE OPTIONNELLE d INFORMATIQUE A) QCM Les réponses au QCM doivent être portées directement sur la feuille de sujet de QCM. Ne pas omettre de faire figurer votre numéro de candidat sur cette feuille

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

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

Communication par sockets

Communication par sockets Communication par sockets Olivier Dalle Université de Nice - Sophia Antipolis http://deptinfo.unice.fr/ Dʼaprès le cours original de Sacha Krakowiak Université Joseph Fourier Projet Sardes (INRIA et IMAG-LSR)

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

Réseau et Communication Notes de Cours/TD/TP autorisées; autres documents, calculettes, ordinateurs interdits.

Réseau et Communication Notes de Cours/TD/TP autorisées; autres documents, calculettes, ordinateurs interdits. Département d Informatique Faculté des Sciences de Luminy Réseau et Communication Lundi 9 mai 2011 Durée 3h Licence MI, UE INF15, E. Thiel Notes de Cours/TD/TP autorisées; autres documents, calculettes,

Plus en détail

Mini-projet de développement client/serveur

Mini-projet de développement client/serveur Mini-projet de développement client/serveur L3 MIAGE Décembre 20 Intervenants : Vincent Danjean, Guillaume Huard Résumé Ce projet de développement a pour objectif la mise en place d un système informatique

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

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

Travaux pratiques Utilisation de Wireshark pour examiner les captures FTP et TFTP

Travaux pratiques Utilisation de Wireshark pour examiner les captures FTP et TFTP Travaux pratiques Utilisation de Wireshark pour examiner les captures FTP et TFTP Topologie Première partie (FTP) La première partie mettra l accent sur une capture TCP d une session FTP. Cette topologie

Plus en détail

Travaux Pratiques Réseaux

Travaux Pratiques Réseaux Travaux Pratiques Réseaux A. Habibi Les sockets Définitions Analogies Formellement une socket est un point de communication bidirectionnel par lequel un processus pourra émettre ou recevoir des informations.

Plus en détail

Administration réseau Introduction

Administration réseau Introduction Administration réseau Introduction A. Guermouche A. Guermouche Cours 1 : Introduction 1 Plan 1. Introduction Organisation Contenu 2. Quelques Rappels : Internet et le modèle TCP/ Visage de l Internet Le

Plus en détail

Chapitre VIII : Introduction aux réseaux. Motivations. Notion de système distribué. Motivations Différents types de SE

Chapitre VIII : Introduction aux réseaux. Motivations. Notion de système distribué. Motivations Différents types de SE Chapitre VIII : Introduction aux réseaux Eric.Leclercq@u-bourgogne.fr Département IEM http://ufrsciencestech.u-bourgogne.fr http://ludique.u-bourgogne.fr/~leclercq 4 mai 2006 1 Structures de Systèmes distribués

Plus en détail

UDP (User Datagram Protocol) : protocole peu fiable, utilisé par des applications qui n exigent pas la fiabilité de TCP.

UDP (User Datagram Protocol) : protocole peu fiable, utilisé par des applications qui n exigent pas la fiabilité de TCP. 2 Le protocole IP 1. Présentation de TCP/IP TCP/IP est un sigle très connu dans le domaine des réseaux. Au sens strict, TCP/IP est un ensemble de deux protocoles : - IP (Internet Protocol) qui est un protocole

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

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

DIFF DE BASE. Serendip serendip@via.ecp.fr. Samy samy@via.ecp.fr

DIFF DE BASE. Serendip serendip@via.ecp.fr. Samy samy@via.ecp.fr DIFF DE BASE Serendip serendip@via.ecp.fr Samy samy@via.ecp.fr I. INTRODUCTION AU RÉSEAU RÉSEAU : /ʁE.ZO/ N.M. DÉR., AU MOYEN DU SUFF. -EAU, DE L'A. FR. REIZ, REZ «FILET» (RETS); RÉSEAU A ÉTÉ EN CONCURRENCE

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

Protocole TCP/IP. On classe généralement les protocoles en deux catégories selon le niveau de contrôle des données que l'on désire :

Protocole TCP/IP. On classe généralement les protocoles en deux catégories selon le niveau de contrôle des données que l'on désire : Nom.. Prénom.. Protocole TCP/IP Qu'est-ce qu'un protocole? Un protocole est une méthode de codage standard qui permet la communication entre des processus s'exécutant éventuellement sur différentes machines,

Plus en détail

Nom : Prénom : Gr. : N étud. :

Nom : Prénom : Gr. : N étud. : Nom : Prénom : Gr. : N étud. : Master UPMC Informatique ère année Partiel 006 U.E. ARES Sujet version A Durée totale : h00 Une feuille A manuscrite : Autorisée Autres documents, calculatrices, téléphones

Plus en détail

Contrôle Réseau Internet et services Documents papier et calculatrice autorisés 2h00

Contrôle Réseau Internet et services Documents papier et calculatrice autorisés 2h00 Contrôle Réseau Internet et services Documents papier et calculatrice autorisés 2h00 NOM : Nombre total de points : 56,5 points. Note finale = nb points acquis*20/ Les parties sont indépendantes. Dans

Plus en détail

CARLIER Julien Année 2005-2006 PATRIE Thomas P. KADIONIK Groupe GA 26. Projet Réseau. Programmation d un mini serveur WEB

CARLIER Julien Année 2005-2006 PATRIE Thomas P. KADIONIK Groupe GA 26. Projet Réseau. Programmation d un mini serveur WEB CARLIER Julien Année 2005-2006 PATRIE Thomas P. KADIONIK Groupe GA 26 Projet Réseau Programmation d un mini serveur WEB Sommaire... 1 Introduction... 2 2 Cahier des charges... 3 2.1 Les taches réalisées

Plus en détail

Description du datagramme IP :

Description du datagramme IP : Université KASDI MERBAH OUARGLA Faculté des Nouvelles Technologies de l information et de la Communication Département Informatique et Technologies de les Information 1 er Année Master académique informatique

Plus en détail

La pile TCP/IP. Christian Bulfone christian.bulfone@gipsa-lab.fr www.gipsa-lab.fr/~christian.bulfone/miass

La pile TCP/IP. Christian Bulfone christian.bulfone@gipsa-lab.fr www.gipsa-lab.fr/~christian.bulfone/miass La pile TCP/IP Christian Bulfone christian.bulfone@gipsa-lab.fr www.gipsa-lab.fr/~christian.bulfone/miass MIASS L3 Année 2012/2013 Plan du cours Un peu d histoire... Sources d information Adressage IP

Plus en détail

Architectures de communication. «Architecture protocolaire réseau» «protocolaire»

Architectures de communication. «Architecture protocolaire réseau» «protocolaire» Architectures de communication C. Pham Université de Pau et des Pays de l Adour Département Informatique http://www.univ-pau.fr/~cpham Congduc.Pham@univ-pau.fr «Architecture protocolaire réseau» Architecture

Plus en détail

Cours de Réseau et communication Unix n 6

Cours de Réseau et communication Unix n 6 Cours de Réseau et communication Unix n 6 Faculté des Sciences Université d Aix-Marseille (AMU) Septembre 2013 Cours écrit par Edouard Thiel, http://pageperso.lif.univ-mrs.fr/~edouard.thiel. La page du

Plus en détail

Communication de l information Les réseaux Cours

Communication de l information Les réseaux Cours Communication de l information Les réseaux Cours 1- Mise en situation Comment différents appareils parviennent-ils à communiquer entre eux? 2- Les réseaux informatiques Réseau d'ordinateurs : Le principe

Plus en détail

1 Protocole de communication

1 Protocole de communication Les Réseaux Principes fondamentaux Sommaire 1 Protocole de communication... 1 1.1 Rappel sur l adresse IP... 2 1.2 Rappel sur la masque de sous réseau... 3 1.3 Le routage... 3 1.4 Les Ports... 3 1.5 Notion

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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE Question 1 : Un paquet ou trame comprend : A - uniquement des données utilisateur B - un en-tête et des données C - des unités de transmission de taille fixe

Plus en détail

Présentation du module. Services Réseau. Services réseaux, quid? Rappels Modèle OSI. Rappels Modèle OSI

Présentation du module. Services Réseau. Services réseaux, quid? Rappels Modèle OSI. Rappels Modèle OSI Présentation du module Services Réseau Michaël Hauspie Michael.Hauspie@lifl.fr Licence Professionnelle Réseaux et Télécommunications Organisation générale semaines heure de cours et heures de TD/TP par

Plus en détail

Plan. 1. Introduction. 1.1 Notion de réseau. Réseau extrémité. Le cœur du réseau. Les Protocoles de Télécommunications Evolution Internet Cours de DEA

Plan. 1. Introduction. 1.1 Notion de réseau. Réseau extrémité. Le cœur du réseau. Les Protocoles de Télécommunications Evolution Internet Cours de DEA Plan Les Protocoles de Télécommunications Evolution Internet Cours de DEA Isabelle CHRISMENT ichris@loria.fr Introduction Routage dans l Internet IPv6 Communication de groupes et l Internet x sans fils,

Plus en détail

Linux sécurité des réseaux

Linux sécurité des réseaux Linux sécurité des réseaux Rappels et audits réseaux Frédéric Bongat (IPSL) Philippe Weill (SA) 1 Introduction Sécurité des réseaux sous Linux Les réseaux Audit réseau 2 3 TCP/IP : protocoles de communication

Plus en détail

INTERCONNEXION DE RESEAU PROTOCOLE TCP / IP RAPPELS

INTERCONNEXION DE RESEAU PROTOCOLE TCP / IP RAPPELS INTERCONNEXION DE RESEAU PROTOCOLE TCP / IP RAPPELS 1 Le modèle client-serveur Principe Client Requête Serveur Moyen de comunication Message - RPC Asymétrique CLIENT - envoyer requête - attendre réponse

Plus en détail

Administration des ressources informatiques

Administration des ressources informatiques 1 2 Cours réseau Supports de transmission Les câbles Coaxial Ethernet RJ45 Fibre optique Supports de transmission 3 Les câbles Ethernet RJ45 Supports de transmission 4 Les câbles Coaxial Type BNC Cours

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 6 01 Regardez le schéma d adressage IP illustré. Quel préfixe réseau y est adapté? /24 /16 /20 /27 /25 /28 02 Parmi

Plus en détail

Programmation sockets

Programmation sockets Programmation sockets Juliusz Chroboczek 13 octobre 2014 Table des matières 1 Fonctionnalités indépendantes du protocole de couche transport 2 1.1 Structures.......................................... 2

Plus en détail

QUESTIONNAIRE N 1 SUR TCP/IP : GÉNÉRALITÉS

QUESTIONNAIRE N 1 SUR TCP/IP : GÉNÉRALITÉS QUESTIONNAIRE N 1 SUR TCP/IP : GÉNÉRALITÉS 1) Quelle est la signification de l'acronyme DOD IP? 2) Quel organisme est à l'origine de TCP/IP? 3) Quand a-t-il été inventé? 4) Dans quel but a-t-il été inventé?

Plus en détail

Examen de Réseau Licence Licence GMI Maîtrise (Tous documents autorisés)

Examen de Réseau Licence Licence GMI Maîtrise (Tous documents autorisés) Examen de Réseau Licence Licence GMI Maîtrise (Tous documents autorisés) Contexte du sujet : Une entreprise spécialisée dans la production de matériel de mesure et d analyse météorologique propose des

Plus en détail

Bases TCP/IP. Internet Protocoles & Applications. Internet Protocoles & Applications. Introduction

Bases TCP/IP. Internet Protocoles & Applications. Internet Protocoles & Applications. Introduction Internet Protocoles & Applications Bases TCP/IP RALL 2007 Présenté par Roger YERBANGA Alain Patrick AINA - Introduction - Architecture TCP/IP - Niveau interface réseau -Ethernet - Liaison Point à Point

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 9 01 Convertissez le nombre binaire 10111010 en son équivalent hexadécimal. Sélectionnez la réponse correcte dans la

Plus en détail

Partie 2 : Programmation réseau «de base» en C#

Partie 2 : Programmation réseau «de base» en C# Partie 2 : Programmation réseau «de base» en C# Plan du cours Généralités Communication Protocoles et serveurs associés Ip et port Client internet connecté Serveur internet connecté Protocole de communication

Plus en détail

Comment communiquer efficacement des informations entre les systèmes et/ou les humains?

Comment communiquer efficacement des informations entre les systèmes et/ou les humains? Sciences et Technologies de l Industrie et du Développement Durable Réseaux et internet CI0 : transmission de l'information cours Tle STI2D TRANS Comment communiquer efficacement des informations entre

Plus en détail

SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM

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

Plus en détail

Cours. Majeure Informatique Ecole Polytechnique. Applications client/serveur

Cours. Majeure Informatique Ecole Polytechnique. Applications client/serveur Cours Système et Réseaux Majeure Informatique Ecole Polytechnique 7 Applications client/serveur François Bourdoncle Francois.Bourdoncle@ensmp.fr http://www.ensmp.fr/ bourdonc/ 1 Plan Les sockets d Unix

Plus en détail

La taille de fenêtre est le processus TCP utilisé pour préparer les données à transmettre

La taille de fenêtre est le processus TCP utilisé pour préparer les données à transmettre 1 À quel protocole les serveurs de messagerie font-ils appel pour communiquer les uns avec les autres? FTP HTTP TFTP SMTP POP SNMP 2 Lequel de ces énoncés décrit le fonctionnement de la taille de fenêtre

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

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

Enseignement transversal Réseaux Informatiques fonctionnant sous I.P. INTRODUCTION

Enseignement transversal Réseaux Informatiques fonctionnant sous I.P. INTRODUCTION INTRODUCTION «Tous les deux jours, nous produisons autant d informations que nous en avons générées depuis l aube de la civilisation jusqu en 2003» Une estimation d'eric Schmidt, patron de Google, lors

Plus en détail

Sujet Projets 2 nd Semestre

Sujet Projets 2 nd Semestre Sujet Projets 2 nd Semestre Seuls les appels systèmes vus en cours sont autorisés. L usage d autres fonctions doit impérativement être validé par l enseignant. La date d ouverture pour l assignation de

Plus en détail

Laboratoire de téléinformatique Introduction à l analyseur de réseau Wireshark (Ethereal)

Laboratoire de téléinformatique Introduction à l analyseur de réseau Wireshark (Ethereal) Laboratoire de téléinformatique Introduction à l analyseur de réseau Wireshark (Ethereal) Description Wireshark est un analyseur de protocole gratuit pour Windows, Unix et ses dérivés. Il permet d examiner

Plus en détail

LA COMMUNICATION DE L INFORMATION EN RESEAUX

LA COMMUNICATION DE L INFORMATION EN RESEAUX LA COMMUNICATION DE L INFORMATION EN RESEAUX A LES RESEAUX Un réseau est un ensemble d objets connectés entre eux. Il permet de faire circuler un certain nombre d information entre ces objets selon des

Plus en détail

La programmation Comment programmer un échange entre deux stations Ethernet? L API socket

La programmation Comment programmer un échange entre deux stations Ethernet? L API socket Bus de terrain Mise en œuvre d Ethernet et TCP/IP 1 Thèmes abordés La programmation Comment programmer un échange entre deux stations Ethernet? L API socket Les protocoles Support physique d Ethernet Liaison

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

Internet. PC / Réseau

Internet. PC / Réseau Internet PC / Réseau Objectif Cette présentation reprend les notions de base : Objectif, environnement de l Internet Connexion, fournisseurs d accès Services Web, consultation, protocoles Modèle en couches,

Plus en détail

Couche réseau : autour d IP. Claude Chaudet

Couche réseau : autour d IP. Claude Chaudet Couche réseau : autour d IP Claude Chaudet 2 ICMP : Signalisation dans IP Positionnement et rôle d'icmp IP est, en soi, un mécanisme simple dédié à l'acheminement de trames Il ne définit pas de messages

Plus en détail

L adressage IP & MAC

L adressage IP & MAC L adressage IP & MAC 1. Adresse MAC 1.1. Définition Dans un réseau informatique, l adresse MAC (Media Access Control) est l identifiant physique d une carte réseau d un périphérique. Stockée par le constructeur

Plus en détail

TP SIMULATION RESEAU Logiciel PACKET TRACER

TP SIMULATION RESEAU Logiciel PACKET TRACER TP SIMULATION RESEAU Logiciel PACKET TRACER Objectif du TP : Choix du matériel pour faire un réseau Comprendre l adressage IP Paramétrer des hôtes sur un même réseau pour qu ils communiquent entre eux

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

Travaux pratiques Utilisation de Wireshark pour examiner une capture DNS UDP

Travaux pratiques Utilisation de Wireshark pour examiner une capture DNS UDP Travaux pratiques Utilisation de Wireshark pour examiner une capture DNS UDP Topologie Objectifs 1re partie : Enregistrer les informations de configuration IP d un ordinateur 2e partie : Utiliser Wireshark

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

1 Généralités sur les réseaux informatiques. 2 Organisation de l'internet. 3 Les services de l'internet. 4 Les protocoles TCP IP

1 Généralités sur les réseaux informatiques. 2 Organisation de l'internet. 3 Les services de l'internet. 4 Les protocoles TCP IP 1 sur les réseaux informatiques 2 Organisation de l'internet 3 Les services de l'internet 4 Les protocoles TCP IP 5 Moyens de connexion à l'internet 6 Sécurité sur l'internet 89 4 Les protocoles TCP IP

Plus en détail