Sé que si tengo una red, 83.23.159.0/24
entonces tengo 254 direcciones IP de host utilizables porque:
83.23.159.0 (in binary: host portion all zeros) is the subnet address
83.23.159.1-254 are host addresses
83.23.159.255 (in binary: host portion all ones) is the broadcast address
Entiendo el uso de una dirección de difusión, pero no entiendo para qué se utiliza la dirección de subred. No puedo ver ninguna razón por la cual la dirección de destino de un paquete IP se establecería en la dirección de subred, entonces, ¿por qué la subred misma necesita una dirección si nunca va a ser el punto final para un flujo de IP de AN? Para mí, parece un desperdicio no permitir que esta dirección se use como dirección de host.
Para resumir, mis preguntas son:
- ¿Se ha configurado alguna vez el destino de un paquete IP en la dirección IP de subred?
- En caso afirmativo, ¿en qué casos y por qué?
- Si no, ¿por qué no liberar esa dirección para que la use cualquier host?
ifconfig
no se queja cuando configura la dirección de host de una red 24 a 0 o 255. Simplemente intente usarla.Respuestas:
Sí. Es una IP válida, por lo que se puede usar.
Es simplemente una de las 255 IP utilizables en un / 24
Si tiene hardware antiguo , entonces debe verificar si usa la primera o la última dirección como dirección de red. (.0 o .255 para redes con máscara FF.FF.FF.00)
Esto hace que sea un buen hábito omitir esa IP. Y los hábitos aprendidos hace mucho tiempo son difíciles de ignorar.
Y las personas que no conocen el fondo no lo usan "porque otros tampoco lo usan, por lo que debe estar mal usarlo" o porque no se dan cuenta de que "0" puede ser un primer número.
[Editar] Grezzo acaba de probarlo en Windows XP, donde la GUI de la red de Windows 'útilmente' impidió esta configuración. Windows 7 tiene el mismo comportamiento. Luego lo probé en un host que no es de Windows donde simplemente funciona. Si utiliza Windows, es posible que deba configurar su red manualmente a través de IPconfig para configurarla en todos los ceros.
[Editar 2]
Cuanto más trabajo con esto, más me confundo.
Rfc4632: el enrutamiento entre dominios sin clase no parece prohibirlo, pero tampoco lo permite explícitamente.
Esta publicación de ServerFault menciona: "Por razones históricas, muchos sistemas operativos tratan la primera dirección como una transmisión. Por ejemplo, hacer ping a xxx0 desde OS X, Linux y Solaris en mi red local (/ 24) obtiene respuestas. Windows no le permite hacer ping. la primera dirección de forma predeterminada, pero es posible que pueda habilitarla usando el método SetIPUseZeroBroadcast WMI. Me pregunto si podría salirse con la suya usando .0 como una dirección de host en una red de todo Windows ". .
Es la misma pregunta, pero no una respuesta.
La dirección de red también se usa en las tablas de enrutamiento. Pero no veo por qué no funcionaría debido a eso. La misma notación en las tablas de enrutamiento se enrutaría a la red correcta. Una vez en la red correcta, llegaría a una PC con IP 0.
(Todo esto para un 192.168.1 / 24.
Si utilizó 192.168.0 / 23, entonces 192.168.1.0 sería un valor válido y seguro en el medio del rango)
[Editar 3]
Un enlace más a la misma pregunta. Parece algo popular en el intercambio de pila:
/superuser/379451/why-can-a-network-address-not-be-a-valid-host-address
Y un pensamiento:
Destination_IP es probablemente Y editado con el mástil de red (una operación rápida en hardware) antes de ser comparado con las entradas en las tablas de enrutamiento. Pero:
(Una IP semialeatoria) 192.168.0.42 Y 255.255.255.0 producirían 192.168.0.0
Pero 192.168.0.0 Y 255.255.255.0 también producirían 192.168.0.0
[Edición 4: mucho después de que se escribió esta respuesta, es posible que deba volver a escribir toda la publicación debido a esta nueva información ]
RFC923 establece en la página 3 que:
Citando a @ylearn en nuestro sitio de ingeniería de redes
Creo que la primera documentación de eso proviene de RFC950 que hace referencia a RFC943 (que obsoleto RFC923 arriba pero usa el mismo idioma para direcciones especiales):
fuente
Una dirección con una porción de host totalmente cero se refiere a la red misma, en lugar de a cualquier host en particular.
Históricamente, esta dirección de host cero ha servido como una dirección de transmisión alternativa, y los dispositivos aún responden de esa manera.
Entonces, tengo que estar en desacuerdo con algunas otras respuestas: no, cero no es una dirección de host perfectamente utilizable. Si necesita más de 254 direcciones, debe crear una subred más grande.
Mira, mi enrutador Linksys, cuya dirección
.1
responde a pings de.0
. (La máscara de red es255.255.255.0
, por lo que el último octeto corresponde al número de host).Si asignara la
.0
dirección a algún host, no podría hacer ping sin que el enrutador interviniera con sus respuestas también. Y como puede ver, algunas herramientas como la versión de ese enrutador seping
tratan0
como una transmisión.Puede doblar las reglas, si está dispuesto a parchear todas las pilas de protocolos y otro software que se ve afectado por dicha flexión. De lo contrario, se adhieren a las reglas.
Caso en punto.
Trabajé en una compañía que diseñó un nodo de red construido en un chasis de 14 ranuras, ejecutando numerosas imágenes independientes del sistema operativo en varios tipos de tarjetas, todas comunicadas a través de una placa posterior. Hubo una configuración de red sobre el plano posterior con una convención que
127.X.0.Y
es la dirección IP interna del nodo Y en la ranura X, todos numerados del 1.Básicamente, subdividimos la dirección de bucle invertido para nuestros propios fines. Para que funcione, tuvimos que parchear el kernel de Linux aquí y allá, y IIRC, un poco de espacio de usuario.
Dado que esa red solo se usó dentro de la caja, y la mayoría de los programas que requieren loopback usan la
127.0.*
red (y de hecho la dirección específica127.0.0.1
) que continuó funcionando normalmente, todo fue genial.fuente
en realidad depende de la máscara de red, por ejemplo, para la red 83.23.159.0/23, 83.23.159.0 es una dirección IP perfectamente utilizable
fuente
Parece que hay una pequeña confusión aquí con las redes básicas.
El 'hardware antiguo' al que se hace referencia en una de las respuestas no utilizaría la subred IP cero: el uso de la dirección IP xxx0 con una red configurada para un CIDR / 24 o una máscara de subred 255.255.255.0 es un problema completamente diferente.
IP subred cero
Direcciones IP de host utilizables en una subred
Tanto la dirección de red como la dirección de difusión están reservadas y no pueden (según los estándares de red actuales y anteriores) asignarse a un dispositivo. Usar xxx0 para una dirección de host en un sistema / 24 es incorrecto. Incluso si Linux te permite usarlo, no significa que sea correcto, solo significa que Linux piensa que sabes lo que estás haciendo.
Si su sistema le permite asignar xxx0 como una dirección IP4 a un host y parece estar funcionando, es probable que ese host en particular esté recibiendo TODO el tráfico dirigido a CUALQUIER dispositivo en esa red, por lo que su red probablemente no funcione de manera óptima.
fuente
RFC 1122 ("Requisitos para hosts de Internet - Capas de comunicación") lo prohíbe:
fuente
En realidad, la respuesta es la base de las subredes. La IP "todos ceros" de su subred combinada con la identificación de la red se usa para calcular a dónde debe enviarse el paquete.
En su ejemplo, tiene una subred de 255.255.255.0. Cualquier dispositivo que conozca el protocolo TCP / IP utilizará la máscara de red combinada con la dirección IP para calcular si el paquete está destinado a la red local (realizando una operación AND lógica) o si debe enviarse a través de la puerta de enlace / enrutador.
Así que supongo que la razón por la que no se puede usar IP es porque ya se usa para "definir" los límites de la red junto con la máscara de red por diseño.
fuente
Se solicitó que volviera a publicar mi respuesta de NetworkEngineering , por lo que lo haré con alguna modificación para este sitio.
En RFC919 , hace referencia a la aceptación general de la dirección de red:
Esto proporciona una convención que debería aclarar nuestra comprensión si alguien mencionara "10.1.2.0" como la red y no como un host en la red.
A partir de ahí, el uso de "0" en una dirección IP se definió en RFC923 y se transfirió en RFC sucesivas:
Este ejemplo proporciona un host específico en la red actual (0.0.0.37) usando 0 en las porciones de red de la dirección, pero en realidad no aclara el caso opuesto (0 en la porción de host de la dirección). Sin embargo, como definió "0" como "esto".
En RFC1060, la dirección "0.0.0.0" estaba claramente documentada como "este host en esta red":
Dado que todos los ceros para la parte del host de la dirección significaban "este host", lógicamente se deduce que no se puede utilizar como una dirección de host.
Volviendo a responder directamente a sus preguntas:
De acuerdo con lo que encuentro en los RFC, esto no debe usarse. Admito que no está tan claramente especificado como me gustaría, pero eso es muy común en muchos estándares. Cuando los estándares son un poco menos firmes en un punto, la industria parece "conformarse" con una interpretación generalmente aceptada.
Además, según el contenido del software de RFC, se puede escribir para suponer que esta dirección se utiliza para direccionar la red y no un host en particular. O incluso más literalmente como una especie de "loopback" (es decir, este host en la red especificada).
Entonces, ¿por qué algunos sistemas operativos permiten claramente su uso? Me imagino que muchas cosas se reducen a tiempo / recursos del desarrollador o nadie realmente pensó en agregar la verificación de validez. La lógica debe ser un poco más complicada que "si termina en 0", ya que una subred más grande (a / 23 o más grande) contendrá una dirección IP válida de .255 y .0 (es decir, 10.1.2.0/23 contiene ambas IP válidas dirección de 10.1.2.255 y 10.1.3.0). Aunque algunas organizaciones también evitan el uso de esas direcciones válidas en subredes más grandes para evitar problemas extraños con el software que no admite correctamente las subredes modernas.
En cuanto a por qué no liberar esa dirección IP, simplemente se reduce a costo / beneficio. Haría falta mucho tiempo y esfuerzo realizar este cambio para recuperar una dirección IP por subred y, en cuántos casos cuando necesite direcciones IP adicionales, ¿será suficiente una sola dirección? Es mucho más fácil agregar una segunda subred o ampliar la subred actual, lo que potencialmente le brinda muchas direcciones para usar en lugar de una sola, sin realizar cambios importantes en ningún software / hardware en su lugar.
fuente