Cuando dos PC en la misma red desean comunicarse, ¿cómo descubren cuál es la dirección IP de las otras PC? ¿Es DNS interno o transmiten su dirección IP para que puedan ser descubiertos?

Hay varios métodos para lograr esto.


Una es que la computadora tenga un nombre bien conocido en Internet, registrado en el sistema DNS.

Entonces, por ejemplo, si su nombre de dominio fuera example.com , entonces la máquina puede llamarse mail.example.com o smtp.example.com para correo electrónico saliente, y pop3.example.com o imap4.example.com para correo electrónico entrante .

Este es, con mucho, el método más fácil.


Otro método es utilizar lo que se conoce como “DNS de horizonte dividido”.

Lo nombré y escribí el borrador de RFC para ello.

La idea básica es que las computadoras tienen nombres que les son asignados por sus dueños; por ejemplo ” Terry Lambert’s MacBook Air “. Cuando solicita una dirección DHCP, le da DNS al nombre; el DNS solo admite un conjunto de caracteres limitado.

Por lo tanto, solicita un arrendamiento de DHCP para Terry-Lamberts-MacBook-Air (DNS y DHCP ignoran las mayúsculas y minúsculas).

Hay un servidor DNS de almacenamiento en caché local en el enrutador, y obtiene actualizaciones con nombres locales cuando entrega contratos de arrendamiento.

Supongamos que la dirección IP de su enrutador es un número IPv4 que funciona como:

192.168.17.24

entonces el nombre de host de su enrutador termina siendo algo que se parece

c-192–168–17–24.hsd3.ca.comcast.net

Y cuando solicita el arrendamiento local, hace una entrada 10.1.1.1 con el nombre de su computadora en ese nombre como dominio, por ejemplo:

terry-lamberts-macbook-air.c-192–168–17–24.hsd3.ca.comcast.net

Usando el horizonte dividido, ese nombre es visible dentro de su red local, pero no fuera de su red local. Y su dominio de búsqueda predeterminado entregado por el servidor DHCP es:

c-192–168–17–24.hsd3.ca.comcast.net

Por lo tanto, cualquier computadora en el interior puede pedir Terry-Lamberts-MacBook-Air , y obtendrán la dirección IP interna (no enrutable) 10.1.1.1.

Y encontrarán tu máquina.


El método final es tener alguna forma de SLP (Protocolo de ubicación del servicio); esta puede ser una implementación general, como la que usan las computadoras Apple, las impresoras HP, etc. para encontrarse, o puede ser un protocolo privado.

Las redes punto a punto de Windows utilizan un tipo de protocolo; cuando comparte una unidad, en realidad hay mensajes de difusión periódicos que todos en el segmento local escuchan, de modo que cuando aparece un cuadro de diálogo, hay una lista de servidores.

Se utiliza una técnica similar (llamada “baliza”) para que pueda obtener una lista de puntos de acceso WiFi en su área.

Típicamente, estas listas son mantenidas localmente por un demonio de escucha que simplemente se sienta escuchando mensajes en la red que son equivalentes a mensajes de “¡Estoy aquí!” De todo lo que puede proporcionar un servicio a cualquier otra cosa.


Alternativamente: puede conocer su dirección IP en una máquina y caminar de esa máquina a otra máquina … y escribirla en la segunda máquina, para que pueda encontrar la primera.

tl; dr

Las computadoras en la misma red no necesitan conocer las direcciones IP de los demás, necesitan conocer las direcciones MAC de los demás. Aprenden esta información a través de ARP, un protocolo que existe en la capa 2 del modelo OSI. Rastree la ruta de una computadora en la misma red que el dispositivo en el que está encendido y vea qué sucede. Notará que el enrutador o la puerta de enlace predeterminada no están separados del rastro.

La IP de una computadora siempre está disponible para la red porque está almacenada en una tabla ARP en el enrutador. La dirección MAC es lo que identifica el dispositivo y permite que dos computadoras en la misma red se comuniquen, porque en última instancia es la dirección MAC lo que es importante para el conmutador, y el conmutador es lo que reenvía las tramas Ethernet de una máquina a otra.

Si las dos máquinas están en la misma red privada, la capa 2 es la clave.

La dirección de la capa de enlace es lo que importa (la dirección mac), no la dirección IP. Cuando un conmutador de ethernet recibe una trama de ethernet de una computadora, aprende la dirección MAC de la computadora que envió la trama; una trama es solo un pequeño paquete con datos.

El conmutador es lo que facilita la comunicación en la misma red al reenviar ‘datagramas’ de un ‘puerto’ a otro ‘puerto’: las computadoras se conectan al final de los puertos a través de cables Ethernet.

Un conmutador tiene una tabla de reenvío que básicamente dice que el puerto Ethernet 1 pertenece a la computadora con la dirección MAC DC-19-1B-2E-C0-94, y el puerto Ethernet 2 pertenece a la computadora con la dirección MAC D5-02-8A- 2F-C9-35.

Digamos que la computadora conectada al puerto 1 es la computadora A, y la computadora conectada al puerto 2 es la computadora B.

Si la computadora ‘A’ quería hacer ping a la computadora ‘B’, lo primero que la computadora ‘A’ necesitaría saber es la dirección MAC asociada con la computadora ‘B’.

La computadora ‘A’ podría referirse a su tabla ARP local (una tabla ARP hace coincidir las direcciones IP con las direcciones físicas; las direcciones físicas son solo direcciones MAC)

Así es como se ve una tabla ARP en Windows. (He borrado las direcciones mac por razones de privacidad)

Si la computadora A no pudo encontrar la dirección MAC asociada de la computadora B, la computadora A enviaría una solicitud ARP solicitando la dirección MAC de la computadora B.

Puede capturar solicitudes ARP en wireshark, se ven así.

Una vez que la computadora A tiene la dirección MAC de la computadora B, la computadora A puede construir un paquete ICMP con las direcciones IP de origen y destino. El conmutador ni siquiera mirará estos datos porque la mayoría de los conmutadores funcionan en la capa 2. La capa 3 es cuando comienza a tratar con direcciones IP, y los enrutadores son responsables de manejar esos datos.

Una vez que la computadora A construye su paquete ICMP, encapsula esos datos en una trama Ethernet.

La trama contiene las direcciones MAC de origen y destino: estas dos direcciones son cómo el conmutador sabe quién envió la trama Ethernet y a quién debe dirigirse. ¿Recuerdas cómo mencioné anteriormente que los conmutadores tienen tablas de reenvío que asocian puertos con direcciones MAC? Aquí es donde eso se vuelve útil.

Una vez que la computadora A ha terminado de construir su pequeño paquete ICMP, lo encapsula en un marco Ethernet en el segmento ‘DATOS’ en el marco, llena su dirección MAC como la dirección de origen y muestra el mac de la computadora B en el destino.

Una trama Ethernet típica se ve así

La computadora A luego envía este pequeño paquete por el cable, llegando inevitablemente al interruptor. El conmutador lee la dirección de destino, lee su tabla de reenvío, ve que la dirección MAC en la dirección de destino de esta trama Ethernet está asignada a la dirección MAC en el puerto 2 y ‘reenvía’ la trama a la computadora en el puerto 2, inevitablemente computadora B.

Ahora, si la computadora B tiene un firewall que filtra el tráfico ICMP, es posible que el ping ni siquiera llegue a la computadora, sin embargo, la mayoría de las computadoras en redes privadas permiten el tráfico ICMP, es decir, permiten que pasen los pings.

Extendiendo esto, si intentara hacer ping a ‘www.google.com’, habría algunos pasos más.

La computadora usaría primero DNS para obtener la dirección IP de ‘www.google.com’, una vez que tiene la dirección IP, introduce la IP en la dirección de destino del paquete IP, encapsula esos datos en una trama Ethernet y la envía por el cable

Esta vez, debido a que está intentando comunicarse con una computadora en una red separada, la computadora A completará la dirección MAC de destino en el marco de Ethernet como el MAC del enrutador, de esa manera, una vez que el marco llegue al enrutador, el el enrutador puede ver los datos de IP y enviarlos a donde necesita ir, generalmente su ISP y luego el ISP hace todo el trabajo pesado desde allí.

Esa es una descripción simple de cómo ocurre la misma comunicación de subred. Si es confuso, lo sé, no soy muy bueno para explicar esto porque este es un proceso complicado y realmente ni siquiera está rascando la superficie.

Sigue leyendo, sigue aprendiendo, serás un mago en poco tiempo.

Si la red es Internet, entonces el DNS de Internet es el camino a seguir.

Además, todas las redes corporativas, excepto las más pequeñas, tienden a depender de DNS para permitir que los usuarios encuentren servicios. En términos generales, si su red es lo suficientemente grande como para tener más de una subred, entonces es lo suficientemente grande como para tener un DNS local. Las redes corporativas orientadas a Microsoft también suelen tener el Active Directory de Microsoft que, entre muchas otras cosas, almacena información del directorio sobre servicios de Microsoft como Exchange o Lync (ahora Skype for Business) para permitir que las PC clientes los descubran.

Eso deja a las pequeñas empresas de subred única y la mayoría de las redes domésticas. En general, el DNS no está disponible de manera consistente en estas redes, aunque muchos enrutadores domésticos tienen una función DNS y las PC y los servidores pueden registrarse con esto. Sin duda, es un enfoque útil si desea, por ejemplo, compartir archivos de una PC a otra.

Sin embargo, por lo general, los servicios que desean descubrirse en las redes domésticas necesitan otros mecanismos para hacerlo de manera confiable y consistente. Esto se hace por aplicación en lugar de por dispositivo o PC. Entonces, por ejemplo, su nueva impresora de red quiere asegurarse de que las PC de su red encuentren fácilmente el servicio de impresión, o su dispositivo Google Chromecast quiere estar disponible para la transmisión de video desde su PC.

Uno de los enfoques más comunes en las redes domésticas es un mecanismo llamado Protocolo simple de descubrimiento de servicios, SSDP. Universal Plug’n Play Discovery se basa en SSDP:

Protocolo simple de descubrimiento de servicios – Wikipedia

Esencialmente, SSDP organiza servicios que desean ser descubiertos para transmitir su disponibilidad a los clientes. La multidifusión es un tipo de transmisión que los dispositivos en la red pueden escuchar selectivamente, es decir, los dispositivos que están interesados ​​en el servicio que se ofrece.

Editar: Otro servicio bastante más moderno es el DNS de multidifusión:

DNS de multidifusión – Wikipedia.

Como su nombre indica, esto también usa la multidifusión, pero esta vez es el cliente el que usa la multidifusión para preguntar si hay algún servicio en la red del tipo que está buscando. Apple usa esto y Google con sus servicios de red de Google Home.

En general, se utiliza la multidifusión o la transmisión ocasional, ya sea por el servicio de publicidad en sí o por el cliente que pregunta a cualquier dispositivo que está escuchando si tienen el tipo de servicio que están buscando.

La comunicación se realiza conociendo la dirección IP de la computadora de destino. En la misma red, si se utiliza la asignación de IP estática, puede ser conocida por el usuario o almacenada como información de configuración de red. En caso de asignación dinámica de IP (DHCP), el remitente debe saberlo. Se puede utilizar DNS interno, pero no siempre es así.

La transmisión de IP puede ser una forma, pero (puedo estar equivocado) La capa de red no maneja esto. Tienes que usar algún servicio de capa de aplicación entre dos PC para hacer esto.

Además, DNS es un servicio de capa de aplicación.

Todavía soy novato en esto. Entonces, señalar cualquier información incorrecta será bueno nice.

Existe un sistema llamado mDNS (DNS de multidifusión), también conocido como Bonjour, que permite que las computadoras de la misma red se descubran entre sí de manera distribuida. Normalmente no se usa para transacciones de computadora a computadora, aunque puede ser así. Generalmente se usa para descubrir servicios como impresoras. Ver RFC 6762 y 6763 para los detalles sangrientos, pero en términos generales, la respuesta es que hacen multidifusión de sus direcciones, o una solicitud de una dirección.