IMPLEMENTATION DE TCP/UDP LES SOCKETS



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

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

Communication sous UNIX les sockets

Communication par sockets

Travaux Pratiques Introduction aux réseaux IP

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

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

Programmation Réseau. Anthony Busson IUT Info Lyon 1

VoIP et "NAT" VoIP et "NAT" 1/ La Traduction d'adresse réseau. 1/ La traduction d'adresse réseau. 1/ La traduction d'adresse réseau

Programmation Réseau en C sous Unix

Le modèle client-serveur

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

Cours 6 : Tubes anonymes et nommés

NAS 224 Accès distant - Configuration manuelle

DUT Informatique Module Système S4 C Département Informatique 2009 / Travaux Pratiques n o 5 : Sockets Stream

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

Live box et Nas Synology

Configurer ma Livebox Pro pour utiliser un serveur VPN

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

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

Guide de configuration de la Voix sur IP

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Partie 1 : Architecture et communications Client/Serveur

Sur un ordinateur exécutant Windows 2000 Server Ayant une adresse IP statique

Live box et Nas Synology

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

NOTE D'APPLICATION CONCERNANT LA MISE EN SERVICE DE MATERIELS SUR RESEAU IP

Service de noms des domaines (Domain Name System) Cours administration des services réseaux M.BOUABID,

Exécutif temps réel Pierre-Yves Duval (cppm)

Copyright. Partie 1 : Architecture et communications Client/Serveur. Plan de la première partie. Remerciements. Les modules SPAI/AdminSR

Le Protocole DHCP. Définition. Références. Fonctionnement. Les baux

Programmation client-serveur sockets - RPC

Exercice sur les Dockers

Internets. Informatique de l Internet: le(s) Internet(s) Composantes de l internet R3LR RENATER

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

CONFIGURATION DE L'ACCÈS À DISTANCE POUR LE SYSTÈME D'ENREGISTREMENT VIDÉO NUMÉRIQUE QT17D324SC

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

La Solution Crypto et les accès distants

Configuration Routeur DSL pour Xbox LIVE ou PlayStation-Network

Sécurité GNU/Linux. Iptables : passerelle

Programmation Internet en Java

Réseaux IUP2 / 2005 DNS Système de Noms de Domaine

Logiciel de connexion sécurisée. M2Me_Secure. NOTICE D'UTILISATION Document référence :

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

Proxy et reverse proxy. Serveurs mandataires et relais inverses

Contrôle de la DreamBox à travers un canal SSH

Administration Réseau sous Ubuntu SERVER Serveur DHCP

UDP/TCP - Protocoles transport

Introduction. Adresses

Master d'informatique 1ère année Réseaux et protocoles

Service de certificat

Résolution des problèmes de connexion XDMCP aux hôtes UNIX et Linux

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

INSTALLATION ET CONFIGURATION D'UN SERVEUR FTP

Formation Iptables : Correction TP

Services OSI. if G.Beuchot. Services Application Services Présentation - Session Services Transport - Réseaux - Liaison de Données - Physique

le minimum pour communiquer par réseau (sans toutefois y comprendre grand chose)

Les cahiers pratiques de Anonymat.org. SocksCap32. Edition du 20 Octobre 2000

Les messages d erreur d'applidis Client

CREER UN ENREGISTREMENT DANS LA ZONE DNS DU DOMAINE

Chap.9: SNMP: Simple Network Management Protocol

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

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

Sécurité des réseaux Firewalls

Protocoles réseaux. Abréviation de Binary Digit. C'est la plus petite unité d'information (0, 1).

TP de réseaux : Domain Name Server.

II- Préparation du serveur et installation d OpenVpn :

Domain Name System. F. Nolot

Configurez votre Neufbox Evolution

1 Résolution de nom Introduction à la résolution de noms Le système DNS Les types de requêtes DNS...

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

//////////////////////////////////////////////////////////////////// Administration systèmes et réseaux

Guide SQL Server 2008 pour HYSAS

Plan. Le système de transfert de fichiers d'internet. Introduction aux systèmes de transfert de fichiers Le protocole FTP.

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

FileZilla. Sauvegarder son site Guppy à l aide de. Sommaire:

LANDPARK NETWORK IP LANDPARK NETWORK IP VOUS PERMET D'INVENTORIER FACILEMENT VOS POSTES EN RÉSEAU

RMI le langage Java XII-1 JMF

Réaliser un accès distant sur un enregistreur DVR

Solutions informatiques (SI) Semestre 1

COMMENT AUTORISER LES PARTAGES RESEAUX ET IMPRIMANTE SOUS L ANTIVIRUS FIREWALL V3

Entraînement à l épreuve de QCM 40 mn

Projet gestion d'objets dupliqués

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Installation et paramétrage de Fedora dans VirtualBox.

TP Sur SSH. I. Introduction à SSH. I.1. Putty

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

FACILITER LES COMMUNICATIONS. Le gestionnaire de réseau VPN global de Saima Sistemas

Parallels Plesk Panel. Module Pare-feu de Parallels Plesk Panel 10 pour Linux/Unix. Guide de l'administrateur

Serveur FTP. 20 décembre. Windows Server 2008R2

UltraVNC, UltraVNC SC réglages et configurations

Couche Transport TCP et UDP

1. Comment accéder à mon panneau de configuration VPS?

Introduction à la Programmation Parallèle: MPI

Protosafe : un service en ligne d archivage de données médicales

TAGREROUT Seyf Allah TMRIM

Sécurisation du réseau

NOTIONS DE RESEAUX INFORMATIQUES

Transcription:

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 socket est réalisée par l'obtention d'un descripteur sur lequel il est possible de lire et écrire comme pour un fichier. 1 - GENERALITES Les caractéristiques des sockets sont décrites par des constantes déclarées que l'on trouve dans la bibliothèque : sys/socket.h. Le domaine d'une socket précise si elle est : - locale au système AF_UNIX on a alors struct sockaddr_un{ short sun_family; char sun_path[108]; } - accessible au domaine INTERNET AF_INET, on a alors struct sockaddr_in short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8]; } D'autres domaines peuvent exister dont nous ne parlerons pas : X25, XEROX, DEC,... Le type d'une socket est le protocole sous-jacent transporté : - SOCK_STREAM est le protocole TCP, - SOCK_DGRAM est le protocole UDP, - SOCK_RAW est l'accès direct au protocole IP qui est le protocole de la couche 3 sur INTERNET, il est réservé aux super-utilisateurs, - SOCK_SEQPACKET correspond au protocole XEROX. La création d'une socket se fait par appel à la fonction int socket (domaine,type,protocole) Son retour est un descripteur qui donne un accès à ses caractéristiques : type, domaine, protocole, état, adresses des tampons de réception et d'émission, pointeurs sur ces tampons, processus en liaison avec les mécanismes asynchrones SIGURG et SIGIO. Les descripteurs de sockets étant de même nature que ceux identifiant les fichiers, ceci permet de rediriger aisément les entrées/sorties standards. Cela veut dire aussi que

47 seule une application fille peut connaître ce descripteur. Pour pallier ce problème une primitive de nommage permet d'associer une adresse externe à une socket int bind(sock,p_adresse,lg). Dans le cas d'une socket du domaine AF_UNIX, l'adresse externe est un chemin valide. Par suite, la socket apparaîtra lors d'un ls et sera retiré par un rm. Dans le cas du domaine AF_INET l'adresse est constituée par celle de l'hôte et un choix de numéro de port. L'adresse de l'hôte peut être obtenue par la primitive gethostbyname, la valeur par défaut du localhost est INADDR_ANY. 2 - PROTOCOLE UDP : SOCKET SOCK_DGRAM Ce protocole ne permet pas à l'expéditeur de savoir si son message est arrivé mais il préserve les séparations entre messages. Le protocole NFS s'appuie sur UDP. Le processus qui désire communiquer par ce moyen doit - disposer d'une socket sur le système local - d'une adresse de son interlocuteur. Les primitives sont les suivantes : int sendto( sock, /* socket d'émission */ msg, /* adresse du message */ lg, /* longueur du message*/ option, /* =0 pour SOCK_DGRAM */ p_dest, /* pointeur adresse socket de réception */ lgdest /* longueur de l'adresse de réception */ ) int recvfrom(sock, /* socket d'émission */ msg, /* adresse de récupération du message */ lg, /* taille de l'espace de récupération */ option, /* =0 ou MSG_PEEK */ p_exp, /* pointeur adresse socket expéditrice */ lgdest /* longueur de la zone allouée à p_exp */ ) La primitive recvfrom est bloquante jusqu'à réception du message ou armement d'un temporisateur par la primitive fcntl. On peut dégager la forme générale d'un processus client relié avec un processus serveur s'appuyant sous UDP. Pour le code du serveur, on a : - création de la socket et attachement au port de service, - détachement du serveur du terminal de lancement, - boucle infinie consistant à : attendre une requête, la traiter, envoyer la réponse.

48 Pour le code client, on a : - création de la socket, - préparation de l'adresse du serveur, - envoi du message, - attente du résultat, - exploitation du résultat. Lorsque le processus serveur communique toujours avec le même client on a la possibilité d'utiliser des pseudo-connexions. Ce mécanisme permet de créer et associer définitivement deux sockets (primitive socketpair). Les opérations d'émission et réception sont alors simplifiées (primitives read et write). 3 - PROTOCOLE TCP : SOCKET SOCK_STREAM Le protocole TCP suppose un flot continu contrôlé de données, il y a établissement d'un circuit virtuel entre les deux éléments communiquant. Il y a donc un initiateur de la communication, le client, qui demande à l'autre, le serveur, s'il accepte la communication. Il est clair qu'il y a donc dissymétrie complète entre les deux codes. Le serveur dispose d'une socket d'écoute et lorsqu'une demande parvient au système, il est réveillé. Une nouvelle socket dite de service est créé et le travail est délégué par le serveur à un nouveau processus créé par fork. C'est lui qui assurera le service alors que le serveur est remis en veille d'écoute sur la socket d'écoute. L'algorithme du serveur est grossièrement : - création et attachement de la socket d'écoute, - ouverture du service par écoute - boucle infinie consistant à attendre une demande, créer un sous processus de traitement. Les primitives permettant sa réalisation sont : - une primitive de création de file d'attente de connexions entrantes int listen (sock,nb) - une primitive d'acceptation de connexion qui renvoit un descripteur de socket int accept(sock,p_adr,p_lgadr) L'algorithme du client est grossièrement : - création et attachement de la socket d'écoute, - construction de l'adresse du serveur, - boucle infinie ou temporisée consistant à demander la connexion - dialogue avec le serveur. La seule primitive propre au service est celle de demande de connexion int connect(sock,p_adr,lgadr)

49 la valeur de retour 0 indique qu'il y a réussite et que la socket du client est connectée à une socket correspondant à la connexion pendante chez le serveur. Une fois établie la connexion entre client et serveur, le flot d'information entre les deux sockets est continu, ceci signifie qu'il n'y a pas préservation de la séparation entre les messages. La seule garantie qu'offre TCP et que les messages sont dans le bon ordre. L'émission se fait par la primitive int send(sock,msg,lg,option). La variable option peut prendre deux valeurs MSG_OOB dans le cas de message urgent, 0 sinon. Ce dernier cas est équivalent à la primitive write. La réception se fait par la primitive int recv(sock,msg,lg,option). La variable option peut prendre trois valeurs MSG_OOB dans le cas de message urgent, MSG_PEEK dans le cas où on consulte le message sans le consommer, 0 sinon. Ce dernier cas est équivalent à la primitive read. L'arrêt de communication se fait par la primitive int shutdown(sock,sens). Elle permet de signaler que sur la socket connectée par le descripteur sock elle ne veut plus recevoir (sens=0), émettre (sens=1), recevoir ou émettre (sens=2). 4 - TRAITEMENT DE CARACTERES URGENTS Certains caractères envoyés par une socket peuvent avoir un caractère urgent. Par exemple, dans le cas ou un programme boucle indéfiniment un caractère d'interruption. Seul le protocole TCP permet la prise en compte de tels caractères par la notion de caractère OOB(Out Of Band) et l'asynchronisme obtenu au moyen du signal particulier SIGURG qui accompagne leur arrivée sur une socket. L'émission de tel caractère est fait par une primitive send et l'option MSG_OOB. Si le message envoyé contient plus d'un caractère seul le dernier est considéré comme urgent. En réception, le système peut mémoriser un seul caractère urgent par socket. Par suite, l'arrivée d'un nouveau caractère fait perdre le précédent. Cependant on peut obliger le système à mémoriser ces caractères dans le flot normal. Le système repère alors par une marque logique les caractères urgents. La lecture de message sans l'option MSG_OOB s'arête à la rencontre d'un caractère OOB. La primitive ioctl associée à l'opération SIOCATMARK ioctl(sock,siocatmark,&rep) /* rep=1 si le caractère est OOB */ teste si la position courante dans le buffer est un caractère OOB. L'asynchronisme peut être pris en compte en inscrivant une fonction recv suivi d'une fonction ioctl dans le handler associé au traitement du signal SIGURG.

50 4 - PARAMETRAGE DES Il est possible d'accéder aux paramètres des sockets par l'intermédiaire de deux primitives : int getsockopt(desc,niveau,option,p_arg,lg) int setsockopt(desc,niveau,option,p_arg,lg) Le paramètre option définit le type d'information que l'on veut extraire : - SO_TYPE extraction du type - SO_SNDBUF *p_arg esat la nouvelle taille du tampon d'émission - SO_RCVBUF *p_arg esat la nouvelle taille du tampon de réception - SO_OOBBINLINE si *p_arg=1 les caractères OOB sont dans le flot normal. - SO_LINGER si p_arg->l_onoff=1 lors de la fermeture, le processus appelant reste bloqué juqu'à complète émission des caractères ou écoulement du temps fixé par p_arg->l_linger.