-
[Network] Dynamic Host Configuration Protocol(DHCP)CS/Network 2021. 12. 11. 20:38
어떻게 호스트가 처음에 네트워크 부팅을 할까 ❔❔
*부트스트랩(bootstrap): 한 번 시작되면 알아서 진행되는 일련의 과정을 뜻한다.
호스트가 처음 네트워크에 연결하기 위해서는 자신의 IP 주소, 로컬 DNS 서버의 주소, 게이트웨이(first-hop router)의 주소 등을 알아야 한다. 이는 호스트가 직접 설정할 수 있지만, 보통 우리는 자동으로 설정되는 것을 기대한다.
👉 이를 해결해 주는 것이 Dynamic Host Configuration Protocol(DHCP)다!!!
DHCP
DHCP란 ❔❔
DHCP란 호스트의 IP주소와 각종 TCP/IP 프로토콜의 기본 설정을 클라이언트에게 자동적으로 제공해주는 프로토콜을 말한다. DHCP는 네트워크에 사용되는 IP주소를 DHCP서버가 중앙집중식으로 관리하는 클라이언트/서버 모델을 사용하게 됩니다. DHCP 지원 클라이언트는 네트워크 부팅과정에서 DHCP서버에 IP주소를 요청하고 이를 얻을 수 있다. 네트워크 안에 컴퓨터에 자동으로 네임 서버 주소, IP주소, 게이트웨이 주소를 할당해주는 것을 의미하고, 해당 클라이언트에게 일정 기간 임대를 하는 동적 주소 할당 프로토콜입니다.
DHCP 서버 주소도 알지 못하는데 어떻게 DHCP를 찾는가 ❔❔
클라이언트는 source IP도 없고 DHCP 서버의 주소도 없기 때문에 DHCP 서버를 찾기 위해 Broadcasting한다.
DHCP 동작 방식
1. 클라이언트는 DHCP 서버를 찾기 위해 DHCP discover message를 broadcast한다. 이때 source address와 destination address 모두 모르기 때문에 source는 0.0.0.0, destination은 255.255.255.255로 설정한다.
❗ DHCP discover message를 broadcast하는 이유 ❗
👉 DHCP 서버의 주소를 모르기 때문
2. DHCP discover message를 받은 모든 DHCP 서버는 IP 주소, 서브넷마스크, 게이트웨이 주소, 로컬 DNS 서버 주소 등 초기 설정 파라미터와 임대 시간(lease time)을 포함해 DHCP offer message를 broadcast한다. 이때 source는 DHCP 서버의 주소, destination은 255.255.255.255로 설정한다.
❗ DHCP discover message를 broadcast하는 이유 ❗
👉 요청한 클라이언트의 IP를 모르기 때문
3. 클라이언트는 받은 DHCP offer message 중 하나를 선택해 받은 파라미터를 포함해 DHCP request message를 broadcast한다. 이때 source는 할당된 클라이언트의 주소, destination은 DHCP 서버의 주소로 설정한다.
4. DHCP 서버는 확인했다는 의미로 클라이언트에게 DHCP ACK message를 broadcast한다. 이때 source는 DHCP 서버의 주소, destination은 클라이언트의 IP로 설정한다.
❗ 클라이언트의 주소와 DHCP 서버의 주소를 모두 알고 있는데 DHCP request message와 DHCP ACK message를 broadcast하는 이유 ❗
👉 클라이언트는 받은 DHCP offer message 중 하나를 선택하기 때문에 선택된 서버가 아닌 서버에게도 본인의 offer message가 선택되지 않았음을 알 수 있게 하기 위해서 broadcast한다.
왜 DHCP 서버는 IP 주소뿐만 아니라 다른 정보도 같이 보내주는가 ❔❔
DHCP가 보내주는 정보
- 게이트웨이(first-hop router) 주소: 클라이언트가 보내는 메시지의 목적지가 서브넷 외부라면 반드시 게이트웨이를 거치기 때문에 필요하다.
- 로컬 DNS 서버 주소: 도메인 이름을 IP로 매핑하기 위해선 로컬 DNS 서버의 IP를 알아야 한다.
- 서브넷 마스크: 서브넷 마스크를 알아야 같은 서브넷으로 보내는 메시지인지, 서브넷 외부로 보내는 메시지인지 알 수 있다.
'CS > Network' 카테고리의 다른 글
[Network] 라우터 내부에선 무슨 일이 일어날까? (0) 2021.12.12 [Network] IPv6과 Tunneling (0) 2021.12.11 [Network] IP 주소 체계와 Subnet (0) 2021.12.11 [Network] DNS 동작 원리 (0) 2021.09.29 [Network] HTTP vs HTTPS (0) 2021.09.29