Cada red basada en paquetes tiene un tamaño MTU (unidad de transmisión máxima). La MTU es el tamaño del paquete más grande que puede transmitir esa red.
Los paquetes más grandes que la MTU permitida deben dividirse en paquetes o fragmentos más pequeños para permitirles atravesar la red.
Encabezados de paquetes
- Cómo obtener una dirección IP fija para mi administrador en Filipinas
- Cómo arreglar una dirección IP 169 para que pueda conectarse
- ¿Qué es una capa de aplicación (Capa 7) en un modelo OSI?
- ¿Puede una sola persona solicitar y ser asignado permanentemente con un bloque de direcciones IP V6?
- Cómo verificar la cola de TCP backlog para un proceso específico en Linux
Cada paquete IP tiene un encabezado IP (Protocolo de Internet) que almacena información sobre el paquete, que incluye:
· Versión
· DIH
· Tipo de servicio
· Largo total
· Identificación
· Banderas
· Compensación de fragmentos
· Tiempo para vivir
· Protocolo
· Suma de verificación del encabezado
· Dirección de la fuente
· Dirección de destino
· Opciones
Nota: Para obtener más información sobre el encabezado IP, consulte RFC 791 – Protocolo de Internet .
Tres de estos campos están involucrados en la fragmentación de paquetes.
· Identificación
· Banderas
· Compensación de fragmentos
Identificación: 16 bits
Un valor de identificación que el remitente asigna para ayudar a ensamblar los fragmentos de un datagrama.
Banderas: 3 bits
Varias banderas de control.
Bit 0: reservado, debe ser cero
Bit 1: (DF) 0 = Fragmento de mayo, 1 = No fragmentar.
Bit 2: (MF) 0 = Último fragmento, 1 = Más fragmentos.
0 1 2
+ – + – + – +
El | El | D | M |
El | 0 | F | F |
+ – + – + – +
Desfase de fragmentos: 13 bits
Este campo indica en qué parte del datagrama pertenece este fragmento.
El desplazamiento del fragmento se mide en unidades de 8 octetos (64 bits). El primer fragmento tiene desplazamiento cero.
Al igual que el encabezado IP, el encabezado TCP (Protocolo de control de transmisión) almacena información sobre el paquete:
· Puerto de origen
· Puerto de destino
· Secuencia de números
· Número de acuse de recibo
· Compensación de datos
· Banderas
· Ventana
· Suma de comprobación
· Puntero urgente
· Opciones
· Relleno
Un ejemplo de fragmentación de paquetes
Si un paquete de 2,366 bytes ingresa a una red Ethernet con un tamaño de MTU predeterminado, debe fragmentarse en dos paquetes.
El primer paquete:
· Tener 1.500 bytes de longitud. 20 bytes serán el encabezado IP, 24 bytes serán el encabezado TCP y 1.456 bytes serán datos.
· Tener un bit DF igual a 0 para significar “Fragmento de mayo” y un bit MF igual a 1 para significar “Más fragmentos”.
· Tener una compensación de fragmentación de 0.
El segundo paquete:
· Tener 910 bytes de longitud. 20 bytes serán el encabezado IP, 24 bytes serán el encabezado TCP y 866 bytes serán datos.
· Tener el bit DF igual a 0 para significar “Fragmento de mayo” y el bit MF igual a 0 para significar “Último fragmento”.
· Tener una compensación de fragmentación de 182 (Nota: 182 es 1456 dividido por 8).
El ataque de fragmentación de paquetes
La fragmentación de paquetes se puede utilizar para sortear las reglas de bloqueo en algunos firewalls.
Esto se hace haciendo trampa con el valor de la compensación de fragmentos. El truco consiste en establecer el valor de Fragment Offset en el segundo paquete tan bajo que, en lugar de agregar el segundo paquete al primer paquete, en realidad sobrescribe los datos y parte del encabezado TCP del primer paquete.
Si alguien quiere `telnet` en una red donde un cortafuegos de filtrado de paquetes bloquea el puerto TCP 23, el puerto 25 SMTP está permitido en esa red.
El usuario tendría que enviar dos paquetes:
El primer paquete sería:
· Tener una compensación de fragmentación de 0.
· Tener un bit DF igual a 0 para significar “Fragmento de mayo” y un bit MF igual a 1 para significar “Más fragmentos”.
· Tener un puerto de destino en el encabezado TCP de 25. El puerto TCP 25 está permitido, por lo que el firewall permitiría que ese paquete ingrese a la red.
El segundo paquete sería:
· Tener un Desfase de Fragmentación de 1. Esto significa que el segundo paquete en realidad sobrescribiría todo excepto los primeros 8 bits del primer paquete.
· Tener un bit DF igual a 0 para significar “Fragmento de mayo” y un bit MF igual a 0 para significar “Último fragmento”.
· Tenga un puerto de destino en el encabezado TCP de 23. Esto normalmente estaría bloqueado, ¡pero no lo será en este caso!
El cortafuegos de filtrado de paquetes verá que la compensación de fragmentos es mayor que cero en el segundo paquete. A partir de estos datos, deducirá que el segundo paquete es un fragmento de otro paquete y no comparará el segundo paquete con el conjunto de reglas.
Cuando los dos paquetes lleguen al host de destino, se volverán a ensamblar. El segundo paquete sobrescribirá la mayor parte del primer paquete y el contenido del paquete combinado irá al puerto 23.