티스토리 뷰

DHCP 프로토콜 기본원리



  DHCP( Dynamic Host Configuration Protocol ) 






  인터넷을 사용할 때 전화 번호 역할을 하는 인터넷 주소 즉, IP가 있어야 한다. 이 인터넷 주소(IP)는 통상 인터 에 접속할

  때 동적( Dynamic )으로 할당 받는데 이 동적으로 IP 주소를 할당해 주는 프로토콜이 DHCP 이다.

  DHCP는 호스트가 네트워크에 접속하고자 할 때마다 IP를 동적으로 할당받을 수 있도록 한다. 따라서 호스트가 빈번하게 

  접속을 연결하고 다시 갱신하는 가정 인터넷 접속 네트워크 및 무선랜에서 폭넒게 사용된다.


  DHCP를 통한 IP주소 할당은 "임대"라는 개념을 가지고 있는데 이는 DHCP 서버가 IP주소를 영구적으로 단말에 할당하는 

  것이 아니고 임대기간( IP Lease Time )을 명시하여 그 기간 동안만 IP 주소를 사용하도록 한다.

  임대기간 이후에도 계속 해당 IP주소를 사용하고자 한다면 IP주소 임대기간 연장 ( IP Address Renewal )을DHCP 서버에 

  요청해야하고, 임대 받은 IP가 더 이상 필요하지 않게 되면 IP 주소 반납 절차 ( IP Address Release) 를 수행한다.


  DHCP프로토콜은 UDP패킷을 이용하는 비연결형 서비스 모델을 기반으로 한다. 비연결형 서비스란 TCP/IP와 같은 연결을

  위한 요청, 허락 등의 일련의 과정이 없이 목적지까지의 전송여부를 보장하지 않으며 필요한 경우 전송된 자료에 대한 

  신뢰성은 응용프로그램에서 하는 방식이다.여기서 DHCP프로토콜은 XID 플래그를통해 검증한다.




  DHCP - 구성





   1.DHCP Discover 



  - 통신 방향 : HOST → DHCP 서버

    # 브로드 캐스트 통신 ( Destination MAC = FF:FF:FF:FF:FF:FF ) 


  - 의미 : 호스트가 DHCP 서버를 찾기위한 통신이다. LAN상에 ( 동일 subnet ) 브로드캐스팅 하여 DCHP 서버를 찾는 메세지를 보낸다.


  - 주요 파라미터값 

    # Client MAC : 호스트의 MAC 주소



  ↑DHCP Discover





   2. DHCP Offer 



  - 통신 방향 : DHCP서버 → HOST

    # 브로드 캐스트 통신 ( Destination MAC = FF:FF:FF:FF:FF:FF )이거나 유니캐스트 통신일 수 있다. 이는 호스트가 보낸 DHCP Distcover 

       메세지 내의 Broadcast Flag의 값에 따라 달라지는데, 이 Flag=1이면 DHCP Offer 메시지를 Broadcast로, Flag=0이면 Unicast로 

       보내게 된다.


  - 의미 : DHCP 서버가 호스트에게 자신의 존재를 알리고, 호스트에 할당할 IP주소 정보를 포함한 다양한 네트워크 정보를 같이 

             호스트에게 전달한다.


   - 주요 파라미터값

    # Client MAC : 호스트의 MAC 주소

    # Your IP : 단말에 할당( 임대 )할 IP 주소

    # Subnet Mask ( Option 1 )

    # Router (Option 3): 호스트의 Default Gateway IP 주소

    # DNS (Option 6): DNS 서버 IP 주소

    # IP Lease Time (Option 51): 호스트가 IP 주소(Your IP)를 사용(임대)할 수 있는 기간(시간)

    # DHCP Server Identifier (Option 54): 본 메시지(DHCP Offer)를 보낸 DHCP 서버의 주소. 2개 이상의 DHCP 서버가 DHCP Offer를 

      보낼 수 있으므로 각 DHCP 서버는 자신의 IP 주소를 본 필드에 넣어서 단말에 보냄 ( 충돌방지 )



  ↑DHCP Offer





   3. DHCP Request 



  - 통신 방향 : HOST → DHCP 서버

    # 브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF)


  - 의미 :  호스트는 DHCP 서버(들)의 존재를 알았고, DHCP 서버가 호스트에 제공할 네트워크 정보(IP 주소, subnet mask, 

                default gateway등)알았다. 이제 호스트는 DHCP Request 메시지를 통해 하나의 DHCP 서버를 선택하고 해당 서버에게 

                "호스트가 사용할 네트워크정보"를 요청합니다.


  - 주요 파라미터값

    # Client MAC: 단말의 MAC 주소

    # Requested IP Address (Option 50): 난 이 IP 주소를 사용하겠다. ( DHCP Offer의 Your IP 주소가 여기에 들어간다. )

    # DHCP Server Identifier (Option 54): 2대 이상의 DHCP 서버가 DHCP Offer를 보낸 경우, 호스트는 이 중에 마음에 드는 DHCP 

                                                     서버 하나를 고르게 되고,  그 서버의 IP 주소가 여기에 들어간다.

                                                     즉, DHCP Server Identifier에 명시된 DHCP 서버에게 "DHCP Request" 메시지를 보내어 호스트

                                                     IP 주소를 포함한 네트워크 정보를 얻는 것





  ↑DHCP Request








   4. DHCP Ack 



  - 통신 방향 : DHCP 서버 → HOST

     # 브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF) 혹은 유니캐스트일수 있으며 이는 호스트가 보낸 DHCP Request 

        메시지 내의 Broadcast Flag=1이면 DHCP 서버는 DHCP Ack 메시지를 Broadcast로, Flag=0이면 Unicast로 보내게 된다.


  - 의미 : DHCP 절차의 마지막 메시지로, DHCP 서버가 호스트에게 "네트워크 정보"를 전달해 주는 메시지이다. 

            앞서 설명드린 DHCP Offer의 '네트워크 정보"와 동일한 파라미터가 포함된다.


  - 주요 파라미터

    # Client MAC: 단말의 MAC 주소

    # Your IP: 단말에 할당(임대)할 IP 주소



  ↑DHCP Ack









  DHCP - 통신과정 


  실습 환경 : 와이어샤크 , 호스트PC 로컬영역 네트워크

  실습 과정 : 와이어샤크를 통한 패킷을 분석하는 동시에 현재 IP를 재임대 받는다. 이를 이용해 DHCP 프로토콜

                 과정을 확인




   1. Wire shark 필터링을 통한 DHCP 패킷 수집 



  ↑bootp : boot protocol로 DHCP 프로토콜은 boot protocol이 확장된 형태이다.

    # 이를 통해 DHCP 프로토콜 패킷을 수집할 수 있다.



   2. 윈도우 명령 프롬프트를 통해 IP 재할당 



  ↑ipconfig /release : 네트워크 어댑터의 ip주소를 제거한다.

   # 현재 로컬영역의 ip주소 제거


  ↑ipconfig /renew : 현재 ip를 갱신한다.

    # ip갱신을 통해 ip를 재할당 받는다.


  ↑wireshark 패킷 수집을 통해보면 DHCP 프로토콜 메세지를 확인할 수 있다.

    # 중간창인 패킷 디테일창에서 확인해 보면 각각의 메세지의 의미가 위에서본 DHCP 구성과 같다는걸 알 수 있다.

















'Network' 카테고리의 다른 글

FTP 통신 동작과정 및 기본 원리  (0) 2017.05.01
Network - ICMP ( 인터넷 제어 메시지 프로토콜)  (0) 2017.04.14
TCP/IP 3 Way-Handshaking  (1) 2017.04.11
Network - OSI Layer 7  (0) 2017.04.07
Network - LAN 과 WAN  (0) 2017.04.07