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 :

  1. Récupérer et afficher l'ensemble des interfaces réseaux (NetworkInterface) de la machine courante.
  2. 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).

  1. Afficher sous forme xxx.xxx.xxx.xxx l'adresse IP renvoyée par getLocalHost() en utilisant la méthode getAddress().
  2. É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

  1. Écrire un programme Java qui permet d'afficher les noms et adresses IP des machines suivantes :
    1. la machine connue sous le nom www.univ-mlv.fr ;
    2. la machine dont l'adresse IP est 193.55.63.80 ;
    3. la machine dont l'adresse IP est 300.55.63.80.
  2. Indiquer pour ces machines si il y a résolution de nom ?
  3. 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

  1. 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.
  2. 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 ?
  3. Modifier le programme pour qu'il affiche si une adresse IP est une adresse multicast, de loopback ou publique (attention petit piège).
  4. 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.