Tabla de contenidos
Referencias
Figura: IP("Internet Protocol")
IP es un protocolo estándar con STD 5 que además incluye ICMP (ver ICMP("Internet Control Message Protocol")) e IGMP (ver IGMP("Internet Group Management Protocol")). Su status es requerido.
Su especificación actual se puede encontrar en los RFCs 791, 950, 919 y 922, que actualizado en el RFC 1349.
IP es el protocolo que oculta la red física subyacente creando una vista de red virtual. Es un protocolo de entrega de paquetes no fiable y no orientado a conexión, y se puede decir que aplica la ley del mínimo esfuerzo.
No aporta fiabilidad, contrtol de flujo o recuperación de errores a los prots de red inferiores. Los paquetes (datagramas) que envía IP se pueden perder, desordenarse, o incluso duplicarse, e IP no manejará estas situaciones. El proporcionar estos servicios depende de prots superiores.
IP asume pocas cosas de las capas inferiores, sólo que los datagramas "probablemente" serán transportados al host de destino.
El datagrama IP es la unidad de transferencia en la pila IP. Tiene una cabecera con información para IP, y los datos relevantes para los prots superiores.
Figura: El datagrama IP
El datagrama IP está encapsulado en la trama de redd subyacente, que suele tener una longitud máxima, dependiendo del hardware usado. Para Ethernet, será 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 re-ensamblado de sus datagramas. En particular, el IP est no impone una 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. 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 se considerarán perdidos.
La cabecera del datagrama IP es de un mínimo de 20 bytes de longitud:
Figura: Formato del datagrama IP
Donde:
La lista completa se puede encontrar en el STD 2 - Números asignados de Internet.
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 requere 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 rensamblado 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 datagrama sin fragmentar mayores de 576 bytes, pero la mayoría podrá manipular valores más grandes, típicamente ligeramente más 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, el flag fc y el fo(fragment offset) están a cero. Cuando se ha de realizar la fragmentación, se ejecutan los siguientes pasos:
En el host de destino, los datos se tienen que reensamblar. El host emisor inicializó el campo ID a un número único(dentro de los límites impuestos por el uso de un número de 16 bits). Como la fragmentación no altera este campo, los fragmentos que le van llegando al destino se pueden identificar, si este ID se usa junto con las direcciones IP fuente y destino(source, destination) del datagrama. También se chequea el campo de protocolo
Con el fin de reensamblar los fragmentos, el receptor destina un buffer de almacenamiento en cuanto llega el primer fragmento. Se inicia una rutina para un contador. Cuando el contador a un timeout y no se han recibido todos los datagramas, se desecha el datagrama. El valor inicial el contador es el TTL(time-to-live). Depende de la implementación, y algunas permiten configurarlo.
Cuando llegan los fragmentos siguientes, antes de que expire el tiempo, los datagramas se copian al buffer en la localización indicada por el fo(fragment offset). Cuando han llegado todos los datagramas, se restaura el datagrama original y continúa su procesamiento.
Nota: IP no proporciona el contador de reensamblado. Tratará cada datagrama, fragmentado o no, de la misma forma. Depende de una capa superior el implementar un timeout y reconocer la pérdida de fragmentos. Esta capa podría ser TCP para el transporte en un red orientada a conexión o UDP, para el caso contrario.
El campo "options" del datagrama IP admite dos métodos para que el generador del datagrama dé explícitamente información de encaminamiento y uno para que el datagrama determine a ruta que va a emplear.
Esta opción, conocida también como LSRR("Loose Source and Record Route"), proporciona un medio para que la fuente del dar suministre información de encaminamiento explícita que usarán los "routers" que retransmitan el datagrama, y para grabar la ruta seguida.
Figura: Opción LSR
Siempre que un datagrama llega a su destino y la ruta de la fuente no está vacía(pointer < length) el receptor:
Este procedimiento asegura que la ruta de retorno se graba en "route datagram"(en orden inverso) de modo que el receptor use estos datagramas para construir un LSR en el sentido inverso. Se denomina LSR("loose source route") porque al "router" retransmisor se le permite usar cualquier ruta y cualquier número de host intermedios para alcanzar la siguiente dirección de la ruta.
Nota: El host emisor pone la dirección IP del primer "router" intermedio en el campo dirección IP de destino y las direcciones de los demás "routers" de la ruta, incluyendo el destino, en la opción "source route". La ruta que hay grabada en el datagrama cuando este llega al objetivo contiene las direcciones IP de cada uno de los "routers" que retransmitió el datagrama.
Esta opción, llamada también SSRR(Strict Source and Record Route"), emplea el mismo principio que LSR exceptuando que el "router" intermedio debe enviar el datagrama a la siguiente dirección IP en la ruta especificada por la fuente a través de una red conectada directamente y no por medio de un "router" intermedio. Si no puede hacerlo, envía un mensaje ICMP "Destination Unreachable".
Figura: Opción SSR
Esta opción proporciona un medio para grabar la ruta de un datagrama IP. Funciona de modo similar al SSR anterior, pero en este caso el host fuente deja el campo de datos de encaminamiento vacío, que se irá llenando a medida que el datagrama viaja. Nótese que el host fuente debe dejar suficiente espacio para esta información: si el campo se llena antes de que el datagrama llegue a su destino, el datagrama se retransmitirá, pero se dejará de grabar la ruta.
Figura: Opción RR
El "timestamp " o sello de tiempo es una opción para forzar a algunos(o a todos) de los "routers" de la ruta hacia el destino a poner un "timestamp" en los datos de la opción. Los "timestamps" se miden en segundos y se pueden usar para la depuración. No se pueden emplear para medir el rendimiento por dos razones:
Figura: Opción IT
Donde
El host emisor debe componer esta opción con un área de datos los bastante grande para almacenar todos los "timestamps". Si el área de los "timestamps" se llena, no se añaden más.
Una función importante de la capa IP es el encaminamiento. Proporciona los mecanismos básicos para interconectar distintas redes físicas. Esto significa que un host puede actuar simultáneamente como host normal y como "router".
Un "router" básico de este tipo se conoce como "router" con información parcial de encaminamiento, ya que sólo contiene información acerca de cuatro tipos de destino:
Los dos últimos casos permiten a un "router" básico comenzar con una cantidad muy limitada de información para irla aumentando debido a que un "router" más avanzado lance un mensaje ICMP redirect cuando reciba un datagrama y conozca un "router" mejor en la misma red al que dirigir el datagrama. Este proceso se repite cada vez que un "router" básico se reinicia.
Se necesitan protocolo adicionales para implementar un "router" completamente funcional que pueda intercambiar información con otros "routers" en redes remotas. Tales "routers" son esenciales, excepto en redes pequeñas, y los protocolos que usan se discuten en Protocolos de encaminamiento.
Si el host de destino está conectado a una red a la que también está conectado el host fuente, un datagrama IP puede ser enviado directamente, simplemente encapsulando el datagrama IP en un trama. Es lo que se llama encaminamiento directo.
El encaminamiento indirecto ocurre cuando el host de destino no está en una red conectada directamente al host fuente. La única forma de alcanzar el destino es a través de uno o más "routers". La dirección del primero de ellos(el primer salto) se llama ruta indirecta. La dirección del primer salto es la única información que necesita el host fuente: el "router" que reciba el datagrama se responsabiliza del segundo salto, y así sucesivamente.
Figura: Rutas IP directas e indirectas - El host A tiene una ruta directa con B y D, y una indirecta con C. El host D es un "router" entre las redes 129.1 y 129.2.
Un host puede distinguir si una ruta es directa o indirecta examinando el número de red y de subred de la dirección IP.
El host necesita ser capaz de direccionar correctamente el objetivo usando un protocolo inferior a IP. Esto se puede hacer automáticamente, usando un protocolo como ARP(ver ARP("Address Resolution Protocol")), que se usan en LANs con broadcast, o estáticamente y configurando el host, por ejemplo cuando un host MVS tiene una conexión TCP/IP sobre un enlace SNA.
Las implementaciones de IP pueden soportar también rutas explícitas, es decir, una ruta a una dirección IP concreta. Esto es habitual en las conexiones que usan SLIP("Serial Line Internet Protocol") que no proporciona un mecanismo para que dos hosts se informen mutuamente de sus direcciones IP. Tales rutas pueden tener incluso el mismo número de red que el host, por ejemplo en subredes compuestas de enlaces punto a punto. En general, sin embargo, la información de encaminamiento se genera sólo mediante los números de red y de subred.
En esta tabla se pueden encontrar tres tipos de mapeado:
Ver la red en Figura - Ejemplo de tabla de encaminamiento IP para un ejemplo.
Figura: Ejemplo de tabla de encaminamiento IP
La tabla de encaminamiento contiene las siguientes entradas
De los principios ya comentados de IP, es fácil deducir los pasos que IP debe tomar con el fin de determinar la ruta para un datagrama de salida. Es lo que se denomina algoritmo de encaminamiento IP, y se muestra esquemáticamente en Figura - Algoritmo de encaminamiento IP.
Figura: Algoritmo de encaminamiento IP
Nótese que se trata de un proceso iterativo. Se aplica a todo host que maneje un datagrama, exceptuando al host al que se entrega finalmente el datagrama.
Tabla de contenidos
ICMP("Internet Control Message Protocol")