Next: Globe : Nicolas
Up: Trace-Route
Previous: Graphiquement
  Contents
Dans Delphi, il existe un groupe de composants Indy qui permettent
l'utilisation de nombreux protocoles Internet, nous avons donc décidé
d'utiliser le composant WhoIs client de Indy car même si l'implémentation
d'une demande à un serveur WhoIs n'est pas très compliquée, nous n'avions
pas le temps de le faire. Ce composant permet de
se connecter sur un serveur WhoIs de notre choix puis de faire une
demande de renseignements sur un nom de domaine ou une adresse IP, un String
contenant de nombreuses informations sur le site nous est alors renvoyé.
Nous sommes allé sur de nombreux serveurs WhoIs et nous avons trouvé que
le meilleur était whois.uwhois.com car c'est celui qui permettait
d'avoir des renseignements sur beaucoup de sites (.com,.net, .edu ...) et
qui générait des réponses avec de nombreux renseignements, écrits assez
lisiblement, ce qui facilite ensuite le parcing de la réponse, on a donc mis
ce serveur par défaut, cependant l'utilisateur pourra en choisir un autre.
On a ensuite testé quelques sites connus français et étranger et on a vu
que à chaque fois le nom du pays où était situé le serveur se trouvait était
représenté par un code sur deux lettres (par exemple FR pour la France
et US pour les État-Unis ...). Il nous fallait donc pouvoir associer les
codes de tous les pays avec le nom du pays
et sa position géographique, puisque pour pouvoir dessiner le serveur sur
notre globe, il nous faut la longitude et la latitude du pays. En cherchant
sur Internet nous avons trouvé les sources de Xtrace-Route, un Trace-Route
pour Linux, les sources étaient incompréhensibles puisqu'elles étaient
écrites en C et beaucoup trop volumineuses (de toute façon notre trace route
marchait déjà) mais nous avons trouvé dans un des fichiers sources un tableau
comportant toutes les données dont on avait besoin. Il a donc fallu remplacer
quelques caractères pour qu'il soit lisible par le compilateur Pascal et de
créer un tableau d'enregistrements avec toutes ces données.
Pour parcourir le texte que nous à renvoyé le Whois, nous avons choisi une
méthode de pointeur sur caractère, ce qui nous donne une plus grande
souplesse et surtout une amélioration de la vitesse de parcours.
Nous avons remarqué que les codes des pays étaient entourés d'un caractère
de saut de ligne, d'un espace ou d'un tiret, ce que nous appellerons par la
suite caractères délimiteurs. Il nous a donc fallu implementer
un parser qui recherche un de ces caractères délimiteurs, ensuite de regarder
si les deux caractères suivants sont des lettres en majuscules et que le
troisième soit un autre caractère délimiteur, si toutes ces
conditions sont remplies il faut alors chercher dans le tableau des pays le
code d'identification du pays et ensuite de sortir toutes les données
correspondantes à ce pays. Pour optimiser le parser, nous avons décider de
transformer la réponse du serveur qui est au départ un String en un PChar,
ensuite le parser utilise un pointeur sur caractère pour examiner tout le
texte de la réponse.
Le problème était que sur certains sites, le parser nous renvoyait plusieurs
pays, cependant on a remarqué que le pays où était situé le serveur revenait
plusieurs fois dans les réponses, on a donc décidé d'augmenter
l'enregistrement du tableau contenant les pays par la donnée fréquence. Au
lieu de donner la réponse, le parser incrémente la fréquence du pays trouvé,
il suffit alors à une autre fonction de rechercher quel pays a la plus
importante fréquence, ce pays est alors celui qu'il faut dessiner sur le
globe.
Lors de nos tests, nous avons souvent eu des problèmes de connexion sur le
serveur WhoIs, il mettait du temps à répondre et on ne peut rien faire pour
l'accélérer. Nous avons donc décidé de séparer le ``tracage'' d'un ordinateur
et les demandes de WhoIs. Donc quand on clique sur Tracer on a les réponses
sous forme texte qui s'affichent dans une fenêtre, et quand on clique sur
dessiner, on transforme les données pour pouvoir les afficher sur le globe.
Par exemple, lorsque l'on effectue une recherche de WhoIs sur
hotmail.com, on obtient une réponse, comme vous pouvez la voir
dans l'annexe. De cette réponse, notre WhoIs répond :
latitude : 38,53 longitude : -77,02 code : GOV nom : US Government
A partir de cette réponse, on peut donc
tracer le chemin prit par le paquet.
Next: Globe : Nicolas
Up: Trace-Route
Previous: Graphiquement
  Contents
root
2002-06-23