Zugreifen auf Datenverbindungsschicht-Pakete
-
22-09-2019 - |
Frage
Ich möchte eine Buchse schaffen für den Zugriff auf IPv4-Pakete von Datenverbindungsschicht. Von Unix Netzwerkprogrammierung V1,
socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP))
1) Ich einen DHCP-Client bin die Umsetzung, dann ist dies der richtige Weg, dies zu tun? (Mittel ohne Datenverbindungsschicht zugreifen, kann ich nicht die Antwort vom DHCP-Server empfängt) oder gibt es eine andere Art und Weise einfacher? auch, da diese Buchse all IPv4-Pakete für mein System bestimmt empfangen werden, wie soll ich unterscheiden DHCP-Antwort-Paket von anderen Paketen?
2) Bitte machen Sie mir einen guten Link / tuorial für Netzwerkprogrammierung mit Data Link Layer-Zugriff . In dem obigen Buch, es ist nicht eine detaillierte Beschreibung.
Dies ist meinen Code
Lösung
Sie benötigen die Verbindungsschicht zu Header? Wenn ja, müssen Sie SOCK_RAW
-SOCK_DGRAM
verwenden, wird der Link-Layer-Header entfernen, bevor es auf Ihre Anwendung zugeführt wird.
Sie können DHCP-Anforderungen identifizieren durch die Quell- und Ziel-Ports, da DHCP-Datenverkehr auf UDP-Ports 67 und 68 erzeugt.
Andere Tipps
Haben Sie versucht, bei PCAP Bibliotheken suchen? Es bietet schöner Filterfunktionen auf IP, Port und anderen Dingen.