:: Enseignements :: ESIPE :: E4INFO :: 2012-2013 :: Applications réseaux ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Adresses IP, résolution de nom et manipulation de bits |
Exercice 1 - Adresses IP et résolutions de noms
Copier-coller le code ci-dessous dans un nouveau projet Java 7 eclipse.
package fr.upem.net.inet;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class AboutInetAddress {
public static void main(String[] args) throws UnknownHostException {
InetAddress myLocalHost = InetAddress.getLocalHost();
System.out.println("My own \"local\" address is : " + myLocalHost);
if(args.length == 0)
return;
String name = args[0];
InetAddress ia = InetAddress.getByName(name);
System.out.println(ia);
}
}
-
Quelles informations sont utilisées lors de l'exécution de ce
programme sans arguments?
-
Utiliser ce programme avec un argument sur la ligne de commande
pour 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 s'il y a résolution de nom ?
-
Modifier le code pour connaitre le nom canonique de chaque machine ci-dessus.
Tester l'affichage par défaut (toString()) avant et après
la recherche du nom canonique: que peut on en déduire?
-
Tester le programme ci-dessus plusieurs fois consécutives avec le
nom www.google.com. Que peut on en déduire?
Compléter le programme pour que toutes les adresses associées au nom
passé en argument sur la ligne de commande soient affichées.
Exercice 2 - Manipulation de bits et de bytes d'adresses
Nous allons maintenant compléter notre classe pour obtenir plus
d'informations sur l'adresse IP d'une machine particulière
passée en argument.
-
Écrire une méthode classAddressOf(InetAddress ia) qui retourne
la classe d'adresse (A, B, C, D ou E) de l'adresse passée en argument si elle est
IPv4, et lève une exception IllegalArgumentException sinon.
On rappelle que les adresses de classe A ont leurs 4 premiers bits du premier octet
qui valent 0xxx, que ces bits valent 10xx pour les adresses de classe B,
110x pour les adresses de classe C, 1110 pour les adresses de classe D
et 1111 pour les adresses de classe E.
Les soucis que vous pouvez rencontrer tiennent principalement à deux choses: en Java
tous les types primitifs (byte inclus) sont signés,
et tous les types numériques entiers (byte, short, char...)
subissent une promotion entière (ils sont transformés en int) avant d'être manipulés
-
Écrire une méthode printSquareBrackets(InetAddress ia) qui affiche
les octets qui composent une adresse IP entre crochets, et ce qu'elle soit IPv4 ou IPv6.
Par exemple:
$ java fr.upem.net.inet.AboutInetAddress fe80:0:0:0:224:2cff:fe49:2cd6
[fe][80][0][0][0][0][0][0][2][24][2c][ff][fe][49][2c][d6]
$ java fr.umlv.inet.InetUtil 193.55.63.80
[193][55][63][80]
-
Comment feriez vous pour avoir un affichage plus proche du standard utilisé en IPv6, du genre:
[fe80][0][0][0][224][2cff][fe49][2cd6]
Exercice 3 - Interfaces réseaux
É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.
Pour chaque interface, faire afficher la valeur du MTU et
l'ensemble des adresses IP qui leur sont associées.
-
À partir d'une adresse IP ou d'un nom, passé en argument sur
la ligne de commande de votre programme, représentant une des
adresses IP de la machine, faites en sorte que
soit affiché le nom de l'interface réseau à laquelle elle est
associée, le cas échéant.
Exercice 4 - Pour aller plus loin
-
La méthode InetAddress.isReachable() permet
de tester si une machine est atteignable sur le réseau.
Testez la sur une adresse passée en argument sur la ligne de commande.
Utiliser votre programme pour savoir si
les machines www.w3.org et www.google.fr
sont "atteignables" à 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.
© Université de Marne-la-Vallée