Salut!
Je pratique depuis quelques jours les socket (quel plaisir). C'est tout naturellement que je veux donc évolué tt ca et passer au raw socket (ca commence à chauffer
). Mon problème est que je bloque sur ma comprehension du protocole. Voila ce que j'ai compris:
1)Tout d'abord, j'ai un data (disons 764678 octets...). Je met tout ca dans un paquet TCP (ca aurait pu etre udp, ... ca je sais) avec une jolie() entete. Arrive alors ma première question: ce paquet a-t-il un MTU (une taille maximale)? Je dirais que non, mais je ne suis pas sur...
2) J'encapsule alors mon paquet (entete TCP + data) dans un autre paquet IP. J'ai donc un paquet compose comme ca: Entete IP|entete TCP|Data. Jusque la ca parait juste! Le probleme est que le protocole IP a lui un MTU. Je dois donc diviser mon paquet TCP en plein de petit paquet et les mettre dans des paquets IP. C'est la qu'arrivent mes questions:
- Qd je divise mon paquet TCP en plusieurs morceaux que je mes dans des paquets IP, je ne recopie pas l'entete TCP dans chaque paquet IP? Qd les differents paquets seront reassembler ca reformera mon paquet TCP avec une entete. Ca me parais logique, mais je ne suis pas sur...
- Est-ce que la MTU varie d'un pc/routeur à l'autre? Ou dois-je prendre des valeurs (http://fr.wikipedia.org/wiki/Maximum_Transmission_Unit.) qui varient seulement d'une interface reseau à l'autre?
Une autre question qui me trotte dans la tête depuis que j'ai lu certain truc sur libcap:
- Libcap permet de modifier l'entete de l'interface reseau? Par exemple l'interface ethernet? Un peu comme les raw socket avec certains protocoles.
Je sais que ca fais beaucoup de question, mais si vous pouviez repondre à certaines d'entre elles, ce serait déja génial!
Merci!
Partager