Protocolo de Internet (IP)

Figura: Protocolo de Internet (IP)

IP es un protocolo estándar con número STD 5 que incluye también ICMP e IGMP. Su estado es requerido.

La especificación IP actual puede encontrarse en los RFCs 791, 950, 919 y 922, con actualizaciones en el RFC 1349.

IP es el protocolo que esconde la red física subyacente creando una vista de red virtual. Es un protocolo de transporte de paquetes no orientado a conexión poco fiable.

No añade fiabilidad, control de flujo o recuperación de errores para el protocolo de interfaz de red subyacente. Los paquetes (datagramas) que envía IP se pueden perder, estar fuera de orden, o incluso duplicar. IP no tratará estas situaciones. Es tarea de las capas superiores proporcionar estas facilidades.

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.

Figura: Datagrama IP Base

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:

Figura: Formato de Datagrama IP

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:

ValorMedida
000Rutina
001Prioridad
010Inmediato
011Flash
100Flash override
101Crítico
110Control de interred
111Control de red
TDS
Especifica el valor del tipo de servicio:

ValorTipo de Servicio
1000Minimiza el retardo
0100Maximiza el rendimiento
0010Maximiza la fiabilidad
0001Minimiza el coste monetario
0000Servicio 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
Se usa con los datagramas fragmentados, to aid in reassembly of the full datagram. The value is the number of 64-bit pieces (header bytes are not counted) that are contained in earlier fragments. En el primer fragmento este valor es siempre cero.
Tiempo de Vida (TTL)
Es un contador que sirve para limitar la vida de un paquete. Se supone que este contador cuenta el tiempo en segundos, permitiendo una vida máxima de 255 segundos; debe disminuirse en cada salto. En la práctica simplemente cuenta los saltos. Cuando el valor llega a cero, el paquete se descarta y se envía de regreso un paquete de aviso al host de origen. Esto evita que los datagramas vaguen eternamente.
Número de protocolo
Indica el protocolo de alto nivel al que IP debería transportar los datos de este datagrama. Algunos valores importantes son:

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

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

Header Checksum
Is a checksum on the header only. It does not include the data. The checksum is calculated as the 16-bit one's complement of the one's complement sum of all 16-bit words in the header. For the purpose of this calculation, the checksum field is assumed to be zero. If the header checksum does not match the contents, the datagram is discarded because at least one bit in the header is corrupt, and the datagram may even have arrived at the wrong destination.
Source IP Address
The 32-bit IP address of the host sending this datagram.
Destination IP Address
The 32-bit IP address of the destination host for this datagram.
Opciones
Longitud variable. An IP implementation is not required to be capable of generating options in the datagrams it creates, but all IP implementations are required to be able to process datagrams containing options. The Options field is variable in length. There may be zero or more options. There are two option formats. The format for each is dependent on the value of the option number found in the first byte.
  • 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:
0control
1reservado
2debugging y measurement
3reservado
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 el conjunto de correspondencias entre direcciones IP de destino y las direcciones IP de los routers del próximo salto para esos destinos en una tabla denominada tabla de enrutamiento IP .

Se pueden encontrar tres tipos de correspondencia en esta tabla:

  1. Rutas directas, para redes conectadas localmente
  2. Rutas indirectas, para redes alcanzables vía uno o más routers
  3. Una ruta por defecto, que contiene la dirección IP de un router que se usa para todas las direcciones IP que no cubren las rutas directas e indirectas.

Ver la red de la figura mostrada abajo como ejemplo de configuración.

Figura: Ejemplo de configuración

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

DestinoRuta
128.10conexión directa
128.15conexión directa
129.7128.15.1.2
por defecto128.10.1.1

Algoritmo de Enrutamiento IP

De la discusión precedente, se puede derivar fácilmente los pasos que debe tomar IP para determinar la ruta para un datagrama saliente. Esto se denomina algoritmo de enrutamiento IP y se muestra esquemáticamente en la siguiente figura.

Figura: Algoritmo de enrutamiento IP

Nótese que éste es un proceso interactivo. Lo emplea cada host manejando un datagrama, excepto por el host para el que el datagrama es finalmente entregado.

Direccionamiento   |  Tabla de Contenidos  |  Protocolo ICMP