Qualcuno mi ha inviato la seguente traccia e mi ha chiesto se rappresentasse delle ritrasmissioni perché i "numeri di pacchetto" erano duplicati
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
Ero un po' confuso dal suo uso dei "numeri a pacchetto"; si riferiva alle ultime 2 colonne numeriche. Ho spiegato che questi sono i numeri di porta di origine e di destinazione, non i numeri di pacchetto. Purtroppo non ho potuto rispondere alla sua domanda perché non ha catturato abbastanza informazioni dall'intestazione del pacchetto TCP per poter dire se si tratta di ritrasmissioni o meno.
Per determinare se un pacchetto TCP è una ritrasmissione è necessario catturare il numero di sequenza del pacchetto. All'inizio di ogni connessione TCP i due host selezionano numeri di sequenza casuali, e poi incrementano il numero di sequenza per ogni byte di dati TCP che inviano. L'host ricevente riecheggia nel campo di conferma il numero di sequenza che si aspetta di vedere in seguito.
L'esempio seguente mostra quello che raccomando come l'insieme minimo di argomenti di controllo per packet_monitor; supponendo che siate interessati a qualcosa di più delle informazioni che un pacchetto è stato inviato o ricevuto. L'argomento interfaccia identifica l'interfaccia IP da monitorare. Se non si fornisce un nome di interfaccia, packet_monitor monitorerà tutte le interfacce. Packet_monitor può utilizzare una grande quantità di memoria di flussi, utilizzando l'argomento interfaccia aiuterà a ridurre questa quantità. L'argomento -verbose è ciò che effettivamente stamperà la sequenza e i numeri di riconoscimento, anche in questo caso senza questo non c'è modo di identificare le ritrasmissioni. Stamperà anche altre informazioni utili per l'analisi delle tracce, per esempio il tempo di vita (TTL) e la dimensione della finestra (finestra). Gli argomenti -filtro -host e -port aiutano ad identificare una specifica connessione e riducono il numero di pacchetti da analizzare.
packet_monitor -interfaccia #sdlmux.m16.11-2 -verbose -filtro -host 172.16.1.34 -p +orta 23 dir icmp tipo tcp dir len proto source destination src port dst port type 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 da phx_vos-m16.51094 a 172.16.1.34.telnet seq 448953077, ack 1766884569, finestra 65535, 1 byte di dati, flag Push Ack. X/Off 05, Bandiere 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 da 172.16.1.34.telnet a phx_vos-m16.51094 seq 1766884569, ack 448953078, finestra 8192, 1 byte di dati, flag Push Ack. X/Off 05, Bandiere 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 da phx_vos-m16.51094 a 172.16.1.34.telnet seq 448953078, ack 1766884570, finestra 65535, 1 byte di dati, flag Push Ack. X/Off 05, Bandiere 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 da 172.16.1.34.telnet a phx_vos-m16.51094 seq 1766884570, ack 448953079, finestra 8192, 1 byte di dati, flag Push Ack. X/Off 05, Bandiere 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 da phx_vos-m16.51094 a 172.16.1.34.telnet seq 448953079, ack 1766884571, finestra 65535, 0 byte di dati, flag Ack. X/Off 05, Bandiere 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 da 172.16.1.34.telnet a phx_vos-m16.51094 seq 1766884571, ack 448953079, finestra 8192, 0 byte di dati, flag Ack. X/Off 05, Bandiere 10, Cksum e98a, Urg-> 0000
I numeri di sequenza di cui sopra vengono aumentati di 1 perché ogni pacchetto contiene solo 1 byte di dati, se i pacchetti comprendessero 10 byte, 23 byte o 1023 byte i numeri di sequenza aumenterebbero di 10, 23 o 1023.
Che aspetto ha una ritrasmissione? Con una ritrasmissione il numero di sequenza è più piccolo o uguale al numero di sequenza precedente e ha almeno 1 byte di dati, i pacchetti senza dati non contano. Nell'esempio seguente il numero di sequenza 448953089 viene ripetuto più volte. Ogni volta, ma la prima è una ritrasmissione.
packet_monitor -interfaccia #sdlmux.m16.11-2 -verbose -filtro -host 172.16.1.34 -p +orta 23 dir icmp tipo tcp dir len proto source destination src port dst port type
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 da 172.16.1.34.telnet a phx_vos-m16.51094 seq 1766885133, ack 448953089, finestra 8192, 0 byte di dati, flag Ack. X/Off 05, Bandiere 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 da phx_vos-m16.51094 a 172.16.1.34.telnet seq 448953089, ack 1766885133, finestra 65535, 1 byte di dati, flag Push Ack. X/Off 05, Bandiere 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 da phx_vos-m16.51094 a 172.16.1.34.telnet seq 448953089, ack 1766885133, finestra 65535, 1 byte di dati, flag Push Ack. X/Off 05, Bandiere 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 da phx_vos-m16.51094 a 172.16.1.34.telnet seq 448953089, ack 1766885133, finestra 65535, 1 byte di dati, flag Push Ack. X/Off 05, Bandiere 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 da phx_vos-m16.51094 a 172.16.1.34.telnet seq 448953089, ack 1766885133, finestra 65535, 1 byte di dati, flag Push Ack. X/Off 05, Bandiere 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 da 172.16.1.34.telnet a phx_vos-m16.51094 seq 1766885133, ack 448953090, finestra 8192, 1 byte di dati, bandiere Push Ack. X/Off 05, Bandiere 18, Cksum 7744, Urg-> 0000
Oltre all'interfaccia e agli argomenti verboso includerei il timestamp e gli argomenti numerici. L'argomento time_stamp mette un timbro temporale su ogni pacchetto visualizzato, questo rende facile correlare i messaggi nei file di log con la traccia e permette di stimare la durata degli eventi, come una sequenza di ritrasmissione che dura effettivamente. L'argomento numerico riduce le spese generali non cercando i nomi degli host o delle porte.
pacchetto_monitor -interfaccia #sdlmux.m16.11-2 -verbose -time_stamp -numerico -filtro + -ospite 172.16.1.34 -port 23 tipo dir icmp + tcp hh:mm:ss.ttt dir len proto source destination src port ds Tipo di porta +t 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 da 172.16.1.116.51094 a 172.16.1.34.telnet seq 448953090, ack 1766885134, finestra 65535, 1 byte di dati, bandiere Push Ack. X/Off 05, Bandiere 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 da 172.16.1.34.telnet a 172.16.1.116.51094 seq 1766885134, ack 448953091, finestra 32768, 1 byte di dati, bandiere Push Ack. X/Off 05, Bandiere 18, Cksum 1b42, Urg-> 0000
Se si sa che il problema è a livello TCP o IP, questa è tipicamente tutta l'informazione di cui si ha bisogno. Tuttavia, se il problema potrebbe essere a livello di applicazione, sono necessari anche i dati reali. È possibile visualizzare i dati con l'argomento -hex_dump. Per impostazione predefinita vengono visualizzati solo i primi 128 byte di dati. Per essere sulla dimensione di sicurezza ho sempre impostato la lunghezza a 1500 che visualizzerà tutti i dati nel pacchetto.
pacchetto_monitor -interfaccia #sdlmux.m16.11-2 -verbose -time_stamp -numerico -hex_du +mp -lunghezza 1500 -filtro -host 172.16.1.34 -port 23 tipo dir icmp + tcp hh:mm:ss.ttt dir len proto source destination src port ds Tipo di porta +t 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 da 172.16.1.34.49562 a 172.16.1.116.telnet seq 110526313, ack 1206659552, finestra 32768, 19 byte di dati, bandiere Push Ack +. X/Off 05, Bandiere 18, Cksum d3ee, Urg-> 0000 offset 0 . . . . 4 . . . 8 . . . C . . . 0...4... 8...C... 0 54 68 69 69 73 73 20 69 73 20 6f 6e 6c 79 20 61 20 74 * Questo è solo 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 da 172.16.1.116.telnet a 172.16.1.34.49562 seq 1206659552, ack 110526332, finestra 8192, 19 byte di dati, bandiere Push Ack +. X/Off 05, Bandiere 18, Cksum 33dc, Urg-> 0000 offset 0 . . . . 4 . . . 8 . . . C . . . 0...4... 8...C... 0 54 68 69 69 73 73 20 69 73 20 6f 6e 6c 79 20 61 20 74 * Questo è solo 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 da 172.16.1.116.telnet a 172.16.1.34.49562 seq 120665959571, ack 110526332, finestra 8192, 0 byte di dati, flag Ack. X/Off 05, Bandiere 10, Cksum 7b7a, Urg-> 0000 Nessun dato tcp.
Prima di inviare una traccia di packet_monitor con i dati a chiunque si ricordi di disinfettare i dati - sia il testo che i valori esadecimali per rimuovere le informazioni proprietarie. In alcune circostanze si potrebbe anche voler sanificare gli indirizzi IP. Gli indirizzi IP si presentano in due punti, nella riga di decodifica dell'intestazione del protocollo compaiono come notazione decimale punteggiata standard. Nella riga immediatamente sopra la riga di decodifica appaiono come valori esadecimali.
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 da 172.16.1.116.telnet a 172.16.1.34.49562 seq 120665959571, ack 110526332, finestra 8192, 0 byte di dati, flag Ack. X/Off 05, Bandiere 10, Cksum 7b7a, Urg-> 0000 Nessun dato tcp.