IPv4

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda

El Protocolo de Internet versión 4, en inglés: Internet Protocol version 4 (IPv4), es la cuarta versión del Internet Protocol (IP). Es uno de los protocolos centrales de los métodos estándares de interconexión de redes basados en Internet, y fue la primera versión implementada para la producción de ARPANET, en 1983. Definida en el RFC 791. IPv4 usa direcciones de 32 bits, limitándola a = 4 294 967 296 direcciones únicas, muchas de las cuales están dedicadas a redes locales (LAN).[1] Por el crecimiento enorme que ha tenido Internet (mucho más de lo que esperaba, cuando se diseñó IPv4), combinado con el hecho de que hay desperdicio de direcciones en muchos casos (ver abajo), ya hace varios años se vio que escaseaban las direcciones IPv4.

Esta limitación ayudó a estimular el impulso hacia IPv6, que a 2016 está en las primeras fases de implantación, y se espera que termine reemplazando a IPv4.

Las direcciones disponibles en la reserva global de IANA pertenecientes al protocolo IPv4 se agotaron oficialmente el lunes 31 de enero de 2011.[2] Los Registros Regionales de Internet deben, desde ahora, manejarse con sus propias reservas, que se estima, alcanzaran hasta el 2020.

Fragmentación y Reensamblaje[editar]

El Protocolo de Internet (IP) permite a las redes comunicarse unas con otras. El diseño acomoda redes de naturalezas físicas diversas; es independiente de la tecnología usada en la capa inmediantamente inferior, la Capa de Enlace. Las redes con diferente hardware difieren usualmente no sólo en velocidad de transmisión, sino que también en su Unidad Máxima de Transmisión (MTU). Cuando una red quiere transmitir datagramas a una red con un MTU inferior, debe fragmentar sus datagramas. En IPv4, esta función es realizada en la capa de Intenet, y es llevada a cabo en routers IPv4, los cuáles sólo requieren esta capa como la más alta implementada en su diseño.

En contraposición, IPv6, la nueva generación del Protocolo de Internet, no permite a los routers a llevar a cabo dicha fragmentación; los hosts son los que determinan el MTU antes de enviar datagramas.

Fragmentación[editar]

Cuando un router recibe un paquete, éste examina la dirección de destino y determina la interfaz de salida a utilizar y el MTU de ella. Si el tamaño del paquete es mayor que el MTU y el bit de No Fragmentación (DF) es 0 en la cabecera del paquete, el router tendrá que fragmentar dicho paquete.

El router divide el paquete en fragmentos. El tamaño máximo de cada fragmento es el MTU menos el tamaño de la cabecera IP (entre 20 y 60 bytes). El router pone cada fragmento dentro de su paquete. Estos fragmentos reciben los siguientes cambios:

  • El campo de total size es el tamaño de fragmento.
  • La bandera de more fragments (MF) es igual a 1 ent odos los paquetes excepto en el último.
  • El campo fragment offset está activado, basado en el offset del framento en la carga de datos original. Es medido en unidades de bloques de 8 bytes.
  • El campo header checksum es recomputado.

Por ejemplo, para un MTU de 1500 bytes y un tamaño de cabecera de 20 bytes, los offsets del fragmentos serían múltiplos de (1500-20)/8 = 185. Éstos múltiplos son 0,370,555,740…

Es posible que un paquete sea fragmentado en un router y éstos a su vez sean fragmentados en otro router. Por ejemplo, supongamos una Capa de Transporte con un tamaño de 4500 bytes, sin opciones, y un tamaño de cabecera IP de 20 bytes. Así, el tamaño de paquete sería de 4520 bytes.

Asumiendo que el paquete viaja en un enlace con un MTU de 2500 bytes, quedaría algo talque así:

Fragmento Tamaño en Bytes Bytes de la cabecera Bytes de datos Bandera

“Más Fragmentos”

Offset del fragmentos

(bloques de 8 bytes)

1 2500 20 2480 1 0
2 2040 20 2020 0 310

Observar que los fragmentos conservan el tamaño de datos: 2480 + 2020 = 4500 Bytes.

Observar también cómo averiguar los offsets del tamaño de datos:

  • 0
  • 0 + 2480/8 = 310.

Asumiendo que estos fragmentos alcanzan un enlace con un MTU de 1500 bytes. Cada fragmento se convertiría en dos fragmentos:

Fragmento Tamaño en Bytes Bytes de la cabecera Bytes de datos Bandera

“Más Fragmentos”

Offset del fragmentos

(bloques de 8 bytes)

1 1500 20 1480 1 0
2 1020 20 1000 1 185
3 1500 20 1480 1 310
4 560 20 540 0 495

Observar que los fragmentos conservan el tamaño de datos:

  • 1480 + 1000 = 2480 Bytes
  • 1480+540 = 2020 Bytes

Observar también que el bit de “Más Fragmentos” permanece a 1 para todos los fragmentos que vinieron con dicho 1 y que al llegar al último fragmento, dicho bit se establecerá a 0. Por supuesto, el campo de Identificación continúa con el mismo valor en todos los fragmentos refragmentados. De esta forma, incluso si los fragmentos son re-fragmentados, el receptor sabe que inicialmente todos empezarón en el mismo paquete.

Observar cómo conseguimos los offsets de los tamaños de datos:

  • 0.
  • 0 + 1480/8 = 185.
  • 185 + 1000/8 = 310.
  • 310 + 1480/8 = 495.

Podemos utilizar el último offset y el último tamaño de datos para calcular el tamaño total: 495*8 + 540 = 4500

                                                                                             3960 + 540 = 4500.

Reensamblaje[editar]

Un receptor sabe que un paquete es un fragmento si se cumple al menos una de las siguientes condiciones:

  • La bandera de “Más Fragmentos” está activada (= 1). (Ésto se cumple para todos los fragmentos excepto para el último).
  • El offset del fragmento es distinto de 0. (Ésto se cumple para todos los fragmentos menos para el primero).

El receptor identifica fragmentos coincidentes utilizando direcciones locales y foráneas, el protocolo ID y el campo Identificación. El receptor reensamblará los datos de fragmentos con el mismo ID utilizando tanto el offset del fragmento como la bandera de “Más Fragmentos”. Cuando el receptor recibe el último fragmento (que tiene la bandera de “Más Fragmentos” a 0), puede calcular la longitud de la carga útil de datos, multiplicando el offset del último fragmento por 8 y añadiendo su tamaño de datos también. En el ejemplo superior, este cálculo es de 495 x 8 + 540 = 4500 Bytes.

Cuando el receptor tiene todos los fragmentos, puede colocarlos de nuevo en el orden correcto utilizando los offsets para ello.

Será entonces cuando puede pasar sus datos a la pila para su posterior proceso.

Representación de direcciones[editar]

Detalle de una dirección IPv4, expresada en notación decimal separada por puntos.

Las direcciones IPv4 se pueden escribir de forma que expresen un entero de 32 bits, aunque normalmente se escriben con decimales separados por puntos. A estos números decimales de 3 dígitos se les llama "octetos", porque en binario requieren de 8 digitos (8 bits) para ser representados. La siguiente tabla muestra varias formas de representación de direcciones IPv4:

Notación Valor Conversión desde decimal separado por puntos
Decimal separada por puntos 192.0.2.235 -
Hexadecimal separada por puntos 0xC0.0x00.0x02.0xEB Cada octeto se convierte individualmente a la forma hexadecimal
Octal separada por puntos 0301.1680.0002.0353 Cada octeto se convierte de individualmente en octal
Hexadecimal 0xC00002EB Concatenación de octetos de la forma hexadecimal separada por puntos
Decimal 3221226219 El número hexadecimal expresado en decimal
Octal 030000001353 El número hexadecimal expresado en octal

Desperdicio de direcciones[editar]

El desperdicio de direcciones IPv4 se debe a varios factores.

Uno de los principales es que inicialmente no se consideró el enorme crecimiento que iba a tener Internet; se asignaron bloques de direcciones grandes (de 16 271 millones de direcciones) a países, e incluso a empresas.

Otro motivo de desperdicio es que en la mayoría de las redes, exceptuando las más pequeñas, resulta conveniente dividir la red en subredes. Dentro de cada subred, la primera y la última dirección no son utilizables; de todos modos no siempre se utilizan todas las direcciones restantes. Por ejemplo, si en una subred se quieren acomodar 80 hosts, se necesita una subred de 128 direcciones (se debe redondear a la siguiente potencia en base 2), en este ejemplo, las 48 direcciones Ip restantes ya no se utilizan.

Referencias[editar]

Véase también[editar]