Next: File sécurisée : Nicolas
Up: Gestion des Threads et
Previous: Gestion des Threads et
  Contents
Depuis la troisième soutenance, nous utilisons plusieurs threads. Des
améliorations ont été apportées car nous en faisions un usage abusif : un
thread pour le sniffer, un pour l'affichage, un pour le scanner, un pour le
trace-route, un pour le fond Matrix. Mais trop de threads tuent le thread.
Nous avons donc réduit le nombre de threads à trois et nous y avons ajouté
une synchronisation pour le thread de l'affichage. Ce changement a largement
augmenté les performances du Fire-wall afin de diminuer les 'plantages' et
surtout l'utilisation du processeur.
Nous avons créé deux classes héritant des propriétés de
threads : une pour le sniffer, et une pour l'affichage des paquets.
Lors de leur création, ces threads reçoivent certains pointeurs sur
les données qu'ils pourront modifier de façon à ce que ce soit les
mêmes données à l'intérieur et à l'extérieur de la classe.
Le thread du sniffer récupère de l'extérieur la classe de la
configuration, et la files des paquets à afficher.
Lors de son exécution, à chaque tour de boucle :
- Liaison d'entrée : il récupère et filtre un paquet sur l'interface
d'entrée, s'il est bon il est renvoyé, sinon il est ajouté à la file des
paquets à afficher, de plus on lui adjoint la liste des erreurs
qu'il contient. C'est aussi ici, que l'on récupère les réponses destinées
aux scanner et trace-route grace au filtre s'ils sont actifs. Dans ce
cas, ces réponses seront aussi ajoutées à la file. Ces réponses peuvent
concerner des réponses ARP, des informations sur des ports distants, ou
des réponses de routeurs distants.
- Liaison de sortie : il récupère un paquet sur l'interface de
sortie, le modifie, et le renvoi sur l'interface d'entrée : il vérifie
s'il y a des paquets à envoyer.
- Ensuite, il vérifie s'il y a un paquet à envoyer pour le scanner,
trace-route ou le générateur. Ce paquet peut être une demande ARP, un
paquet du scanner pour tester les ports distants ou un paquet du
trace-route dont le TTL est incémenté après chaque réponse ou un certain
Time-Out. Il s'occupe de même de vérifier certaines conditions qui
désactiveraient le trace-route ou le scanner telles que les
Time-Out.
Le thread de l'affichage a pour but d'afficher les erreurs ou les réponses
dans les différents éléments tels que le TreeView ou les ListBox du scanner
et du trace-route. Pour cela, tant que la file n'est pas vide, il en extrait
le premier élément. Il peut l'afficher dans l'élément approprié car le type
du paquet (type énuméré : Err, Trace, Scan) est enfilé avec. Lorsque la file
est vide, le thread s'auto-suspend. Dans ces cas, dès qu'un paquet est enfilé,
le thread du sniffer relancera le thread de l'affichage.
Next: File sécurisée : Nicolas
Up: Gestion des Threads et
Previous: Gestion des Threads et
  Contents
root
2002-06-23