Architecture des réseaux

TD 2

Manipulation de bits et d'adresses IP avec Java


Exercice 1 - Manipulation de bits avec Java

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

Écrire le code Java permettant d'effectuer deux décalages à droite sur un octet donné de type byte, vu comme huit bits. Par exemple, on veut que decal2Droite(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 decal2Droite(-124) donne 33, puisque les représentations bit à bit de ces deux valeurs sont 10000100 et 00100001).

Quelle précaution supplémentaire doit on prendre pour un déclage de 2 vers la gauche?


Exercice 2 - Adresses IP en Java

Écrire un programme Java qui permet d'afficher les noms et adresses IP des machines suivantes:

Une machine (par exemple, un routeur) peut avoir plusieurs adresses IP. Comment connaître, par exemple, toutes les adresses de stamand2.renater.ft.net?


Exercice 3 - Manipulation des adresses IP

Écrire un programme Java qui permet d'afficher sur 4 lignes successives la valeur des 4 octets constituant l'adresse IP d'un nom de machine donné.

Écrire une classe de méthodes de manipulation d'adresses IP permettant de:

  1. Déterminer et retourner, sous la forme d'une String la classe d'une adresse IP acceptée en entrée:
    String getClassName(InetAddress address)
  2. Déterminer et retourner l'adresse IP correspondant à un tableau de byte et à l'indice du premier octet de l'adresse dans ce tableau:
    InetAddress byteToInetAddress(byte[] address, int offset)
  3. Déterminer et retourner, sous la forme d'une adresse IP, le masque d'une adresse IP fournie sous la forme d'un tableau de byte et de l'indice du premier octet de l'adresse dans ce tableau (on ne tiendra compte ici que des classes A, B et C):
    InetAddress getMask(byte[] address, int offset)
  4. Déterminer et retourner, sous la forme d'une adresse IP, l'adresse de broadcast associée à la classe d'une adresse acceptée en entrée:
    InetAddress getBroadcast(byte[] address, int offset)
  5. Déterminer et retourner l'adresse IP de broadcast local:
    InetAddress getLocalBroadcast()


Etienne.Duris[at]univ-mlv.fr - © Université de Marne-La-Vallée - Février 2000 - http://www-igm.univ-mlv.fr/~duris