• Aucun résultat trouvé

2.1Leprotocole 2ProtocoleSNTP Introduction TPn 4RoutageetProtocoleSNTP1Tablesderoutage Universit´eParisDiderot–Paris7Programmationr´eseauL3InformatiqueAnne2010-2011,2 semestre

N/A
N/A
Protected

Academic year: 2022

Partager "2.1Leprotocole 2ProtocoleSNTP Introduction TPn 4RoutageetProtocoleSNTP1Tablesderoutage Universit´eParisDiderot–Paris7Programmationr´eseauL3InformatiqueAnne2010-2011,2 semestre"

Copied!
4
0
0

Texte intégral

(1)

Universit´ e Paris Diderot – Paris 7 Programmation r´ eseau L3 Informatique Anne 2010-2011, 2

`eme

semestre

TP n

4

Routage et Protocole SNTP

1 Tables de routage

Exercice 1 [Lire les tables de routage]

1. En utilisant la commande ip route show qui vous donne les tables de rou- tage depuis votre machine d´eterminez l’adresse IP de la passerelle (gateway) qui est utilis´e lorsque vous vous connectez `a internet depuis les machines de la salle de tp.

2. Trouvez en faisant ip route get la route allant vers une destination donn´ee (par exemple google.com).

3. Reprenez la question 1. avec l’option -6 apr`es ip) pour obtenir la table de routage au format IPv6.

2 Protocole SNTP

Introduction

Le protocole NTP (Network Time Protocol) permet de r´egler avec une grande pr´ecision l’horloge d’un hˆ ote ` a partir d’une ou plusieurs sources de temps dis- tantes. NTP est d´efini dans le RFC 1305, un document de 120 pages qui inclut une discussion d´etaill´ee des algorithmes de filtrage que les clients NTP doivent employer.

Pour beaucoup d’applications, la complexit´e de NTP n’est pas n´ecessaire.

RFC 2030 d´efinit SNTP (Simple Network Time Protocol), une version simplifi´ee de NTP qui ne d´efinit que le protocole et pas les algorithmes ` a employer. Tout client ou serveur NTP est a fortiori un client ou serveur SNTP, mais l’inverse n’est pas vrai.

Le but de ce TP est d’impl´ementer un client SNTP.

2.1 Le protocole

Lorsqu’il d´etermine que c’est n´ecessaire, le client SNTP envoie au serveur une requˆete sous forme d’un paquet UDP qui contient la date ` a laquelle ce message est transmis. Le serveur r´epond (aussi vite que possible) avec une r´eponse qui contient quatre dates :

1

(2)

– la date ` a laquelle la requˆete a ´et´e transmise (selon le client) ; – la data ` a laquelle la requˆete a ´et´e re¸cue (selon le serveur) ; – la date ` a laquelle la r´eponse a ´et´e transmise (selon le serveur) ;

– la date ` a laquelle l’horloge du serveur a ´et´e r´egl´ee pour la derni`ere fois.

En outre, la r´eponse contient un certain nombre de donn´ees que nous ne consid´ererons pas dans ce TP, et qui permettent ` a NTP (mais pas n´ecessairement SNTP) d’avoir une id´ee de la pr´ecision des r´esultats.

On remarquera que la r´eponse contient la date que le client avait incluse dans la requˆete ; ceci permet au client d’identifier une r´eponse comme allant de pair avec une requˆete donn´ee, et donc de contourner les probl`emes dˆ us ` a la nature non-fiable du transport.

2.1.1 Format des donn´ ees

Date NTP Une date NTP est repr´esent´ee sous la forme d’un entier de 64 bits exprimant un temps, en unit´es de 2

32

secondes, ´ecoul´e depuis 0 h le 1er janvier 1900. RFC 2030 d´efinit le format d’une telle date comme suit :

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Seconds

Seconds Fraction (0-padded)

Message NTP Les requˆetes et les r´eponses NTP ont le format suivant :

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

LI VN Mode Stratum Poll Precision

Root Delay Root Dispersion Reference Identifier Reference Timestamp (64) Originate Timestamp (64) Receive Timestamp (64) Transmit Timestamp (64) Les champs d’un tel message sont d´efinis comme suit :

– LI sera ignor´e dans ce TP, et vaudra toujours 0 ;

– VN est la version du protocole employ´ee, et vaudra toujours 3 ;

– Mode est le type de message, et vaudra 3 pour une requˆete, 4 pour une r´eponse ;

2

(3)

– Stratum, Poll et Precision seront ignor´es dans ce TP ; – Reference Timestamp sera ignor´e dans ce TP ;

– Originate Timestamp vaut 0 pour une requˆete, et, pour une r´eponse, est la copie du Transmit Timestamp de la requˆete correspondante ;

– Receive Timestamp vaut 0 pour une requˆete, et pour une r´eponse, est la date de r´eception de la requˆete correspondate ;

– Transmit Timestamp est la date de transmission de ce paquet.

Le paquet peut ˆetre suivi de 160 octets de donn´ees suppl´ementaires, que nous ne transmettrons jamais, et qui seront ignor´es lors de la r´eception.

2.2 Code fourni

Vous trouverez sur la page web des TP quelques fichiers C pouvant vous aider : Le fichier timestamp.c permet de manipuler un timestamp NTP :

– int ts current(struct timestamp *ts) Initialise la structure avec l’heure courante.

– char* tstop(struct timestamp *ts)

Renvoie une chaˆıne de caract`ere repr´esentant le timestamp.

Le fichier ntp.c permet de manipuler le contenu d’un message NTP.

– int init req(struct ntp msg* msg, struct timestamp *current) Initialise un message NTP avec le timestamp pass´e en argument.

– fprint ntp msg(FILE* f, struct ntp msg* msg) Affiche le contenu d’un message NTP.

– void ntp msg read(struct ntp msg *dest, unsigned char* buf, int offset) – ntp msg write(struct ntp msg* src, unsigned char* buf, int offset) 2.3 Exercices

Exercice 2 [Premier client NTP]

Ecrivez en C un programme qui ex´ecute les actions suivantes : ´ 1. cr´ee une requˆete NTP ;

2. envoie cette requˆete dans un paquet UDP ` a partir d’un port

p

vers le port ntp d’une machine munie d’un serveur NTP ;

3. attend une r´eponse sur le port UDP

p

; 4. affiche le contenu de la r´eponse.

Pour de mauvaises raisons techniques, vous ne pouvez pas tester votre pro- gramme sur Internet, mais uniquement dans l’UFR. Que se passe-t-il si vous es- sayez par exemple pool.ntp.org ?

Exercice 3 [D´ecouverte de serveur]

Certains supports physiques, comme le r´eseau Ethernet utilis´e dans les salles machines de l’UFR, permettent de diffuser une trame ` a tous les ordinateurs qui

3

(4)

y sont connect´es. Cette possibilit´e est re-export´ee par la couche IPv4 ` a l’aide d’une adresse IP sp´eciale, appel´ee adresse de diffusion, ou adresse de

broadcast1

. Un paquet ´emis ` a destination de cette adresse sera re¸cu par tous les ordinateurs connect´es sur le mˆeme lien physique. Ce paquet ne sera jamais retransmis par un routeur.

En envoyant une requˆete NTP ` a l’adresse

broadcast

de l’UFR (192.168.70.255), tous les serveurs NTP accessibles directement vous r´epondront.

Modifiez votre programme pour qu’il soit capable d’attendre plusieurs r´eponses.

Vous pourrez supposer qu’apr`es 500ms de silence, il n’y aura plus de r´eponse.

Attention : pour pouvoir envoyer un paquet

broadcast

, il faut activer l’option SO_BROADCAST sur la socket.

D´eterminez le nombre de serveurs NTP de l’UFR.

1. dans le cas d’IPv6, il n’existe plus d’adresse dite debroadcast. Ce m´ecanisme a ´et´e remplac´e par le m´ecanisme plus g´en´eral d’adressemulticast.

4

Références

Documents relatifs

Modi- fiez votre serveur pour que apr`es avoir v´erifi´e que le chemin de la requˆete com- mence par ”/” et ne contient pas la chaˆıne ”/../” 1 , il retourne au client le

Lancez la commande nc avec l’option -l 8080, cela ouvre un serveur sur votre machine locale sur le port 8080.. Tapez une ligne dans

Les hints prennent aussi le forme d’une structure addrinfo : vous pouvez indiquer des restrictions sur le type de socket que vous souhaitez utiliser (si vous n’avez aucune

Pour cela vous pouvez utiliser la commande telnet (usage : telnet machine service o` u service peut ˆetre soit le num´ero de service soit le nom du service)1. D´eterminez le

Dans ce protocole, les informations binaires sont en g´en´eral cod´ees en paquets, et envoy´ees sur le r´eseau, l’octet de poids le plus fort en premier, c’est-` a-dire selon le

Ecrivez un programme Java ´ jdaytime qui se connecte au service daytime d’une machine donn´ ee en param` etre et r´ ecup` ere la date pour l’afficher ` a l’´ ecran.. Exercice

L’id´ee est la suivante : un client producteur envoie au serveur une chaˆıne de caract`eres qu’il aura re¸cu par l’entr´ee standard (le clavier), le serveur stocke alors

Lorsqu’il d´etermine que c’est n´ecessaire, le client SNTP envoie au serveur une requˆete sous forme d’un paquet UDP qui contient la date ` a laquelle ce message est transmis..