전화를 사용할 때 자신의 전화 번호가 있듯이 인터넷을 사용할 때도 인터넷 주소가 있어야 하는데, 이 인터넷 주소가 IP 주소입니다. 이 인터넷 주소는 통상 인터넷에 접속할 때 동적(Dynamic)으로 할당 받는데 이 동적으로 IP 주소를 할당해 주는 프로토콜을 DHCP(Dynamic Host Configuration Protocol)라고 하며 이는 RFC 2131에서 표준 동작을 정의하고 있습니다.
DHCP를 통한 IP 주소 할당은 “임대”라는 개념을 가지고 있는데 이는 DHCP 서버가 IP 주소를 영구적으로 단말에 할당하는 것이 아니고 임대기간(IP Lease Time)을 명시하여 그 기간 동안만 단말이 IP 주소를 사용하도록 하는 것입니다. 단말은 임대기간 이후에도 계속 해당 IP 주소를 사용하고자 한다면 IP 주소 임대기간 연장(IP Address Renewal)을 DHCP 서버에 요청해야 하고 또한 단말은 임대 받은 IP 주소가 더 이상 필요치 않게 되면 IP 주소 반납 절차(IP Address Release)를 수행하게 됩니다.
이번 시간에는 단말(DHCP client)이 DHCP 서버로 부터 IP 주소를 할당(임대) 받는 절차에 대해서 알아 보도록 하겠습니다.
IP 주소 할당(임대) 절차에 사용되는 DHCP 메시지는 아래 그림과 같이 4개의 메시지로 구성되어 있습니다.
1) DHCP Discover
- 메시지 방향: 단말 -> DHCP 서버
- 브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF)
- 의미: 단말이 DHCP 서버를 찾기 위한 메시지입니다. 그래서 LAN상에(동일 subent상에) 브로드캐스팅을 하여 "거기 혹시 DHCP 서버 있으면 내게 응답 좀 해 주세요~"라고 단말이 외칩니다.
- 주요 파라미터
2) DHCP Offer
- 메시지 방향: DHCP 서버 -> 단말
- 브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF)이거나 유니캐스트일수 있습니다. 이는 단말이 보낸 DHCP Discover 메시지 내의 Broadcast Flag의 값에 따라 달라지는데, 이 Flag=1이면 DHCP 서버는 DHCP Offer 메시지를 Broadcast로, Flag=0이면 Unicast로 보내게 됩니다.
- 의미: DHCP 서버가 "저 여기 있어요~"라고 응답하는 메시지입니다. 단순히 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 주소를 본 필드에 넣어서 단말에 보냄
3) DHCP Request
- 메시지 방향: 단말 -> 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 주소를 포함한 네트워크 정보를 얻는 것임
4) DHCP Ack
- 메시지 방향: DHCP 서버 -> 단말
- 브로드캐스트 메시지 (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 주소
- 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 Ack)를 보낸 DHCP 서버의 주소
이렇게 DHCP Ack를 수신한 단말은 이제 IP 주소를 포함한 네트워크 정보를 획득(임대)하였고, 이제 인터넷 사용이 가능하게 됩니다.
각 메시지를 보내고 나서 response 받는 시간이 정해져 있나요?
예를 들어 client 가 discover를 보내고 몇 ms 이내로 offer를 받아야 한다는 내용 같은것이요..
혹은 discover를 보내고 offer를 받지 못하면 얼마의 시간까지 계속 discover 메시지를 보내나요?
따라서 이는 각 OS(Windows, Linux, Android, iOS 등) 구현에 의존한다고 볼 수 있을 듯 합니다.
안녕하세요?
3)DHCP Request에서는 왜 브로드캐스트를 보내나요?
dhcp서버를 알았는데 왜 다시 브로드를 보내는거죠?
혹시.. dhcp가 여러개라 여러개에서 와서 그런건가요?
그럼 그 중 하나를 어떻게 선택하나요?^^
질문하신 내용은 "DHCP 기본 동작 원리" 기술문서에 설명이 되어 있습니다 (아래 링크 참조).
https://www.netmanias.com/ko/?m=view&id=techdocs&no=5163
DHCP Request
DHCP Offer 메시지를 수신한 단말은 동일 서브넷에 DHCP 서버가 존재한다는 것을 알았고 이제 단말 IP
주소를 포함한 네트워크 정보를 요청하기 위해서 DHCP 서버에 DHCP Request 메시지를 이더넷 망에 브
로드캐스팅한다. 이때 동일 서브넷 상에 2대 이상의 DHCP 서버가 존재하는 경우, 단말은 복수개의
DHCP Offer 메시지를 수신하게 될 것이고 단말은 이 중에 하나의 DHCP 서버를 선택 하여 그 서버의 IP
주소를 DHCP Request 메시지 내에 Server Identifier(Option 54)필드에 기록 후 모든 DHCP 서버에게 그
사실을 알린다(브로드캐스팅). 모든 DHCP 서버들이 DHCP Request 메시지를 받을 수 있도록 브로드캐
스팅하는 이유는 각 DHCP 서버가 DHCP Offer 메시지를 보내면서 해당 단말에 할당해 줄 IP 주소와 기
타 정보를 내부적으로 저장해 놓기 때문에 선택 받지 못한 DHCP 서버들이 이 IP 주소와 기타 정보들을
삭제할 수 있도록 하기 위함이다.
쉽게 설명해 주어 감사합니다.
질문있습니다.
이 글과 크게 관련이 있는지는 모르겠지만 예를 들어 IP할당을 128개를 받은 건물에서 300대의 PC를 사용한다고 하면 VLAN을 사용하여서 할당을 하는데 이 때에서 DHCP가 VLAN에 관여하여 IP를 할당하여 주는 건가요?
잘 보고 갑니다. 감사합니다.
DHCP OFFER MESSAGE에서 flag = 0 이면 unicast로 packet forwarding한다고 하셨는데,
이게 정확히 어떤 상태인건가요? 일반적인 경우에는 broadcast 하는 걸로알고 있는데.
혹시 DHCP relay agent 사용시 option 82에 의한 동작인가요?
질문하신 내용은 "DHCP 상세 동작 원리" 기술문서에 설명이 되어 있습니다 (아래 링크 참조).
https://www.netmanias.com/ko/?m=view&id=techdocs&no=5180
DHCP 메시지 내에 Broadcast Flag가 존재하는 이유는 단말의 TCP/IP 구현 특성에 기인한다. 어떤 단말은
DHCP Ack 메시지를 통해 최종적으로 IP 주소를 할당 받기 전까지는 해당 IP 주소를 목적지로 하는 유니캐스
트 패킷을 수신할 수 없으며 이 경우 단말은 DHCP Discover/Request 메시지를 보낼 때 Broadcast Flag=1로
하는 것이고, 만약 IP 주소를 할당 받기 전에도 유니캐스트 패킷을 수신 할 수 있는 단말(Windows의 경우)은
Broadcast Flag=0으로 설정하는 것이다.
좋은자료 감사합니다. 너무 잘 만들어 놓으셨네요
너무 쉽게 잘 이해가 되네요... 정말 감사합니다.
컴퓨터를 새로 깔고, 심지어 리눅스 부팅CD를 이용해 새로 부팅을 해도,항상 내 IP가 고정되어 있는거예요. 그리고 특이하게, 몇년전부터 DHCP SERVER IP 역시 고정되어 있는 겁니다.그런데 이 IP때문에, 계속해서 내 컴을 해킹해 오는 사건이 발생하거든요. 시스템 모니터링 툴로 유심히 살펴보면, DHCP SERVER 이넘이 주기적으로 접속해 오면서 내 컴에 뭔가를 삽입하는데, 도저히 막을 방법이 없어요. DHCP SERVER를 수동으로 설정하게끔, DHCP SERVER IP좀 가르쳐 주세요
이해하기 쉬운 자료 감사 드립니다. 답글에도 좋은 정보가 있네요^^
감사합니다 이렇게 수고해주신 덕분에 쉽게 이해했습니다 ㅎㅎ
감사합니다. 정말 좋은 정보네요
퍼가두되나요??
네, 퍼가셔도 됩니다. 단, 출처(Netmanias.com)를 밝혀 주세요.
공부잘하고요! 감사함니다! 자주방문할것같네요
좋은글 퍼갑니다~!
감사합니다. 바로 이해가 갑니다!!
내용담아갑니다~~ 출처 남길게요!
덕분에 정말 쉽게 이해했습니다. 좋은 글 고맙습니다^^
네트워크 공부하는 학생입니다. ip 주소 할당에 대해서 질문이 있습니다.
1. dhcp로 사용자는 ip를 할당받아 인터넷에 접속한다.
2. ue는 p-gw로 부터 사업자가 이미 ip pool을 통해 얻은 dynamic ip addr를 받아 인터넷(pdn)에 접속한다.
두 가지 개념이 모두 ip를 할당 받는것인데 이걸 어떻게 이해해야하나요?
유선 통신과 무선 통신의 차이인가요?
내용이 너무 좋네요 그럼좀 퍼가서 정리해놔야겠어요
출처 남겨놓겠습니다.
안녕하세요.당장 이해는 안되지만 100번정도 읽어보면 이해되겠죠.감사합니다.
좋은 글 잘 읽었습니다.
대화체가 너무 재미져서 더 머리에 쏙쏙 들어온 것 같아요
절차를 도표로 보여주니 잘 이해가 되네요 감사합니다"
이해하는 데 큰 도움이 되었습니다. 정말 감사합니다 :)