El Datagrama IP

Formato de un datagrama IP.

El formato general de un datagrama IP es:

Datagrama IP.

  Datagrama IP

Estudiamos sus campos uno a uno:

Versión:

Los protocolos evolucionan y cambian con el tiempo. Por esto, es conveniente saber con qué versión se ha generado un datagrama.

Longitud:

Es la longitud de la cabecera medida en palabras de 32 bits. Puesto que este campo tiene 4 bits la longitud máxima de la cabecera es de 64 octetos.

Servicio:

Lo rellena quien envía el datagrama. Su utilidad actual es muy escasa, pero irá aumentando en la medida en que se empleen diferentes tipos de tráfico. Su formato es:

 

Campo servicio. Campo servicio

donde:

PRIO: Se utiliza en casos de congestión.

D: Dar prioridad al retardo.

T: Dar prioridad al throughput.

R: Dar prioridad a la fiabilidad.

C: Dar prioridad al coste.

La norma específica que sólo se puede poner a ´1´ uno de los campos D, T, R y C. Con esto, el usuario decide a qué quiere dar prioridad para su mensaje.

Longitud total:

Es la longitud total del mensaje en octetos incluida la cabecera. Por ser un campo de 16 bits permite una longitud de hasta 65535 octetos.

Campos de segmentación y reensamblado: Supongamos la siguiente situación:

Segmentación y reensamblado.

  Segmentación y reensamblado.

Analicemos detenidamente lo que ocurre cuando Host1 envía un datagrama con1400 octetos de datos a Host2. Se genera el datagrama:

Segmentación y reensamblado.

Segmentación y reensamblado.

 

El datagrama se envía y llega hasta el router1. Este advierte que ha de reenviar el datagrama de 1420 octetos por una red en la que el tamaño máximo es de 620 octetos. Por tanto, antes de reenviar, procede a segmentar generando tres datagramas del original que respeten la longitud máxima:

 

Segmentación y reensamblado.

Segmentación y reensamblado.

Los campos de la cabecera que se utilizan son:

Identificador: numero de secuencia. Es el mismo para todos los datagramas generados al segmentar e igual al del datagrama original.

Offset: posición de los datos del datagrama segmentado en el original. (Se cuenta por octetos)

Flags: Son los siguientes:

 

Flags. Flags.

El único que nos va a interesar es MF. Éste se pone a ´0´ si el datagrama es el último fragmento de una segmentación. En caso contrario estará a ´1´

1.      En nuestro ejemplo el router rellena estos campos con los siguientes valores:

Segmentación y reensamblado.

  Segmentación y reensamblado.

Estos tres datagramas son enviados hasta el Host2 donde se reensambla el datagrama original. ¿Por qué no se reensambla en el router2? Para responder esta pregunta basta con recordar que IP es no orientado a conexión y por ello al Host2 podría llegarse por dos Routers diferentes.

Por el hecho de que IP es, además, no fiable al llegar el primer fragmento se disparará un TIMER. Si transcurrido un tiempo no han llegado todos los fragmentos se descartan los que sí lo hayan hecho.

TTL: o Time To Life.

Limita el tiempo que un datagrama puede pasar en la red. TTL se decrementa en una unidad cada vez que pasa por un router si todo va bien, o en una unidad por segundo en el router si hay congestión. Al llegar a cero el datagrama es descartado.

Protocolo: Especifica qué protocolo está por encima de IP: TCP, UDP o ICMP que se explicará posteriormente.

Checksum:

Es el resultado de aplicar un código de protección de errores a la cabecera con los bits del campo checksum puestos a cero. Normalmente, se suman todos los bits de la cabecera, se complementa la suma a uno y se pone el resultado en checksum. Este campo se modifica en cada router por decrementarse el campo TTL.

Opciones:

En este campo se especifican algunas opciones de las que se puede hacer uso. Por ejemplo, una de ellas es la denominada registro de ruta. Si se emplea esta opción todos los Routers por los que pase el datagrama copiarían en su campo de opciones su dirección. (Como máximo este campo puede tener 40 octetos, es decir, 10 direcciones.)