2017-09-12 10 views
1

MAC 주소가있는 인터페이스에서 DHCP 요청을 보내고 IP 주소, 게이트웨이, 마스크 및 브로드 캐스트를 가져 오는 프로그램을 작성하고 싶습니다. 주소를 DHCP 서버에서 가져옵니다.DHCP를 사용하여 IP 주소, 게이트웨이, 마스크 및 브로드 캐스트 정보 가져 오기

DHCP 클라이언트의 this implementation을 사용했지만 IP 주소와 게이트웨이 주소 만 제공합니다.

DHCP 메시지 형식에 대해 읽었으며 마스크 또는 브로드 캐스트 파일을 찾지 못했습니다. dhcpclient 명령 행을 사용할 때, 나는 다음과 같이 인터페이스 마스크 및 브로드 캐스트 주소를 가지고은 ifconfig를 사용하여 볼 수 있습니다

[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) 

누군가가이 정보를 획득하는 방법을 말해 줄 수 있을까요?

+0

원거리 기기의 정보를 얻고 싶습니까? – ARG

+0

@ARG : 내 컴퓨터의 정보를 얻고 싶지만 내 프로그램을 사용하고 dhcpclient와 같은 명령 줄 도구를 사용하지 않으려 고합니다. – ARM

+0

@ARM SIOCGIFADDR과 같은 것을 사용할 수 있습니다. http://www.microhowto.info/howto/get_the_ip_address_of_a_network_interface_in_c_using_siocgifaddr.html – ARG

답변

3

this question을 참조하십시오. 원하는 내용 일 수도 있습니다.

원시 소켓이나 다른 것을 사용하여 직접 전선에 바이트를 넣는 자체 DHCP 클라이언트를 작성하고 있습니다.

Google의 경우 DHCP here 또는 다른 위치에 대해 자세히 알아볼 수 있습니다. 보시다시피 서브넷 마스크는 브로드 캐스트 주소는 물론 DHCP 서버에서 가져올 수 있습니다. 이 작업은 DHCP 서버와 통신 할 때 DHCP 옵션을 통해 수행됩니다.

그러면 올바른 순서로 올바른 바이트를 입력하고 원하는 정보를 얻을 수 있도록 되돌아 오는 바이트를 읽어야합니다.

연결된 클라이언트를 사용하면 코드를 확장하여 브로드 캐스트 주소 및 서브넷 마스크와 같은 DHCP 서버의 추가 정보를 요청하고 처리 할 수 ​​있습니다. DHCP 옵션 필드에서 정보를 요청하는 방법은 DHCP 설명서를 참조하십시오.