Inicio Atrás

Fragmentación

Los paquetes IP van siempre insertados en tramas de nivel de enlace o MAC. Ejemplos que ya hemos visto son los protocolos PPP y Ethernet.

Una estación, cuando transmite un paquete IP, conoce el MTU de su interfaz de red y está restringida a transmitir paquetes IP que su interfaz pueda transmitir en la Red.

Pero ¿y si el paquete pasa por un encaminador conectado en una red con una MTU inferior al tamaño del paquete? Entonces la única posibilidad es fragmentar el paquete.

Ejemplo
Por ejemplo, en una Ethernet, el paquete máximo que puede transmitir una estación es de 1.500 bytes.

Los fragmentos resultantes de la operación son paquetes como cualquier otro, pero que tienen las siguientes características:

  1. Todos los fragmentos que provienen de un paquete fragmentado tienen el mismo identificador de paquete en las respectivas cabeceras IP.
  2. Todos los fragmentos indican con el campo posición de este fragmento a qué byte corresponde el primer byte de datos del fragmento dentro del paquete original. El primer fragmento tiene un cero en este campo.
  3. El bit + del campo indicador es 1 en todos los fragmentos a excepción del último (por eso este bit se suele denominar "hay más").

El resto de los campos de la cabecera se copia íntegramente del paquete original a los fragmentos que resultan de la fragmentación, salvo el indicador de longitud del paquete y el checksum, que se deben volver a calcular.

¿Cuándo se recomponen los fragmentos? En principio, podríamos suponer que, cuando los fragmentos vuelven a una red con una MTU suficiente, el encaminador que los recibe los reunifica. Sin embargo, no se hace así, primero porque la ley no escrita de Internet según la cual el encaminador debe realizar el mínimo trabajo necesario no se cumpliría; en segundo lugar (y más importante), porque nadie garantiza que todos los fragmentos sigan el mismo camino. La única capaz de recomponer los fragmentos es la estación de destino.

Contenido complementario

La estación de destino, cuando recibe un fragmento, reserva bastante memoria para alojar el mayor paquete IP posible (65.535 bytes), ya que no tiene manera de saber cuál es el tamaño del paquete original. A partir de aquí pone en marcha un temporizador (que permite detectar la pérdida de un fragmento por el camino y, por lo tanto, la pérdida de la memoria reservada) y empieza a recolectar los fragmentos, según su identificador. Cuando se han recibido todos los fragmentos, se entrega el paquete a la aplicación (protocolo) correspondiente. En caso de que el temporizador salte, todos los fragmentos llegados hasta aquel momento se descartan. El nivel superior (TCP) es el responsable de exigir una retransmisión cuando convenga, ya que el IP no tiene ningún mecanismo para pedirla .

Arriba