Title: Datagrama IP
Course: 2025 - LISI - Redes Avanzadas 3-3 > Section: Fundamentos de Redes Modernas

Datagrama IP

El datagrama de Internet (datagrama IP) es el paquete de transferencia base en la familia de protocolos de Internet. Contiene una cabecera con información para IP, y unos datos que son relevantes sólo para los protocolos de más alto nivel.

El datagrama IP se encapsula en la trama de red subyacente, que tiene usualmente una longitud máxima o limitación de trama, dependiendo del hardware utilizado. En vez de limitar la longitud del datagrama IP a un tamaño máximo, IP puede tratar con fragmentación y reensamblado de sus datagramas. En particular, el estándar IP no impone un tamaño máximo, pero dice que todas las subredes deberían ser capaces de manejar datagramas de al menos 576 bytes.

Todos los fragmentos de un datagrama tienen una cabecera, básicamente copiado del datagrama original, y los datos que le siguen. Se tratan como datagramas IP normales mientras se transportan a sus destinos. Nótese, sin embargo, que si uno de los fragmentos se pierde, el datagrama completo se considera perdido puesto que IP no proporciona ningún mecanismo de reconocimiento así que los fragmentos simplemente los descartará el host de destino.

Formato de Datagrama IP

La cabecera del datagrama IP tiene una longitud mínimo de 20 bytes:

donde:

VERS
Es la versión del protocolo IP. La versión actual es la 6.
LON
Es la longitud de la cabecera IP de 32 en 32 bits. No incluye el campo de datos.
Tipo de servicio
Es un indicador de la calidad de servicio solicitado por este datagrama IP.

donde:

Precedencia
Es una medida de la naturaleza y prioridad de este datagrama:

Valor | Medida
000 | Rutina
001 | Prioridad
010 | Inmediato
011 | Flash
100 | Flash override
101 | Crítico
110 | Control de interred
111 | Control de red

TDS
Especifica el valor del tipo de servicio:

Valor | Tipo de Servicio
1000 | Minimiza el retardo
0100 | Maximiza el rendimiento
0010 | Maximiza la fiabilidad
0001 | Minimiza el coste monetario
0000 | Servicio normal

DSC
Reservado para uso futuro ("Debe Ser Cero")

Se puede encontrar una descripción detallada del tipo de servicio en el RFC 1349.

Longitud total
Longitud total del datagrama, cabecera y datos, especificado en bytes.
Identificación
Un número único que asigna el emisor para ayuda a reensamblar un datagrama fragmentado. Los fragmentos de un datagrama tendrán el mismo número de identificación.
Flags
Hay varios flags de control:

donde:

0
Reservado, debe ser cero
NF
No Fragmentar: 0 significa permitir fragmentación, 1 significa no permitir fragmentación.
MF
Más Fragmentos: 0 significa que este es el último fragmento de este datagrama, 1 significa que este no es el último fragmento.

Offset de Fragmento

Este campo se utiliza cuando un datagrama ha sido fragmentado, con el fin de facilitar su reensamblaje en el destino. El valor representa el número de bloques de 64 bits (sin contar los bytes del encabezado) que han sido transmitidos en fragmentos anteriores.

- En el primer fragmento, el valor del offset es siempre cero.
- Este mecanismo permite que el receptor reconstruya correctamente el datagrama original a partir de sus fragmentos.

Tiempo de Vida (TTL)

El campo TTL (Time To Live) es un contador que limita la duración de un datagrama en la red. Aunque originalmente se diseñó para contar el tiempo en segundos (hasta un máximo de 255), en la práctica se utiliza para contar el número de saltos (hops) entre routers.

- En cada salto, el valor de TTL se reduce en uno.
- Si el TTL llega a cero, el datagrama se descarta y se envía un mensaje de error (por ejemplo, un ICMP "Time Exceeded") al host de origen.
- Este mecanismo evita que los datagramas queden atrapados indefinidamente en la red.

Número de Protocolo

Este campo indica el protocolo de nivel superior al que el datagrama IP debe entregar los datos contenidos. Es esencial para que el sistema operativo sepa cómo procesar la carga útil del datagrama.

Algunos valores comunes incluyen:

- 1 – ICMP (Internet Control Message Protocol)
- 6 – TCP (Transmission Control Protocol)
- 17 – UDP (User Datagram Protocol)
- 89 – OSPF (Open Shortest Path First)

Valor | Comentario
0 | Reservado
1 | Internet Control Message Protocol (ICMP)
2 | Internet Group Management Protocol (IGMP)
3 | Gateway-to-Gateway Protocol (GGP)
4 | IP (IP encapsulation)
5 | Stream
6 | Transmission Control (TCP)
8 | Exterior Gateway Protocol (EGP)
9 | Private Interior Routing Protocol
17 | User Datagram (UDP)
89 | Open Shortest Path First

La lista completa se puede encontrar en STD 2 - Números Asignados de Internet.

Header Checksum

El checksum del encabezado es un mecanismo de verificación que se aplica únicamente al encabezado del datagrama IP, sin incluir los datos. Se calcula como el complemento a uno de 16 bits de la suma de todos los campos de 16 bits del encabezado. Para realizar este cálculo, el campo de checksum se considera con valor cero.

Si el valor calculado no coincide con el checksum recibido, el datagrama se descarta, ya que esto indica que al menos un bit del encabezado está corrupto, lo que podría provocar que el datagrama haya sido mal direccionado o que contenga información inválida.

Direccion IP de Origen

Contiene la dirección IP de 32 bits del host que envía el datagrama.

Dirección IP de Destino

Contiene la dirección IP de 32 bits del host receptor al que está destinado el datagrama.

Opciones

El campo de Opciones tiene longitud variable. Aunque no todos los sistemas IP están obligados a generar opciones en los datagramas que crean, todos los sistemas IP deben ser capaces de procesar datagramas que las contengan.

Este campo puede contener cero o más opciones, y existen dos formatos principales, cuya estructura depende del número de opción especificado en el primer byte de cada opción.

- Un tipo byte solo.
- Un tipo byte, un byte de longitud y una o más bytes datos opcionales.

El tipo byte tiene la misma estructura en ambos casos:

donde:

fc
Flag copy indicates whether (1) or not (0) the option field is to be copied when the datagram is fragmented.
clase
La opción clase es un entero sin signo de 2 bits:

0 | control
1 | reservado
2 | debugging y measurement
3 | reservado

número de opción
El número de opción es un entero sin signo de 5 bits.
longitud
cuenta la longitud (en bytes) de la opción, incluyendo los campos tipo y longitud
datos de la opción
contiene los datos relevantes a la opción.

relleno
Si se usa una opción, el datagram se rellena con todos los bytes a cero hasta llegar a los 32 bits.
datos
Los datos contenidos en el datagrama se pasan al protocolo de nivel superior, como se especifica en el campo protocolo.

Tabla de Enrutamiento IP

Cada host mantiene una estructura denominada tabla de enrutamiento IP, la cual contiene un conjunto de reglas que permiten determinar el próximo salto para enviar datagramas hacia su destino. Esta tabla establece correspondencias entre direcciones IP de destino y las direcciones IP de los routers que deben recibir el datagrama en el siguiente paso del trayecto.

En general, se pueden identificar tres tipos de rutas en una tabla de enrutamiento:

1. Rutas directas: Corresponden a redes conectadas directamente al host o router. No requieren intermediarios para alcanzar el destino.
2. Rutas indirectas: Se utilizan para redes que no están directamente conectadas, pero que pueden alcanzarse a través de uno o más routers intermedios.
3. Ruta por defecto (default route): Es una ruta de respaldo que se utiliza cuando no existe una coincidencia específica en la tabla para una dirección IP de destino. Esta ruta apunta a un router que se encarga de reenviar el datagrama hacia su destino final.

Para ilustrar estos conceptos, se puede observar la red representada en la figura siguiente como ejemplo de configuración.

La tabla de enrutamiento del host D contendrá las entradas que se muestran a continuación

Destino | Ruta
128.10 | conexión directa
128.15 | conexión directa
129.7 | 128.15.1.2
por defecto | 128.10.1.1

Algoritmo de Enrutamiento IP

A partir de la discusión anterior, se pueden establecer claramente los pasos que debe seguir el protocolo IP para determinar la ruta adecuada de un datagrama saliente. Este conjunto de pasos se conoce como algoritmo de enrutamiento IP, y se representa esquemáticamente en la siguiente figura:

Es importante destacar que este proceso es interactivo y se aplica en cada host que maneja un datagrama, excepto en el host de destino final, donde el datagrama es finalmente entregado.

Cuando hablamos de que el campo de longitud total en el encabezado de un datagrama IP tiene 16 bits, significa que puede representar valores desde 0 hasta:

\(2^{16} - 1 = 65,535 \text{ octetos}\)216−1=65,535 octetos

Como 1 octeto = 1 byte, entonces:

✅ Máximo de bytes permitidos: 65,535 bytes

Esto incluye:

- El encabezado IP, que normalmente ocupa 20 bytes (aunque puede ser más si hay opciones).
- El contenido o carga útil (payload), como datos UDP, TCP, ICMP, etc.

Ejemplo gráfico conceptual:

+-----------------------------+

| Encabezado IP (20 bytes)   |

+-----------------------------+

| Datos (hasta 65,515 bytes) |

+-----------------------------+

| Total: 65,535 bytes         |

+-----------------------------+

Para convertir los 65,535 bytes a megabytes (MB), usamos la siguiente relación:

- 1 MB = 1,048,576 bytes (esto es 1024 × 1024)

Entonces:

\(\frac{65,535}{1,048,576} \approx 0.0625 \text{ MB}\)1,048,57665,535​≈0.0625 MB

✅ Resultado: 65,535 bytes ≈ 0.0625 MB

Esto significa que el tamaño máximo de un datagrama IP es aproximadamente 1/16 de un megabyte.

📦 Tamaño Máximo del Datagrama IP (IPv4)

- Campo relevante: Total Length (Longitud Total)
- Tamaño del campo: 16 bits
- Valor máximo: 65,535 bytes (2¹⁶ - 1)

Esto incluye:

- El encabezado IP (mínimo 20 bytes, máximo 60 bytes si incluye opciones)
- La carga útil de datos (payload)

🧱 Fragmentación y Offset

Cuando un datagrama excede el tamaño máximo permitido por una red intermedia (por ejemplo, una red Ethernet con MTU de 1500 bytes), se fragmenta. El campo Fragment Offset ayuda a reensamblar los fragmentos en el destino.

Concepto | Valor máximo
Tamaño total del datagrama IP | 65,535 bytes
Tamaño mínimo del encabezado IP | 20 bytes
Tamaño máximo del encabezado IP | 60 bytes (con opciones)
Tamaño máximo de datos (payload) | 65,515 bytes (65,535 - 20