par tomtom » 10 Mai 2003 12:27
Un pacquet syn/ack doit suivre un paquet syn !
<BR>
<BR>Si le linux n'a pas envoyé de syn et qu'il reçoit un syn/ack, il pense que c'est une connexion erronée et repond par unreset pour revenir au début de l'etablissement de connexion.
<BR>
<BR>Je rappelle les trois phases de l'etablissement d'un session tcp :
<BR>(three ways handshake)
<BR>
<BR>Emmission d'un paquet de A vers B avec :
<BR>
<BR>ip source : ipA
<BR>port source : port aléatoire > 1024 (si on fait bien les choses, mais ce n'est pas obligatoire) ex: 2000
<BR>ip dest : ipB
<BR>port dest : port à l'ecoute sur B ex : 80
<BR>flag : SYN
<BR>
<BR>B recoit se paquet et ouvre une socket, repond par un paquet :
<BR>
<BR>ipsource : ipB
<BR>port source : 80
<BR>ip dest : ipA
<BR>port dest : 2000
<BR>flag : SYN, ACK
<BR>
<BR>Ce paquet signifie que la connexion est acceptée
<BR>
<BR>A valide l'etablissement de la session par un acquittement :
<BR>
<BR>ip source : ipA
<BR>port source : 2000
<BR>ip dest : ipB
<BR>port dest : 80
<BR>flag : ACK
<BR>
<BR>
<BR>A ce niveau, les numéros de sequence tcp sont initialisés (non présenté ici !) et on peut commencer à s'envoyer des paquets dans la socket TCP ouverte !
<BR>
<BR>Si tu essayes de court-circuiter la première une etape, tu n'établiras jamais de connexion !
<BR>
<BR>Thomas
One hundred thousand lemmings can't be wrong...