En una red pequeña, digamos 20 nodos o menos, mi programa, en un instrumento de prueba, necesita saber "¿Quién está ahí fuera?" por MAC no por IP. Me conectaré a redes aleatorias y necesito poder hacer esto sin tener que saber ninguna dirección, MAC o de otro tipo en la red y sabiendo que no puedo confiar en DHCP. Es completamente razonable que el servidor DHCP esté inactivo y los nodos no tengan direcciones IP y/o no pueda obtener una. A decir verdad, no necesito IP, nuestro protocolo de prueba es la capa MAC, no IP.
Entonces, ¿cómo puedo determinar las direcciones MAC del vecino de mi instrumento? Esto se parece mucho a LLDP pero al revés, es decir, "quién está ahí afuera", no "Estoy aquí y puedo hacer esto...". Debo asumir que no hay IP asignada a los puntos finales, por lo que no hay ARPing, no NMAP, etc.
Tenga en cuenta que debo agregar, esta es una red cableada.
En el caso general, no hay un protocolo de nivel MAC que pueda enviar y garantizar una respuesta de cada máquina en su red (supongo que está usando Ethernet aquí porque creo que las cosas son diferentes en WLAN). Es decir, no hay transmisión (o incluso, unidifusión IIRC) en la capa MAC a la que se garantice que responderá un host. Con IP en la parte superior, puede transmitir IP y verificar el caché ARP.
La mejor manera de hacer esto sería (en mi opinión) usar la forma en que los conmutadores/puentes de aprendizaje funcionan en ethernet, es decir, escuchar pasivamente en modo promiscuo los paquetes y anotar sus direcciones MAC. No detectará hosts completamente silenciosos, pero tampoco un conmutador hasta que envíe un paquete. Por definición, no hay forma de detectar un host completamente silencioso de todos modos.