jueves, 26 de enero de 2017

TCP/IP (12): El deseado IPv6



¿POR QUÉ IPv6?

En el anterior artículo, hablamos del agotamiento de las direcciones IP y de las piruetas que han tenido que hacerse para mantener el viejo IPv4 en funcionamiento. 

IPv4 se desarrolló a finales de la década de los 1970 para el Ministerio de Defensa de EEUU, y se publicó en 1980 como RFC 760. La fortaleza de su diseño ha hecho que durante décadas siga siendo la base de prácticamente todas las comunicaciones no sólo en Internet, sino incluso en redes locales e intranets. Pocos desarrollos tecnológicos en la historia han sido tan exitosos y se han mantenido sin cambios por tanto tiempo. Sin embargo, el tamaño de su espacio de direcciones se ha mostrado insuficiente ante el boom que ha sufrido Internet. Esta situación ya era preocupante a principios de este siglo.

Mucho antes, a finales del siglo XX, la IETF se puso a trabajar en una nueva versión de IP. Se llamó IPv6 porque el número de versión 5 ya se había usado para un protocolo orientado a conexión, complementario de IPv4, que no llegó a cuajar.

Hay que tener claro que la adopción de IPv6 es la única solución que va a permitir a Internet seguir desarrollándose. Por tanto, su uso generalizado solo es cuestión de tiempo, a pesar de la lentitud y poco entusiasmo con los que ha ido siendo adoptado por los proveedores de Internet.

NUEVO ESPACIO DE DIRECCIONES

El espacio de direcciones que introduce IPv6 es de 128 bits, frente a los 32 de IPv4. La cantidad de direcciones posibles que surge de esta longitud no sólo es suficiente para cualquier uso futuro, sino que resulta inimaginable para la mente humana. Sólo decir que en este espacio hay varios miles de cuatrillones de direcciones para cada persona del planeta.

Esta enorme extensión en el espacio de direcciones no es arbitraria, sino que ha sido pensada más allá de evitar el simple agotamiento. La idea es que, usando este espacio tan amplio, sea posible desarrollar mecanismos de rutado mucho más eficientes. Las técnicas de agregación de rutas permitirán que diferentes partes de Internet puedan usar prefijos comunes de manera estructurada.




NOTACIÓN DE DIRECCIONES

Lógicamente, al aumentar tanto de tamaño, la forma de representar los dígitos de las direcciones debe cambiar con respecto a IPv4. La representación común es de números hexadecimales de 16 bits cada uno, separados por el signo de dos puntos (:). Se forman, por tanto, ocho grupos con cuatro dígitos hexadecimales cada uno. Por ejemplo:

3ffe:1900:4545:3:200:f8ff:fe21:67cf

Los ceros a la izquierda en cada grupo no se escriben. Las letras hexadecimales se escriben en minúsculas por convención.

Dado que esta notación aún es incómoda de usar por su longitud, se permite abreviarla usando ciertas convenciones:

Los grupos de ceros consecutivos se pueden omitir colocando dos veces los dos puntos en su lugar. Por ejemplo:

fe80:0:0:0:200:f8ff:fe21:67cf

se puede abreviar a 

fe80::200:f8ff:fe21:67cf

Si hay más de una secuencia de ceros, se abreviará la más larga de ellas, pero nunca más de una. Esto es para evitar representaciones ambiguas. Por ejemplo:

fe80:0:0:0:200:0:0:67cf

se abrevia a 

fe80::200:0:0:67cf

pero NO se puede escribir:

fe80::200::67cf

Si las secuencias de ceros a abreviar son de igual longitud, se elige la que está más a la izquierda. Por ejemplo:

fe80:0:0:1:200:0:0:67cf

se abrevia a 

fe80::1:200:0:0:67cf

Usando este tipo de notación, es muy simple escribir las típicas direcciones de loopback (::1 por 0:0:0:0:0:0:1) e inespecificada (:: por 0:0:0:0:0:0:0:0). 

Sin embargo, surgen problemas para integrar las direcciones en protocolos preexistentes, que usan los dos puntos para otros fines. Concretamente, para las URL (localizador universal de recurso) e URI (identificador universal de recurso), es necesario usar corchetes para delimitar la dirección IPv6. Por ejemplo:

http://[3ffe:1900:4545:3:200:f8ff:fe21:67cf]/index.html

En los localizadores de tipo UNC (convención uniforme de nombres), propio de los protocolos de Microsoft, la solución adoptada es usar un dominio DNS específico (ipv6-literal.net), cambiando además los símbolos de dos puntos (: y ::) por guiones (- y  --). Por ejemplo;

3ffe-1900--f8ff-fe21-67cf.ipv6-literal.net

Aunque éste es un dominio real registrado por Microsoft, las direcciones normalmente son resueltas por el propio software sin necesidad de llamadas a los servidores DNS.

CARACTERÍSTICAS NUEVAS EN IPv6

Aparte de la ampliación del espacio de direcciones, el nuevo protocolo lógicamente incorpora nuevas funcionalidades, así como correcciones de problemas que se han ido detectando en su antecesor:

- Redefinición de multicast y broadcast

En IPv6 se redefine el funcionamiento del multicast (envío de paquetes a varios nodos) y el broadcast (envío de paquetes a todos los nodos). En realidad se unifican ambos conceptos, los cuales tenían en IPv4 diferentes mecanismos. En IPv6 se solucionan muchas de las dificultades que había para implementar emisiones multicast. Por ejemplo, la adaptación entre las direcciones de unicast (punto a punto) y multicast es automática por el diseño, sin necesidad de los complejos mecanismos de IPv4. Cualquier dirección IPv6 tiene asignada por sí misma, sin configuración adicional, un conjunto amplio de direcciones multicast usables globalmente.

Una de esas direcciones multicast predefinidas es precisamente la de "todos los nodos" (ff02::1), equivalente a la tradicional dirección de broadcast (255.255.255.255).

- Nuevas funciones de autoconfiguración

Aparte de las tradicionales configuraciones manuales o dinámicas (DHCPv6), los nodos pueden autoconfigurarse usando un mecanismo más avanzado basado en el protocolo ICMPv6. En él, los propios encaminadores de la red informan en todo momento de los parámetros de la red y enrutado disponible, mediante la llamada autoconfiguración de direcciones sin estados (SLAAC).

- Seguridad "de serie"

Los protocolos de encriptación y autenticación IPsec, opcionales en IPv4, están ahora implementados obligatoriamente.

- Enrutamiento más ágil

Las cabeceras de los paquetes IPv6 están rediseñadas para acelerar el procesamiento en los enrutadores. Esto se consigue aún cuando el tamaño de las cabeceras sea que las de IPv4, mediante un diseño más eficiente:


  • Los campos que se usan raramente se mueven a extensiones opcionales de la cabecera.
  • No se admite la fragmentación de paquetes en ruta. 
  • Los paquetes sólo se pueden fragmentar de extremo a extremo, usando una técnica de descubrimiento del tamaño máximo del camino (PMTU discovery).
  • Se elimina la redundancia en el control de errores (checksum). La integridad es competencia de las otras capas de red (enlace y/o transporte). Es innecesario que la capa IP tenga que calcular también el checksum.
  • El concepto de TTL (tiempo de vida) se rediseña a uno más lógico de límite de saltos (hop limit).
  • Se incorpora el concepto de jumbogramas (paquetes de hasta 4 gigabytes de tamaño) para aplicaciones específicas.

viernes, 20 de enero de 2017

TCP/IP (11): Agotamiento de direcciones IP


Las organizaciones que asignan las direcciones IP.
A pesar de lo flexible y adaptable que se ha mostrado la especificación IP a lo largo de los años, existe un aspecto que los diseñadores originales no fueron capaces de prever: el extraordinario crecimiento que ha sufrido Internet en el número de nodos conectados.
Cuando se diseñó el estándar TCP/IP, la informática estaba dominada por mainframes y casi no existían los ordenadores personales. El espacio de direcciones se diseñó para números del orden de cientos de redes con miles de nodos. Con la invasión posterior de los ordenadores personales, los móviles inteligentes y todo tipo de dispositivos, se ha creado una demanda de direcciones del orden de miles de redes con millones de nodos.
Aparte del problema que acarrea el crecimiento de las tablas de rutado de las pasarelas, provocando un esfuerzo de procesamiento adicional, el principal escollo es el agotamiento del espacio de direcciones. El esquema original de direcciones no puede incorporar el número de redes que actualmente hay en funcionamiento.
Por tanto, dentro del ámbito del protocolo IPv4 (el más usado) ha sido necesario crear nuevos mecanismos de rutado que permitan compartir direcciones de red entre varias redes físicas. Concretamente, la mayor escasez de direcciones está en las redes medianas de tipo B, las cuales han ido adoptando direcciones tipo C o A a base de compartir el espacio de tipo B con otras redes parecidas. 
Por otra parte, existe una nueva forma de direccionamiento propio de la versión IPv6 que termina con esas limitaciones. Sin embargo, la compatibilidad con este protocolo se ha retrasado mucho. Incluso bastante entrado el siglo XXI todavía el uso de direcciones IPv6 sigue sin estar completamente implantado. Las razones de este retraso serían motivo de otro artículo.
El fundamento de la reorganización de direcciones IPv4 es el principio que establece que cada red tiene libertad de modificar las direcciones y rutas, siempre que dichas modificaciones permanezcan ocultas para las demás localidades. Esto ha dado lugar a una serie de técnicas de rutado independientes entre sí, que dan solución a la reutilización de direcciones de red. 
TÉCNICAS PARA MINIMIZAR LAS DIRECCIONES DE RED
Traducción de direcciones (NAT)


La técnica denominada traducción de direcciones o NAT (Network Address Translation) es la que nos permite, por ejemplo, conectar muchos dispositivos en casa, pero contratando sólo una dirección IP con el proveedor de Internet. También se usa en redes corporativas de tamaño medio.

La forma en que esta técnica ahorra direcciones IP es parecida a la de una centralita de teléfonos, donde un mismo número externo da acceso a muchas extensiones internas.

El funcionamiento de NAT recuerda al de las centralitas telefónicas.
En una red de este tipo, los nodos dentro de la red tienen asignadas direcciones IP privadas, que están en unos rangos que por convención no son enrutables en la red de redes. Estas direcciones son:

- Todas las que empiezan por 10 (clase A).
- De 172.16 a 172.31 y 169.254 (clase B).
- Todas las que empiezan por 192.168 (clase C).

Cuando un paquete sale de la red, el router sustituye la dirección IP privada por otra externa, de manera que el paquete puede seguir su camino por Internet.

Pero surge un problema. Los paquetes que salen tienen vía libre, pero ¿y los que vienen de vuelta? Si muchas direcciones privadas usan la misma IP pública ¿cómo sabe el router colocar de nuevo la dirección correcta? Para ello necesita mantener una tabla donde lleva la cuenta de las conexiones y sus destinatarios, igual que haría una eficiente operadora en la centralita de teléfonos.

En routers baratos es común que el tamaño de la tabla de NAT sea pequeño, alguna vez pasará que se agote y tengamos que apagar y encender el router. Ya sabéis, la solución a todos los problemas.

Una limitación importante de la NAT es que sólo funciona con transparencia cuando las conexiones se originan en el interior. Si un nodo de Internet intenta abrir conexión con un nodo interno, no va a poder porque su dirección es privada. La solución es abrir un puerto del router, asignando que todo el tráfico que venga por ese puerto vaya a un nodo específico. En las redes domésticas es común tener que abrir puertos para los juegos en red, incluso tener que configurarlos manualmente.

Pasarelas transparentes
Esta solución se basa en ahorrar direcciones tipo B a base de integrar redes medianas en el espacio de direcciones de otras redes tipo A.
Se trata de una multiplexación de direcciones a través de nodos dedicados que despachan a toda una red local a partir de una red ámplia tipo A. La pasarela transparente se encarga de que los nodos de la red local puedan comunicarse con la WAN como si realmente estuvieran conectados a ella. De esta manera, la LAN funciona integrada en la red ámplia sin ocupar una dirección de red propia.
La pasarela se llama transparente porque ni los nodos de la LAN ni de la WAN se dan cuenta de su existencia. Estas pasarelas no ofrecen todos los servicios convencionales y, por ejemplo, no responden a las peticiones de eco ping.
Proxy ARP
El proxy ARP (también llamado ARP sustituto, ARP promiscuo y ARP hack) es una forma de que varias redes físicas medianas compartan la misma dirección de red. Además de ésta, tiene utilidad en otras situaciones.
Por ejemplo, es muy común que un determinado entorno físico se subdivida en subredes sólo por conveniencia administrativa, sin que existan verdaderas separaciones físicas (p.e. cuando se usan bridges en vez de gateways) quedando la red en una estructura transparente.También puede pasar que los nodos no tengan capacidad para mantener sus tablas de rutas, o para responder adecuadamente a las redirecciones, o no soporten un sistema de subredes. En todos estos casos, se deben enviar los datagramas como si todo fuese una misma red.La forma de gestionar estas subredes "virtuales" es precisamente desmontando el sistema de ruteo de la red de redes. Los nodos no harán distinción alguna en las direcciones; todas serán consideradas como accesibles directamente.
Esto supone un problema: si se está considerando que cualquier dirección es accesible directamente en la red, ¿cómo comunicarse con las redes que están fuera de ésta? ¿Cómo diferenciar unas direcciones de otras? Para solucionar éste problema, las pasarelas deben soportar una versión del protocolo ARP llamada proxy ARP.
El proxy ARP se basa en un "truco" consistente en engañar a los nodos, haciéndoles creer que se trata de una sóla red , mientras que las pasarelas sí conocen que la red está estructurada en redes físicas. Esto se consigue proporcionando una máscara ficticia a los nodos, y otra real a las pasarelas. Así, los datagramas dirigidos al exterior serán manejados correctamente por las pasarelas, mientras que los internos serán enviados directamente.
Para usar el proxy ARP debe tenerse en cuenta dos precauciones:
* Se debe desactivar los mensajes ICMP de petición de máscara. La existencia de dos máscaras distintas crearía confusión, pues ni los nodos ni las pasarelas deben conocer otra máscara además de la suya.
* Los nodos que tengan más de una interfaz (p.e. con otra red aparte) deben conocer la máscara real, pues tienen que saber qué interfaz usar en cada caso.
Por ejemplo, el ordenador A (128.6.4.2) quiere comunicarse con el B (128.6.3.12), pero no sabe que éste se encuentra en otra red, pues le engaña la máscara ficticia (255.255.0.0). Por tanto, en vez de buscar en la tabla de rutas la pasarela adecuado, envía un mensaje ARP: "¿podría el nodo 128.6.3.12 enviarme su dirección Ethernet?". Por supuesto, ese nodo nunca lo oirá, pues está en otra red. El único que lo sabe es la pasarela, que, al oír la pregunta, contesta haciéndose pasar por el destinatario: "Soy yo; mi dirección es 2:E0:0:CD:1". Esa dirección es en realidad la del propio gateway, que se encargará luego de reenviar el datagrama a su verdadero destino. Mientras tanto, el "engañado" nodo A dejará registrada en su tabla ARP la dirección de la pasarela como si fuese la del nodo B. A partir de ahora todo lo que mande allí pasará por la pasarela.
El efecto es el mismo que si el nodo ampliase su tabla de rutas. El control de rutado ha pasado a nivel de la tabla ARP. Los nodos que funcionan así se ven descargados del trabajo de mantener una tabla de rutas.
Los inconvenientes del Proxy ARP son principalmente dos:
* Sólo se puede usar en instalaciones que usan ARP para la resolución de direcciones (normalmente las Ethernet).
* Tiene un agujero de seguridad, pues permite la técnica llamada spoofing, consistente en que un nodo indica ser otro para interceptar datagramas. El software de monitorización contra esta técnica no puede coexistir con el Proxy ARP, pues generaría alertas con gran frecuencia.
Direccionamiento de subred (subnetting)
Jon Postel, uno de los creadores de las subredes IP.
Esta técnica es una de las más extendidas, y se ha incluido como parte de los estándares TCP/IP.

Consiste en compartir una dirección de red tipo B entre varias redes, subdividiendo internamente el espacio como si fueran de tipo C. Esto se consigue subdividiendo la parte hostid de las direcciones tipo B de tal manera que parte de él identifique a las subredes.

Este cambio sólo afecta ligeramente a la interpretación de las direcciones IP; es por ello que se ha extendido como un estándar.
Este tipo de direccionamiento jerárquico lleva también a un rutado jerárquico. El resto de Internet ve todo el conjunto como una sola red tipo B, sin fijarse en la subdivisión del campo hostid. De esta manera se cumple la norma de que el rutado desde el exterior no se debe ver afectado. Todo el tráfico externo se concentra en uno varios puntos desde donde se despacha según el campo de subred (segundo nivel de jerarquía).
Una gran ventaja de este tipo de direccionamiento es que la ruta no necesita saber muchos detalles sobre los destinos distantes. Un inconveniente es lo difícil que resulta cambiar a posteriori una jerarquía de este tipo ya establecida.
El algoritmo de rutado se ve modificado por el uso de direcciones de subred. El uso del rutado de subred ha de cumplir dos reglas:
1) Se debe usar el rutado de subred entre M y N, a no ser que exista un solo camino más corto entre M y cualquier red física que sea subred de N.
2) Todas las subredes bajo una misma dirección de red deben ser contiguas (estar conectadas físicamente entre ellas), las máscaras deben ser uniformes en todas ellas y todas las máquinas deben usar el rutado de subred.

En el algortimo estándar de rutado, se conoce siempre el formato de las direcciones, pues los primeros tres bits de cada dirección codifican el tipo de red (A, B, C o D). En el rutado de subred esto no es posible, por lo que es necesaria la presencia de un campo en las tablas de rutado con la máscara de subred. Por tanto, las tablas de rutas deben tener al menos tres campos: máscara, dirección de red y dirección de salto siguiente.
Direccionamiento de superred
Una técnica totalmente diferente para evitar el agotamiento del espacio de direcciones es la llamada CIDR (Classless Inter-Domain Routing, rutado sin tipo entre dominios), donde se agrupan un conjunto de redes de tipo C contiguas en un registro de dos campos compuesto por la dirección más pequeña del grupo y un conteo del número de direcciones que lo componen.

P. ej. el registro {192.5.48.0, 3} identifica el grupo de direcciones 192.5.48.0, 192.5.49.0 y 192.5.50.0.
En la práctica, este sistema se modifica un poco, requiriendo que cada grupo de direcciones sea potencia de dos y usando una máscara de bits para identificar el tamaño del grupo, en lugar del conteo.
P. ej. el rango de direcciones entre 234.170.168.0 y 234.170.175.255 genera la máscara de bits 255.255.248.0, poniendo a 1 los bits que coinciden en todas las direcciones del grupo. Las pasarelas en las redes que usen este sistema han de tener un software de rutado especial para CIDR.

martes, 10 de enero de 2017

TCP/IP (10): Direccionamiento IP



Las direcciones IP más comunes son las que se establecen en la versión 4 del protocolo (IPv4). En la versión 6 (IPv6) se introdujo un sistema completamente nuevo para evitar el agotamiento de las direcciones, que veremos en otro artículo. Ambos direccionamientos coexisten actualmente, no sin ciertas dificultades.

Clases de direccionamiento IPv4

Teniendo en cuenta que en Internet coexisten unas pocas redes "gigantescas" con una mayor cantidad de redes "medianas" y multitud de "mini-redes" (una gran variedad de tamaños), no puede existir una forma general de asignar las direcciones a redes tan dispares. Por ello, en los inicios de la red se crearon tres clases principales de direccionamiento.
Hay que diferenciar dentro de la dirección IP dos partes llamadas netid (identificador de red) y hostid (identificador de nodo). Según la parte que se asigne a estos campos, se han establecido tres clases de redes:
Clase A: Son las que tienen gran cantidad de nodos (a partir de 216). Se les asigna siete bits (entre el 1 y el 126) para el netid, y 24 para direccionar cada uno de sus nodos. El primer bit queda fuera, y siempre se deja a cero. Existe la posibilidad, por tanto, de que existan 126 redes de este tipo con 16,4 millones de nodos cada una.
Clase B: Son las de tamaño mediano. Tienen el netid de 14 bits y el hostid de 16 bits. Los dos primeros bits no se usan, y son siempre 10. Por tanto, serán direcciones entre 128.1.x.x al 191.254.x.x Esto da un margen de 16.002 redes, con hasta 64.516 nodos cada una.
Clase C: Los tres primeros bits son 110, y luego van el netid de 21 bits y el hostid de 8 bits. Esto forma direcciones en el rango de 192.1.1.x a 223.254.254.x; es decir, pueden existir unos dos millones de redes con 254 nodos cada una. Estas son las redes de tamaño pequeño, que más abundan.
Existe una clase especial (D) para multidifusión, cuyas direcciones empiezan por 1110; y también la clase E (con los bits 11110) se reservó inicialmente para futuros usos.
Como se puede observar, la forma de asignar las direcciones se hizo de forma que cualquier equipo de la red puede distinguir la clase de una dirección simplemente inspeccionando los primeros bits: 0 (clase A), 10 (clase B), 110 (clase C), 1110 (clase D) y 11110 (clase E).
Esto hace posible detectar rápidamente la clase de red a la que pertenece cada dirección, y se facilita la extracción de los campos netid y hostid. Esta característica es fundamental para lograr un funcionamiento lo más rápido posible de las pasarelas que tienen que encaminar los paquetes.
Este sistema de clases es evidentemente no escalable, y pronto fue patente que no se iba a poder mantener. Por ello en 1993 se desarrolló el Classless Inter-Domain Routing (CIDR), donde las máscaras de subred permiten una mayor granularidad.
Otro problema de escalabilidad se deriva de que,aunque siempre se piense en una red (network) como un conjunto de ordenadores alrededor de un área de no más de varios kilómetros, IP considera una red a cualquier medio de conexión entre ordenadores. Así pues, p.e., una línea punto a punto de larga distancia (de satétite, línea serie, etc.) es considerada como si fuese una red con sólo dos ordenadores (las dos pasarelas de los extremos). Esta red tendrá su propia dirección de dominio (por supuesto de clase C).
Subredes
Las redes muy grandes suelen subdividirse en subredes (subnets). Usan los octetos que tienen asignados para uso interno para ello, siendo esto irrelevante fuera de la propia red.
Por ejemplo, una red de clase B, que usa los dos primeros octetos para identificarse, puede organizarse de manera que use el tercero para localizar en qué Ethernet está cada nodo, constituyendo hasta 254 subredes de 254 nodos cada una. Sin embargo, para los sistemas fuera de la red, esta subdivisión interna no tiene importancia, no tienen necesidad de estar al tanto de ella.
Dentro de una red, las pasarelas tienen entradas para cada una de sus subredes, mientras que las pasarelas fuera de ella sólo tienen una entrada para la red completa. Se puede decir que una red de clase B puede tratar a sus subredes como si fueran de clase C. Igualmente, una red de clase A puede subdividirse internamente en varias de clase B, que a su vez se organizan en otras de clase C. Cada una de estas capas no se ocupa de las inferiores, repartiendo así el trabajo.
La máscara de subred
Una vez se ha decidido la subdivisión de la red, se debe establecer la subdivisión de las direcciones, es decir, qué parte de la dirección IP se usará para la red y las subredes, y qué otra parte se reservará para identificar los nodos individuales.
La máscara de subred es un número que se especifica en cada ordenador como parte de la configuración de su software de red, consistiendo en una máscara binaria de 32 bits, donde se rellena con unos la parte usada por los números de red y subred, y con ceros la parte establecida para las direcciones individuales.
Lo usual es usar los tres primeros octetos para los números de red, como se explicó; por tanto, la máscara más común es 255.255.255.0. No siempre se tendrá que hacer así, dependiendo de las características de la red. En una red donde existan multitud de pequeñas redes, puede necesitarse usar más direcciones de subredes. P.e., podemos usar el primer bit del último octeto para completar las direcciones de red; en ese caso la máscara pasaría a ser 255.255.255.128.
Los números 0 y 255
Como ya se ha dicho, los números 0 y 255 no se usan de manera normal en las direcciones IP.
El 0 se usa para los nodos que no conocen su propia dirección. Sustituyen por ceros las partes de la dirección IP que no conocen. Por ejemplo, el 0.0.0.23 es una máquina que sabe es el nodo 23, pero no sabe de qué red. También se usa el 0 para direccionar de forma generalizada a toda una red, dejando a cero todos los bits del campo hostid. Es decir, se puede decir que los ceros significan esto, en el sentido de "esta red o este nodo".
El 255 es el caso contrario: el nodo no sabe a quién mandar un determinado mensaje. Son mensajes "generales", para todo el que quiera leerlos. Esta técnica se llama difusión (broadcast). Consiste en sustituir uno o varios octetos de la dirección IP por un 255. Por ejemplo, un mensaje con dirección 128.6.4.255 podrá ser leido por cualquier nodo de la subred 128.6.4.x. Un caso típico es cuando una máquina no sabe cuál es su servidor de nombres más cercano. Cuando quiera solicitar una dirección, enviará un mensaje de difusión, para que le conteste el servidor más conveniente.
Por regla general, como lógico mecanismo de seguridad, se limita la difusión al menor número posible de nodos. El mensaje 255.255.255.255 potencialmente podría ser leído por cualquier máquina conectada a Internet; sin embargo, esto no es así por razones obvias. Un mensaje de difusión con semejante dirección sólo tiene valor dentro de su propia red o subred. Esto se llama difusión limitada o de red local. Sin embargo, sí es posible desde una red enviar un paquete de difusión dirigido a todos los nodos de otra red, en lo que se da en llamar difusión dirigida. Es común que la difusión dirigida se use como forma de ataque, así que muchas redes la prohiben por defecto. 
Aunque el sistema de direccionamiento a nivel IP prevé el uso de la difusión, no todas las tecnologías de red lo permiten. Así pues, no está garantizada, y siempre depende de la red física subyacente.
El número 127
El 127 es otro número reservado que no debe aparecer en el primer octeto de las direcciones IP normales. Se utiliza cuando una máquina se direcciona a sí misma, lo que se llama loopback . Concretamente, la dirección 127.0.0.1 u otra parecida es usada para probar el software de red sobre la misma máquina, sin que los paquetes realmente salgan de ella. Tradicionalmente suele asociarse al nombre "localhost".
Resumen de las reglas especiales de direccionamiento:
  • todo ceros: Este nodo
  • todo ceros | hostid: Un nodo de esta red
  • todo unos: Difusión limitada (red local)
  • netid | todo unosDifusión dirigida a otra red
  • 127 | cualquier número: Loopback