Alguien me envió el siguiente rastro y me preguntó si representaba retransmisiones porque los "números de paquete" estaban duplicados
T 0536 TCP host.subdominio.dominio.com host2.sub2.dom2.com 49957 4000 A T 0536 TCP host.subdominio.dominio.com host2.sub2.dom2.com 49957 4000 A T 0536 TCP host.subdominio.dominio.com host2.sub2.dom2.com 49957 4000 A T 0536 TCP host.subdominio.dominio.com host2.sub2.dom2.com 49957 4000 A T 0536 TCP host.subdominio.dominio.com host2.sub2.dom2.com 49957 4000 A T 0486 TCP host.subdominio.dominio.com host2.sub2.dom2.com 49957 4000 PA R 0000 TCP host2.sub2.dom2.com host.subdominio.dominio.co 4000 49957 A R 0000 TCP host2.sub2.dom2.com host.subdominio.dominio.co 4000 49957 A R 0000 TCP host2.sub2.dom2.com host.subdominio.dominio.co 4000 49957 A R 0000 TCP host2.sub2.dom2.com host.subdominio.dominio.co 4000 49957 A R 0044 TCP host2.sub2.dom2.com host.subdominio.dominio.co 4000 49957 PA T 0536 TCP host.subdominio.dominio.com host2.sub2.dom2.com 49957 4000 A T 0536 TCP host.subdominio.dominio.com host2.sub2.dom2.com 49957 4000 A T 0536 TCP host.subdominio.dominio.com host2.sub2.dom2.com 49957 4000 A
Estaba un poco confundida por su uso de "números de paquete"; se refería a las 2 últimas columnas numéricas. Le expliqué que estos son los números de los puertos de origen y destino, no los números de los paquetes. Lamentablemente, no pude responder a su pregunta porque no captó suficiente información del encabezado del paquete TCP para poder decir si se trata de retransmisiones o no.
Para determinar si un paquete TCP es una retransmisión, debe capturar el número de secuencia del paquete. Al principio de cada conexión TCP los dos hosts seleccionan números de secuencia aleatorios, y luego incrementan el número de secuencia para cada byte de datos TCP que envían. El host receptor repite en el campo de confirmación el número de secuencia que espera ver a continuación.
El siguiente ejemplo muestra lo que recomiendo como el conjunto mínimo de argumentos de control para packet_monitor; asumiendo que usted está interesado en algo más que la información de que un paquete fue enviado o recibido. El argumento de interfaz identifica la interfaz IP a monitorizar. Si no proporciona un nombre de interfaz, packet_monitor monitorizará todas las interfaces. Packet_monitor puede usar una gran cantidad de memoria de flujos, el uso del argumento interface ayudará a reducir esta cantidad. El argumento -verbose es lo que realmente imprimirá la secuencia y los números de confirmación, de nuevo sin esto no hay forma de identificar las retransmisiones. También imprimirá otra información útil para analizar las trazas, por ejemplo, los valores de tiempo de vida (TTL) y tamaño de la ventana (ventana). Los argumentos -filter -host y -port ayudan a identificar una conexión específica y reducen el número de paquetes que hay que mirar.
packet_monitor -interfaz #sdlmux.m16.11-2 -verbose -filtro -host 172.16.1.34 -p +ort 23 dir icmp tipo tcp dir len proto fuente destino src puerto dst puerto tipo 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 a 172.16.1.34.telnet seq 448953077, ack 1766884569, ventana 65535, 1 byte de datos, banderas Push Ack. X/Off 05, Banderas 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 a phx_vos-m16.51094 seq 1766884569, ack 448953078, ventana 8192, 1 byte de datos, banderas Push Ack. X/Off 05, Banderas 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 a 172.16.1.34.telnet seq 448953078, ack 1766884570, ventana 65535, 1 byte de datos, banderas Push Ack. X/Off 05, Banderas 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 a phx_vos-m16.51094 seq 1766884570, ack 448953079, ventana 8192, 1 byte de datos, banderas Push Ack. X/Off 05, Banderas 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 a 172.16.1.34.telnet seq 448953079, ack 1766884571, ventana 65535, 0 bytes de datos, banderas Ack. X/Off 05, Banderas 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 a phx_vos-m16.51094 seq 1766884571, ack 448953079, ventana 8192, 0 bytes de datos, banderas Ack. X/Off 05, Banderas 10, Cksum e98a, Urg-> 0000
Los números de secuencia anteriores se incrementan en 1 porque cada paquete contiene sólo 1 byte de datos, si los paquetes incluyeran 10 bytes, 23 bytes o 1023 bytes los números de secuencia aumentarían en 10, 23 o 1023.
Entonces, ¿cómo es una retransmisión? Con una retransmisión el número de secuencia es menor o igual que el número de secuencia anterior y tiene al menos 1 byte de datos, los paquetes sin datos no cuentan. En el siguiente ejemplo, el número de secuencia 448953089 se repite varias veces. Cada vez, excepto la primera, es una retransmisión.
packet_monitor -interfaz #sdlmux.m16.11-2 -verbose -filtro -host 172.16.1.34 -p +ort 23 dir icmp tipo tcp dir len proto fuente destino src puerto dst puerto tipo
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 a phx_vos-m16.51094 seq 1766885133, ack 448953089, ventana 8192, 0 bytes de datos, banderas Ack. X/Off 05, Banderas 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 a 172.16.1.34.telnet seq 448953089, ack 1766885133, ventana 65535, 1 byte de datos, banderas Push Ack. X/Off 05, Banderas 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 a 172.16.1.34.telnet seq 448953089, ack 1766885133, ventana 65535, 1 byte de datos, banderas Push Ack. X/Off 05, Banderas 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 a 172.16.1.34.telnet seq 448953089, ack 1766885133, ventana 65535, 1 byte de datos, banderas Push Ack. X/Off 05, Banderas 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 a 172.16.1.34.telnet seq 448953089, ack 1766885133, ventana 65535, 1 byte de datos, banderas Push Ack. X/Off 05, Banderas 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 a phx_vos-m16.51094 seq 1766885133, ack 448953090, ventana 8192, 1 bytes de datos, banderas Push Ack. X/Off 05, Banderas 18, Cksum 7744, Urg-> 0000
Además de la interfaz y los argumentos verbosos, incluiría los argumentos numéricos y de sello de tiempo. El argumento time_stamp pone una marca de tiempo en cada paquete mostrado, esto facilita la correlación de los mensajes en los archivos de registro con el rastro y permite estimar cuánto tiempo duran realmente los eventos, como una secuencia de retransmisión. El argumento numérico reduce la sobrecarga al no buscar nombres de host o puertos.
packet_monitor -interfaz #sdlmux.m16.11-2 -verbose -time_stamp -numérico -filtro + -host 172.16.1.34 -port 23 tipo de dir icmp + tcp hh:mm:ss.ttt dir len proto fuente destino src puerto ds +t tipo de puerto 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 de 172.16.1.116.51094 a 172.16.1.34.telnet seq 448953090, ack 1766885134, ventana 65535, 1 byte de datos, banderas Push Ack. X/Off 05, Banderas 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 de 172.16.1.34.telnet a 172.16.1.116.51094 seq 1766885134, ack 448953091, ventana 32768, 1 bytes de datos, banderas Push Ack. X/Off 05, Banderas 18, Cksum 1b42, Urg-> 0000
Si sabes que el problema está en la capa TCP o IP esta es típicamente toda la información que necesitas. Sin embargo, si el problema puede estar en la capa de aplicación también necesitas los datos reales. Puedes mostrar los datos con el argumento -hex_dump. Por defecto sólo se muestran los primeros 128 bytes de datos. Para estar en el tamaño seguro, siempre establezco la longitud a 1500 que mostrará todos los datos del paquete.
packet_monitor -interfaz #sdlmux.m16.11-2 -verbose -time_stamp -numérico -hex_du +mp -longitud 1500 -filtro -host 172.16.1.34 -puerto 23 tipo de dir icmp + tcp hh:mm:ss.ttt dir len proto fuente destino src puerto ds +t tipo de puerto 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 de 172.16.1.34.49562 a 172.16.1.116.telnet seq 110526313, ack 1206659552, ventana 32768, 19 bytes de datos, banderas Push Ack +. X/Off 05, Banderas 18, Cksum d3ee, Urg-> 0000 compensado 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 * Esto es sólo 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 de 172.16.1.116.telnet a 172.16.1.34.49562 seq 1206659552, ack 110526332, ventana 8192, 19 bytes de datos, banderas Push Ack +. X/Off 05, Banderas 18, Cksum 33dc, Urg-> 0000 compensado 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 * Esto es sólo 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 de 172.16.1.116.telnet a 172.16.1.34.49562 seq 1206659571, ack 110526332, ventana 8192, 0 bytes de datos, banderas Ack. X/Off 05, Banderas 10, Cksum 7b7a, Urg-> 0000 No hay datos de tcp.
Antes de enviar un trazado packet_monitor con datos a cualquier persona recuerde sanear los datos - tanto los valores de texto como los hexadecimales para eliminar la información propietaria. Bajo algunas circunstancias, puede que también desee desinfectar las direcciones IP. Las direcciones IP aparecen en dos lugares, en la línea de decodificación del encabezado del protocolo aparecen como notación decimal punteada estándar. En la línea inmediatamente superior a la línea de decodificación aparecen como valores hexadecimales.
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 de 172.16.1.116.telnet a 172.16.1.34.49562 seq 1206659571, ack 110526332, ventana 8192, 0 bytes de datos, banderas Ack. X/Off 05, Banderas 10, Cksum 7b7a, Urg-> 0000 No hay datos de tcp.