Bonjour,
Je suis en train de programmer un sniffer (ma question ne porte toutefois pas sur la programmation proprement dite). Avec libpcap, c'est assez facile de récupérer les paquets, de "traduire" les entêtes Ethernet, IP et TCP puis de stocker le résultat. Ca j'y arrive.
Là où j'ai une difficulté, c'est que je souhaite analyser le trafic HTTP. Il faut donc réassembler les packets en analysant, au niveau TCP, les numéros de séquence et d'acquiescement. Ca aussi j'y arrive, par exemple j'arrive à obtenir un entête HTTP suivi de la page HTML entière. Où est la difficulté me direz vous.
J'y arrive ! Le problème avec mon système, c'est que je ne sais pas quand finit une requête HTTP. Je réassemble les paquets selon les numéros d'acquiescement, mais je ne sais pas si le paquet que j'assemble est le dernier ou si d'autres vont encore venir. Ainsi, je ne sais pas afficher : "fin de chargement de la page x". Certes le dernier paquet est généralement plus petit que les précédents, mais je me dis que j'ai dû rater quelque chose dans le protocole TCP. A moins que cela soit géré au niveau HTTP ?
Merci pour vos lumières !
PS : Je post ici, car je pense avoir plus de chance que dans Réseau & co...