Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2605 connectés 

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Paquets IP

n°112627
Gaspard
Posté le 13-06-2002 à 08:51:44  profilanswer
 

Bonjour,  
J'ai un programme serveur qui envoit des données à un programme client par l'intermédiaire de socket TCP ou UDP  
Les données à envoyer sont mises dans un buffer de taille quelconque  
 
J'aimerais savoir comment je peux compter le nombre de paquets IP émis par le serveur et la taille des paquets émis  
J'aimerais savoir comment je peux compter le nombre de paquets IP reçu par le client et la taille de ces paquetq  
 
Rq: mon programme est en langage C

mood
Publicité
Posté le 13-06-2002 à 08:51:44  profilanswer
 

n°112633
246tNt
Resistance is futile
Posté le 13-06-2002 à 09:28:06  profilanswer
 

man tcpdump

n°112664
fabriceMer​c
Posté le 13-06-2002 à 11:19:48  profilanswer
 

tu fais un projet tutoré ou c'est pour le plaisir ?

n°112717
sneakz
Posté le 13-06-2002 à 13:26:45  profilanswer
 

Si on se concentre sur la couche réseau, c'est difficile à définir dans la mesure où l'en-tête IP peut varier en fonction du champ options  et de la taille des données que tu envoies (cf. structure d'un paquet IP). Il est bon de repérer le 3 ème et le 4 ème octet de l'en-tête pour y repérer la longueur totale de l'en-tête.
Ensuite il faut tenir compte de la couche transport et de l'en-tête TCP qui est encapsulé dans le paquet IP. Il faut tenir compte également de la couche liaison de données.
Il faudrait donc analyser chaque trame envoyées et reçues.
A moins que tu veuilles coder en C un sniffer, je te conseille d'utiliser Ethereal ss nux pour analyser les données entrantes et sortantes lorsque tu testes ton application serveur/client.  
 
Je ne sais pas si j'ai répondu à ta question.

n°112724
Gaspard
Posté le 13-06-2002 à 13:53:39  profilanswer
 

merci pour ta réponse Sneakz
 
Ce que je veux faire c'est pas un sniffer en C mais un micro-sniffer en C, uniquement pour compter le nombre de paquets.
 
Le problème auquel je suis confronté, c'est que je peux seulement compter le nombre de fois que j'envoi un message dans le buffer.
Le message pouvant être fragmenté soit au niveau de la couche TCP (avec le MSS), soit au niveau de la couche IP (avec le MTU), le nombre de messages envoyés ne correspondra pas forcément au  nombre de paquets envoyés sur le réseau.
La seule solution que j'ai trouvé, c'est un calcul : nbpaquets = nb_message*taille_buffer / MTU
J'aimerai pouvoir accéder directement au niveau IP au nombre de paquets envoyés sans avoir à faire ce calcul.  
En fait, je veux être averti au moment où la couche IP envoi un paquet sur le réseau pour pouvoir incrémenter le compteur du nombre de paquets et ça j'ai aucune idée de comment on fait en C

n°112734
MaxMaveric​k
bli bli
Posté le 13-06-2002 à 14:26:22  profilanswer
 

Citation :

En fait, je veux être averti au moment où la couche IP envoi un paquet sur le réseau pour pouvoir incrémenter le compteur du nombre de paquets et ça j'ai aucune idée de comment on fait en C

 
 
Bein c normal, ... ca se fait pas ... c plutot a toi de chercher les stats.
 
Bon sinon trois/quatres infos:
 pour faire ce que tu veut il fait que tu ouvre le device eth0 en raw, comment je sais pas mais regarde les sources de tcpdump.
 deuz pour faire sa il faut obligatoirement que ton programme dispose des autorisations necessaires (ie il faut qu'il tourne en root).
 troiz normalement tu ne devrait pas avoir a faire ca dans un prog. si ce pour monitorer ton prog tu peut utiliser directement tcpdump/ethereal qui sont bien plus puissant.
 quatriement tu programme comment tes communications reseaux parce que la ...
 
Sinon je vois pas trop l'interet de la chose. Si tu veut vraiment t'emmerder avec la notions de paquets tu utilise UDP:> a chaque send il va envoyer un paquets de taille max la MTU (si plus ca tonque ou ca echoue)

n°112735
sneakz
Posté le 13-06-2002 à 14:27:30  profilanswer
 

Jette un coup d'oeil sur le code source fyrespoof.c et plus particulièrement les lignes de code concernant la capture et la fonction qui traitent les paquets en fonction de leur contenu à l'adresse suivante :
 
http://projet7.tuxfamily.org/labor [...] /spoof.htm
 
Cela peut peut-être te donner des débuts de piste pour ton micro-sniffer.


Aller à :
Ajouter une réponse
 

Sujets relatifs
paquets non officiels xfree 4.2 debianhelp debian 2.2 - nouveaux paquets
Plus de sujets relatifs à : Paquets IP


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)