2012-02-07 12 views
5

Potrzebuję znaleźć adres mac urządzenia, z którego moje urządzenie otrzymuje żądania TCP, otrzymam adres IP urządzenia przez punkt końcowy tcp, ale muszę się dowiedzieć adres MAC urządzenia. Moja aplikacja będzie działać zarówno w systemie Windows, jak iw Linuksie, więc proszę zasugeruj mi metodę na wielu platformach, aby znaleźć adres mac. Wszelkie biblioteki doładowania pomogą mi zrobić to samo ??Znajdowanie adresu MAC z adresu IP w sposób niezależny od platformy

+0

Drugie urządzenie, to urządzenie, które jest oddalone, to znaczy nie w tej samej sieci lokalnej? – Dervall

+0

inne urządzenie jest również w tej samej sieci .. –

Odpowiedz

5

Po pierwsze, nie można znaleźć adresu MAC dowolnego interfejsu sieciowego, który nie znajduje się w tej samej sieci lokalnej. Ta informacja nie jest przesyłana poza routerem.

Dostępne jest narzędzie wiersza poleceń o nazwie arp, które jest dostępne w systemie Unix, a także system Windows, który wyświetli adresy IP i adresy MAC interfejsów, które były w komunikacji z komputerem. tj

arp -a 

Windows daje coś takiego:

Interface: 9.175.198.236 --- 0x2 
    Internet Address  Physical Address  Type 
    9.175.198.129   00-1b-53-46-fa-7f  dynamic 

i na Unix-alike wygląda następująco:

foo.bar.com (10.27.68.72) at 00:50:56:AE:00:0B [ether] on eth0 
baz.bar.com (10.27.68.77) at 00:50:56:AE:00:10 [ether] on eth0 
? (10.27.68.1) at 00:50:5A:1B:44:01 [ether] on eth0 

Można spróbować powołując go i analizowania wyjście programowo.

+0

Dzięki, ale jak wywołać polecenie arp z mojego programu C++? Niezbyt obeznany z tym .. :( –

+0

@Achuthananda MP: Na OS X i innych Uniksowych, używałbyś fork i exec .Nie wiem jak to zrobiłbyś w Windows. – JeremyP

1

Przede wszystkim należy pamiętać, że w warstwie TCP nie znasz adresów MAC.

Twoim przypadku, myślę, że można zrobić dwie rzeczy:

  1. pomocą usługi ARP lub napisać kawałek kodu podobnego do arp który szuka MAC dany adres IP. Problem z tym podejściem polega na tym, że nie będzie działać, gdy źródło znajduje się w innej sieci.

  2. wpisz swój serwer w taki sposób, aby zażądał tych informacji od klienta wysyłającego żądanie TCP. Można to zrobić po ustanowieniu protokołu TCP. Klient powinien również mieć możliwość wyszukania adresu MAC urządzenia dla danego adresu IP.

Powiązane problemy