일반적으로 DHCP 메시지는 브로드캐스팅되기 때문에 단말과 DHCP 서버는 반드시 동일 서브넷 상에 위치해야만 합니다. 그 이유는 라우터가 브로드캐스트 패킷(Destination MAC 주소가 FF:FF:FF:FF:FF:FF이고 Destination IP 주소가 255.255.255.255)을 다른 인터페이스로 전달(IP 포워딩)하지 않기 때문에 단말이 송신한 DHCP 메시지(브로드캐스트 패킷)가 라우터를 통해 다른 서브넷에 위치한 DHCP 서버로 전달될 수 없습니다(위 그림의 (a)). 이러한 제약 사항으로 DHCP 서버가 각 서브넷(랜)마다 위치해야만 하는데 실제 통신 사업자망 혹은 기업망 환경에서 이와 같은 구성은 실용적이지 못합니다(DHCP 서버가 너무 많이 필요하겠죠).
그래서 이와 같은 문제를 해결하기 위해 DHCP Relay Agent라는 개념이 생겨났으며, 위 그림의 (b)와 같이 라우터에 DHCP Relay Agent 기능을 설정하면 서로 다른 서브넷에 위치하는 단말과 DHCP 서버간에도 DHCP 메시지 통신이 가능하게 됩니다. DHCP Relay Agent의 가장 핵심적인 기능은 단말이 송신하는 DHCP 브로드캐스트 패킷을 유니캐스트로 변환하여 DHCP 서버에 전달하는 것입니다.
DHCP Relay Agent가 있는 환경에서 메시지 흐름을 요약하면 다음과 같습니다.
1. [단말 -> DHCP 서버] DHCP Discover Message
단말이 브로드캐스트 메시지를 보내면 이를 DHCP Relay Agent가 수신하여 유니캐스트로 변환(SIP=DHCP Relay Agent, DIP=DHCP Server)하여 DHCP 서버로 전달 (SIP=Source IP address, DIP=Destination IP address in IP header)
2. [단말 <- DHCP 서버] DHCP Offer Message
DHCP 서버가 DHCP Relay Agent로 유니캐스트(SIP=DHCP 서버, DIP=DHCP Relay Agent)로 보내면 이를 수신한 DHCP Relay Agent는 단말로 브로드캐스트로 변환하여 전송(반드시 브로드캐스팅은 아닙니다. 이는 넷매니아즈 기술문서 "DHCP 상세 동작 원리" 참조)
3. [단말 -> DHCP 서버] DHCP Request Message
단말이 브로드캐스트 메시지를 보내면 이를 DHCP Relay Agent가 수신하여 유니캐스트로 변환(SIP=DHCP Relay Agent, DIP=DHCP Server)하여 DHCP 서버로 전달
4. [단말 <- DHCP 서버] DHCP Ack Message
DHCP 서버가 DHCP Relay Agent로 유니캐스트(SIP=DHCP 서버, DIP=DHCP Relay Agent)로 보내면 이를 수신한 DHCP Relay Agent는 단말로 브로드캐스트로 변환하여 전송(반드시 브로드캐스팅은 아닙니다. 이는 넷매니아즈 기술문서 "DHCP 상세 동작 원리" 참조 - 아래 링크 클릭!)
잘 배웠습니다.
앞으로도 쭉 번창하시기를 바랍니다.
패킷내의 DHCP Discover Message를 살펴보았을때, Client의 Macc address가 00:00:00:00:00:00로 보내는 경우는
어떠한 경우인가요?
3GPP 스펙(TS 36.523-3 V10.0.0)을 보시면 단말(UE)이 NAS signalling(attach accept)을 통해 IP 주소를 얻지 못하는 경우 DHCP를 통해 IP 주소를 요청합니다. (When the UE supports IPv4 and does not get an IPv4 address via NAS signalling it will request the address via DHCP)
그리고 이 경우 LTE는 L2 layer가 Ethernet이 아니므로 Ethernet 주소가 존재하지 않으며, 스펙에는 DHCP payload에 chaddr(client hardware address)는 any value이어도 된다고 되어 있습니다.
좋은글 감사드립니다 ^^
지금은 2020입니다~!!! 유용한 설명과 영상, 정말 감사합니다!!!!