Interface réseau, Adresse IP, type d'adresse IP, appel au DNS
Exercice 1 - Adresse IP et interface réseau
Écrire un programme Java qui réalise les opérations suivantes :
-
Récupérer et afficher l'ensemble des interfaces réseaux
(NetworkInterface) de la machine courante.
-
Afficher l'adresse IP qui vous utilisez pour communiquer
avec la machine locale.
Puis le nom de l'interface réseau à laquelle cette adresse est associée.
Exercice 2 - Manipulation de bits
Deux caractéristiques du langage Java sont cruciales dans
la programmation réseau et les manipulations d'adresses:
-
Une promotion entière est systématiquement effectuée
lors de toute opération binaire sur les types primitifs entiers
byte, char et short,
c'est-à-dire qu'ils sont convertis en int avant de subir
l'opération ;
-
Ces types primitifs numériques entiers sont tous signés
(leur bit de poids fort est toujours considéré comme un bit de signe).
-
Afficher sous forme xxx.xxx.xxx.xxx l'adresse IP
renvoyée par getLocalHost()
en utilisant la méthode getAddress().
-
Écrire une méthode byte decaleADroiteByte(byte b, int n)
qui décale l'octet b (vu comme une suite de 8 bits)
de n bits à droite.
Par exemple, on veut qu'un décalage de 2 bits à droite de la valeur
32 donne 8,
ce qui semble normal vu la représentation bit à bit de ces deux octets
(00100000 et 00001000),
mais on veut aussi que le décalage de 2 bits à doite de la valeur
-124 donne 33, puisque les
représentations bit à bit de ces deux valeurs sont 10000100
et 00100001.
Exercice 3 - Adresse IP et résolution de nom
-
Écrire un programme Java qui permet d'afficher les noms et adresses IP
des machines suivantes :
-
la machine connue sous le nom www.univ-mlv.fr ;
-
la machine dont l'adresse IP est 193.55.63.80 ;
-
la machine dont l'adresse IP est 300.55.63.80.
-
Indiquer pour ces machines si il y a résolution de nom ?
-
Quel est le nom canonique de www.univ-mlv.fr ?
Nous allons maintenant écrire un autre programme affichant
des informations sur l'adresse IP d'une machine particulière
passée en argument
-
Ecrire le programme pour qu'il affiche le nom et l'adresse d'une machine
passée en argument. L'argument pourra être soit une adresse IP
soit un nom de machine.
-
La méthode InetAddress.isReachable() permet
de tester si une machine est atteiugnable sur le réseau.
Ajouter cette information à votre programme.
Utiliser votre programme pour savoir si
les machines www.w3.org et www.google.fr
sont "atteignable" à partir de la machine locale.
Qu'en déduisez vous sur l'implantation de cette méthode
en mode utilisateur ?
-
Modifier le programme pour qu'il affiche si une adresse IP est une
adresse multicast, de loopback ou publique (attention petit piège).
-
Une machine (par exemple, un routeur) peut avoir plusieurs adresses IP.
Comment connaître, par exemple, toutes les adresses de www.w3.org.
Modifier votre programme en conséquence.
Rémi Forax - Université de Marne La Vallée