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.
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
- 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:
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
- 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:
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 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:
- Rutas directas, para redes conectadas localmente
- Rutas indirectas, para redes alcanzables vía uno o más routers
- 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.
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
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.
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.