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

Interface des sockets

Interface des sockets Interface des sockets IUT Bordeaux I 08/12/2008 Interface des Sockets 1 A quoi servent les sockets? Applications client/serveur Transfert de fichiers, Connexion à distance, Courrier électronique, Groupe

Plus en détail

NFA083 Réseau et Administration Web TCP/IP

NFA083 Réseau et Administration Web TCP/IP NFA083 Réseau et Administration Web TCP/IP Sami Taktak sami.taktak@cnam.fr Centre d Étude et De Recherche en Informatique et Communications Conservatoire National des Arts et Métiers Rôle de la Couche

Plus en détail

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

M3101 Principes des systèmes d exploitation. Les sockets

M3101 Principes des systèmes d exploitation. Les sockets M3101 Principes des systèmes d exploitation Les sockets IUT d Orsay DUT Informatique 2015 / 2016 Les sockets Une interface de communication bidirectionnelle entre les processus résidant dans le même système

Plus en détail

Programmation des sockets de Berkeley en C

Programmation des sockets de Berkeley en C Programmation des sockets de Berkeley en C 26 février 2012 IUT de Lyon - La Doua - Département Informatique 1 Introduction aux sockets Généralités Description 2 Programmation des sockets en C Gestion de

Plus en détail

Systèmes d exploitation

Systèmes d exploitation Cours no. 7 Jean-Sébastien Coron Université du Luxembourg coron@clipper.ens.fr Communications inter-processus Méthodes de communications inter-processus: Les signaux. Pas de données transmises. Les tuyaux:

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

Les protocoles UDP et TCP

Les protocoles UDP et TCP 3 Les protocoles UDP et TCP TCP comme UDP s exécute au-dessus d IP et se fonde sur les services fournis par ce dernier. TCP (Transport Control Protocol) assure un service de transmission de données fiable

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

L3 informatique TP Réseaux n o 4 : Programmation client-serveur en C

L3 informatique TP Réseaux n o 4 : Programmation client-serveur en C L3 informatique TP Réseaux n o 4 : Programmation client-serveur en C Sovanna Tan Octobre 2009 1/27 Sovanna Tan L3 informatique TP Réseaux n o 4 : Programmation client Plan 1 Les fonctions pour les sockets

Plus en détail

Architecture Client/Serveur. andreu@lirmm.fr 1

Architecture Client/Serveur. andreu@lirmm.fr 1 Architecture Client/Serveur andreu@lirmm.fr 1 Qu'est-ce qu'un serveur? un «logiciel serveur» offre un service sur le réseau, le «serveur» est la machine sur laquelle s'exécute le logiciel serveur, le serveur

Plus en détail

Mode client - serveur Généralités dur les différents modes de communications

Mode client - serveur Généralités dur les différents modes de communications Mode client - serveur Généralités dur les différents modes de communications» Socket» Stream» RPC Les Sockets source : Réseaux locaux et Internet (Laurent Toutain)[HERMES] Mécanisme d'interface de programmation»

Plus en détail

Introduction. UDP et IP UDP

Introduction. UDP et IP UDP Introduction Protocoles TCP et UDP M. Berthet. Les illustrations sont tirées de l ouvrage de Guy Pujolle, Cours réseaux et Télécom TCP (Transmission Control Protocol) et UDP (User Datagram Protocol) assurent

Plus en détail

Travaux Pratiques Réseaux Programmation réseau - Sockets, Modèle Client-serveur Septembre 2007. Eléments de programmation avec les sockets

Travaux Pratiques Réseaux Programmation réseau - Sockets, Modèle Client-serveur Septembre 2007. Eléments de programmation avec les sockets Master INFORMATIQUE / MIAGE Réseaux Faculté des Sciences - Université de Nantes 2007/2008 Travaux Pratiques Réseaux Programmation réseau - Sockets, Modèle Client-serveur Septembre 2007 Eléments de programmation

Plus en détail

Programmations des Sockets. Benmoussa Yahia Université M hamed Bougara de Boumerdès Yahia.benm@gmail.com

Programmations des Sockets. Benmoussa Yahia Université M hamed Bougara de Boumerdès Yahia.benm@gmail.com Programmations des Sockets Benmoussa Yahia Université M hamed Bougara de Boumerdès Yahia.benm@gmail.com Objectifs Différencier entre les modes de transport orientés connexion et non-orientés connexion

Plus en détail

INF3270 : Laboratoire 5 - Analyse TCP

INF3270 : Laboratoire 5 - Analyse TCP INF3270 : Laboratoire 5 - Analyse TCP Eric Gingras Adaptation d'une présentation créé par le laboratoire de téléinformatique de l'université du Québec à Montréal (Alain Sarrazin, Elmi Hassan et Guy Francoeur)

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

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

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

Les Sockets/1. samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Les Sockets/1. samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) - Les Sockets/1 La version Berkeley 4.2 d Unix a été la première à inclure TCP/IP dans le noyau du système d exploitation et à proposer une interface de programmation de ces protocoles : les sockets. Les

Plus en détail

Réseaux - partie 4 Transport

Réseaux - partie 4 Transport Réseaux - partie 4 Transport Michel RIVEILL, INP Grenoble Laboratoire SIRAC INRIA Rhône-Alpes 655, av. de l Europe - 38330 Montbonnot St Martin Michel.Riveill@inpg.fr Plan Introduction Physique Liaison

Plus en détail

LES PROTOCOLES TCP ET UDP

LES PROTOCOLES TCP ET UDP LES PROTOCOLES TCP ET UDP 1. LES NUMEROS DE PORT TCP et UDP sont des protocoles de la couche Transport (niveau 4) du modèle OSI. A la réception d'un datagramme, une machine est identifiée de manière unique

Plus en détail

IV - La COUCHE TRANSPORT. dans le modèle TCP/IP

IV - La COUCHE TRANSPORT. dans le modèle TCP/IP Université PAUL SABATIER TOULOUSE III SUPPORT de COURS Thierry DESPRATS IV - La COUCHE TRANSPORT dans le modèle TCP/IP Sommaire Introduction Notion de port Mécanismes communs à UDP et TCP Encapsulation

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

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

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

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

Documentation technique sur l utilisation des Sockets

Documentation technique sur l utilisation des Sockets Documentation technique sur l utilisation des Sockets Pascal Sicard Table des matières 1 INTRODUCTION 3 2 ENVIRONNEMENT DE PROGRAMMATION 3 3 PARAMETRES UTILISÉS DANS LES PROCEDURES 3 3.1 Le domaine d utilisation

Plus en détail

TP Développement Réseau n 2 : Socket UDP

TP Développement Réseau n 2 : Socket UDP TP Développement Réseau n 2 : Socket UDP 2012 tv - v.1.0 Sommaire L interface socket 2 Pré-requis............................................... 2 Définition...............................................

Plus en détail

Nicolas Baudru mél : nicolas.baudru@esil.univmed.fr page web : nicolas.baudru.perso.esil.univmed.fr

Nicolas Baudru mél : nicolas.baudru@esil.univmed.fr page web : nicolas.baudru.perso.esil.univmed.fr Année 2010-2011 Réseaux I Conclusion : retour sur l architecture protocolaire Nicolas Baudru mél : nicolas.baudru@esil.univmed.fr page web : nicolas.baudru.perso.esil.univmed.fr 1 Plan 1 Rappels 2 Le dialogue

Plus en détail

Exemple : Lecture d un registre, à l offset 4, sur l équipement d ID 9, qui renvoie la valeur 5 :

Exemple : Lecture d un registre, à l offset 4, sur l équipement d ID 9, qui renvoie la valeur 5 : 1 Ethernet TCP/IP Protocole Modbus TCP 2 Ethernet TCP/IP - Protocole Modbus TCP Codage des Données Type de représentation des adresse et données utilisé par Modbus : big-endian, soit :lorsqu une quantité

Plus en détail

I. Moniteur POP3 de emails en C

I. Moniteur POP3 de emails en C Année universitaire 2014/2015 Site : Luminy St-Charles St-Jérôme Cht-Gombert Aix-Montperrin Aubagne-SATIS Sujet de : 1 er semestre 2ème semestre Session 2 Examen de : L3 Code du module : SIN5U3 Calculatrices

Plus en détail

Couche transport TCP

Couche transport TCP Couche transport TCP Sébastien Jean IUT de Valence Département Informatique v3.1, 30 avril 2012 TCP, en bref Généralités TCP? TCP (Transmission Control Protocol, RFC 793) fournit un service de transfert

Plus en détail

Réseaux - Cours 2. UDP et TCP : Protocoles de Transport de TCP/IP. Cyril Pain-Barre. IUT Informatique Aix-en-Provence

Réseaux - Cours 2. UDP et TCP : Protocoles de Transport de TCP/IP. Cyril Pain-Barre. IUT Informatique Aix-en-Provence éseaux - Cours 2 UDP et : Protocoles de Transport de /IP Cyril Pain-Barre IUT Informatique Aix-en-Provence Semestre 2 - version du 22/3/2011 1/67 Cyril Pain-Barre Transport UDP et 1/90 Services et Limitations

Plus en détail

Encapsulation et analyse des échanges Cheminement des trames et routage La couche Réseau La couche Transport

Encapsulation et analyse des échanges Cheminement des trames et routage La couche Réseau La couche Transport Travaux Dirigés Réseaux (modèle TCP/IP) Encapsulation et analyse des échanges Cheminement des trames et routage La couche Réseau La couche Transport andreu@lirmm.fr 1 TD1 Etude du modèle TCP/IP L objectif

Plus en détail

Niveau Couche 4 Application 3 Transport 2 Internet 1 Hôte-réseau

Niveau Couche 4 Application 3 Transport 2 Internet 1 Hôte-réseau Chapitre 3 Modèle TCP/IP Le modèle TCP/IP est nommé d après ses deux protocoles principaux TCP et IP, mais il comporte en réalité plusieurs dizaine de protocoles. Il définit un modèle de quatre couches.

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 réseaux TCP et UDP (en C et en Java)

Programmation réseaux TCP et UDP (en C et en Java) Chapitre 3 Programmation réseaux TCP et UDP (en C et en Java) 1 Préambule Le réseau doit être configuré de la manière suivante : 195.168.236.0/24 254 PC11 PC12 PC13 PC14 PC48 PC49 Vous téléchargerez les

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

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

Introduction. Licence MASS L3 Inf f3

Introduction. Licence MASS L3 Inf f3 Le modèle client serveur Introduction Licence MASS L3 Inf f3 Encapsulation : rappel Données Données Application En-tête En-tête Transport UDP Données TCP Données Paquet UDP Segment TCP En-tête IP Données

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

Concepts de base de l Internet Protocol IPv4. Module 2

Concepts de base de l Internet Protocol IPv4. Module 2 Concepts de base de l Internet Protocol IPv4 Module 2 Objectifs Comprendre les bases du protocole IPv4 IPv4 Internet Protocol version 4 (IPv4) est la 4ème version du protocole d internet et la première

Plus en détail

OS Réseaux et Programmation Système - C4

OS Réseaux et Programmation Système - C4 OS Réseaux et Programmation Système - C4 Rabie Ben Atitallah Rabie.benatitallah@univ-valenciennes.fr Sockets Communications dans les systèmes centralisés Communications dans les systèmes répartis Protocole

Plus en détail

Chapitre 3 : Les échanges dans le monde TCP-IP. Support des Services et Serveurs

Chapitre 3 : Les échanges dans le monde TCP-IP. Support des Services et Serveurs SI 5 BTS Services Informatiques aux Organisations 1 ère année Chapitre 3 : Support des Services et Serveurs Objectifs : Les échanges dans le monde TCP-IP Maîtriser le modèle TCP/IP, l'ensemble de ses protocoles,

Plus en détail

1.1 Remote Procedure Call (RPC)

1.1 Remote Procedure Call (RPC) 1.1 Remote Procedure Call (RPC) Le modèle Client-Serveur est un modèle simple à utiliser pour la structuration des systèmes répartis. Mais ce modèle s appuie sur des communications de type entrée/sortie

Plus en détail

IP - ICMP - UDP - TCP

IP - ICMP - UDP - TCP Encapsulation Ethernet IP ICMP TCP UDP IP - ICMP - UDP - TCP Université de Cergy-Pontoise 2006 2007 Encapsulation Ethernet IP ICMP TCP UDP Plan 1 Encapsulation 2 Ethernet 3 IP Datagramme

Plus en détail

ApTr. ApTr. Master Informatique 1ère année 1 er sem. ARES/NetArch 2012-2013. 1 Applications et transport (7 points) Anonymat : numéro à coller ICI

ApTr. ApTr. Master Informatique 1ère année 1 er sem. ARES/NetArch 2012-2013. 1 Applications et transport (7 points) Anonymat : numéro à coller ICI ApTr ApTr Justifiez vos réponses via les chronogrammes où il faut indiquer la taille des données et la fonctionnalité (Requête, Données ou Acquittement) du segment pour chaque transmission. 125o En série

Plus en détail

TP N o 4 de Réseaux Etude des protocoles de la couche transport d Internet UDP et TCP

TP N o 4 de Réseaux Etude des protocoles de la couche transport d Internet UDP et TCP TP N o 4 de Réseaux Etude des protocoles de la couche transport d Internet UDP et TCP Pascal Sicard 1 INTRODUCTION L objectif de ce TP est d observer et de commencer à comprendre le fonctionnement des

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

Rapport de TP sur le mini-serveur HTTP. Maxime Chambreuil - Sébastien Le Digabel

Rapport de TP sur le mini-serveur HTTP. Maxime Chambreuil - Sébastien Le Digabel Rapport de TP sur le mini-serveur HTTP Maxime Chambreuil - Sébastien Le Digabel 16 janvier 2003 Table des matières 1 Détails sur nos travaux 2 1.1 But du TP............................. 2 1.2 La fonction

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

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

Ch4 Interconnexion des postes dans un Lan Ethernet : protocoles des couches 3 à 7 du modèle OSI Dernière maj : lundi 2 avril 2007

Ch4 Interconnexion des postes dans un Lan Ethernet : protocoles des couches 3 à 7 du modèle OSI Dernière maj : lundi 2 avril 2007 Ch4 Interconnexion des postes dans un Lan Ethernet : protocoles des couches 3 à 7 du modèle OSI Dernière maj : lundi 2 avril 2007 I. RAPPEL : ADRESSAGE PHYSIQUE : (OSI 2)... 1 A. L ADRESSAGE DANS UN RESEAU

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

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

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

IMPLEMENTATION DE TCP/UDP LES SOCKETS

IMPLEMENTATION DE TCP/UDP LES SOCKETS IMPLEMENTATION DE TCP/UDP LES Les sockets sont le mécanisme fondamental de communications sous UNIX. Ils permettent des communications au sein du même système comme vers l'extérieur. La création d'une

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

TD 4 - Sockets et Client / Serveur

TD 4 - Sockets et Client / Serveur TD 4 - Sockets et Client / Serveur Exercice 1 Serveur d echo Écrire en Java un serveur TCP d echo (fichier echoserver.java) qui retourne aux clients ce que ces derniers lui émettent. Dans cette première

Plus en détail

Réseaux - Cours 3. IP : introduction et adressage. Cyril Pain-Barre. Semestre 1 - version du 13/11/2009. IUT Informatique Aix-en-Provence

Réseaux - Cours 3. IP : introduction et adressage. Cyril Pain-Barre. Semestre 1 - version du 13/11/2009. IUT Informatique Aix-en-Provence Réseaux - Cours 3 IP : introduction et adressage Cyril Pain-Barre IUT Informatique Aix-en-Provence Semestre 1 - version du 13/11/2009 1/32 Cyril Pain-Barre IP : introduction et adressage 1/24 TCP/IP l

Plus en détail

TP N 2. Programmation des sockets

TP N 2. Programmation des sockets TP N 2. Programmation des sockets Exercice 1 : Troubleshooting de TCP & UDP - Que contient le fichier /etc/services? - Quels ports sont utilisés par les protocoles ftp, telnet, smtp, http? - Quel est le

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

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

GIF-3001 Examen partiel 7 novembre 2011. Examen partiel A2011. GIF-3001 Réseau de transmission de données

GIF-3001 Examen partiel 7 novembre 2011. Examen partiel A2011. GIF-3001 Réseau de transmission de données 7 novembre 2011 A2011 GIF-3001 Réseau de transmission de données Question 1 (28 points sur 100) (10 points) (a) Dessinez la pile des protocoles Internet. Indiquez un rôle important pour chacune de ces

Plus en détail

Les réseaux : Principes de fonctionnement d Internet

Les réseaux : Principes de fonctionnement d Internet Les réseaux : Principes de fonctionnement d Internet Table des matières 1. Le modèle TCP/IP... 2 2. Couche 1 ou couche physique... 3 3. Couche 2 ou couche liaison ou couche lien... 4 4. Couche 3 ou couche

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

Livres disponibles à la bibliothèque (RDC)

Livres disponibles à la bibliothèque (RDC) Livres disponibles à la bibliothèque (RDC) Réseaux, 3 ème édition, A.TANENBAUM, 1997. TCP/IP : Architecture, protocoles et applications, 3 ème édition, D.COMER, 1998 TCP/IP : Administration de réseaux,

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 Vendredi 11 mai 2012 Durée 3h Licence MI, UE INF15, E. Thiel Notes de Cours/TD/TP autorisées; autres documents, calculettes,

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

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

VI - La couche réseau : adresse IP. LPSIL ADMIN 2014 M.A. Peraldi-Frati - IUT Nice Côte d Azur

VI - La couche réseau : adresse IP. LPSIL ADMIN 2014 M.A. Peraldi-Frati - IUT Nice Côte d Azur VI - La couche réseau : adresse IP LPSIL ADMIN 2014 M.A. Peraldi-Frati - IUT Nice Côte d Azur 86 La couche réseau Achemine les données entre l émetteur et le destinataire au travers de différents réseaux

Plus en détail

Cours réseaux Modèle OSI

Cours réseaux Modèle OSI Cours réseaux Modèle OSI IUT 1 Université de Lyon Introduction: le modèle OSI Un modèle théorique : le modèle OSI (Open System Interconnection) A quoi ça sert: Nécessité de découper/classifier l ensemble

Plus en détail

Utilisation des sockets pour des communications TCP/UDP de type client/serveur

Utilisation des sockets pour des communications TCP/UDP de type client/serveur Utilisation des sockets pour des communications TCP/UDP de type client/serveur Objectifs Comprendre le principe de la communication client/serveur. Etudier une application client/serveur (en utilisant

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

Collecte des examens du module Introduction aux Réseaux et Bases de Routage

Collecte des examens du module Introduction aux Réseaux et Bases de Routage INSTITUT SUPERIEUR DE GESTION DE TUNIS Collecte des examens du module Introduction aux Réseaux et Bases de Routage Examens corrigés Kaouther Nouira 2011-2012 Ministère de l Enseignement Supérieur, de le

Plus en détail

1 Programmation Client/Serveur basée sur TCP/IP

1 Programmation Client/Serveur basée sur TCP/IP Outils Informatique pour l ingénieur TD 1 Réseau et Web IP, Client/serveur 1 Programmation Client/Serveur basée sur TCP/IP 1.1 Buts de cette réalisation Ce TP sur la programmation client/serveur a pour

Plus en détail

NOTIONS FONDAMENTALES SUR LES RÉSEAUX CHAP. 2 MODÈLES OSI ET TCP/IP

NOTIONS FONDAMENTALES SUR LES RÉSEAUX CHAP. 2 MODÈLES OSI ET TCP/IP BTS I.R.I.S NOTIONS FONDAMENTALES SUR LES RÉSEAUX CHAP. 2 MODÈLES OSI ET TCP/IP G.VALET Nov 2010 Version 2.0 Courriel : genael.valet@diderot.org, URL : http://www.diderot.org 1 LE BESOIN D UN MODÈLE Devant

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

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

Median SR04 - Automne 2007 Les documents ne sont pas autorisés

Median SR04 - Automne 2007 Les documents ne sont pas autorisés Median SR04 - Automne 2007 Les documents ne sont pas autorisés - Utiliser le verso en cas de besoin Exercice 1 (1,5pts) : soit le réseau suivant dont l'adresse réseau est 130.252.0.0 : Segment 1.10.34.10.35.10.36

Plus en détail

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

Nom : Prénom : Gr. : N ét. : 1 1 Quelles sont les tables de routage de la machine M1 (troisième hôte de LAN 2 hostid = 3), des routeurs R1, R2 et R3 (sachant que la liaison vers l internet connecte à la gateway 88.1.77.200 à travers

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

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

DUT Informatique Module Système S4 C Département Informatique 2009 / 2010. Travaux Dirigés n o 3 : Sockets Stream

DUT Informatique Module Système S4 C Département Informatique 2009 / 2010. Travaux Dirigés n o 3 : Sockets Stream iut ORSAY DUT Informatique Département Informatique 2009 / 2010 Travaux Dirigés n o 3 : Sockets Stream Objectifs : comprendre les principes et les mécanismes de communication par sockets stream, être capable

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

Travaux Pratiques. Octobre 2015 CESI

Travaux Pratiques. Octobre 2015 CESI Travaux Pratiques Octobre 2015 CESI 1. Adressage dans Internet 1.1 Identification d une machine Une machine (appelée aussi hôte ou host) est identifiée dans l Internet par son adresse. L adresse Internet

Plus en détail

Internet - couche transport

Internet - couche transport Plan 1 Client - Serveur Internet - couche transport Nicolas Delestre et Géraldine Del Mondo 2 Ports 3 UDP 4 TCP Connexion Déconnexion 5 Outils UNIX 6 Conclusion TCP UDP - V1.0.1 1 / 24 TCP UDP - V1.0.1

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

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

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

Les Protocoles de Transport Introduction à l analyse de trames

Les Protocoles de Transport Introduction à l analyse de trames Les Protocoles de Transport Introduction à l analyse de trames telnet localhost 80 telnet localhost 80 Trying ::1 connected to localhost. Escape character is ^]. Demande de connexion du client Ouverture

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

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

La Couche Transport. Rôle de la couches OSI.4. Rôle des couches OSI (4b) Fondations et Besoins. UDP :Protocole non orienté connexion

La Couche Transport. Rôle de la couches OSI.4. Rôle des couches OSI (4b) Fondations et Besoins. UDP :Protocole non orienté connexion Rôle de la couches OSI.4 Couche transport La Couche Transport Protocoles TCP et UDP Communication de bout en bout Abstraction de la structure du réseau Donnée Message Multiplexage 1 machine n services

Plus en détail

Trames Ethernet et IEEE 802.3:

Trames Ethernet et IEEE 802.3: Trames Ethernet et IEEE 802.3: PLAN I. Introduction II.Trames Ethernet et IEEE 802.3: Trame ETHERNET : III. 1. Description des différentes couches de TCP/IP 2. Couche INTERNET la norme IEEE 802.3 est légèrement

Plus en détail

Le protocole TCP. PLAN Présentation Les segments TCP Le multiplexage La fenêtre coulissante La connexion Les données urgentes Les options Conclusion

Le protocole TCP. PLAN Présentation Les segments TCP Le multiplexage La fenêtre coulissante La connexion Les données urgentes Les options Conclusion Le protocole TCP cb (/home/kouna/d01/adp/bcousin/fute/cours/internet/04-tcp.fm- 18 Septembre 1998 09:25) PLAN Présentation Les segments TCP Le multiplexage La fenêtre coulissante La connexion Les données

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

Réseaux Informatiques 2

Réseaux Informatiques 2 Ministère de l Enseignement Supérieur et de la Recherche Scientifique Université Mohamed Khider - Biskra Faculté des Sciences Exactes et des Sciences de la Nature et de la Vie Département d informatique

Plus en détail

Une approche descendante

Une approche descendante Internet Une approche descendante P. Bakowski bako@ieee.org Qu'est-ce que l'internet? réseau mondial P. Bakowski 2 Des liens câbles métalliques, fibres optiques, liens radio - débit en bits/s P. Bakowski

Plus en détail