Previous Up Next

3.3  El datagrama IP

El datagrama IP es la unidad de transferencia en las redes IP. Básicamente consiste en una cabecera IP y un campo de datos para protocolos superiores. El datagrama IP está encapsulado en la trama de nivel de enlace, que suele tener una longitud máxima (MTU, Maximum Transfer Unit), dependiendo del hardware de red usado. Para Ethernet, esta es típicamente de 1500 bytes. En vez de limitar el datagrama a un tamaño máximo, IP puede tratar la fragmentación y el reensamblado de sus datagramas. En particular, IP no impone un tamaño máximo, pero establece que todas las redes deberían ser capaces de manejar al menos 576 bytes. Los fragmentos de datagramas tienen todos una cabecera, copiada básicamente del datagrama original, y de los datos que la siguen. Los fragmentos se tratan como datagramas normales mientras son transportados a su destino. Nótese, sin embargo, que si uno de los fragmentos se pierde, todo el datagrama se considerará perdido, y los restantes fragmentos también se considerarán perdidos.

3.3.1  Formato del datagrama IP

La cabecera del datagrama IP está formada por los campos que se muestran en la figura 3.4.


Figura 3.4: Formato del datagrama IP

Donde:

Version
es la versión del protocolo IP. La versión actual es la 4. La 5 es experimental y la 6 es IPng.
Hdr Len
es la longitud de la cabecera IP contada en cantidades de 32 bits. Esto no incluye el campo de datos.
Type Of Service
es el tipo de servicio es una indicación de la calidad del servicio solicitado para este datagrama IP. Una descripción detallada de este campo se puede encontrar en el RFC 1349.
Total Length
es la longitud total del datagrama, cabecera y datos, especificada en bytes.
Identification
es un número único que asigna el emisor para ayudar a reensamblar un datagrama fragmentado. Los fragmentos de un datagrama tendrán el mismo número de identificación.
Flags
son flags para el control de fragmentación.


Figura 3.5: Detalle del campo Flags

Donde:
El bit 0 está reservado y debe ser 0.
El bit DF significa no fragmentar (Do not Fragment). Con 0 se permite fragmentación y con 1 no.
El bit MF significa que hay más fragmentos (More Fragments). Con 0 significa que se trata del último fragmento del datagrama y con 1 que hay más fragmentos.
Fragment Offset (FO)
se usa en datagramas fragmentados para ayudar al reensamblado de todo el datagrama. El valor es el número de partes de 64 bits (no se cuentan los bytes de la cabecera) contenidas en fragmentos anteriores. En el primer (o único) fragmento el valor es siempre cero.
Time To Live
especifica el tiempo (en segundos) que se le permite viajar a este datagrama. Cada "router" por el que pase este datagrama ha de sustraer de este campo el tiempo tardado en procesarlo. En la realidad un "router" es capaz de procesar un datagrama en menos de 1 segundo; por ello restará uno de este campo y el TTL se convierte más en una cuenta de saltos que en una métrica del tiempo. Cuando el valor alcanza cero, se asume que este datagrama ha estado viajando en un bucle y se desecha. El valor inicial lo debería fijar el protocolo de alto nivel que crea el datagrama.
Protocol
indica el número oficial del protocolo de alto nivel al que IP debería entregar los datos del datagrama. Algunos valores importantes se muestran en la Tabla 3.1.

ProtocoloNúmero
Reservado0
ICMP1
IGMP2
IP encapsulado4
TCP6
UDP17
OSPF89
Tabla 3.1: Algunos Protocol Numbers

Header Checksum
es el checksum de la cabecera. Se calcula como el complemento a uno de la suma de los complementos a uno de todas las palabras de 16 bits de la cabecera. Si el checksum de la cabecera no se corresponde con los contenidos, el datagrama se desecha, ya que al menos un bit de la cabecera está corrupto, y el datagrama podría haber llegado a un destino equivocado.
Source IP Address
es la dirección IP de 32 bits del host emisor.
Destination IP Address
es la dirección IP de 32 bits del host receptor.
Options
es un campo de longitud variable. Las opciones se incluyen en principio para pruebas de red o depuración, por tanto no se requiere que toda implementación de IP sea capaz de generar opciones en los datagramas que crea, pero sí que sea capaz de procesar datagramas que contengan opciones.
El campo Options tiene longitud variable en función de la opción seleccionada. Algunas opciones tienen una longitud de un solo byte y otras tienen longitudes variables. El primer byte de cualquier opción se denomina type byte y su estructura se muestra en la figura 3.6.

Figura 3.6: Detalle del type byte

Donde:

FC
es el flag de copia (Flag Copy), e indica si el campo de opciones se ha de copiar (1) o no (0) cuando el datagrama está fragmentado.
class
es un entero sin signo de 2 bits, donde:

Option classsignificado
0Control de red o datagrama
1Reservado para uso futuro
2Depuración y medición
3Reservado para uso futuro
Tabla 3.2: Option classes

number
es un entero sin signo de 5 bits que indica el número de opción dentro de cada clase.

3.3.2  La fragmentación de datagramas IP

Cuando un datagrama IP viaja de un host a otro puede cruzar distintas redes físicas. Las redes físicas imponen un tamaño máximo de trama, llamado MTU (Maximum Transmission Unit), que limita la longitud de un datagrama.

Por ello, existe un mecanismo para fragmentar los datagramas IP grandes en otros más pequeños, y luego reensamblarlos en el host de destino. IP requiere que cada enlace tenga un MTU de al menos 68 bytes, de forma que si cualquier red proporciona un valor inferior, la fragmentación y el reensamblado tendrán que implementarse en la capa de la interfaz de red de forma transparente a IP. 68 es la suma de la mayor cabecera IP, de 60 bytes, y del tamaño mínimo posible de los datos en un fragmento (8 bytes).

Las implementaciones de IP no están obligadas a manejar datagramas sin fragmentar mayores de 576 bytes, pero la mayoría podrá manipular valores más grandes, típicamente ligeramente por encima de 8192 bytes o incluso mayores, y raramente menos de 1500.

Un datagrama sin fragmentar tiene a cero toda la información de fragmentación. Es decir, los flags FC y FO están a 0.

Cuando se ha de realizar la fragmentación, se ejecutan los siguientes pasos:

Cada uno de estos datagramas se envía como un datagrama IP normal. IP maneja cada fragmento de forma independiente, es decir, los fragmentos pueden atravesar diversas rutas hacia su destino, y pueden estar sujetos a nuevas fragmentaciones si pasan por redes con MTUs inferiores.

En el host de destino, los datos se tienen que reensamblar. Para ello se siguen los siguientes pasos:

3.3.3  Algunas opciones importantes del datagrama IP

Para la plena comprensión de las opciones que se detallan a continuación es recomendable la lectura previa del apartado 3.6.

3.3.3.1  Registro de ruta o RR (Record Route)

Esta opción proporciona un medio para almacenar las direcciones IP de los routers por los que es encaminado el datagrama. El host fuente es el encargado de configurar la opción dejando espacio suficiente para que se puedan almacenar las direcciones IP de los routers por los que va pasando el datagrama. Si el espacio para almacenar la ruta se llena antes de que el datagrama llegue a su destino, el datagrama se retransmitirá, pero se dejará de grabar la ruta.

En la figura 3.7 se puede observar el formato de esta opción:


Figura 3.7: Formato de la opción RR

Donde:

Code
contiene la clase y el número de opción para RR (Code tiene un valor decimal 7 para esta opción).
Lenght
indica la longitud total en bytes de la opción.
Pointer
se utiliza para apuntar a la siguiente ranura disponible para almacenar una dirección IP. Este campo está en bytes, por lo que cada router introduce su dirección IP en la ranura correspondiente e incrementa Pointer en 4. Si en un determinado router sucede que Pointer > Lenght, la ruta deja de grabarse desde ese router.
IP Address n
indica la dirección registrada por el router n.

3.3.3.2  Ruta fuente o SR (source route)

Esta opción proporciona al emisor una forma de controlar de forma más fina el proceso de encaminamiento que usualmente se basa en una única dirección destino. Mediante esta opción el emisor puede proporcionar información sobre la ruta que deben seguir los datagramas4.

IP proporciona dos formas de enrutado de fuente:

El formato es equivalente al de la opción RR (figura 3.7) pero el funcionamiento es un poco diferente:

3.3.3.3  Sello temporal o IT (Internet Timestamp)

El timestamp o sello de tiempo es una opción para forzar a algunos (o a todos) los routers en la ruta hacia el destino a poner un sello temporal (timestamp) en los datos de la opción. Los timestamps se miden en segundos y se pueden usar para depuración. No se pueden emplear para medir el rendimiento de la red por dos razones:

  1. No son lo bastante precisos porque la mayoría de los datagramas se envían en menos de un segundo.
  2. No son lo bastante precisos porque los routers no suelen tener los relojes sincronizados.

Previous Up Next