Cours de Réseau et communication Unix n 7



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

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

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

Travaux Pratiques Introduction aux réseaux IP

Programmation Réseau. Anthony Busson IUT Info Lyon 1

Communication par sockets

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

M Architecture des réseaux

Le service de nom : DNS

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

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

Nommage et adressage dans Internet

DNS. Olivier Aubert 1/27

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

Introduction. Adresses

Exemple d application: l annuaire DNS Claude Chaudet

Domain Name System. F. Nolot

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

Administration réseau Résolution de noms et attribution d adresses IP

Plan. Programmation Internet Cours 3. Organismes de standardisation

Administration Système & Réseau. Domain Name System Historique & Concepts Fonctionnalités & Hiérarchie Requêtes & Base de donnée DNS

DHCP et NAT. Cyril Rabat Master 2 ASR - Info Architecture des réseaux d entreprise

Communication sous UNIX les sockets

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

Réseaux - Cours 4. Traduction d adresse (NAT/PAT) et Service de Nom de Domaine (DNS) Cyril Pain-Barre. IUT Informatique Aix-en-Provence

- FICHE DE PROCEDURE - Configurer un serveur DNS avec Bind9 sur Debian

ASRb/Unix Avancé II. Chapitre 2. Utilitaires réseaux. Arnaud Clérentin, IUT d Amiens, département Informatique

Résolution de noms. Résolution de noms

Domain Name System ot ol F. N 1

B1-4 Administration de réseaux

Réseaux. 1 Généralités. E. Jeandel

Introduction au DNS. Les noms de domaine s'écrivent de la gauche vers la droite, en remontant vers la racine et sont séparés par un "." (point).

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

Programmation Réseau en C sous Unix

TP2 - Conguration réseau et commandes utiles. 1 Généralités. 2 Conguration de la machine. 2.1 Commande hostname

Introduction aux Technologies de l Internet

Services Réseaux - Couche Application. TODARO Cédric

Cours admin 200x serveur : DNS et Netbios

Cisco Certified Network Associate

Étude de l application DNS (Domain Name System)

DNS ( DOMAIN NAME SYSTEM)

6 1 ERE PARTIE : LES PRINCIPES DE BASE DE DNS

BIND : installer un serveur DNS

Réseaux. DNS (Domaine Name System) Master Miage 1 Université de Nice - Sophia Antipolis. (second semestre )

Daniel POULIN DRT 3808 (version 2010) Faculté de droit, Université de Montréal

Programmation Internet en Java

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

Domain Name Service (DNS)

Cours CCNA 1. Exercices

L annuaire et le Service DNS

Internet Le service de noms - DNS

Gestion centralisée d un réseau de sites discrets. Nicolas JEAN

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

Exercice sur les Dockers

INSTALLATION D UN SERVEUR DNS SI5

Serveurs de noms Protocoles HTTP et FTP

Présentation du système DNS

Les clés pour un hébergement web réussi. Bruno Mairlot Maehdros SPRL

Domain Name System. Schéma hiérarchique. Relation

Rappels réseaux TCP/IP

Tunnels et VPN. 22/01/2009 Formation Permanente Paris6 86

DHCP. Dynamic Host Configuration Protocol

INTERNET & RESEAUX. Dino LOPEZ PACHECO lopezpac@i3s.unice.fr

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

Il est possible d associer ces noms aux langages numérique grâce à un système nommé DNS(Domain Name System)

Installation Serveur DNS Bind9 Ubuntu LTS

Programmation système de commandes en C

Playing with ptrace() for fun and profit

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

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

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

Applications. Applications. Le système de nommage d Internet: Domain Name System. Applications. service de noms

Plan. Rappels sur Netflow v1 v8. Netflow v9. Collecteur UTC «IPFlow» Cisco IOS : Implémentation de Netflow IPv6

TP : Introduction à TCP/IP sous UNIX

SSL. Secure Socket Layer. R. Kobylanski janvier version 1.1 FC INPG. Protocole SSL Application avec stunnel

Outils de l Internet

Rappel: Le routage dans Internet. Contraintes. Environnement et contraintes. La décision dans IP du routage: - Table de routage:

L3 informatique TP n o 2 : Les applications réseau

Domaine Name System. Auteur: Congduc Pham, Université Lyon 1. Figure 1: Schéma des salles TP11 et TD4

Algorithmique et langages du Web

Applications en réseau

Chapitre : Les Protocoles

Capture, Filtrage et Analyse de trames ETHERNET avec le logiciel Wireshark. Etape 1 : Lancement des machines virtuelles VMWARE et de Wireshark

Ce cours est la propriété de la société CentralWeb. Il peut être utilisé et diffusé librement à des fins non commerciales uniquement.

Réseaux IUP2 / 2005 IPv6

R eseaux TP RES /2015

Le protocole TCP. Services de TCP

DNS : Domaine Name System

Ch2 La modélisation théorique du réseau : OSI Dernière maj : jeudi 12 juillet 2007

2. DIFFÉRENTS TYPES DE RÉSEAUX

Protocoles IP (2/2) M. Berthet. Les illustrations sont tirées de l ouvrage de Guy Pujolle, Cours réseaux et Télécom Contributions : S Lohier

Réseaux Internet & Services

Glossaire. ( themanualpage.org) soumises à la licence GNU FDL.

Bind, le serveur de noms sous Linux

Internet et Programmation!

Réseaux et protocoles Damien Nouvel

LINUX REDHAT, SERVICES RÉSEAUX/INTERNET

1 Configuration réseau des PC de la salle TP

La couche transport. La couche Transport. La couche Transport et Internet. Cours Réseau Esial 2ème. 5. La couche transport TCP/UDP et les applications

Transcription:

Cours de Réseau et communication Unix n 7 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/ Lien court : http://j.mp/rezocom Edouard.Thiel@univ-amu.fr Cours de Réseau et communication Unix n 7 CC BY-NC 1/27

Plan du cours n 7 1. Notions de port et de service 2. Sockets Internet 3. Résolution de nom 4. Sockets IPv6 Edouard.Thiel@univ-amu.fr Cours de Réseau et communication Unix n 7 CC BY-NC 2/27

1 - Notions de port et de service Propre au modèle internet. Edouard.Thiel@univ-amu.fr Cours de Réseau et communication Unix n 7 CC BY-NC 3/27

Modèle en couches internet Adresse IP = point d entrée dans une machine (couche 3) par lequel passent les paquets IP encapsulant les différents protocoles (ICMP, UDP, TCP, etc) de la couche 4. Ces paquets ne sont pas adressés à un processus en particulier car la notion de processus est propre à Unix, non portable. Mécanisme général choisi : notions de service et de port Edouard.Thiel@univ-amu.fr Cours de Réseau et communication Unix n 7 CC BY-NC 4/27

Notion de service On s adresse à un service disponible sur une machine donnée (service web, mail, ftp, ssh, etc). Avantages : plusieurs services peuvent être assurés par un même processus ; un service peut être assuré par plusieurs processus ; on peut lancer ou relancer à la demande un serveur qui assurera un service demandé. Edouard.Thiel@univ-amu.fr Cours de Réseau et communication Unix n 7 CC BY-NC 5/27

Notion de port Solution retenue pour coder un service dans un datagramme UDP ou un segment TCP : port = entier entre 1 et 65535 Ports de 1 à 1024 : réservés aux applications internet standard (nécessitent droits root niveau serveur) 21 ftp 80 http 22 ssh 443 https 23 telnet 389 ldap 25 smtp 873 rsync 110 pop3 995 pop3s 143 imap2 993 imaps Correspondance service port : fichier ascii /etc/services Edouard.Thiel@univ-amu.fr Cours de Réseau et communication Unix n 7 CC BY-NC 6/27

2 - Sockets Internet Sockets du domaine AF_INET Edouard.Thiel@univ-amu.fr Cours de Réseau et communication Unix n 7 CC BY-NC 7/27

Types de sockets Protocole ICMP type SOCK_RAW UDP/IP SOCK_DGRAM TCP/IP SOCK_STREAM Tout ce qu on a vu avec les sockets Unix en UDP et TCP reste valable pour les sockets internet : squelettes de clients/serveurs identiques, sauf pour ce qui concerne le domaine : on remplace un fichier de type socket par un couple (adresse IP, numéro de port). Edouard.Thiel@univ-amu.fr Cours de Réseau et communication Unix n 7 CC BY-NC 8/27

Squelettes de client/serveur Serveur socket Client socket UDP/IP bind UDP/IP bind recvfrom sendto sendto recvfrom close close Serveur socket Client socket TCP/IP bind TCP/IP bind listen accept connect read write write read close close Edouard.Thiel@univ-amu.fr Cours de Réseau et communication Unix n 7 CC BY-NC 9/27

Format d adresses Le format d adresses pour bind en IPv4 est : #include <sys/socket.h> #include <netinet/in.h> struct sockaddr_in { sa_family_t sin_family; // AF_INET in_port_t sin_port; // in network byte order struct in_addr sin_addr; // internet address }; struct in_addr { uint32_t s_addr; // in network byte order }; Edouard.Thiel@univ-amu.fr Cours de Réseau et communication Unix n 7 CC BY-NC 10/27

Endianness (boutisme) Terme provenant des Voyages de Gulliver de Jonathan Swift. Les entiers peuvent être représentés de plusieurs façons : little endian (petit boutisme) : octet de poids faible en premier (à la plus petite adresse) ; processeurs Intel, Dec Alpha, etc big endian (grand boutisme) : octet de poids fort en premier (à la plus petite adresse) ; processeurs Motorolla, Sparc, etc middle-endian (moyen-boutisme) : mélange des deux ordres ; PDP-11, certains processeurs ARM Network byte order (ordre réseau) : big-endian Edouard.Thiel@univ-amu.fr Cours de Réseau et communication Unix n 7 CC BY-NC 11/27

Conversions On distingue l ordre réseau (network) de l ordre local (host) Dans un struct sockaddr_in, les champs sin_port et sin_addr.s_addr sont toujours dans l ordre réseau. Primitives de conversion : #include <arpa/inet.h> uint16_t htons (uint16_t hostshort); uint16_t ntohs (uint16_t netshort); uint32_t htonl (uint32_t hostlong); uint32_t ntohl (uint32_t netlong); Edouard.Thiel@univ-amu.fr Cours de Réseau et communication Unix n 7 CC BY-NC 12/27

Exemple Pour demander le port 10000 : struct sockaddr_in adr; adr.sin_port = htons (10000); Pour afficher le numéro de port : printf ("Port = %d\n", ntohs (adr.sin_port)); Edouard.Thiel@univ-amu.fr Cours de Réseau et communication Unix n 7 CC BY-NC 13/27

Demander un port libre On ne peut pas attacher plusieurs sockets à un même port, ni parfois réutiliser de suite un port fermé. On peut demander à bind un port libre par 0 : struct sockaddr_in adr; adr.sin_port = htons (0); puis récupérer le port attribué par bind avec #include <sys/socket.h> int getsockname (int sockfd, struct sockaddr *addr, socklen_t *addrlen); par exemple (après bind) : socklen_t addrlen = sizeof (struct sockaddr_in); if (getsockname (soc, (struct sockaddr*) &addr, &addrlen) < 0) exit (1); printf ("Port attribué = %d\n", ntohs (adr.sin_port)); Edouard.Thiel@univ-amu.fr Cours de Réseau et communication Unix n 7 CC BY-NC 14/27

Adresse IP locale Pour créer une socket locale, il faut spécifier l adresse IP locale : INADDR_ANY 0.0.0.0 : toutes les interfaces disponibles INADDR_LOOPBACK 127.0.0.1 : localhost On écrit donc adr.sin_family = AF_INET; adr.sin_port = htons (port); // 0 pour port libre adr.sin_addr.s_addr = htonl (INADDR_ANY); if (bind (soc, (struct sockaddr*) &addr, sizeof (struct sockaddr_in)) < 0) { perror ("bind"); exit (1); } Edouard.Thiel@univ-amu.fr Cours de Réseau et communication Unix n 7 CC BY-NC 15/27

3 - Résolution de nom Transformation d un nom de machine en adresse IP. Edouard.Thiel@univ-amu.fr Cours de Réseau et communication Unix n 7 CC BY-NC 16/27

Nom de machine Plus commode de désigner une machine par un nom que par une adresse IP. Permet de modifier l adresse IP de manière transparente. Permet d associer plusieurs adresses IP à un nom (load-balancing). Nécessite un système d annuaire : les serveurs de nom (DNS) ; un mécanisme pour les contacter ; un système de nommage souple. Edouard.Thiel@univ-amu.fr Cours de Réseau et communication Unix n 7 CC BY-NC 17/27

Noms courts Nom générique de la machine elle-même : localhost Connaître le nom de la machine elle-même : commandes hostname ou uname -n Spécifier le nom (selon système) : fichiers /etc/hostname et /etc/hosts Edouard.Thiel@univ-amu.fr Cours de Réseau et communication Unix n 7 CC BY-NC 18/27

Noms complets FQDN : Fully Qualified Domain Name nom.[sous-domaines.]domaine.tld[.] Nom : une machine possède un nom principal, éventuellement des noms secondaires. TLD : Top Level Domain :.com,.org,.fr, etc. Les TLD sont gérés par des organismes différents pour attribuer les noms de domaine (pas d organisme suprême) : INTERNIC :.com,.org,.net AFNIC :.fr etc (plus de 300 domaines) Acheter un nom de domaine : passer par un registrar Edouard.Thiel@univ-amu.fr Cours de Réseau et communication Unix n 7 CC BY-NC 19/27

Interroger les TLD <> whois -H korben.info... Domain Name:KORBEN.INFO Created On:08-Nov-2005 21:37:23 UTC Last Updated On:29-Dec-2012 20:45:11 UTC Expiration Date:08-Nov-2020 21:37:23 UTC Sponsoring Registrar:Gandi SAS (R191-LRMS)... Registrant Name:Manuel Dorne Registrant Organization: Registrant Street1:Whois Protege / Obfuscated whois Registrant Street2:Gandi, 15 place de la Nation Registrant Street3: Registrant City:Paris... Name Server:LUCY.NS.CLOUDFLARE.COM Name Server:ANDY.NS.CLOUDFLARE.COM... Edouard.Thiel@univ-amu.fr Cours de Réseau et communication Unix n 7 CC BY-NC 20/27

Bases de noms Base de données locale : fichier /etc/hosts Serveurs de noms : DNS (RFC 882, 1983) décentralisés, situés dans le monde entier, se mettent à jour en dialoguant avec d autres DNS. Configuration locale (selon système) : /etc/resolv.conf indique comment résoudre les noms DNS principal, secondaire Exemples de DNS : Google public 8.8.8.8 et 8.8.4.4 ; OpenDNS 208.67.222.222 Interroger des DNS : commandes nslookup et dig Edouard.Thiel@univ-amu.fr Cours de Réseau et communication Unix n 7 CC BY-NC 21/27

Résolution d adresse #include <netdb.h> struct hostent *gethostbyname(const char *name); Si l adresse name est sous la forme "a.b.c.d, gethostbyname fait une simple conversion binaire. Sinon, gethostbyname consulte des DNS (selon configuration système) pour demander l adresse IP. Renvoie un struct hostent* contenant l adresse IP sous forme binaire, sinon NULL au bout d un certain délai. En cas d erreur, ne pas utiliser errno et perror mais extern int h_errno; et void herror(const char *s); Edouard.Thiel@univ-amu.fr Cours de Réseau et communication Unix n 7 CC BY-NC 22/27

Informations renvoyées par gethostname #include <netdb.h> struct hostent { char *h_name; // Nom officiel de l h^ote... int h_length; // Longueur de l adresse char **h_addr_list; // Liste d adresses dans // l ordre d octets réseau } #define h_addr h_addr_list[0] // pour compatibilité Après gethostbyname, l adresse IP recherchée est dans h_addr. Recopie d une adresse IP de struct hostent *hp vers struct sockaddr_in adr : memcpy (&adr.sin_addr.s_addr, hp->h_addr, hp->h_lenght); Edouard.Thiel@univ-amu.fr Cours de Réseau et communication Unix n 7 CC BY-NC 23/27

Fonctions utilitaires #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> char *inet_ntoa(struct in_addr in); Convertit une adresse IPv4 (dans l ordre réseau) en chaîne de caractère "a.b.c.d" (en mémoire statique). Edouard.Thiel@univ-amu.fr Cours de Réseau et communication Unix n 7 CC BY-NC 24/27

4 - Sockets IPv6 Nouveau type d adresse, ne change pas la notion de port. L espace des ports IPv6 est partagé avec IPv4. Edouard.Thiel@univ-amu.fr Cours de Réseau et communication Unix n 7 CC BY-NC 25/27

Différences avec IPv4 Domaine AF_INET6 pour socket Format d adresses différent pour bind : #include <sys/socket.h> #include <netinet/in.h> struct sockaddr_in6 { sa_family_t sin6_family; // AF_INET6 in_port_t sin6_port; // port number uint32_t sin6_flowinfo; // IPv6 flow information struct in6_addr sin6_addr; // IPv6 address uint32_t sin6_scope_id; // Scope ID }; struct in6_addr { unsigned char s6_addr[16]; // IPv6 address }; gethostbyname : compatible IPv6, appel identique Edouard.Thiel@univ-amu.fr Cours de Réseau et communication Unix n 7 CC BY-NC 26/27

Fonctions utilitaires La fonction inet_ntoa est remplacée par : #include <arpa/inet.h> const char *inet_ntop (int domain, const void *src, char *dst, socklen_t size); Convertit une adresse IPv6 (dans l ordre réseau) en chaîne de caractère "a:b:c:d:e:f:g:h". src pointe sur un struct in6_addr. dst pointe sur un buffer de taille size INET6_ADDRSTRLEN. Renvoie dst ou NULL. Edouard.Thiel@univ-amu.fr Cours de Réseau et communication Unix n 7 CC BY-NC 27/27