¿Cómo determina Wireshark si un paquete TCP está confuso o se retransmite?
#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.