Sniffer TCP et HTTP - C - Programmation
Marsh Posté le 20-04-2008 à 18:11:20
Regarde le champ Content-Length dans les entête du message http, ça te donne la taille du document qui suit.
Marsh Posté le 20-04-2008 à 18:19:26
Si seulement tous les serveurs fournissaient cette information, ça serait trop beau. En pratique, peu de sites dynamiques fournissent ce champ (sauf ceux qui gzip leurs pages).
Merci quand même !
D'autres idées ?
Marsh Posté le 21-04-2008 à 01:12:07
En observant les paquets passer, j'ai fait quelques constatations :
Quelqu'un peut confirmer, car je n'ai rien vu de très clair dans les normes...
Marsh Posté le 28-04-2008 à 00:37:00
kalex a écrit : En observant les paquets passer, j'ai fait quelques constatations :
|
http://mathieu-lemoine.developpez. [...] /web/http/
Marsh Posté le 20-04-2008 à 17:24:25
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...