Alguém me enviou o seguinte rastreamento e perguntou se representava retransmissões porque os "números de pacotes" foram duplicados
T 0536 TCP host.subdomain.domínio.com host2.sub2.dom2.com 49957 4000 A T 0536 TCP host.subdomain.domínio.com host2.sub2.dom2.com 49957 4000 A T 0536 TCP host.subdomain.domínio.com host2.sub2.dom2.com 49957 4000 A T 0536 TCP host.subdomain.domínio.com host2.sub2.dom2.com 49957 4000 A T 0536 TCP host.subdomain.domínio.com host2.sub2.dom2.com 49957 4000 A T 0486 TCP host.subdomain.domínio.com host2.sub2.dom2.com 49957 4000 PA R 0000 TCP host2.sub2.dom2.com host.subdomínio.domínio.co 4000 49957 A R 0000 TCP host2.sub2.dom2.com host.subdomínio.domínio.co 4000 49957 A R 0000 TCP host2.sub2.dom2.com host.subdomínio.domínio.co 4000 49957 A R 0000 TCP host2.sub2.dom2.com host.subdomínio.domínio.co 4000 49957 A R 0044 TCP host2.sub2.dom2.com host.subdomínio.domínio.co 4000 49957 PA T 0536 TCP host.subdomain.domínio.com host2.sub2.dom2.com 49957 4000 A T 0536 TCP host.subdomain.domínio.com host2.sub2.dom2.com 49957 4000 A T 0536 TCP host.subdomain.domínio.com host2.sub2.dom2.com 49957 4000 A
Eu estava um pouco confuso com o uso de "números de pacotes"; ela estava se referindo às duas últimas colunas numéricas. Expliquei que estes são os números das portas de origem e de destino, não os números dos pacotes. Infelizmente, não pude responder a sua pergunta porque ela não captou informações suficientes do cabeçalho do pacote TCP para poder dizer se estes são retransmissões ou não.
Para determinar se algum pacote TCP é uma retransmissão, você deve capturar o número de seqüência do pacote. No início de cada conexão TCP, os dois hosts selecionam números de seqüência aleatórios, e então incrementam o número de seqüência para cada byte de dados TCP que eles enviam. O host receptor ecoa de volta no campo de reconhecimento o número seqüencial que espera ver a seguir.
O exemplo a seguir mostra o que eu recomendo como o conjunto mínimo de argumentos de controle para o packet_monitor; supondo que você esteja interessado em mais do que apenas as informações de que um pacote foi enviado ou recebido. O argumento da interface identifica a interface IP a ser monitorada. Se você não fornecer um nome de interface, o packet_monitor monitorará todas as interfaces. O Packet_monitor pode usar uma grande quantidade de memória de fluxos, usando o argumento da interface ajudará a reduzir esta quantidade. O argumento -verbose é o que realmente imprimirá a seqüência e os números de reconhecimento, novamente sem isto não há maneira de identificar retransmissões. Ele também imprimirá outras informações úteis na análise de traços, por exemplo, o tempo de vida (TTL) e os valores do tamanho da janela (janela). Os argumentos -filtro -host e -port ajudam a identificar uma conexão específica e reduzir o número de pacotes que você tem que olhar.
packet_monitor -interface #sdlmux.m16.11-2 -verbose -filtro -host 172.16.1.34 -p +ort 23 dir icmp tipo tcp dir len proto destino fonte src porto dst tipo de porto 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, janela 65535, 1 bytes de dados, bandeiras Push Ack. X/Off 05, Bandeiras 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 para phx_vos-m16.51094 seq 1766884569, ack 448953078, janela 8192, 1 bytes de dados, bandeiras Push Ack. X/Off 05, Bandeiras 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, janela 65535, 1 bytes de dados, bandeiras Push Ack. X/Off 05, Bandeiras 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 para phx_vos-m16.51094 seq 1766884570, ack 448953079, janela 8192, 1 bytes de dados, bandeiras Push Ack. X/Off 05, Bandeiras 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, janela 65535, 0 bytes de dados, bandeiras Ack. X/Off 05, Bandeiras 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 para phx_vos-m16.51094 seq 1766884571, ack 448953079, janela 8192, 0 bytes de dados, bandeiras Ack. X/Off 05, Bandeiras 10, Cksum e98a, Urg-> 0000
Os números sequenciais acima estão sendo aumentados em 1 porque cada pacote contém apenas 1 byte de dados, se os pacotes incluíssem 10 bytes, 23 bytes ou 1023 bytes os números sequenciais subiriam em 10, 23 ou 1023.
Então, como é uma retransmissão? Com uma retransmissão, o número da seqüência é menor ou igual ao número da seqüência anterior e tem pelo menos 1 byte de dados, os pacotes sem dados não contam. No exemplo a seguir, o número seqüencial 448953089 é repetido várias vezes. Cada vez, exceto a primeira, é uma retransmissão.
packet_monitor -interface #sdlmux.m16.11-2 -verbose -filtro -host 172.16.1.34 -p +ort 23 dir icmp tipo tcp dir len proto destino fonte src porto dst tipo de porto
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 para phx_vos-m16.51094 seq 1766885133, ack 448953089, janela 8192, 0 bytes de dados, bandeiras Ack. X/Off 05, Bandeiras 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, janela 65535, 1 bytes de dados, bandeiras Push Ack. X/Off 05, Bandeiras 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, janela 65535, 1 bytes de dados, bandeiras Push Ack. X/Off 05, Bandeiras 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, janela 65535, 1 bytes de dados, bandeiras Push Ack. X/Off 05, Bandeiras 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, janela 65535, 1 bytes de dados, bandeiras Push Ack. X/Off 05, Bandeiras 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 para phx_vos-m16.51094 seq 1766885133, ack 448953090, janela 8192, 1 bytes de dados, bandeiras Push Ack. X/Off 05, Bandeiras 18, Cksum 7744, Urg-> 0000
Além da interface e dos argumentos verbosos, eu incluiria os argumentos de tempo e numéricos. O argumento time_stamp coloca um carimbo de tempo em cada pacote exibido, isto facilita a correlação das mensagens nos arquivos de registro com o traço e permite estimar quanto tempo os eventos, como uma seqüência de retransmissão realmente duram. O argumento numérico reduz as despesas gerais por não procurar nomes de host ou porta.
packet_monitor -interface #sdlmux.m16.11-2 -verbose - timbre_selo -numérico -filtro + -host 172.16.1.34 -port 23 tipo dir icmp + tcp hh:mm:ss.ttt dir len proto fonte destino src porto ds +t tipo de porta 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, janela 65535, 1 bytes de dados, bandeiras Push Ack. X/Off 05, Bandeiras 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, janela 32768, 1 bytes de dados, bandeiras Push Ack. X/Off 05, Bandeiras 18, Cksum 1b42, Urg-> 0000
Se você sabe que o problema está na camada TCP ou IP, esta é normalmente toda a informação que você precisa. Entretanto, se o problema pode estar na camada de aplicação, você também precisa dos dados reais. Você pode exibir os dados com o argumento -hex_dump. Por padrão, apenas os primeiros 128 bytes de dados são exibidos. Para estar no tamanho seguro eu sempre defino o comprimento para 1500 que exibirá todos os dados no pacote.
packet_monitor -interface #sdlmux.m16.11-2 -verbose -time_stamp -numeric -hex_du +mp -length 1500 -filtro -host 172.16.1.34 -port 23 tipo dir icmp + tcp hh:mm:ss.ttt dir len proto fonte destino src porto ds +t tipo de porta 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, janela 32768, 19 bytes de dados, bandeiras Push Ack +. X/Off 05, Bandeiras 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 * Isto é apenas um 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, janela 8192, 19 bytes de dados, bandeiras Push Ack +. X/Off 05, Bandeiras 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 * Isto é apenas um 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, janela 8192, 0 bytes de dados, bandeiras Ack. X/Off 05, Bandeiras 10, Cksum 7b7a, Urg-> 0000 Sem dados de tcp.
Antes de enviar um rastreamento de pacote_monitor com dados a qualquer pessoa, lembre-se de sanitizar os dados - tanto os valores de texto quanto os valores hexadecimais para remover informações proprietárias. Em algumas circunstâncias, você também pode desejar higienizar os endereços IP. Os endereços IP ocorrem em dois lugares, na linha de decodificação do cabeçalho do protocolo eles aparecem como notação decimal padrão pontilhada. Na linha imediatamente acima da linha de decodificação, eles aparecem como valores hexadecimais.
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, janela 8192, 0 bytes de dados, bandeiras Ack. X/Off 05, Bandeiras 10, Cksum 7b7a, Urg-> 0000 Sem dados de tcp.