Quelqu'un m'a envoyé la trace suivante et m'a demandé si elle représentait des retransmissions parce que les "numéros de paquets" étaient dupliqués
T 0536 TCP host.subdomain.domain.com host2.sub2.dom2.com 49957 4000 A T 0536 TCP host.subdomain.domain.com host2.sub2.dom2.com 49957 4000 A T 0536 TCP host.subdomain.domain.com host2.sub2.dom2.com 49957 4000 A T 0536 TCP host.subdomain.domain.com host2.sub2.dom2.com 49957 4000 A T 0536 TCP host.subdomain.domain.com host2.sub2.dom2.com 49957 4000 A T 0486 TCP host.subdomain.domain.com host2.sub2.dom2.com 49957 4000 PA R 0000 TCP host2.sub2.dom2.com host.subdomain.domain.co 4000 49957 A R 0000 TCP host2.sub2.dom2.com host.subdomain.domain.co 4000 49957 A R 0000 TCP host2.sub2.dom2.com host.subdomain.domain.co 4000 49957 A R 0000 TCP host2.sub2.dom2.com host.subdomain.domain.co 4000 49957 A R 0044 TCP host2.sub2.dom2.com host.subdomain.domain.co 4000 49957 PA T 0536 TCP host.subdomain.domain.com host2.sub2.dom2.com 49957 4000 A T 0536 TCP host.subdomain.domain.com host2.sub2.dom2.com 49957 4000 A T 0536 TCP host.subdomain.domain.com host2.sub2.dom2.com 49957 4000 A
J'ai été un peu troublé par son utilisation des "numéros de paquets" ; elle faisait référence aux deux dernières colonnes numériques. Je lui ai expliqué qu'il s'agissait des numéros de port d'origine et de destination, et non des numéros de paquets. Malheureusement, je n'ai pas pu répondre à sa question car elle n'a pas saisi suffisamment d'informations de l'en-tête du paquet TCP pour pouvoir dire s'il s'agit de retransmissions ou non.
Pour déterminer si un paquet TCP est une retransmission, vous devez saisir le numéro de séquence du paquet. Au début de chaque connexion TCP, les deux hôtes sélectionnent des numéros de séquence aléatoires, puis ils incrémentent le numéro de séquence pour chaque octet de données TCP qu'ils envoient. L'hôte récepteur renvoie dans le champ d'accusé de réception le numéro de séquence qu'il s'attend à voir ensuite.
L'exemple suivant montre ce que je recommande comme ensemble minimum d'arguments de contrôle pour packet_monitor ; en supposant que vous êtes intéressé par plus que les seules informations sur l'envoi ou la réception d'un paquet. L'argument interface identifie l'interface IP à surveiller. Si vous ne fournissez pas de nom d'interface, packet_monitor surveillera toutes les interfaces. Packet_monitor peut utiliser une grande quantité de mémoire de flux, l'utilisation de l'argument interface aidera à réduire cette quantité. L'argument -verbose est ce qui imprimera réellement les numéros de séquence et d'acquittement, encore une fois sans cela il n'y a aucun moyen d'identifier les retransmissions. Il imprimera également d'autres informations utiles pour l'analyse des traces, par exemple la durée de vie (TTL) et la taille de la fenêtre (window). Les arguments -filter -host et -port permettent d'identifier une connexion spécifique et de réduire le nombre de paquets à examiner.
packet_monitor -interface #sdlmux.m16.11-2 -verbose -filter -host 172.16.1.34 -p +ort 23 dir icmp type tcp dir len proto source destination src port dst type de port Xmit IP Ver/HL 45, ToS 0, Len 29, ID 8569, Flg/Frg 0, TTL 3c, Prtl 6 Cksum 9eaf, Src ac100174, Dst ac100122 TCP de phx_vos-m16.51094 à 172.16.1.34.telnet seq 448953077, ack 1766884569, fenêtre 65535, 1 octet de données, drapeaux Push Ack. X/Off 05, Drapeaux 18, Cksum 9c85, Urg-> 0000
Rcvd IP Ver/HL 45, ToS 0, Len 29, ID 45db, Flg/Frg 0, TTL 3c, Prtl 6 Cksum de3d, Src ac100122, Dst ac100174 TCP de 172.16.1.34.telnet à phx_vos-m16.51094 seq 1766884569, ack 448953078, fenêtre 8192, 1 octet de données, drapeaux Push Ack. X/Off 05, Drapeaux 18, Cksum c984, Urg-> 0000
Xmit IP Ver/HL 45, ToS 0, Len 29, ID 8576, Flg/Frg 0, TTL 3c, Prtl 6 Cksum 9ea2, Src ac100174, Dst ac100122 TCP de phx_vos-m16.51094 à 172.16.1.34.telnet seq 448953078, ack 1766884570, window 65535, 1 octet de données, flags Push Ack. X/Off 05, Drapeaux 18, Cksum d883, Urg-> 0000
Rcvd IP Ver/HL 45, ToS 0, Len 29, ID 45dc, Flg/Frg 0, TTL 3c, Prtl 6 Cksum de3c, Src ac100122, Dst ac100174 TCP de 172.16.1.34.telnet à phx_vos-m16.51094 seq 1766884570, ack 448953079, fenêtre 8192, 1 octet de données, drapeaux Push Ack. X/Off 05, Drapeaux 18, Cksum c982, Urg-> 0000
Xmit IP Ver/HL 45, ToS 0, Len 28, ID 8580, Flg/Frg 0, TTL 3c, Prtl 6 Cksum 9e99, Src ac100174, Dst ac100122 TCP de phx_vos-m16.51094 à 172.16.1.34.telnet seq 448953079, ack 1766884571, window 65535, 0 octets de données, flags Ack. X/Off 05, Drapeaux 10, Cksum 098b, Urg-> 0000
Rcvd IP Ver/HL 45, ToS 0, Len 28, ID 45dd, Flg/Frg 0, TTL 3c, Prtl 6 Cksum de3c, Src ac100122, Dst ac100174 TCP de 172.16.1.34.telnet à phx_vos-m16.51094 seq 1766884571, ack 448953079, fenêtre 8192, 0 octet de données, flags Ack. X/Off 05, Drapeaux 10, Cksum e98a, Urg-> 0000
Les numéros de séquence ci-dessus sont augmentés de 1 car chaque paquet ne contient qu'un seul octet de données. Si les paquets comprenaient 10, 23 ou 1023 octets, les numéros de séquence augmenteraient de 10, 23 ou 1023.
Alors, à quoi ressemble une retransmission ? Lors d'une retransmission, le numéro de séquence est soit inférieur, soit égal au numéro de séquence précédent et comporte au moins 1 octet de données, les paquets sans données ne comptent pas. Dans l'exemple suivant, le numéro de séquence 448953089 est répété plusieurs fois. Chaque fois, sauf la première, il s'agit d'une retransmission.
packet_monitor -interface #sdlmux.m16.11-2 -verbose -filter -host 172.16.1.34 -p +ort 23 dir icmp type tcp dir len proto source destination src port dst type de port
Rcvd IP Ver/HL 45, ToS 0, Len 28, ID 4d43, Flg/Frg 0, TTL 3c, Prtl 6 Cksum d6d6, Src ac100122, Dst ac100174 TCP de 172.16.1.34.telnet à phx_vos-m16.51094 seq 1766885133, ack 448953089, window 8192, 0 octet de données, flags Ack. X/Off 05, Drapeaux 10, Cksum e74e, Urg-> 0000
Xmit IP Ver/HL 45, ToS 0, Len 29, ID 9191, Flg/Frg 0, TTL 3c, Prtl 6 Cksum 9287, Src ac100174, Dst ac100122 TCP de phx_vos-m16.51094 à 172.16.1.34.telnet seq 448953089, ack 1766885133, fenêtre 65535, 1 octet de données, drapeaux Push Ack. X/Off 05, Drapeaux 18, Cksum 9745, Urg-> 0000
Xmit IP Ver/HL 45, ToS 0, Len 29, ID 919a, Flg/Frg 0, TTL 3c, Prtl 6 Cksum 927e, Src ac100174, Dst ac100122 TCP de phx_vos-m16.51094 à 172.16.1.34.telnet seq 448953089, ack 1766885133, fenêtre 65535, 1 octet de données, drapeaux Push Ack. X/Off 05, Drapeaux 18, Cksum 9745, Urg-> 0000
Xmit IP Ver/HL 45, ToS 0, Len 29, ID 91a0, Flg/Frg 0, TTL 3c, Prtl 6 Cksum 9278, Src ac100174, Dst ac100122 TCP de phx_vos-m16.51094 à 172.16.1.34.telnet seq 448953089, ack 1766885133, fenêtre 65535, 1 octet de données, drapeaux Push Ack. X/Off 05, Drapeaux 18, Cksum 9745, Urg-> 0000
. . .
Xmit IP Ver/HL 45, ToS 0, Len 29, ID 91f9, Flg/Frg 0, TTL 3c, Prtl 6 Cksum 921f, Src ac100174, Dst ac100122 TCP de phx_vos-m16.51094 à 172.16.1.34.telnet seq 448953089, ack 1766885133, fenêtre 65535, 1 octet de données, drapeaux Push Ack. X/Off 05, Drapeaux 18, Cksum 9745, Urg-> 0000
Rcvd IP Ver/HL 45, ToS 0, Len 29, ID 4f04, Flg/Frg 0, TTL 3c, Prtl 6 Cksum d514, Src ac100122, Dst ac100174 TCP de 172.16.1.34.telnet à phx_vos-m16.51094 seq 1766885133, ack 448953090, fenêtre 8192, 1 octet de données, drapeaux Push Ack. X/Off 05, Drapeaux 18, Cksum 7744, Urg-> 0000
Outre l'interface et les arguments verbeux, j'inclurais le time_stamp et les arguments numériques. L'argument time_stamp met une estampille temporelle sur chaque paquet affiché, ce qui facilite la corrélation des messages dans les fichiers journaux avec la trace et permet d'estimer la durée réelle des événements, comme une séquence de retransmission. L'argument numérique réduit la surcharge en ne recherchant pas les noms d'hôtes ou de ports.
packet_monitor -interface #sdlmux.m16.11-2 -verbose -time_stamp -numeric -filter + -hôte 172.16.1.34 -port 23 type de dir icmp + tcp hh:mm:ss.ttt dir len proto source destination src port ds +t type de port 14:30:17.604 Xmit IP Ver/HL 45, ToS 0, Len 29, ID 9b7b, Flg/Frg 0, TTL 3 +c, Prtl 6 Cksum 889d, Src ac100174, Dst ac100122 TCP du 172.16.1.116.51094 au 172.16.1.34.telnet seq 448953090, ack 1766885134, fenêtre 65535, 1 octet de données, drapeaux Push Ack. X/Off 05, Drapeaux 18, Cksum 9b43, Urg-> 0000
14:30:17.606 Rcvd IP Ver/HL 45, ToS 0, Len 29, ID 5442, Flg/Frg 0, TTL 3 +c, Prtl 6 Cksum cfd6, Src ac100122, Dst ac100174 TCP du 172.16.1.34.telnet au 172.16.1.116.51094 seq 1766885134, ack 448953091, fenêtre 32768, 1 octet de données, drapeaux Push Ack. X/Off 05, Drapeaux 18, Cksum 1b42, Urg-> 0000
Si vous savez que le problème se situe au niveau de la couche TCP ou IP, c'est généralement toute l'information dont vous avez besoin. Toutefois, si le problème peut se situer au niveau de la couche application, vous avez également besoin des données réelles. Vous pouvez afficher les données avec l'argument -hex_dump. Par défaut, seuls les 128 premiers octets de données sont affichés. Pour être sûr de la taille, je fixe toujours la longueur à 1500, ce qui permet d'afficher toutes les données dans le paquet.
packet_monitor -interface #sdlmux.m16.11-2 -verbose -time_stamp -numeric -hex_du +mp -longueur 1500 -filtre -hôte 172.16.1.34 -port 23 type de dir icmp + tcp hh:mm:ss.ttt dir len proto source destination src port ds +t type de port 10:25:19.387 Rcvd IP Ver/HL 45, ToS 0, Len 3b, ID f8f, Flg/Frg 0, TTL 3 +c, Prtl 6 Cksum 1478, Src ac100122, Dst ac100174 TCP du 172.16.1.34.49562 au 172.16.1.116.telnet seq 110526313, ack 1206659552, fenêtre 32768, 19 octets de données, drapeaux Push Ack +. X/Off 05, Drapeaux 18, Cksum d3ee, Urg-> 0000 offset 0 . . . 4 . . . 8 . . . C . . . 0...4... 8...C... 0 54 68 69 73 20 69 73 20 6f 6e 6c 79 20 61 20 74 * Il s'agit seulement d'un t 10 65 73 74 * est
10:25:19.389 Xmit IP Ver/HL 45, ToS 0, Len 3b, ID f969, Flg/Frg 0, TTL 3 +c, Prtl 6 Cksum 2a9d, Src ac100174, Dst ac100122 TCP du 172.16.1.116.telnet au 172.16.1.34.49562 seq 1206659552, ack 110526332, fenêtre 8192, 19 octets de données, drapeaux Push Ack +. X/Off 05, Drapeaux 18, Cksum 33dc, Urg-> 0000 offset 0 . . . 4 . . . 8 . . . C . . . 0...4... 8...C... 0 54 68 69 73 20 69 73 20 6f 6e 6c 79 20 61 20 74 * Il s'agit seulement d'un t 10 65 73 74 * est
10:25:22.263 Xmit IP Ver/HL 45, ToS 0, Len 28, ID f994, Flg/Frg 0, TTL 3 +c, Prtl 6 Cksum 2a85, Src ac100174, Dst ac100122 TCP du 172.16.1.116.telnet au 172.16.1.34.49562 seq 1206659571, ack 110526332, window 8192, 0 octet de données, flags Ack. X/Off 05, Drapeaux 10, Cksum 7b7a, Urg-> 0000 Pas de données tcp.
Avant d'envoyer une trace packet_monitor avec des données à qui que ce soit, n'oubliez pas d'aseptiser les données - à la fois des valeurs textuelles et hexadécimales pour supprimer les informations propriétaires. Dans certaines circonstances, vous pouvez également nettoyer les adresses IP. Les adresses IP se trouvent à deux endroits, dans la ligne de décodage de l'en-tête du protocole, elles apparaissent en notation décimale standard en pointillés. Dans la ligne située immédiatement au-dessus de la ligne de décodage, elles apparaissent sous forme de valeurs hexadécimales.
10:25:22.263 Xmit IP Ver/HL 45, ToS 0, Len 28, ID f994, Flg/Frg 0, TTL 3 +c, Prtl 6 Cksum 2a85, Src ac100174, Dst ac100122 TCP du 172.16.1.116.telnet au 172.16.1.34.49562 seq 1206659571, ack 110526332, window 8192, 0 octet de données, flags Ack. X/Off 05, Drapeaux 10, Cksum 7b7a, Urg-> 0000 Pas de données tcp.