¿Por qué una dirección de red no puede ser una dirección de host válida?

18

Entonces ... He estudiado para CCNA y tal y he estado trabajando con redes IP al menos durante los últimos 8 años más o menos. Siempre he visto y me han dicho que la dirección de red para una subred no es una dirección de host válida. Ahora primero comenzaré diciendo que sé que esto es cierto. Mi pregunta es más ... ¿hay alguna razón técnica por la que no se pueda usar o simplemente se acordó arbitrariamente cuando se diseñó la especificación? Entiendo por qué no se puede usar una dirección de difusión (porque se usa REALMENTE). La cuestión es que cuando veo que se usa una dirección de red, normalmente solo se utiliza en el enrutamiento, que utiliza específicamente las direcciones de RED. Siendo este el caso, (las direcciones de red se usan solo cuando espera una dirección de red) ¿hay alguna razón técnica por la que no podrían tener la dirección de red como una dirección de host válida real?

Duendecillo
fuente

Respuestas:

16

Según tengo entendido, la "dirección de red" como una dirección especial es un artefacto de las redes IP con clase del pasado. Hoy, utilizamos el enrutamiento entre dominios sin clase ( CIDR ) en Internet, que no tiene el concepto de una dirección de red (si observa el RFC 4632 vinculado anteriormente, verá que enumera 256 posibles direcciones IP por herencia) Bloque "C", por ejemplo, no hay direcciones reservadas para la red o la dirección de difusión (aunque las transmisiones se definen como esenciales en otros RFC).

Dicho esto, aún no debe asignar una dirección de red a ningún host específico en una red: la dirección de red es esencial para el enrutamiento. Este concepto se usa ampliamente en RFC ( RFC 1812 ). Solo mire las tablas de enrutamiento ( routecomando), verá cómo se usa la dirección de su red local para separar el tráfico de su red local de lo que debe pasar por el enrutador. ¿Qué pasa si esa dirección de red local fue asignada a algún host?

Peor aún: es mejor no asignar direcciones IP que terminen en cero, incluso si esta dirección no es una dirección de red. Por ejemplo, si su red es 10.10.0.0/255.255.0.0, la dirección IP 10.10.5.0 no es su dirección de red, pero será mejor que no asigne dicha IP aunque sea completamente válida incluso en redes IP con clase. Algunas pilas de software / IP heredadas pueden tener problemas con él.

ACTUALIZACIÓN: por duende

De acuerdo con RFC 1812 (Sección 5.3.5.2), lo que llamamos una dirección de red se usó originalmente para "transmisiones dirigidas" que enviarían un paquete de difusión a la red deseada. Esta función quedó obsoleta debido a los ataques SMURF. La función se cambió oficialmente en RFC 2644 . Posteriormente, otras implementaciones deberían descartar silenciosamente los paquetes con una dirección de origen como se describe (la dirección de red). Si bien esto es lo que debería suceder, tengo curiosidad sobre cuántas implementaciones realmente lo hacen.

Esto se agrega aún más en RFC 3021 cuando se abordó la subred / 31.

haimg
fuente
55
@grawity: no siempre. Solo en una red mayor que / 31. Por ejemplo, P2P puede tener dos direcciones y ninguna dirección de transmisión.
Haimg
3
Hmmm ... me gusta la primera parte de la respuesta ... que es un artefacto de redes IP con clase. Mi problema nuevamente con la segunda parte es que las tablas de enrutamiento se usan específicamente para enrutar a una red. Según tengo entendido, la tabla de enrutamiento solo se observa para enrutar a una red en la que el receptor no está encendido (la IP de destino no forma parte de su subred / red). Siendo este el caso ... cuando se mira una tabla de enrutamiento, está claro que las direcciones en ella son direcciones de red y no direcciones de host, por lo tanto, separan esto de un paquete de host dest IP. En el tráfico real, nunca se utiliza una dirección IP de destino de una dirección de red.
Goblinlord
1
Entonces ... ¿hay alguna razón para reservarlo específicamente si estas 2 instancias ya están separadas (dirección de red en la tabla de enrutamiento e IP de destino al determinar si necesita ver una tabla de enrutamiento)?
Goblinlord
1
@Goblinlord: No hay razón oficial que pude encontrar (RFC recientes, etc.). Sin embargo, tanto software se construye asumiendo que la dirección de red es "especial", que en la práctica es mejor que no la use como una dirección IP de host.
Haimg
1
Hay una entrada de configuración de Cisco que permite que la dirección de red también sea un host, que ha existido durante al menos 10 años ... Nunca lo usé, ni siquiera lo probé, y debido a posibles problemas de pila como se mencionó, específicamente no No permití que los hosts terminaran en .0 o .255 en las redes de las que era responsable, aunque no había encontrado otras redes o direcciones de transmisión en uso por menos de / 24s, en @Home, y mientras CoreOS quería emití el medio .0 y .255 como hosts en los / 23's y / 21s de sanbrunocable, los reservé manualmente.
Nevin Williams
5

Entonces la respuesta práctica es: realmente depende. Depende de:

  • La dirección exacta y sus significados en muchos RFC
  • La versión y revisión de su sistema operativo.
  • ... Y el de su enrutador, y cualquier otro enrutador ascendente
  • ... Y la inteligencia y la sofisticación de todos los administradores de red de esos enrutadores ...

No he tenido ningún problema para acceder a ningún sitio al probar esto; parece que, en última instancia, todo depende de los caprichos de los administradores de red. Por lo general, no hay forma de que un dispositivo ascendente sepa si una dirección es parte de una red o dirección de transmisión, o no, ya que es simplemente una dirección en un bloque más grande para ellos ... Por lo tanto, ningún ISP le impedirá asignar y utilizando su dirección de red, a menos que se la hayan asignado y su administrador de red la haya bloqueado explícitamente.

Estoy seguro de que hay analistas de seguridad y piratas informáticos que tienen estadísticas increíblemente detalladas sobre cuántas variantes de implementaciones de pila TCP-IP existen y qué hacen y qué no permiten o permiten y exactamente cómo y dónde pierden su marca. .

De hecho, estoy navegando y publicando esto desde mi dirección de red.

No me llames un mal internauta a menos que tengas una mejor solución para arreglar este castillo de naipes: la realidad es que si es posible, sucederá. La realidad es que nadie realmente lo suficientemente inteligente se sentó y pensó todo esto en todas sus posibles iteraciones para llegar a un diseño completamente infalible, antes de que la gente comenzara a usarlo, como con la mayoría de las cosas en la vida. ¿El resultado? Estándares donde muchas cosas no cuadran y / o se pierden en la traducción.

Bienvenido al mundo real. No dejes que eso te disuada de perseguir los ideales óptimos siempre evasivos ... Simplemente no esperes el apoyo de los canales o foros "oficiales" a menos que estés dispuesto a ensuciarte las manos y dedicar tu tiempo y vida a ello, construyendo el consenso necesario, y navegar la política en torno a eso.

Entonces, creo lo que los otros carteles intentaban decir: si quieres hacer esta política oficial y usarla en producción, estás solo. (¿Pero no lo eres de todos modos?) Tal vez tengamos suerte y que una inteligencia de computadora nos diseñe un IPv8 que sea compatible con IPv4 e IPv6 y todas sus implementaciones rotas.

Dagelf
fuente
Por supuesto, cuando usa su dirección de red, el dispositivo al que está asignado puede recibir todo tipo de tráfico de transmisión, ya que algunas pilas de red lo tratan como una transmisión. Sin embargo, estos generalmente no interfieren mucho, ya que simplemente se dejan caer en silencio. Tengo curiosidad por saber cuántas vulnerabilidades de red dependen de las peculiaridades que rodean esto sin embargo ...
Dagelf
2

Soy nuevo en la red pero también daré mis 2 centavos.

Si tengo una subred / 28 de xxx0 - xxx15 De acuerdo con las reglas predefinidas, tendríamos 14 hosts utilizables y 2 restantes. los restantes son para red y difusión.

Permite, en lugar de seguir la regla anterior, usar los 16 hosts. Entonces, en ese caso, todo estaría bien, sin problemas. Pero si se necesitara la comunicación fuera de la red, entonces no sería posible debido a la falta de recursos para enviar o recibir la información.

No soy bueno para explicar pero para decirlo de otra manera.

Si viviera en una casa en una calle y la calle contuviera 14 casas. Un carril de entrada y salida para acceder a la carretera principal.

Mi dirección de correo oscilaría entre 1-14 Personal Street, Off Network Road.

Eso no sería problema para el cartero. Ahora supongamos que los desarrolladores se volvieron codiciosos y agregaron 2 casas más y se deshicieron de las calles.

Entonces mi nueva dirección de correo iría de 1-16 a Personal Street

En este caso, el cartero estaría en problemas.

Esto es una suposición, avíseme si estoy hablando toro.

William
fuente
0

La dirección de red le permite crear tablas de ruta con una columna de destino de tamaño fijo (IPv4 de 4 bytes) y operaciones binarias de tamaño fijo para que el enrutamiento del host y el enrutamiento de la red sean realmente lo mismo.

Imagine una tabla de enrutamiento como esta: (esta PC tiene una conexión paralela con otra PC y una tarjeta de red)

Dest           Mask    Dev
192.168.0.123  /32     plip0   # This is a single host
192.168.0.0    /24     eth0    # This is a network

El AND entre la dirección IP y la máscara de red le proporciona exactamente lo que necesita, un número de 4 bytes que se puede comparar con cada línea sin más cálculos.

Por lo tanto, el número de host cero es especial en el sentido de que, después de la operación AND, su dirección representa naturalmente toda la red.

Si decidiera usar el número de red como número de host, se obtendría una tabla como esta:

Dest           Mask    Dev
192.168.0.0    /32     eth0    # This is the host (it's a redundant line)
192.168.0.0    /24     eth0    # This is the network

Esto parece legítimo, así que supongo que el concepto de dirección de red se usa por razones de enrutamiento y, por lo tanto, se decidió arbitrariamente marcarlo como una dirección especial y prohibir su uso como dirección de host.

Bueno ... en realidad no es tan simple. Decidí probarlo (!!!):

# route add -net 192.168.0.0/32 eth0
# ping 192.168.0.0
Do you want to ping broadcast? Then -b
# telnet 192.168.0.0
Trying 192.168.0.0...
telnet: connect to address 192.168.0.0: Network is unreachable

En la actualidad, los programas de red no me permiten usar un número de red como dirección normal.

David Costa
fuente
Teniendo en cuenta su primer ejemplo de tabla de enrutamiento, creo que es una forma realmente mala de hacer las cosas ... si tiene otros hosts en su subred .0.0, ¿cómo se comunican correctamente entre sí y con el host .0.123 sin establecer rutas estáticas en cada host? Eso realmente no parece ser la forma correcta de hacer las cosas.
Goblinlord
Es solo un ejemplo ficticio, nunca configuraría una tabla como esa :-) El host .123 está conectado con una conexión punto a punto, mientras que el resto es la red ethernet habitual. Si desea que otras máquinas accedan al host .123, debe realizar un trabajo adicional, pero no es imposible.
David Costa
0

Mientras buscaba la respuesta a esta pregunta, me encontré con este artículo de Cisco. La siguiente cita de ese artículo lo resume muy bien, creo.

[...] considere la dirección IP 172.16.1.10. Si calcula la dirección de subred correspondiente a esta dirección IP, la respuesta a la que llega es la subred 172.16.0.0 (subred cero). Tenga en cuenta que esta dirección de subred es idéntica a la dirección de red 172.16.0.0, que se dividió en subredes en primer lugar, por lo que cada vez que realiza una división en subredes, obtiene una red y una subred (subred cero) con direcciones indistinguibles. Esto fue anteriormente una fuente de gran confusión .

Evitar la confusión es una buena razón para mí.

Samuel Harmer
fuente
Sé que esta pregunta se planteó hace mucho tiempo, pero solo estaba revisando estas cosas. El artículo que cita está hablando de "subred cero" o la primera subred en una dirección de red. Esto es algo completamente diferente y en cualquier red moderna en la que he trabajado, cada conmutador tiene habilitada la función "ip subnet-zero". También menciona que actualmente está habilitado de forma predeterminada en todos sus conmutadores (a partir de la versión 12 que se lanzó alrededor de 2003).
Goblinlord
0

RFC 1122 ("Requisitos para hosts de Internet - Capas de comunicación") lo prohíbe:

No se permite que las direcciones IP tengan el valor 0 o -1 para ninguno de los campos <Número de host>, <Número de red> o <Número de subred>

Bryan
fuente
0

Una dirección de red no se considera una dirección de host, pero es solo un número. En áreas limitadas de direcciones, como las redes punto a punto, a menudo se usa una máscara / 30, pero aún utiliza las direcciones de host. Una práctica menor, pero logra el mismo principio es usar una máscara / 31 y usar un extremo como dirección de red y el otro como transmisión.

Ex.

Router(config)#int gi0/0
Router(config-if)#ip add 10.0.0.0 255.255.255.254
Router(config-if)#no shut


Router2(config)#int gi0/0
Router2(config-if)#ip add 10.0.0.1 255.255.255.254
Router2(config-if)#no shut


        .0        .1
[Router]-----------[Router2]
   network      broadcast
cmd
fuente