Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cómo determina Wireshark si un paquete TCP está confuso o se retransmite?

¿Cómo determina Wireshark si un paquete TCP está confuso o se retransmite?

Lo mejor es mirar el código fuente.

#define TCP_A_RETRANSMISSION 0x0001

#define TCP_A_OUT_OF_ORDER 0x0200

/* RETRANSMISIÓN/RETRANSMISIÓN RÁPIDA/FUERA DE ORDEN

* if El segmento contiene datos (ya sea SYN o FIN), y

* si no se avanza ningún número de secuencia, debe ser uno de estos tres casos

*.

*Solo probar si sabemos cuál debe ser el número de secuencia

* (tcpd-gt; fwd-gt; nextseq)

*

* Tenga en cuenta que KeepAlive simple no es una retransmisión

*/

/* Si hay gt;=2 ACK duplicado inverso

* ( pueden faltar acuses de recibo duplicados en el seguimiento)

* Si este número de secuencia coincide con estos ACKs

* y si el paquete ocurre en el último

p>

* Repita el ACK dentro de 20 ms

* Entonces esta es una retransmisión rápida

*/

/* Si el segmento de red está en el nivel más alto los segmentos aparecen después de <3ms comenzando desde el segmento con el número de secuencia más alto

* No daña la imagen.

*(3ms es un número arbitrario)

Esto puede significar que el número de secuencia ha saltado, es decir, la longitud del segmento de secuencia original es lt; la nueva secuencia, Y no es una retransmisión rápida,

entonces es una retransmisión espuria

/* Verifique si hay retransmisiones espurias. Si la secuencia actual segment_length

* es un segmento sin clasificar.

* (3 milisegundos es un número arbitrario

) la longitud

* es menor que la última tarea del receptor, entonces el paquete contiene duplicados

*Datos, pueden considerarse datos falsos.