Protocolo
IPv4
IPv4 es la versión 4 del Protocolo de Internet (Protocolo de
Internet versión 4) (IP o Internet Protocolo) y constituye la primera versión de IP que es
implementada de forma extensiva. IPv4
es el principal protocolo utilizado en el Nivel de Red del Modelo TCP/IP para
Internet. Fue descrito inicialmente en el RFC
791 elaborado por la Fuerza de Trabajo en Ingeniería de Internet (IETF
o Internet Engineering Task Force) en
Septiembre de 1981, documento que dejó obsoleto al RFC
760 de Enero de 1980.
IPv4
es un protocolo orientado hacia datos que se utiliza para comunicación entre
redes a través de interrupciones (switches) de paquetes (por ejemplo a través
de Ethernet).
El
propósito principal de IP es
proveer una dirección única a cada sistema para asegurar que una computadora en
Internet pueda identificar a otra.
Direcciones
IPv4 utiliza direcciones de 32 bits (4 bytes) que limita el
número de direcciones posibles a utilizar a 4.294.967.295 direcciones únicas.
Sin embargo, muchas de estas están reservadas para propósitos especiales como
redes privadas, Multidifusión
(Multicast), etc. Debido a esto se reduce el número de direcciones IP que
realmente se pueden utilizar, es esto mismo lo que ha impulsado la creación de IPv6 como reemplazo eventual para IPv4.
Representación
de las direcciones.
Cuando
se escribe una dirección IPv4 en
cadenas, la notación más común es la decimal
con puntos. Hay otras notaciones basadas sobre los valores de los
octetos de la dirección IP.
Utilizando como ejemplo: http://www.alcancelibre.org/
que tiene como dirección IP 201.161.1.226 en la notación decimal con puntos:
Notación
|
Valor
|
Conversión
desde decimal con puntos
|
Decimal con puntos
|
201.161.1.226
|
-
|
Hexadecimal con Puntos
|
0xC9.0xA1.0x01.0xE2
|
Cada octeto de la dirección es convertido
individualmente a hexadecimal.
|
Octal con puntos
|
0311.0241.0001.0342
|
Cada octeto es convertido individualmente
a octal.
|
Binario con puntos
|
11001001.10100001.00000001.11100010
|
Cada octeto es convertido individualmente
a binario
|
Hexadecimal
|
0xC9A101E2
|
Concatenación de los octetos de
hexadecimal con puntos.
|
Decimal
|
3382772194
|
La forma hexadecimal convertida a
decimal.
|
Octal
|
31150200742
|
La forma hexadecimal convertida a octal.
|
Binario
|
11001001101000010000000111100010
|
La forma hexadecimal convertida a
binario.
|
Teóricamente, todos estos formatos mencionados deberían ser reconocidos
por los navegadores (sin combinar). Además, en las formas con puntos, cada
octeto puede ser representado en combinación de diferentes bases. Ejemplo:
201.0241.0x01.226.
Anfitrión
local (Local host)
Además
de las redes privadas, el rango 127.0.0.0 – 127.255.255.255 o 127.0.0.0/8 en la
notación CIDR, está reservado
para la comunicación del anfitrión local (local host). Ninguna dirección de
este rango deberá aparecer en una red, sea pública o privada y cualquier
paquete enviado hacia cualquier dirección de este rango deberá regresar como un
paquete entrante hacia la misma máquina.
Referencia
de sub-redes de IP versión 4.
Algunos
segmentos del espacio de direcciones de IP, disponibles para la versión 4, se
especifican y asignan a través de documentos RFC (Request For Comments o Solicitud De Comentarios), que son conjuntos de notas
técnicas y de organización que se elaboran desde 1969 donde se describen los
estándares o recomendaciones de Internet, antes ARPANET. Ejemplos de esto son
los usos del Retorno del sistema (loopback, RFC
1643), las redes privadas (RFC
1918) y Zeroconf (RFC 3927) que no están bajo el control de
los RIR (Regional Internet Registries o Registros Regionales de
Internet).
La
máscara de sub-red es utilizada para separar los bits identificados de una red
a partir de los bits identificados del anfitrión. Se escribe utilizando el
mismo tipo de notación para escribir direcciones IP.
Clases de Direcciones en IPv4
|
Una dirección IPv4 está compuesta por cuatro elementos numéricos decimales con valores de 0 a 255 separados por un punto.
La versión IPv4 incluye cinco clases de direcciones IP, que van de la A hasta la E. De las mismas, se utilizan generalmente las tres primeras. Las clases establecen que cantidad de elementos se ocupan para la parte de red y que cantidad para la parte de host, con lo que queda definido de esta manera la cantidad de redes y de hosts que permite cada clase.
|
Las redes clase A permiten 126 redes y aproximadamente 17 millones de hosts. Esto se calcula elevando el numero 2 (base de la numeración binaria) a la potencia correspondiente a la cantidad de bits. Hay que tener en cuenta que ni el campo de red, ni el de host pueden estar compuestos por todos unos ni todos ceros, por lo que se debe restar estos dos casos a la cantidad que se obtenga.
Cálculo de la cantidad de redes y hosts (^ indica potencia):
Cantidad de Redes
2^7 = 128 Menos dos prohibidas (-127, -0) = 126 Cantidad de Host 2^24 = 16.777.216 Menos dos prohibidas = 16.777.214 |
|
En la clase B los dos primeros elementos se utilizan para la parte de red, lo que hace que esta clase sea más adecuada para redes de mediano y gran tamaño. Los dos primeros bits de la parte de red siempre son 10. Los 14 bits restantes completan la parte de red, quedando para los host dos elementos completos.
|
Las redes Clase B permiten 16.384 redes con aproximadamente 65.000 host por red. El número de redes se calcula elevando 2 a la potencia 14, que son la cantidad de bits variables de la parte de red de la dirección IP, ya que los dos primeros bits son fijos (10). En este caso no hace falta restar 2 porque al comenzar con 10 no habrá forma que todo el elemento esté formado por ceros ni por unos. La parte de host resultará de elevar 2 a la potencia 16 restándole 2 debido a que la dirección de host no podrá ser todos 0 o todos 1.
Cálculo de la cantidad de redes y hosts.
Cantidad de Redes
2^14 = 16.384 Cantidad de Host 2^16 = 65.536 Menos dos prohibidas = 65.534 |
Las direcciones de clase C se utilizan para pequeñas redes LAN (redes de pocos equipos). En ellas, los primeros tres bits de la parte de red tienen siempre los valores 110. Los siguientes 21 bits, que completan los primeros tres elementos, conformarán la parte de red de la dirección IP. El elemento restante, es el que representa la parte de host de la dirección.
|
Como los tres primeros bits de la parte de red son fijos (110) para calcular la cantidad de redes se eleva 2 a la 21 que da algo más de 2 millones. Para calcular la cantidad de hosts se eleva 2 a la 8 (cantidad de bits que quedan para host) y se resta 2 (todos 0 y todos 1) lo que da sólo 254 hosts.
Cantidad de Redes
2^21 = 2.097.152 Total = 2.097.152 Cantidad de Host 2^8 = 256 Menos dos prohibidas = 254 |
Estas clases no son utilizadas normalmente. Las direcciones de la clase D comienzan siempre con 1110 y se utilizan para lo que se llama Multicast que se emplea para enviar información a un grupo determinado de hosts que están previamente validados o autorizados para recibirla. Las direcciones de la clase E comienzan con 1111 y no se les ha dado por el momento uso práctico.
|
El formato del paquete IPv4
El
protocolo IPv4 tiene un header de longitud variable. El header está formado por
una parte obligatoria, de 20 bytes, seguido por una serie de opciones. Debido a
limitaciones del header, las opciones deben tener una longitud múltiplo de 4
bytes, pudiendo el header crecer hasta un máximo de 60 bytes (contando parte
obligatoria y opcional).
Los
headers obligatorios son los siguientes (considerando big endian a los números
mencionados)
•
Versión (4 bits): Es el número de versión del protocolo IP. Una constante “4”.
Permite que otras versiones interactúen en la misma red sin causar conflictos.
•
IHL (4 bits): Es la longitud del header IPv4. Puesto que el valor cubre de 0 a
15, la medida usada es bloques de 32 bits. Debe indicar al menos 5.
•
Type of service o TOS (8 bits): Es un campo de bits que indica cómo se debe
tratar al paquete en cuestión. Usado para priorizar algunos paquetes sobre
otros.
•
Total length (16 bits): Es la longitud total del paquete, medida en bytes. Esto
significa que un paquete IPv4 no puede tener una longitud mayor a 64 KiB.
•
Identification, flags y fragment offset: Estos campos son usados en la
fragmentación de paquetes IPv4 (a ver en la siguiente clase).
•
Time to live, o TTL (8 bits): Es un campo usado para evitar que un paquete
quede circulando indefinidamente en la red. Originalmente indicaba la cantidad
de segundos que el paquete puede permanecer. Hoy en día indica la cantidad de
saltos que puede realizar. Este campo se cambia al pasar por cada router, y el
paquete se descarta si este valor llega a 0.
•
Protocol (8 bits): Indica cual es el protocolo de la capa superior. Usado para
permitir llevar múltiples protocolos sobre IPv4 (similar al ethertype de
ethernet).
•
Header checksum (8 bits): Es un checksum que protege al header. No brinda mucha
protección y no protege a los datos. Si el checksum en un paquete no es
correcto, se descarta el mismo. Es principalmente una medida para evitar la
propagación innecesaria de paquetes.
•
Source address y destination address (32 bits cada una): Indican la dirección
de origen y destino del paquete. El origen está incluido para permitir que el
receptor sepa a quien debe responder y también asiste en el mantenimiento del
estado en protocolos de capas superiores.
Protocolo
IPv6
El Internet Protocol versión 6
(IPv6) (en español: Protocolo de Internet versión 6)
es una versión del protocolo Internet Protocol (IP), definida en el RFC 2460 y diseñada para
reemplazar a Internet Protocol versión 4 (IPv4) RFC 791, que actualmente está implementado en
la gran mayoría de dispositivos que acceden a Internet.
Diseñado por Steve Deering de Xerox PARC y Craig Mudge, IPv6 sujeto a todas las normativas que
fuera configurado está destinado a sustituir a IPv4, cuyo límite en
el número de direcciones de red admisibles está empezando a restringir el
crecimiento de Internet y su uso, especialmente en China, India, y otros países
asiáticos densamente
poblados. El nuevo estándar mejorará el servicio globalmente; por ejemplo,
proporcionará a futuras celdas telefónicas y dispositivos móviles sus
direcciones propias y permanentes.
IPv4 posibilita 4.294.967.296
(232) direcciones de host diferentes, un número inadecuado para dar
una dirección a cada persona del planeta, y mucho menos a cada vehículo,
teléfono, PDA, Tablet, etcétera. En cambio, IPv6 admite
340.282.366.920.938.463.463.374.607.431.768.211.456 (2128 o 340 sextillones de direcciones)
—cerca de 6,7 × 1017 (670 mil billones) de direcciones
por cada milímetro cuadrado de la
superficie de La Tierra.
Otra vía para la popularización del protocolo es la adopción de este por
parte de instituciones. El gobierno de los Estados Unidos ordenó el
despliegue de IPv6 por todas sus agencias federales en el año 2008
Se espera ampliamente que IPv6 sea soportado en conjunto con IPv4 en el
futuro cercano. Los nodos solo-IPv4 no son capaces de comunicarse directamente
con los nodos IPv6, y necesitarán ayuda de un intermediario.
Cambios y nuevas características
En muchos aspectos, IPv6 es una extensión conservadora de IPv4. La mayoría
de los protocolos de transporte -y aplicación- necesitan pocos o ningún cambio
para operar sobre IPv6; las excepciones son los protocolos de aplicación que
integran direcciones de capa de red, como FTP o NTPv3, NTPv4.
IPv6 especifica un nuevo formato de paquete, diseñado para minimizar el
procesamiento del encabezado de paquetes. Debido a que las cabeceras de los
paquetes IPv4 e IPv6 son significativamente distintas, los dos protocolos no
son interoperables.
Algunos de los cambios de IPv4 a IPv6 más relevantes son:
Capacidad extendida de direccionamiento
Un paquete en IPv6 está
compuesto principalmente de dos partes: la cabecera (que tiene una parte fija y
otra con las opciones) y la carga útil (los datos).
Cabecera fija
Los primeros 40 bytes (320 bits) son la cabecera del paquete y contiene los
siguientes campos:
Offset del Octeto
|
0
|
1
|
2
|
3
|
|||||||||||||||||||||||||||||
Bit Offset
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
16
|
17
|
18
|
19
|
20
|
21
|
22
|
23
|
24
|
25
|
26
|
27
|
28
|
29
|
30
|
31
|
|
0
|
0
|
Versión
|
Clase
de Tráfico
|
Etiqueta
de Flujo
|
|||||||||||||||||||||||||||||
4
|
32
|
Longitud
del campo de datos
|
Cabecera
Siguiente
|
Límite
de Saltos
|
|||||||||||||||||||||||||||||
8
|
64
|
Dirección
de Origen
|
|||||||||||||||||||||||||||||||
C
|
96
|
||||||||||||||||||||||||||||||||
10
|
128
|
||||||||||||||||||||||||||||||||
14
|
160
|
||||||||||||||||||||||||||||||||
18
|
192
|
Dirección
de Destino
|
|||||||||||||||||||||||||||||||
1C
|
224
|
||||||||||||||||||||||||||||||||
20
|
256
|
||||||||||||||||||||||||||||||||
24
|
288
|
||||||||||||||||||||||||||||||||
direcciones de origen (128 bits)
direcciones de destino (128 bits)
versión del protocolo IP (4 bits)
clase de tráfico (8 bits, Prioridad del Paquete)
Longitud del campo de datos (16 bits)
Cabecera siguiente (8 bits)
Hay dos versiones de IPv6 levemente diferentes. La ahora obsoleta versión
inicial, descrita en el RFC 1883, difiere de la
actual versión propuesta de estándar, descrita en el RFC 2460, en dos campos:
hay 4 bits que han sido reasignados desde "etiqueta de flujo" (flow
label) a "clase de tráfico" (traffic class). El resto de
diferencias son menores.
En IPv6 la fragmentación se realiza sólo en el nodo origen del paquete, al
contrario que en IPv4 en donde los routers pueden fragmentar un paquete. En
IPv6, las opciones también desaparecen de la cabecera estándar y son
especificadas por el campo "Cabecera Siguiente" (Next Header),
similar en funcionalidad en IPv4 al campo Protocolo. Un ejemplo: en IPv4 uno
añadiría la opción "ruta fijada desde origen" (Strict Source and
Record Routing) a la cabecera IPv4 si quiere forzar una cierta ruta para el
paquete, pero en IPv6 uno modificaría el campo "Cabecera Siguiente"
indicando que viene una cabecera de encaminamiento. La cabecera de
encaminamiento podrá entonces especificar la información adicional de
encaminamiento para el paquete, e indicar que, por ejemplo, la cabecera TCP
será la siguiente. Este procedimiento es análogo al de AH y ESP en IPsec para IPv4 (que
aplica a IPv6 de igual modo, por supuesto).
Cabeceras de extensión
El uso de un formato flexible de cabeceras de extensión opcionales es una
idea innovadora que permite ir añadiendo funcionalidades de forma paulatina.
Este diseño aporta gran eficacia y flexibilidad ya que se pueden definir en
cualquier momento a medida que se vayan necesitando entre la cabecera fija y la
carga útil.
Hasta el momento, existen 8 tipos de cabeceras de extensión, donde la
cabecera fija y las de extensión opcional incluyen el campo de cabecera
siguiente que identifica el tipo de cabeceras de extensión que viene a continuación
o el identificador del protocolo de nivel superior. Luego las cabeceras de
extensión se van encadenando utilizando el campo de cabecera siguiente que
aparece tanto en la cabecera fija como en cada una de las citadas cabeceras de
extensión. Como resultado de la secuencia anterior, dichas cabeceras de
extensión se tienen que procesar en el mismo orden en el que aparecen en el
datagrama. La Cabecera principal, tiene a diferencia de la cabecera de la
versión IPv4 un tamaño fijo de 40 octetos.
Específica para asignarlos para aplicaciones Multicast intra-dominio o
entre-dominios (RFC 3306). En IPv4 era
muy difícil para una organización como ésta.
Todas o parte de estas cabeceras de extensión tienen que ubicarse en el
datagrama en el orden especificado:
Cabecera de Extensión
|
Tamaño
|
Descripción
|
RFC
|
|
Opciones salto a salto (Hop-By-Hop Options)
|
0
|
variable
|
Contiene
datos que deben ser examinados por cada nodo a través de la ruta de envío de
un paquete.
|
|
Enrutamiento
(Routing)
|
43
|
variable
|
Métodos
para especificar la forma de ro otear un datagrama. (Usado con IPv6
móvil)
|
|
Cabecera
de fragmentación (Fragment)
|
44
|
64
bits
|
Contiene
parámetros para la fragmentación de los datagramas.
|
|
Cabecera
de autenticación (Authentication Header (AH))
|
51
|
variable
|
Contiene
información para verificar la autenticación de la mayor parte de los datos
del paquete (Ver IPsec)
|
|
Encapsulado
de seguridad de la carga útil (Encapsulating Security Payload (ESP))
|
50
|
variable
|
Lleva
la información cifrada para comunicación segura (Ver IPsec).
|
|
Opciones
para el destino (Destination Options)
|
60
|
variable
|
Información
que necesita ser examinada solamente por los nodos de destino del paquete.
|
|
No Next Header
|
59
|
vacío
|
Indica
que no hay más cabeceras
|
Cada cabecera de extensión debe aparecer como mucho una sola vez, salvo la
cabecera de opción destino, que puede aparecer como mucho dos veces, una antes
de la cabecera ruteo y otra antes de la cabecera de la capa superior.
Carga útil
La carga útil del paquete puede tener un tamaño de hasta 64 KB en modo
estándar, o mayor con una opción de carga jumbo (jumbo payload) en el
encabezado opcional Hop-By-Hop.
La fragmentación es manejada solamente en el host que envía la información
en IPv6: los routers nunca fragmentan un paquete y los hosts se espera que
utilicen el Path MTU discovery.
IPv6 y el sistema de nombres de dominio
Las direcciones IPv6 se representan en el sistema de nombres de dominio (DNS) mediante
registros AAAA (también llamados registros de quad-A, por tener
una longitud cuatro veces la de los registros A para IPv4)
El concepto de AAAA fue una de las dos propuestas al tiempo que se estaba
diseñando la arquitectura IPv6. La otra propuesta utilizaba registros A6
y otras innovaciones como las etiquetas de cadena de bits (bit-string labels)
y los registros DNAME.
Mientras que la idea de AAAA es una simple generalización del DNS IPv4, la
idea de A6 fue una revisión y puesta a punto del DNS para ser más genérico, y
de ahí su complejidad.
La RFC 3363 recomienda
utilizar registros AAAA hasta tanto se pruebe y estudie exhaustivamente el uso
de registros A6. La RFC 3364 realiza una
comparación de las ventajas y desventajas de cada tipo de registro.
Características de IPv6
El protocolo IPv6 tiene las características siguientes:
- Nuevo formato de encabezado
- Espacio de direcciones más grande
- Infraestructura de direcciones y enrutamiento eficaz y jerárquica
- Configuración de direcciones con y sin estado
- Seguridad integrada
- Mejora de la compatibilidad para la calidad de servicio (QoS)
- Nuevo protocolo para la interacción de nodos vecinos
- Capacidad de ampliación
Nuevo formato de encabezado
El encabezado IPv6 tiene un nuevo formato que está diseñado para reducir al
mínimo la sobrecarga del encabezado. Esto se consigue al mover los campos que
no son esenciales y los campos de opciones a encabezados de extensión que se
colocan a continuación del encabezado IPv6. La simplificación del encabezado
IPv6 permite un procesamiento más eficaz en los enrutadores intermedios.
Los encabezados IPv4 y los encabezados IPv6 no son interoperables y el
protocolo IPv6 no es compatible con el protocolo IPv4. Un host o un enrutador
debe utilizar simultáneamente una implementación de IPv4 e IPv6 para reconocer
y procesar ambos formatos de encabezado. El nuevo encabezado IPv6 sólo tiene el
doble de tamaño que el encabezado IPv4, a pesar de que las direcciones IPv6 son
cuatro veces mayores que las direcciones IPv4.
Espacio de direcciones más grande
IPv6 utiliza direcciones de origen y destino de 128 bits (16 bytes). Aunque
con 128 bits se pueden proporcionar más de 3,4×1038 combinaciones posibles, el
amplio espacio de direcciones de IPv6 se ha diseñado para permitir múltiples
niveles de división en subredes y asignación de direcciones de la red troncal
Internet a las subredes individuales de una organización.
Aunque actualmente sólo un pequeño porcentaje de direcciones posibles se
asignan para el uso de hosts, hay disponibles muchas direcciones para su uso en
el futuro. Al tener un número mucho mayor de direcciones disponibles, ya no son
necesarias las técnicas de conservación de direcciones, como la implementación
de NAT.
Infraestructura de direcciones y enrutamiento eficaz y jerárquica
Las direcciones globales de IPv6 que se utilizan en la parte IPv6 de
Internet están diseñadas para crear una infraestructura eficaz, jerárquica y
que se puede resumir y que tiene en cuenta la existencia de múltiples niveles
de proveedores de servicios Internet. En la red Internet IPv6, los enrutadores
de red troncal tienen tablas de enrutamiento mucho más pequeñas.
Configuración de direcciones con y sin estado
Para simplificar la configuración de los hosts, IPv6 admite la
configuración de direcciones con estado, como la configuración de direcciones
con la presencia de un servidor DHCP, y la configuración de direcciones sin
estado (configuración de direcciones sin la presencia de un servidor DHCP). Con
la configuración de direcciones sin estado, los hosts de un vínculo se
configuran automáticamente con direcciones IPv6 para el vínculo (direcciones
locales del vínculo) y con direcciones derivadas de prefijos anunciados por los
enrutadores locales. Incluso sin la presencia de un enrutador, los hosts del
mismo vínculo se pueden configurar automáticamente con direcciones locales del
vínculo y comunicarse sin necesidad de configuración manual.
Seguridad integrada
La compatibilidad con IPSec es un requisito del conjunto de protocolos
IPv6. Este requisito proporciona una solución basada en estándares para las
necesidades de seguridad de red y aumenta la interoperabilidad entre diferentes
implementaciones de IPv6.
Mejora de la compatibilidad para la calidad de servicio (QoS)
Mejora de la compatibilidad para la calidad de servicio (QoS)
Los nuevos campos del encabezado IPv6 definen cómo se controla e identifica
el tráfico. La identificación del tráfico, mediante un campo Flow Label
(etiqueta de flujo) en el encabezado, permite que los enrutadores identifiquen
y proporcionen un control especial de los paquetes que pertenecen a un flujo
dado. Un flujo es un grupo de paquetes entre un origen y un destino. Dado que
el tráfico está identificado en el encabezado IPv6, la compatibilidad con QoS
se puede obtener de forma sencilla incluso si la carga del paquete está cifrada
con IPSec.
Nuevo protocolo para la interacción de nodos vecinos
El protocolo Descubrimiento de vecinos en IPv6 consiste en un conjunto de
mensajes del Protocolo de mensajes de control de Internet para IPv6 (ICMPv6,
< i>Internet Control Message Protocol for IPv6</i>) que administran
la interacción de nodos vecinos (es decir, nodos que se encuentran en el mismo
vínculo). El descubrimiento de vecinos reemplaza los mensajes de Protocolo de
resolución de direcciones (ARP, Address Resolution Protocol), Descubrimiento de
enrutadores ICMPv4 y Redirección ICMPv4 con mensajes eficaces de multidifusión
y unidifusión, y proporciona funciones adicionales.
Capacidad de ampliación
IPv6 se puede ampliar con nuevas características al agregar encabezados de
extensión a continuación del encabezado IPv6. A diferencia del encabezado IPv4,
que sólo admite 40 bytes de opciones, el tamaño de los encabezados de extensión
IPv6 sólo está limitado por el tamaño del paquete IPv6.