본문 바로가기
커먼의저주...

[네트워크] Mac에서 DHCP 패킷 전달 과정 와이어샤크로 확인해보기

by 마라민초닭발로제 2024. 12. 18.

잘못된 내용이 있을수도 있으니 꼭 비판적으로 읽어주시면 감사합니다. 

 

DHCP(Dynamic Host Configuration Protocol)란?

동적 호스트 설정 프로토콜(통신규약)'이다. 우리가 통신을 위해 ISP를 통해 IP를 할당 받아야 한다. 이 ISP의 서버를 통해 IP를 할당하는 Porotocl을 의미합니다.

 

Lease

우리가 네트워크 진입시 ISP를 통해 Ip를 받아야 하는데 이를 Lease라고 합니다. Lease과정은 4가지로 진행됩니다.

  1. DHCP Discover.
    IP 주소가 할당되지 않은 클라이언트는 MAC 주소를 기반으로 IP 주소를 받아오기 위해 로컬 네트워크에 Discover 패킷을 Broadcast한다. 이때, Broadcast로 뿌려진 패킷은 해당 네트워크 내의 모든 호스트에게 날아가게 된다. 이 Discover 패킷에는 IP 주소가 필요한 호스트의 MAC 주소가 담겨 있어서 DHCP 서버가 응답할 때 패킷을 수신할 수 있게 된다. 호스트들이 패킷을 받고 나서, DHCP 서버가 Discover 패킷을 받게 되면 2단계로 넘어간다. 물론 이때, 다른 호스트들은 '어? 내 패킷이 아니네?' 하고 패킷을 폐기한다.
  2. DHCP Offer.
    DHCP 서버가 Discover 패킷을 받게 되면, DHCP 서버는 Offer 패킷을 Broadcast한다. 이때, MAC 주소에 아까 Discover 패킷을 보낸 호스트의 MAC 주소를 적어서 보낸다. 마찬가지로 Broadcast이기 때문에 해당 네트워크의 호스트 전체에 패킷이 날아가지만 역시 Discover를 보낸 호스트 이외의 다른 호스트는 패킷을 전부 폐기한다. Discover를 보낸 호스트가 Offer 패킷을 받으면 3단계로 넘어간다.
  3. DHCP Request.
    해당 호스트는 Offer를 받았으면 해당 네트워크에는 DHCP 서버가 있다고 판단, Request 패킷을 Broadcast한다. Request 패킷은 말 그대로 IP 내놔. 이 역시 Broadcast이기 때문에 해당 네트워크의 호스트 전체에게 날아가고, DHCP 서버 이외의 다른 호스트는 패킷을 폐기한다. DHCP 서버가 Request 패킷을 받으면 4단계로 진행한다.
    이때 Request 패킷을 Broadcast 하는 이유는 DHCP 서버가 1대 이상일 수 있기 때문이다.
  4. DHCP ACK.
    DHCP 서버는 Request 패킷을 받으면 자신의 IP 임대 풀에서 할당 가능한 IP 주소를 찾는다.[3] 예를 들어 게이트웨이와 DHCP가 모두 192.168.0.1일 경우 192.168.0.1을 제외한 0.2~0.254까지의 임대 풀을 가지고 있다. 이 임대 풀에서 가장 앞에 있는 IP 주소부터 할당하게 되는데, 사용 중이 아닌 경우엔 해당 IP 주소를 할당을 하게 된다. 여기서는 192.168.0.2를 할당한다고 가정 하면, "Your (Client) IP Address: 192.168.0.2 (192.168.0.2)" 이런 패킷을 날리게 된다. 역시 Broadcast로 전송되며, 호스트가 이 패킷을 정상적으로 받았다면 IP 주소가 할당된다.

갱신(Renew)

  1. DHCP Request
    DHCP 서버에 갱신을 요청하는 Request 패킷을 Unicast로 보낸다. DHCP 서버가 이 패킷을 받으면, 2단계로 넘어간다.
  2. DHCP ACK
    DHCP 서버에서 Request를 요청한 클라이언트에게 ACK 패킷을 Unicast로 보낸다. 이 패킷에는 갱신에 대한 정보가 담겨 있다.

 

 반환(Release)

임대 기간이 끝났거나, IP 주소를 더 이상 사용하지 않는다면 DHCP 서버에 IP 주소를 반환하게 되는데, 이것을 반환(Release)이라고 한다.

 

실제 와이어 샤크를 통한 캡쳐 해보기

RENEW

연결된 네트워크를 확인합니다. 그리고 네트워크 세부사항에서 TCP/IP를 클릭하고 DHCP임대 갱신을 눌릅니다.

 

그러면 와이어샤크에 패킷이 전달 됩니다. Renew이기 때문에 Request - Ack를 통해 패킷이 오고감을 확인할 수 있었습니다. 

 

아래는 제 패킷을 통해 받은 mac address 주소인데 이것이 정상적으로 나와있는 것을 확인할 수 있습니다. 

 

 

Release and Lease

아래 터미널 명령어를 통해 DHCP를 Rlease할 수 있습니다.

sudo ipconfig set en0 BOOTP && sudo ipconfig set en0 DHCP

 

 

 

생각했떤 대로 DORA가 정상적으로 이루어지는 것을 확인했습니다. 다만 ACK가 두개온건 서버 이중화 때문이 아닐까 추측할 수 있습니다. 

 

아래는 Ack의 패킷 세부사항과 현재 Renew이후의 네트워크 상태 입니다. 

 

 

잘못된 내용이 있을수도 있으니 꼭 비판적으로 읽어주시면 감사합니다.

 

레퍼런스

https://namu.wiki/w/DHCP

 

DHCP

D ynamic H ost C onfiguration P rotocol 직역하자면 '동적 호스트 설정 프로토콜

namu.wiki