3 points

publicité
Licence
Informatique &
MIAGE
-S6Le 27 Mars 2014
Examen de première session
2013-2014
Réseaux
3 heures
Les documents de cours, TD, TP, notes manuscrites et les calculatrices sont autorisés. Le
sujet est composé de 6 parties totalement indépendantes. Le barème de notation (indicatif) est
indiqué au début de chaque question. Il y a au total 24 points, vous pouvez donc faire
l’impasse sur 4 points du sujet.
Partie I : Questions de (fin de) cours (3 points)
Question I.1 – 1 point –
Quel est le rôle des champs « Numéro de séquence » et « Numéro d’accusé de réception » dans une entête TCP ?
Question I.2 – 1 point –
Pour quelle(s) raison(s) choisit-on, lors de l’initialisation d’une connexion TCP (SYN), les
« premiers » numéros des séquences aléatoirement ? Que fait-on ensuite pour le reste des paquets TCP envoyés sur cette transmission ?
Question I.3 – 1 point –
Pour quelle(s) raison(s) est-il pertinent de passer en mode Passif en FTP lorsque l’on est sur
un réseau d’adresse Privé et que l’on veut joindre un serveur public ? (un schéma
d’explication complet est fortement recommandé)
Partie II : Couche Physique (3 points)
La figure sur la page suivante donne des statistiques d’une ligne ADSL, à savoir le nombre de
bits qui sont transmis par symbole pour chacune des 512 sous-porteuses. Il y a 4000 changements de symboles par seconde sur chacune des sous-porteuses.
Question II.1 – 1 point –
Expliquer en détail comment sont encodés les 2 bits par symbole qui sont transmis sur la
sous-porteuse 20.
Question II.2 – 1 point –
(a) Expliquer brièvement comment calculer, à partir de ce diagramme, les débits montant et
descendant de cette ligne ADSL.
(b) Réaliser une fonction Java pour réaliser chacun des calculs précédents. On supposera que
les valeurs du diagramme (bits/symbole) vous sont fournies dans un tableau à un dimension
int t[512] indexé par le numéro de sous-porteuse. La/les fonctions doi(ven)t retourner le débit montant/descendant de la ligne.
Question II.3 – 1 point –
En analysant la figure puis en estimant grossièrement le résultat de la question précédente,
évaluer la qualité de la boucle locale, c’est-à-dire la paire torsadée de fils de cuivre utilisée
pour établir cette connexion ADSL.
1/8
Partie III : Codage (3 points)
Question III.1 – 1 point –
Calculer le CRC du message de 12 bits « 68d » (hexadécimal) par le polynôme x4+x+1.
Question III.2 – 1 point –
Donner un autre message de 12 bits qui ait le même CRC.
Question III.3 – 1 point –
Expliquer comment former encore d’autres messages qui aient le même CRC.
Partie IV : Liaison (5 points)
Deux hôtes A et B distants de 600 Km disposent d'une ligne téléphonique directe qui fournit
un débit full-duplex de 32 Kbit/s (1 Kbit = 1000 bits). On suppose que la vitesse maximale de
propagation du signal électrique dans le cuivre est de 200000 Km/s.
Question IV.1 – 0.5 point –
Quelle est la longueur de la partie du signal qui corresponde à un bit de données, en mètres ?
Question IV.2 – 0.5 point –
Quel est le nombre de bits transmis par A avant que le premier bit soit reçu par B ?
Question IV.3 – 0.5 point –
Si A lance un « ping » vers B avec des paquets chacun de taille de 500 octets, quel est le
Round Trip Time minimum qui peut être détecté par l'outil « ping » ?
2/8
A et B utilisent un protocole « stop and wait » pour l'échange de données, avec des paquets de
taille fixe de 500 octets.
Question IV.4 – 0.5 point –
Quelle est l'efficacité maximale de ce protocole, exprimée comme pourcentage du rapport
entre le débit effectif et le débit théorique maximum ?
Question IV.5 – 0.5 point –
Si A et B décident d'utiliser un protocole avec tampon à la place du simple « stop and wait »,
quelle est la taille minimale du tampon pour avoir une efficacité de 100% sans erreurs ?
A dispose d'un transmetteur satellitaire avec un débit de 2 Mbit/s. Grâce à un satellite situé à
36000 Km d'altitude, B peut recevoir le signal de A, qui se propage à une vitesse de 300000
Km/s. On suppose donc à partir d’ici que A peut choisir entre l’utilisation de la connexion
téléphonique ou de la connexion satellitaire (ou des deux au même temps) pour envoyer des
paquets à B.
Question IV.6 – 0.5 point –
Quelle connexion A doit-il choisir pour minimiser le Round Trip Time d'un « ping » vers B
avec une taille de 500 octets par paquet ? Justifier votre réponse
Question IV.7 – 0.5 point –
Et avec une taille de 2000 octets par paquet ? Justifier votre réponse
Question IV.8 – 0.5 point –
À partir de quelle taille de paquet la connexion satellitaire est plus efficace pour l'envoi d'un
« ping » de A vers B ?
A doit envoyer un fichier à B. Pour exploiter la connexion satellitaire à haut débit, ils décident d'utiliser un protocole plus intelligent avec les caractéristiques suivantes :
- paquets de taille de 500 octets,
- tampon d'envoi pour A et de réception pour B de la même taille et suffisamment grand pour
obtenir une efficacité du 100%,
- acquittements optionnels cumulatifs envoyés par B, avec acquittement obligatoire en cas
d'erreur de transmission et un minimum de 1 acquittement pour chaque 1000 paquets consécutifs envoyés par A s'il n'y a pas d'erreur de transmission.
Question IV.9 – 0.5 point –
Quelle est le débit maximal avec ce protocole, si A peut exploiter au même temps la connexion satellitaire et téléphonique ?
Question IV.10 – 0.5 point –
Quelle est la taille minimale du tampon pour avoir une efficacité de 100% d'exploitation de ce
débit ?
3/8
Partie V : Routage (5 points)
Question V.1 – 0.5 point –
Compléter le tableau suivant (sur votre copie) :
Adresse IP
Adresse
Plage
réseau d'adressage
Nombre
d'adresses
utilisables
(a) 134.206.200.18 / 18
?
?
?
(b) 10.20.30.40 / 255.254.0.0
?
?
?
(c) fe80::216:3eff:fe55:b72e / 64
?
?
?
(d) 2001:0660:4401:abcd:6e3b:e5ff:fe17:9e63 / 56
?
?
?
Question V.2 – 0.5 point –
Découper le réseau 2001:0660:4401:: / 62 en 4 sous-réseaux. Indiquez dans un tableau les
adresses IP, masque, plage d'adressage et nombre d'adresses utilisables de ces 4 sous-réseaux.
L'objet de cet exercice est de configurer l'infrastructure réseau de la figure ci-dessous, reliée
à internet via le routeur Rsite. Rsite est administré par votre fournisseur d'accès à internet.
Vous disposez du réseau IP 172.18.16.0 masque 255.255.240.0 suivant :
4/8
Question V.3 – 1 point –
Découper ce réseau et attribuez les différents sous-réseaux obtenus aux liens L1 à L9 du
schéma ci-dessus, de manière à ce que :
-
la taille des tables de routage des machines du réseau soit minimale
-
les sous-réseaux de périphérie L7, L8 et L9 doivent pouvoir adresser au moins 1000
machines
Donner également l'adresse du réseau L10, sachant que le routeur Rsite a pour adresse
134.206.15.254/22.
Question V.4 – 0.5 point –
Attribuer des adresses IP aux interfaces des routeurs R1 à R5 (IPxy) et des postes de travail
(IPa, IPb et IPc), sous la forme d'un tableau de 2 colonnes : « interface », « adresse IP ».
On suppose que les tables de routage des routeurs R2, R3 et R4 et des postes Pb et Pc sont
correctement configurées.
Question V.5 – 1 point –
Remplir les tables de routage des routeurs R1 et R5, ainsi que du poste de travail Pa, afin que
toutes les machines du réseau puissent communiquer entre elles et avec internet. Chaque table
de routage doit se présenter sous la forme d'un tableau de 4 colonnes : « nom (Lx) et adresse
IP du réseau de destination », « masque », « passerelle », « interface ».
On souhaite désormais que les tables de routage soient alimentées automatiquement par un
protocole de routage à états de lien. On active ce protocole sur les routeurs R1 à R5.
Question V.6 – 0.5 point –
Etablir l'arbre collecteur de R1 sachant que les coûts des liens sont les suivants : L1(3), L2(2),
L3(4), L4(1), L5(1), L6(2).
En déduire la nouvelle table de routage de R1, sous la forme d'un tableau de 5 colonnes :
« nom (Lx) et adresse IP du réseau de destination », « masque », « passerelle », « interface »,
« coût ».
Question V.7 – 1 point –
(a) Les adresses IP de ce réseau peuvent-elles être utilisées quelque part ailleurs dans le
monde pour accéder à internet ? Pourquoi ?
(b) Après avoir configuré correctement les tables de routage, les machines peuvent communiquer entre elles, mais pas avec internet. Pourquoi ?
(c) Quelle est la solution à ce problème ? Expliquer aussi précisément que possible comment
fonctionnerait cette solution.
5/8
Partie VI : Protocoles Applicatifs (5 points)
Pour l’exercice suivant, vous pouvez utiliser les classes et méthodes ci-dessous :
class DatagramSocket {
// Constructeurs :
DatagramSocket()
DatagramSocket(int port)
// Méthodes :
void send(DatagramPacket p)
void receive(DatagramPacket p)
void close()
void setSoTimeOut(int milliseconds) // receive timeout
...}
class DatagramPacket {
// Constructeurs :
DatagramPacket( byte[] buf, int length)
DatagramPacket(byte[] buf, int length, InetAddress address, int port)
// Méthodes :
byte[] getData()
...}
class InetAddress { ...
static InetAddress getByAddress(String host)
...}
Interface Map<K,V> {
// associe une Valeur donnée à une Clef donnée
void put(K key, V value);
// supprime la Clef et sa Valeur
void remove(K Key);
// donne la Valeur associée à la Clef, ou null si aucune association
void V get(K Key);
// retourne le nombres d’entrées
int size() ;
...}
All Known Implementing Classes:
HashMap, Hashtable, LinkedHashMap, TreeMap
On rappelle le format d'un paquet DNS : ce paquet est composé obligatoirement d’un entête,
suivi d'un certain nombre de sections (dont au moins une section Question …).
- l'entête est composé de 12 octets :
-- un identifiant sur 16bits, choisi aléatoirement lors de la question
-- de flags sur 16bits non détaillés ici (en général 0x0100 pour une question "récursive"),
-- un nombre de sections questions sur 16bits (big endian),
-- un nombre de sections réponses sur 16bits (big endian),
-- un nombre de sections autorités sur 16bits (big endian),
-- un nombre de sections additionnelles sur 16bits (big endian)
- une section Question est composée d'un certain nombre de champs :
- QNAME : chaine au format DNS (format vu en TP),
- QTYPE : valeur sur 16 bits (en général 0x0001 si IN pour inet address)
- QCLASS : valeur sur 16 bits (en général 0x0001 si A, 0x0005 si CNAME, 0x000C si PTR)
6/8
On rappelle que le port réservé pour le protocole DNS est le 53.
Nous souhaitons programmer en Java un Proxy DNS dont le rôle est le suivant
Sur un réseau (par exemple un réseau local 192.168.0.0), ce proxy est déclaré comme étant le
« Serveur DNS » par défaut pour les machines du réseau : il reçoit dont (en théorie)
l’ensemble des requêtes DNS provenant de ces machines. Mais ne sachant pas lui même répondre, il interroge un « vrai Serveur DNS » avec la même requête, obtient alors une réponse, qu’il renvoie finalement vers l’émetteur initial.
Son rôle principal est de conserver dans un cache un certain nombre de réponses DNS à des
noms symboliques qui sont fréquemment résolus (comme par exemple : www.google.fr ,
www.facebook.com, www.youtube.com, www.univ-lille1.fr, …) afin de pouvoir directement y
apporter une réponse dans le cas de requêtes classiques comme des résolution d’adresse.
Voici un exemple de traitement pour une requête DNS concernant le nom symbolique
« www.addpac.com », requête envoyée à deux reprises
On suppose que ce proxy a pour adresse 192.168.0.253, que le vrai Serveur DNS interrogé
est à l’adresse 8.8.4.4. Pour des raisons pratiques, on ouvrira deux sockets pour les connections qui sont représentées à gauche et à droite de 192.168.0.253 sur la figure ci dessus.
Pour simplifier la suite de l’exercice, on supposera que les requêtes réalisées par les machines du réseau local sont des recherches d’adresses standard : on suppose qu’elles possèdent toujours les mêmes Flags (recursive), comportent uniquement une question DNS, et ont
le même QTYPE=1 et QCLASS=1. Naturellement, l’identifiant change …
7/8
Question VI.1 – 0.5 point –
Sur quel port ce Proxy doit-il écouter les requêtes DNS des machines locales ? A partir de
quel port, et vers quelle @ip / quel port doit-il réémettre les requêtes qui sont inconnues de
son cache ?
Question VI.2 – 0.5 point –
Pour chaque requête DNS que ce Proxy reçoit, quel est le champ essentiel minimal à conserver ? En quoi est-il utile de l’utiliser comme clef dans le cache ? A quelle donnée peut-on
l’associer à postériori ?
Question VI.3 – 0.5 point –
Donnez le code Java d’une méthode permettant d’extraire le champ essentiel de chaque requête DNS afin de l’utiliser comme clef.
Question VI.4 – 0.5 point –
Donnez le code Java d’une méthode permettant d’extraire l’identifiant d’une requête DNS
sous forme d’un entier <int>.
On suppose dans un premier temps que le proxy traite les demandes de résolution l’une après
l’autre, et ne traite la suivante qu’après avoir complétement réalisé la précédente.
On ne se préoccupe pas dans la question suivante de la taille du cache.
Question VI.5 – 1 point –
Donnez en Java la fonction principale du traitement à réaliser par le Proxy DNS. On supposera abusivement que les requêtes/réponses sont synchrones, séquentielles, et suffisamment rapides de la part du serveur 8.8.4.4, mais qu’il peut y avoir absence de réponse de ce dernier
dans certains cas.
Vous pouvez définir des méthodes auxiliaires en fonction des besoins en les justifiant à l’aide
d’un commentaire clair.
On souhaite réaliser plusieurs requêtes en même temps. On signale également que le protocole UDP utilisé ne garantie pas en réalité la séquence des paquets envoyés / reçus ce qui
peut poser un gros problème ...
Question VI.6 – 1 point –
Donner (sans recoder le tout) les modifications « principales » à apporter au programme précédent et ainsi que structures de données dont vous aurez besoin, en justifiant le/les problèmes
résolus.
Question VI.7– 1 point –
Proposez une solution intelligente pour gérer le cache en terme de taille, de mise à jour (on ne
vous demande pas de code ici).
8/8
Téléchargement