2017-09-12 5 views
1

Ich möchte ein Programm schreiben, das von einer Schnittstelle mit einer MAC-Adresse eine DHCP-Anfrage sendet und die IP-Adresse, das Gateway, die Maske und die Broadcast zurück Adresse vom DHCP-Server.Erhalten IP-Adresse, Gateway, Maske und Broadcast-Informationen mit DHCP

Ich verwendete this implementation von einem DHCP-Client, aber es gibt nur die IP-Adresse und die Gateway-Adressen.

Ich las über DHCP-Nachrichtenformat und ich fand keine Maske oder Broadcast-Dateien. Wenn jedoch dhcpclient Befehlszeile, kann ich mit ifconfig sehen, dass die Schnittstelle eine Maske und Broadcast-Adressen hat, wie folgt:

[email protected]:~/dhclient wlp2s0 
[email protected]:~/ifconfig wlp2s0 
wlp2s0 Link encap:Ethernet HWaddr 54:da:d0:15:4b:04 
     inet addr:153.179.154.55 Bcast:153.179.169.255 Mask:255.255.240.0 
     inet6 addr: fe80::2037:c031:5db1:445c/64 Scope:Link 
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
     RX packets:113 errors:0 dropped:0 overruns:0 frame:0 
     TX packets:56 errors:0 dropped:0 overruns:0 carrier:0 
     collisions:0 txqueuelen:1000 
     RX bytes:112130 (112.1 KB) TX bytes:9520 (9.5 KB) 

Könnte mir jemand sagen, wie diese Informationen gewonnen werden?

+0

Sie möchten die Informationen von der Remote-Maschine oder von Ihnen erhalten? – ARG

+0

@ARG: Ich möchte Informationen von meiner Maschine zu bekommen, aber mein Programm und nicht mit Kommandozeilen-Tools wie dhcpclient – ARM

+0

@ARM verwenden Sie so etwas wie SIOCGIFADDR verwenden können, http://www.microhowto.info/howto/get_the_ip_address_of_a_network_interface_in_c_using_siocgifaddr.html – ARG

Antwort

3

Siehe this question, es kann sein, was Sie wollen.

Ich nehme an, Sie schreiben Ihren eigenen DHCP-Client, der rohe Sockets oder etwas anderes verwendet, um Bytes direkt auf dem Draht zu setzen.

Sie können mehr über DHCP here oder anderswo, wenn Sie googlen. Wie Sie sehen können, kann die Subnetzmaske vom DHCP-Server sowie die Broadcast-Adresse abgerufen werden. Dies geschieht über DHCP-Optionen bei der Kommunikation mit dem DHCP-Server.

Sie müssen dann die richtigen Bytes in der richtigen Reihenfolge auf die Leitung legen und die Bytes lesen, die zurückkommen, um die gewünschten Informationen abrufen zu können.

Mithilfe des Clients, den Sie verknüpft haben, können Sie den Code erweitern, um weitere Informationen vom DHCP-Server anzufordern und zu verarbeiten, z. B. Broadcast-Adresse und Subnetzmaske. Informationen dazu, wie Sie im Feld DHCP-Optionen nach Informationen fragen, finden Sie in der DHCP-Dokumentation.