¿Qué es el Internet Protocol (IP)?
Al igual que a la hora de enviar cartas, para enviar datos a través de las redes digitales es necesario contar con la dirección correcta, con la diferencia de que en este caso se habla de direcciones IP. Por lo tanto, los paquetes de datos van dotados de una dirección IP, tal y como los sobres incluyen una dirección postal, para que el destinatario pueda recibir la carta. A diferencia de las direcciones postales, sin embargo, sus sustitutas digitales no están vinculadas a un lugar determinado, sino que se asignan a los dispositivos de red de manera automática o manual al establecer la conexión, proceso en el cual juega un papel esencial el llamado Internet Procotol o protocolo IP.
- Certificado SSL Wildcard
- Registro privado
- 1 cuenta de correo electrónico por contrato
El protocolo de Internet, conocido por sus siglas en inglés IP, es el protocolo principal de la familia de protocolos de Internet y su importancia es fundamental para el intercambio de mensajes en redes informáticas. El protocolo no orientado a la conexión, publicado en 1974 por el Instituto de Ingeniería Eléctrica y Electrónica (IEEE) y especificado como estándar en RFC 791, fue concebido principalmente para garantizar el éxito en el envío de paquetes de un emisor a un destinatario. Para este fin, el protocolo de Internet establece un formato que determina el tipo de descripción que tienen estos paquetes de datos (también llamados datagramas IP).
Definición e historia del Internet Protocol
El protocolo de Internet (IP), como componente fundamental de la familia de protocolos (una colección de cerca de 500 protocolos de red) es un protocolo no orientado a conexión responsable del direccionamiento y la fragmentación de paquetes de datos en redes digitales. Junto al protocolo de control de transmisiones (TCP o Transmission Control Protocol), IP sienta las bases de Internet. Para que el remitente pueda enviar un paquete de datos al destinatario, el protocolo de Internet define una estructura de paquetes que agrupa los datos que se tienen que enviar. Así, el Internet Protocol establece cómo se describe la información sobre el origen y el destino de los datos y los separa de los datos útiles en la cabecera IP. Un formato de paquetes como tal recibe el nombre de datagrama IP.
En 1974, el Institute of Electrical and Electronics Engineers (IEEE) publicó un trabajo de investigación de los informáticos estadounidenses Robert Kahn y Vint Cerf que describía un modelo de protocolo para la interconexión entre redes y paquetes tomando como base ARPANET, una red de ordenadores considerada como la predecesora de Internet. Los componentes principales de este modelo fueron, además del protocolo de control de transmisiones TCP, el recién incorporado protocolo IP, el cual, con una capa de abstracción especial, permitía la comunicación a través de diferentes redes físicas. Posteriormente, surgieron cada vez más redes de investigación basadas en esta combinación de protocolos que pasó a denominarse “TCP/IP”, que en 1981 fue especificada como estándar en la RFC 791.
IPv4 e IPv6: ¿qué diferencia a cada versión?
Hoy en día, quien trata habitualmente con direcciones IP con el fin de, por ejemplo, direccionar ordenadores en la red local, no tarda en toparse con las dos variantes IPv4 e IPv6. Estas no hacen referencia a la cuarta y sexta generación del protocolo IP, a pesar de las diferentes modificaciones que ha experimentado. IPv4 es de facto la primera versión oficial del Internet Protocol, derivando número de versión del hecho de utilizar la cuarta versión del protocolo TCP. IPv6, por su parte, es el sucesor directo de IPv4 (el desarrollo de IPv5 fue suspendido por motivos económicos). Aun cuando no se han publicado versiones posteriores a IPv4 y IPv6, el Internet Protocol se ha ido desarrollando desde 1974, cuando todavía no existía de forma autónoma y formaba parte de TCP. Básicamente, por aquel entonces el foco de atención se centró en optimizar el establecimiento de la conexión y el direccionamiento. De esta manera, pronto se pudo aumentar la longitud de los bits de las direcciones host pasando así de 16 a 32 bits, por lo que el espacio para direcciones se amplió a alrededor de cuatro mil millones de posibles representantes. El prometedor IPv6, con sus campos de direcciones de 128 bits, permite alrededor de 340 sextillones (una cifra con 37 ceros) de direcciones diferentes, cubriendo así la necesidad de direcciones de Internet también en el largo plazo.
Así se construye la cabecera IP de un datagrama
Como ya se ha puesto de relieve, el Internet Protocol se ocupa de que las características estructurales importantes se presenten en la cabecera de cada paquete y de que se le asigne el protocolo de transporte adecuado (normalmente TCP). La cabecera fue revisada para la versión 6, por lo que es necesario hacer una distinción entre la cabecera de IPv4 y la de IPv6.
Construcción de la cabecera de IPv4
Toda cabecera IP comienza con un valor de 4 bits de longitud para el número de versión del protocolo de Internet, es decir, IPv4 o IPv6. A este le siguen 4 bits que contienen información sobre la longitud de la cabecera (IP header length), puesto que esta no siempre es la misma. La longitud total se calcula tomando como base este valor multiplicado por 32 bits. Así, 5, el valor más pequeño posible, se corresponde con una longitud de cabecera de 160 bits, lo que se traduce en 20 bytes. En este caso no se añade ninguna opción. El valor máximo es 15 o 480 bits, es decir, 60 bytes. Los bits del 8 al 15 (Type of Service) pueden contener instrucciones sobre el tratamiento y la prioridad del datagrama. En este sentido, el host puede, por ejemplo, indicar la importancia de aspectos como la fiabilidad, el rendimiento o las demoras en lo que respecta a la transmisión de los datos. La longitud total señala cuál es el tamaño total del paquete de datos y añade así el tamaño de los datos útiles a la longitud de la cabecera. Debido a que dicho campo tiene una longitud de 16 bits, el límite máximo se sitúa en torno a los 65 635 bytes. En la RFC 791 se define que cada host ha de tener la capacidad de procesar al menos 576 bytes. Un datagrama IP puede fragmentarse según se desee en su camino hacia el host de destino tanto del router como de otros dispositivos, aunque los fragmentos no deben tener un tamaño inferior a 576 bytes. El resto de campos de la cabecera de IPv4 tienen el siguiente significado:
- Identificación: todos los fragmentos de un datagrama cuentan con el mismo número de identificación que reciben por parte del remitente. Ajustándose a este campo de 16 bits, el host de destino puede asignar los fragmentos individuales a un determinado datagrama.
- Flags (banderas): toda cabecera IP contiene tres bits flag que incluyen datos y directrices para la fragmentación. El primer bit está reservado y siempre tiene el valor 0. El segundo bit, con el nombre “Don’t Fragment”, informa acerca de si se puede fragmentar el paquete (0) o no (1). El último, que recibe el nombre de “More Fragments”, da información sobre si siguen más fragmentos (1) o sobre si el paquete está completo y ha concluido con el fragmento actual (0).
- Desplazamiento del fragmento: este campo informa al host de destino sobre la parte a la que pertenece un único fragmento para que pueda reconstruir todo el datagrama sin ningún problema. La longitud de 13 bits significa que un datagrama puede dividirse en un máximo de 8192 fragmentos.
- Tiempo de vida (Time to Live, TTL): para que un paquete no vague por la red de un nodo a otro durante un período de tiempo ilimitado obtiene un tiempo de vida máximo en el momento del envío, lo que se conoce como Time to Live. El estándar RFC define a los segundos como unidad para este campo de 8 bits y el tiempo de vida máximo asciende a 255 segundos. Para cada nodo de red que pasa, el TTL disminuye como mínimo en 1. Si se alcanza el valor 0, el paquete de datos es descartado automáticamente.
- Protocolo: el campo del protocolo (8 bits) asigna al paquete de datos el protocolo de transporte correspondiente, como es el caso, por ejemplo, del valor 6 para TCP o del valor 17 para el protocolo UDP. El listado oficial de todos los protocolos posibles fue elaborado en 2002 por la IANA (Internet Assigned Numbers Authority).
- Suma de verificación de la cabecera: el campo “checksum”, de 16 bits de amplitud, contiene la suma de verificación de la cabecera. Esta debe volverse a calcular para cada nodo de red a causa de la disminución del TTL en cada estación. La exactitud de los datos útiles no se verifica por motivos de eficiencia.
- Dirección de origen y de destino: a las direcciones IP asignadas al host de origen y al de destino se reservan 32 bits respectivamente, es decir, 4 bytes. Estas direcciones IP se escriben adoptando la forma de cuatro grupos de números decimales separados por un punto. La dirección más baja es 0.0.0.0 y la más alta 255.255.255.255.
- Opciones: el campo de las opciones amplía el protocolo IP con datos adicionales no contemplados en el diseño estándar. Debido a que se trata de complementos opcionales, el campo tiene una longitud variable limitada por la longitud máxima de la cabecera. Entre las opciones posibles se encuentran, por ejemplo, “Security” (señala lo secreto que es el datagrama), “Record Route” (encarga a todos los nodos de red que adhieran sus direcciones IP al paquete para registrar su ruta) y “Time Stamp” (añade la fecha y la hora del momento en el que el paquete pasa por un determinado nodo).
Construcción de la cabecera de IPv6
La cabecera del protocolo IPv6 tiene, al contrario que la de su predecesor, un tamaño fijo de 320 bits (40 bytes). Sin embargo, entre la cabecera estándar y los datos útiles se pueden añadir datos adicionales. Estas cabeceras de extensión (extension header) se pueden comparar con el campo de opciones del protocolo IPv4 y pueden adaptarse en cualquier momento sin tener que modificar la propia cabecera. Entre otras cosas, de esta manera se pueden determinar las rutas de los paquetes, facilitar datos de fragmentación o gestionar la comunicación cifrada por medio de IPSec. No existe una suma de verificación de la cabecera en beneficio del rendimiento, entre otras cosas. La cabecera IP comienza, como en IPv4, con la versión del protocolo de Internet de 4 bits de longitud. El siguiente campo, es decir, “Traffic Class”, es equiparable a la entrada “Type of Service” del protocolo anterior. Estos 8 bits informan al host de destino, al igual que en la versión anterior, sobre el procesamiento cualitativo del datagrama, donde incluso son váidas las mismas reglas. En IPv6 se introduce, sin embargo, el Flow Label (20 bits), con cuya ayuda es posible identificar flujos de datos de paquetes de datos interrelacionados para reservar ancho de banda y optimizar el enrutamiento. La siguiente clasificación explica el resto de datos de la cabecera del protocolo IP mejorado:
- Tamaño de los datos útiles: IPv6 transmite un valor para el tamaño de los datos útiles transportados, incluida la cabecera de extensión (en total 16 bits). En la versión anterior se tenía que calcular este valor con independencia de la longitud total restando la longitud del encabezado.
- Next Header (siguiente cabecera): el campo “Next Header“, de 8 bits de longitud, es el homólogo del campo “Protocolo” en IPv4 y también ha adoptado su función, es decir, la asignación del protocolo de transporte deseado.
- Hop Limit: el campo “Hop Limit” (8 bits) define el número máximo de estaciones intermedias que debe recorrer un paquete antes de ser rechazado. Al igual que con TTL en IPv4, el valor se reducirá en 1 en cada nodo.
- Dirección de origen y de destino: las direcciones del remitente y del destinatario ocupan gran parte de la cabecera del IPv6. Como ya se ha indicado al principio, estas tienen una longitud de 128 Bit (el cuádruple de las direcciones de IPv4). Con respecto a la notación habitual, también se dan diferencias notables. La versión más reciente del protocolo IP recurre a números hexadecimales y los subdivide en 8 bloques de 16 bits. Para separarlos se utilizan los dos puntos, de modo que este es el aspecto de una dirección completa en el protocolo IPv6: 2001:0db8:85a3:08d3:1319:8a2e:0370:7344.
¿Cómo funciona la asignación de direcciones del Internet Protocol?
Para que los datagramas puedan indicar las características elementales de la dirección de partida y de la de destino, estas tienen primero que asignarse a los participantes de la red. Tradicionalmente se distingue entre direcciones IP internas o externas (direcciones IP públicas). En el caso de las primeras, que se usan para la comunicación en redes locales, hay tres rangos de direcciones reservados:
- De 10.0.0.0 a 10.255.255.255
- De 172.16.0.0 a 172.31.255.255
- De 192.168.0.0 a 192.168.255.255
Para las redes IPv6 se utiliza el prefijo “fc00::/7”. Las direcciones de estos rangos no se enrutan en Internet, por lo que pueden escogerse libremente y utilizarse en redes privadas o corporativas. La asignación de una dirección tiene lugar de forma manual o automática en cuanto un dispositivo se conecta a la red, siempre y cuando esté activada la asignación de direcciones automática y entre en acción un servidor DHCP. Además, una red local de este tipo se puede segmentar en más rangos con ayuda de una máscara de subred. Los proveedores de Internet otorgan direcciones IP externas a los routers cuando se conectan a Internet. Todos los dispositivos conectados a un mismo router utilizan la misma IP externa. Por lo general, los proveedores suelen otorgar una nueva dirección de Internet de un rango de direcciones asignado a su vez por la IANA cada 24 horas y esto también se aplica al arsenal casi inagotable de direcciones IPv6, que solo se puede utilizar parcialmente. Y la subdivisión no solo afecta a direcciones privadas y públicas, sino que se destaca por ofrecer numerosas posibilidades de clasificación en los llamados ámbitos de direcciones (Address Scopes):
- Host scope (ámbito de host): la dirección 0:0:0:0:0:0:0:1 especificada como loopback puede utilizar un host para enviarse datagramas a sí misma.
- Link local scope (ámbito de enlace local): para la conectividad IPv6 es imprescindible que cada host disponga de su propia dirección, incluso cuando esta solo es válida en una red local. Esta dirección de enlace local se caracteriza por el prefijo “fe80::/10“ y es necesaria, por ejemplo, para la comunicación con el portal estándar (router) a la hora de poder generar una dirección IP pública.
- Unique local scope (ámbito unique local): este hace referencia al rango de direcciones “fc00::/7”, que está reservado para la configuración de redes locales.
- Site local scope (ámbito site local): el ámbito site local es un rango de direcciones obsoleto que contiene el prefijo “fec0::/10”, también definido para redes locales. Al agrupar varias redes o crear conexiones VPN entre redes que se numeraron con direcciones site local se daban compilaciones, lo que le llevó a quedarse anticuado.
- Global scope (ámbito global): todos los host que quieren establecer la conexión con Internet necesitan al menos una dirección pública propia, que se puede adquirir por autoconfiguración, para lo que pueden recurrir a SLAAC (configuración de dirección sin estado) o a DHCPv6 (configuración dinámica de hosts).
- Multicast scope (ámbito multicast): con IPv6, los nodos de red, el router, el servidor y otros servicios de red pueden unirse en grupos multicast. Cada uno de estos grupos cuenta con una dirección propia, por lo que con un único paquete se pueden localizar todos los hosts implicados. El prefijo “ff00::/8” indica que a continuación aparece una dirección multicast.
Así regula la fragmentación el protocolo IP
Siempre que se envía un paquete de datos con los protocolos TCP/IP automáticamente se lleva a cabo una revisión del tamaño total. Si este sobrepasa la Maximum Transmission Unit (unidad máxima de transferencia) de la interfaz de red correspondiente, los datos se fragmentan y se descomponen en bloques de datos más pequeños. Los responsables de esta tarea son o el host del envío (IPv6) o un router intermedio (IPv4). Por defecto, el receptor compone el paquete, para lo que recurre a la cabecera IP o a los datos de fragmentación contenidos en la cabecera de extensión. En casos excepcionales, un cortafuegos también puede recomponer el paquete (reassembling) si está configurado para ello.
Debido a que IPv6 ya no contempla la fragmentación y esta no puede tener lugar a través de un router, el paquete IP debe tener un tamaño apropiado antes de enviarse. Si en un router se localizan datagramas de IPv6 que sobrepasan la Maximum Transmission Unit, dicho router los rechaza e informa al remitente por medio de un mensaje ICMPv6 del tipo 2 que indique “Packet Too Big” (en español: “el paquete es muy grande”). La aplicación que envía los datos puede o bien crear paquetes pequeños y no fragmentados o llevar a cabo la fragmentación. A continuación, se agrega la cabecera de extensión adecuada al paquete IP para que el host de destino pueda agrupar los fragmentos individuales tras su recepción.