Chapitre 11. Introduction à la Programmation Réseaux en Langage C. 11. Manipulation d'adresses. Olivier Dalle



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

Travaux Pratiques Introduction aux réseaux IP

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Communication par sockets

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

Analyse de sécurité de logiciels système par typage statique

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

OS Réseaux et Programmation Système - C5

Les structures. Chapitre 3

Communication sous UNIX les sockets

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Programmation impérative

Bases de programmation. Cours 5. Structurer les données

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Packet Tracer : configuration des listes de contrôle d'accès étendues, scénario 1

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

Rappels Entrées -Sorties

UE C avancé cours 1: introduction et révisions

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Programmation Internet en Java

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

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

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

Introduction au langage C

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Cours d Algorithmique et de Langage C v 3.0

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Le langage C. Séance n 4

Conventions d écriture et outils de mise au point

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Cours d initiation à la programmation en C++ Johann Cuenin

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

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

GENERALITES. COURS TCP/IP Niveau 1

Compression de Données - Algorithme de Huffman Document de Conception

Logiciel de Base. I. Représentation des nombres

SUPPORT DE COURS. Langage C

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

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

Programmation Réseau. Anthony Busson IUT Info Lyon 1

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

Claude Delannoy. 3 e édition C++

Notions fondamentales du langage C# Version 1.0

Playing with ptrace() for fun and profit

Le prototype de la fonction main()

Le langage C. Introduction, guide de reference

UE Programmation Impérative Licence 2ème Année

as Architecture des Systèmes d Information

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Informatique Générale

La norme Midi et JavaSound

Gestion de la mémoire

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Chapitre 1 : La gestion dynamique de la mémoire

Skype (v2.5) Protocol Data Structures (French) Author : Ouanilo MEDEGAN

Les ACL Cisco. F. Nolot Master 2 Professionnel STIC-Informatique 1

Cours de C. Allocation dynamique. Sébastien Paumier

Introduction à la programmation concurrente

CSI351 Systèmes d exploitation Instructions pour rouler Linux avec Virtual PC dans la salle de labo 2052

GESTION DES FICHIERS C/UNIX

Programmation en langage C

NanoSense. Protocole Modbus de la sonde Particules P4000. (Version 01F)

Arguments d un programme

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

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

INFO-F-404 : Techniques avancées de systèmes d exploitation

Chap III : Les tableaux

Exercice sur les Dockers

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions


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

Plan du cours. Historique du langage Nouveautés de Java 7

Internet Le service de noms - DNS

Plan du Travail. 2014/2015 Cours TIC - 1ère année MI 30

Programmation en C. École Nationale Supérieure de Techniques Avancées. Pierre-Alain Fouque et David Pointcheval

INITIATION A LA PROGRAMMATION

OpenPaaS Le réseau social d'entreprise

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Le système de gestion des fichiers, les entrées/sorties.

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

Programmation C. J.-F. Lalande. 15 novembre 2012

Ces deux machines virtuelles seront installées sous VMWARE WORKSTATION.

Codage d information. Codage d information : -Définition-

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

Les structures de données. Rajae El Ouazzani

Algorithmique, Structures de données et langage C

Programme Compte bancaire (code)

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

NOTIONS DE RESEAUX INFORMATIQUES

Cours de Système : Gestion de Fichiers

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Modernisation, développement d applications et DB2 sous IBM i Technologies, outils et nouveautés Volubis.fr

Création et Gestion des tables

Transcription:

1 Chapitre 11 Introduction à la Programmation Réseaux en Langage C 11. Manipulation d'adresses

2 Fichiers d ' inclusion Où chercher? < sys / types. h > types de données élémentaires ) u _ char, u _ long, < sys / socket. h > déclarations concernant les sockets < netinet / in. h > déclarations concernant le protocole IP < netdb. h > : déclarations concernant la résolution d ' adresses

3 Manuel Où chercher? byteorder ) 3 Conversions d ' entiers entre format natif et format réseau inet ) 3 Conversion d ' adresse entre formats texte et binaire gethostbyname ) 3 Résolution d ' adresses

4 Conversion entre Formats Natif et Réseau Adresse IP = entier 32 bits Tous les CPU ne comprennent pas les entiers 32 bits de la même façon Format MSB, LSB, mixtes Une convention a été adoptée pour éviter les erreurs : Adresse IP = 32 bits MSB Les machines qui n ' ont pas la chance de calculer au format MSB doivent convertir Adresses IP ) 32 bits Numéros de port ) 16 bits Masques de réseaux,

5 Conversion entre Formats Natif et Réseau 2) Fonctions de conversion : htons host to network short) htonl host to network long) ntohs network to host short) ntohl network to host long) On ne sait pas toujours si l ' ordinateur que l ' on programme est MSB Conversion systématique! Ces fonctions existent aussi sur les " bonnes " machines au format MSB : elle ne changent rien

6 Quand utiliser les fonctions de conversion? A chaque fois que : L ' API nous fournit une donnée de type adresse / port Ex : réception d ' un message venant de xxx. yyy. zzz. ttt L ' API demande une donnée de type adresse / port Ex : envoyer datagramm vers port iiii de machine xxx. yyy. zzz. ttt... Attention aux calculs arithmétiques! Exemple : scan de ports for ) port = 1024 ; port < 2048 ; port ++... port ++ est juste Ssi port au format host En cas de doute : ne pas hésiter à utiliser des variables de nom explicite : h port = ntohs ) n port

7 Fonctions d ' interface avec le DNS gethostname ) char * name, size _ t len Retourne dans name le nom de la machine courante struct hostent *gethostbyname ) char * name Résolution d'adresses Retourne une structure décrivant la machine de nom name struct hostent *gethostbyaddr ) char *addr, int len, int type Retourne une structure ) la même décrivant la machine d ' adresse addr ) format réseau len= = sizeof ) addr type= = AF _ INET

8 La structure Hostent struct hostent { }; // nom officiel char *h_name; // autres noms : vecteur de chaînes, dont le // dernier élément est NULL char **h_aliases; // type d'adresse AF_INET) int h_addrtype; // longueur des adresses 32 bits = 4 si IP) int h_length; // Liste des adresses terminée par NULL aussi) char **h_addr_list; Attention : horreur! Faux type char * en fait void *) Cast délicat dans le cas d'@ IP...

9 Structure d'adresse struct sockaddr { u_short sa_family; /* address family: AF_xxx value */ char sa_data [14]; /* up to 14 bytes protocol specific address */ }; struct in_addr { u_long s_addr; /* 32 bit netid/hostid, network byte ordered */ }; struct sockaddr_in { short u_short struct in_addr sin_family; /* AF_INET */ sin_port; /* 16 bit port number, net byte ordered */ sin_addr; char sin_zero [8]; /* unused */ }; Type générique : jamais instancié Type instancié dans le cas d'une @IP

10 Conversion d'adresses IP #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> unsigned long inet_addr char * ptr); char * inet_ntoa struct in_addr inaddr); Conversion dʼadresses internet entre Chaîne au format point décimal ) ex : 192. 168. 0. 1 Format binaire 4 octets ) réseau