Manipulation de bits, adresses IP, résolution de nom

Exercice 1 - Manipulation de bits

Deux caractéristiques du langage Java sont cruciales dans la programmation réseau et les manipulations d'adresses:

Écrire une méthode byte decaleADroite(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 en revanche 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 2 - Adresse IP et interface réseau

Écrire un programme Java qui permet d'afficher l'ensemble des interfaces réseaux de la machine courante.

  1. Récupérer et afficher l'ensemble des interfaces réseaux (NetworkInterface) de la machine courante.
  2. Afficher pour chaque interface réseau, l'ensemble des adresses IP (InetAddress) associées.
  3. Afficher l'adresse IP correspondant à la machine locale. Puis l'interface réseau correspondante.

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 :

  1. la machine connue sous le nom www.univ-mlv.fr.
  2. la machine dont l'adresse IP est 18.7.14.127.

Modifier le programme pour qu'il affiche le nom et l'adresse d'une machine passée en argument. De plus, afficher si une adresse IP est une adresse multicast, de loopback ou privée.

Une machine (par exemple, un routeur) peut avoir plusieurs adresses IP. Comment connaître, par exemple, toutes les adresses de marne.cssi.renater.fr ou de www.w3.org.