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
Odpowiedz
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.
Dzięki, ale jak wywołać polecenie arp z mojego programu C++? Niezbyt obeznany z tym .. :( –
@Achuthananda MP: Na OS X i innych Uniksowych, używałbyś fork i exec .Nie wiem jak to zrobiłbyś w Windows. – JeremyP
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:
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.
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.
Kod źródłowy arp jest dostępny w poniższym linku, weź fragment kodu, który Cię interesuje! Jest to kod c, więc powinien działać dobrze.
http://www.opensource.apple.com/source/network_cmds/network_cmds-328/arp.tproj/arp.c
- 1. Znajdowanie adresu IP użytkownika
- 2. Niezależny od platformy sposób uzyskania katalogu czcionek?
- 3. Znajdowanie adresu URL LDAP?
- 4. Niezależny od platformy sposób uzyskania maksymalnej wartości float w C++
- 5. Uzyskiwanie lokalnego adresu IP
- 6. Najbardziej odpowiedni niezależny od platformy język programowania
- 7. Python: niezależny od platformy sposób modyfikowania zmiennej środowiskowej PATH
- 8. przycinanie adresu IP oktet
- 9. Przekierowywanie adresu IP w Javie
- 10. Mac format adresu z ciągiem
- 11. Wyszukiwanie adresu IP węzła Jenkinsa
- 12. Rozpoznawanie adresu IP nazwy hosta
- 13. Składnia dla rezerwacji adresu URL netsh dla dowolnego adresu IP
- 14. Powiązanie adresu IP z identyfikatorem sesji
- 15. Pobierz uczelnię/uniwersytet z adresu IP
- 16. Konwersja adresu IP na numer:
- 17. libvirt: pobranie adresu IP z gościa
- 18. Użyj wątków i gniazd w C w sposób niezależny od platformy
- 19. Przechowywanie adresu IP klienta w Firebase
- 20. Jak napisać kod niezależny od platformy w Haskell (ghc)?
- 21. Wysyłaj żądanie SOAP z określonego adresu IP
- 22. Długość i szerokość geograficzna z adresu IP
- 23. Sprawdzanie poprawności adresu IP (z maską)
- 24. Uzyskiwanie adresu IP żądania z piramidą
- 25. Uwierzytelnianie za pomocą adresu IP w Django
- 26. Sortowanie adresu IP uniq z dziennika Apache
- 27. jak uzyskać nazwę miejscowości z adresu IP
- 28. Jak sprawdzić poprawność adresu IP w Pythonie?
- 29. Wykrywanie zmiany adresu IP w systemie Linux
- 30. Jaki jest najkrótszy sposób wygenerowania losowego adresu IP w Ruby?
Drugie urządzenie, to urządzenie, które jest oddalone, to znaczy nie w tej samej sieci lokalnej? – Dervall
inne urządzenie jest również w tej samej sieci .. –