본문 바로가기

Programming

현재 네트워크에서 DHCP 서버가 동작되고 있는지 확인?


현재 연결된 네트워크에서 DHCP 서버가 동작 되고 있는지? 즉 이미 DHCP 서버가 동작 되고 있는 네트워크 인지를

판단해야 할 필요성이 생겼다.


먼저 DHCP 프로토콜에 대해서 간단히 살펴 보면 다음과 같습니다.


DHCP: http://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol



(figure1 refer wikipedia)


위의 그림과 같이

(1). Client -> Server 로 DISCOVERY를 Broadcast

   : DHCP 서버가 있는지 패킷을 브로드 캐스팅한다.

(2). Server -> Client에서 OFFER로 Unicast

   : DHCP 서버는 DISCOVERY 메시지를 받으면 해당 Client에게 이 IP 사용할래? 라고 응답한다. 클라이언트의 MAC으로 전송한다.

(3). Client -> Server로 REQUEST를 Broadcast

   : Client는 OK.. 내 그 IP를 사용하겠다라고 응답한다.

(4). Server -> Client에서 ACK로 Unicast

   : Server는 그래 그 아이피 이제 너가 사용하는지 알겠어..


대충 이런식입니다.

제가 하고 싶고, 구현하고자 하는 것은 현재 연결된 망에 DHCP 서버가 있는지만 확인하면 되기 때문에... 위의 과정중에서

DISCOVERY를 하고 OFFER가 오면 현재 연결된 망에 DHCP 서버가 있다고 판단하면 될 듯 하다..



pseudo code

init program

   make discovery packet

   send(broadcast) discovery packet

   wait for offer packet from dhcp server

   close

end


대충 위와 같은 식으로 구현하면 될 듯 합니다.



이제 패킷의 구조를 확인해야 겠습니다.

http://www.tcpipguide.com/free/t_DHCPMessageFormat.htm



이제 상기 내용을 기반으로 DHCP 서버 Probe 를 구현하도록 하겠습니다. ^^

잠시 열심히 구현한 결과... 어느정도 동작하는 듯 합니다.

음... 오늘도 만족합니다. ^^




'Programming' 카테고리의 다른 글

scons 개념 및 사용법  (1) 2015.04.08
DHCP Probe 소스 코드  (0) 2014.11.29
gsoap (2)  (1) 2014.03.12
gsoap (1)  (0) 2014.03.11
stub & skeleton 이해하기  (0) 2013.10.28