Deja il faut savoir comment marche Internet : quand un ordi A veut envoyer qqchose a un ordi B par internet, deja il doit connaitre son adresse IP, un truc du genre 129.199.129.1 (ca c'est l'adresse de clipper). L'ordi A a bien sur une carte reseau, branchee sur un cable, et pour envoyer son paquet a B, il va juste tranmettre le paquet, avec l'adresse destination (celle de B), dans le cable, sans se poser de question. A l'autre bout du cable y'a toujours un routeur. Un routeur c'est un ordi dedie au reseau, qui a plein de cables qui lui arrivent dessus. Quand un paquet arrive sur le routeur, il regarde son adresse destination, et il le transmet sur le bon cable de sortie. Par exemple. un routeur qui serait a paris, connecte a 3 cables : un qui vient de paris, un qui va vers lyon et un qui va vers strasbourg, va diriger tous les paquets qui lui arrivent soit vers lyon soit vers strasbourg, selon l'adresse de destination des paquets. En pratique, pour transmettre un paquet de mon labo jusqu'a l'ordi de l'ENS que le SPI m'a refile, il faut passer par 24 routeurs. (mais j'ai pas a m'en occuper, c'est ca qui est pratique, c'est automatique) En general, le chemin emprunte par un paquet pour aller de A a B sera toujours le meme (et ne sera pas forcement le chemin inverse de B vers A, en fait c'est super rare que ca arrive) Du moins pendant assez longtemps, parce que la geometrie d'Internet bouge tout le temps. Mon but c'est de reussir a faire des mesures sur les routeurs. Pas gagne du tout parce que on peut pas se connecter a un routeur, lui le seul truc qu'il fait dans sa vie c'est recevoir des paquets et les transmettre. Un paquet internet a donc autre chose que les donnes brutes a transmettre, y'a entre autres : - l'adresse source de A - l'adresse destination de B - plein d'autres options Heureusement y'a des feintes : les paquets ont une option appellee TTL, (time-to-live) qui peut valoir de 0 a 255, en general quand A envoie un paquet le TTL du paquet est a 255, et a chaque fois que le paquet passe par un routeur, le routeur enleve 1 au TTL. Si par hasard le TTL est alors 0, le routeur ne transmet pas le paquet, mais au contraire renvoie un message a A (un autre paquet, en fait) qui veut dire "Time-Exceeded in transfer". Le routeur sait envoyer le paquet "erreur" a A car dans tous les paquets qui viennent de A y'a justement l'adresse de A. Donc, si j'envoie un paquet de mon ordi ici vers l'ENS avec un TTL plus petit que 24 (le nb de routeurs sur la route), il arrivera jamais, et je recevrai ici un paquet "time-exceeded" Et la y'a la feinte : j'envoie des paires de paquets de A (disons, l'ordi ici) vers B (l'ordi a l'ENS) Dans chaque paire y'a le premier paquet qui a un petit TTL, genre entre 1 et 23. le deuxieme paquet est envoye tout de suite apres (colle) mais par contre avec un TTL de 255. Donc, si vous avez suivi, B ne recevra que les deuxieme paquets de chaque paire. Sauf que non, parce que j'ai truque les premiers paquets, en modifiant leur adresse d'origine : la nouvelle adresse d'origine est l'adresse de B, et plus celle de A (ce qui est faux bien sur, mes paquets viennent bel et bien de A). Mais du coup, quand au cours de sa route, le premier paquet voit son TTL arriver a 0, (si son TTL etait a 5 au debut ce sera au 5eme routeur) le routeur en question va envoyer le message d'erreur a l'adresse d'origine.. Donc a B en fait! finalement, B recoit bien de paires de paquets, mais le premier est juste remplace par un paquet "erreur" Or la transformation paquet normal -> paquet "erreur" qui se fait au niveau du routeur prend un certain temps, ce qui fait que des fois le deuxieme paquet qui etait derriere a le temps de depasser le premier pendant qu'il se fait transformer en message d'erreur. (tout ca va tres tres vite). En fait, ca depend de la taille de ce deuxieme paquet, car plus il est gros plus le routeur va mettre de temps a le transmettre, et si il met trop de temps, le premier paquet a largemenet le temps d'etre transforme, et il reste donc derriere. Ca depend donc aussi de la bande passante du routeur. Donc moi j'envoie plein de paires avec des deuxieme paquets de taille variable, et je regarde a partir de quelle taille les deux paquets arrivent dans l'ordre inverse : d'abord le deuxieme, puis le message d'erreur. Si la transformation normal->erreur met 120 microsecondes, et que j'observe un reordonnement pour un deuxieme paquet de taille 600 octets, ca veut dire que la bande passante du routeur c'est grosso modo 600/1.2*10^-4 = 5000000 = 5 Mo/s en gros ce sera le seul moyen (si ca marche) de mesurer la bande passante des routeurs. Et donc si ca marche ce sera trop bien aye pepito.