Les Forums

Les Forums

Les forums sont fermés. Ils restent présent pour consultation et archivage.
Vous pouvez désormais poser vos questions directement dans les commentaires en bas de chaque page du site.
Alors n'hésitez pas à participer

Trame TCP

Bonjour,

Voila j'essaie d'analyser bien comme il le faut une trame TCP envoyée sur un serveur notament ici un serveur web:

je me suis connecté sur un serveur web puis j'ai envoyé la commande GET voici le résultat obtenu :


, seq 1499274313, win 5840
par03s01-in-f104.1e100.net.www > raphael.local.49344: Flags [S.], seq 3480042348, ack 1499274314, win 5672,
raphael.local.49344 > par03s01-in-f104.1e100.net.www: Flags [.], ack 1, win 183,

raphael.local.49344 > par03s01-in-f104.1e100.net.www: Flags [P.], seq 1:6, ack 1, win 183
par03s01-in-f104.1e100.net.www > raphael.local.49344: Flags [.], ack 6, win 89,
par03s01-in-f104.1e100.net.www > raphael.local.49344: Flags [P.], seq 1:825, ack 6, win 89
raphael.local.49344 > par03s01-in-f104.1e100.net.www: Flags [.], ack 825, win 234,

par03s01-in-f104.1e100.net.www > raphael.local.49344: Flags [F.], seq 825, ack 6, win 89
raphael.local.49344 > par03s01-in-f104.1e100.net.www: Flags [F.], seq 6, ack 826, win 234
par03s01-in-f104.1e100.net.www > raphael.local.49344: Flags [.], ack 7, win 89


Les trois premiers paquets ne m'interessent pas, parce que j'ai bien saisie le fonctionnement avec le num sequence .

Ce qui m'interesse c'est ceci :


, seq 1:6, ack 1, win 183
par03s01-in-f104.1e100.net.www > raphael.local.49344: Flags [.], ack 6, win 89,
par03s01-in-f104.1e100.net.www > raphael.local.49344: Flags [P.], seq 1:825, ack 6, win 89
raphael.local.49344 > par03s01-in-f104.1e100.net.www: Flags [.], ack 825, win 234,

lorsque j'envoie un flaf PUSH si je comprends bien je demande au protocole tcp de transmettre les données à la couche supérieur.





Ensuite on peut voir que j'ai UN numero de sequence et UN numero ACK
[u:4671795ff1]seq 1:6, ack 1[/u:4671795ff1]






Ensuite on peut voir une réponse du serveur avec un numero d'acquitement de 6









, ack 1, win 183,
raphael.local.49344 > par03s01-in-f104.1e100.net.www: Flags [P.], seq 1:6, ack 1, win 183,
par03s01-in-f104.1e100.net.www > raphael.local.49344: Flags [.], ack 6, win 89,

par03s01-in-f104.1e100.net.www > raphael.local.49344: Flags [P.], seq 1:825, ack 6, win 89,
raphael.local.49344 > par03s01-in-f104.1e100.net.www: Flags [.], ack 825, win 234

Merci à vous !!! 😉

EDIT: J'utilise tcpdump ...

Tu demandes à la couche 4 de traiter les infos qu'elle reçoit au plus vite.


C'est le serveur qui te renvoie un ack pour acquitter réception de ton paquet précédent. D'ailleurs ton PSH avait aussi un ACK. Le flag ACK est désormais présent dans TOUS les segments TCP.

Ensuite on peut voir que j'ai UN numero de sequence et UN numero ACK
[u:84f64a687d]seq 1:6, ack 1[/u:84f64a687d]

Pourquoi donner un numero de sequence 1:6 avec un ack de 1[/color:84f64a687d]
C'est une question d'affichage.
Le 1 représente le numéro de séquence précédent. Le 6 le numéro de séquence actuel (qui montre que tu as envoyé 5 octets, au passage)
Le 1 représente le numéro d'acquittement, soit ce que tu as reçu de la part du serveur. En l'occurence 1 à la fin du 3 way handshake.

Ensuite on peut voir une réponse du serveur avec un numero d'acquittement de 6

Je me demande pourquoi ne pas donner un numero d'acquittement qui est égal au numero de sequence recu + 1 ce qui donnerai 6+1=7[/color:84f64a687d]
Tout simplement car le serveur acquitte la réception des données envoyées, soit 5 octets de plus que précédemment, soit 6 (on conserve le +1 du 3 way handshake)
En fait, on ajoute +1 au numéro d'acquittement QUE pour acquitter la réception d'un segment avec SYN ou FIN. Ce qui a lieu lors de la synchro de la connexion (échange de SYN, c'est pour ça qu'on finit avec un numéro de séquence à 1 et une numéro d'acquittement à 1)
Ensuite, le numéro de séquence n'augmente qu'en fonction des octets échangés. J'envoie 10 octets, j'ajoute 10 à mon numéro de séquence, et le serveur augmentera de 10 son numéro d'acquittement quand il recevra ces 10 octets.




, ack 1, win 183,
raphael.local.49344 > par03s01-in-f104.1e100.net.www: Flags [P.], seq 1:6, ack 1, win 183,
par03s01-in-f104.1e100.net.www > raphael.local.49344: Flags [.], ack 6, win 89,

par03s01-in-f104.1e100.net.www > raphael.local.49344: Flags [P.], seq 1:825, ack 6, win 89,
raphael.local.49344 > par03s01-in-f104.1e100.net.www: Flags [.], ack 825, win 234

Merci à vous !!! 😉
En fait ce ne sont pas les mêmes paquets. le premier est un acquittement vide de la réception du précédent segment, le second est un envoi des données demandées. Ca pourrait se faire en un seul paquet, mais TCP ne le fait pas toujours.

C'est marrant, c'est le cours que j'ai fait à mes élèves de deuxième année ce matin !
Tu pourras rentrer en fin de deuxième année chez nous !
Tour d'abord merci de consacrer une partie de votre temps pour m'expliquer ce point assez délicat 😆
C'est vrai 2em année !! lol j'arrive demain !!!!! 😀


Si je comprends bien :



C'est à dire que seulement lors de la syncronisation SYN jusqu'a l'acquitement au début des segments TCP et pour fermer le segment FIN -> on ajoute +1

Sinon, pour le reste on commence à seq 1 et ack 1, donc si j'envoie 9 octet ca donnera :


Le serveur me répondra un aquitement de mes 9 octets donc:

Puisque on initie tous les numero se sequence et d'acquitement à 1, donc 1+8=9octets
[/color:4e4034a2ea]

Tu demandes à la couche 4 de traiter les infos qu'elle reçoit au plus vite.


Vous parlez de quel modéle OSI ou TCP/IP , actuellement on se base sur quel modéle de référence ?

De plus, comment se fait-il qu'un GET se constitue de 5octets peu etre parce que c'est : GET \r\n --> 3 octets pour le get, un pour \r et un dernier pour un saut à la ligne \r ???

Merci !!!! 🙂

EDIT :

Je crois avoir fait une erreur :

Sinon, pour le reste on commence à seq 1 et ack 1, donc si j'envoie 9 octet ca donnera :


Le serveur me répondra un aquitement de mes 9 octets donc:

Puisque on initie tous les numero se sequence et d'acquitement à 1, donc 1+9=10octets[/color:4e4034a2ea]

Je pense plus à ça sinon ca n'aurait pas été logique
Oui, c'est bien ce que tu as remis par la suite.

Quant à la deuxième année, ce n'est pas une blague !
Le principe de l'école est d'accepter les élèves à leur niveau. Si tu as déjà vu le programme des semestres précédents, pas la peine de les refaire !
Aprés mon bac je reverai d'intégrer INtech info !! mais on va dire que je n'ai pas le financement deriére pour ce type d'école ..

C'est pourquoi ma seul possibilité est d'entrer en 1er année de bts/dut etc ....
SInon je ne vois pas torp comment m'y prendre ..
Il y a des banques qui prêtent de l'argent pour aider les étudiants à financer leurs études.
Nous avons un partenariat avec la société générale pour cela.

Par ailleurs, si tu rentres, par exemple, en quatrième semestre (ce qui me semble le plus probable étant donné des connaissances que tu démontres) tu n'auras que le quatrième et le cinquième semestres à payer. Le sixième tu seras en stage rémunéré (qui paye en partie ou en totalité tes études) et les quatre derniers semestres sont financés par l'entreprise qui t'accueille en alternance.
Ça fait 8000€ à financer (ce qui n'est pas négligeable...)

Après reste à valider l'entrée en 4eme semestre, mais cela me semble tout à fait jouable (bosser le langage C, PHP/mysql et les bases des réseaux)

Je ne vois pas tous les jours des élèves aussi intéressés, curieux et qui ont soif d'apprendre, ça fait plaisir !
Attender je réve!! ou se trouve votre école ? sur les Gobelins ?

SI c'est ça !!! bha je suis à l'école se trouvant aussi sur les Gobelins !!!
On n'y est plus !

On a déménagé il y a 3 ans sur Ivry-sur-seine pour faire un campus avec l'esiea.
Mais c'est à 20min de métro par la ligne 7.