DHCP
Dynamic Host Configuration Protocol · 동적 호스트 구성 프로토콜
는 클라이언트에게 주소를 일정 시간 임대하고 마스크·게이트웨이· 등의 옵션을 제공하는 프로토콜이다. DHCPv4의 와 의 DHCPv6는 별도 메시지 체계이며 기본 게이트웨이를 얻는 방식도 다르다.
밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.
01무엇이고, 어떤 일을 하나
- 주소 풀과 임대 상태를 중앙 관리하여 수동 주소 중복과 설정 부담을 줄인다.
- 클라이언트에게 주소뿐 아니라 서비스 접근에 필요한 네트워크 옵션을 전달한다.
- 갱신·재결합·해제와 충돌 통보로 시간이 지나며 바뀌는 주소 사용 상태를 관리한다.
02어떤 순서로 동작하나
- Discover
INIT 클라이언트는 아직 주소가 없어 보통 0.0.0.0:68에서 제한 브로드캐스트로 서버를 찾는다.
- Offer
서버는 의 후보 주소와 옵션을 제안한다. 여러 서버가 응답할 수 있으며 제안은 최종 사용 확정이 아니다.
- Request
클라이언트는 Requested IP Address와 선택한 Server Identifier를 넣어 요청한다. 브로드캐스트하면 다른 서버도 자신의 제안이 선택되지 않았음을 알 수 있다.
- ACK
선택한 서버가 임대와 설정을 승인한다. 클라이언트는 주소를 정상 사용하기 전에 임대 조건과 충돌 여부를 최종 확인하며, 충돌을 발견하면 해당 주소를 사용하지 않는다.
- 충돌 여부에 따른 분기
충돌이 없으면 임대를 사용한다. 충돌을 발견하면 으로 알리고 새 주소 획득 절차를 시작한다.
- 갱신과 재바인딩
중 에 이르면 기존 서버로 를 유니캐스트하여 연장을 시도한다. ACK 없이 에 이르면 에서 브로드캐스트하여 다른 서버도 응답할 수 있게 한다.
- 연장 성공 또는 사용 중단
유효한 ACK를 받으면 새 임대 조건으로 를 이어 간다. NAK을 받거나 갱신 없이 임대가 끝나면 그 주소 사용을 중단하고 새 설정 획득 절차로 돌아간다.
03먼저 알아둘 용어와 구성요소
- 주소를 사용할 수 있는 유효 시간과 서버의 할당 기록이다.
- ID다. 요청과 관련 응답을 대응시키는 32비트 식별 값이다.
- 임대 연장 시도를 시작하는 시간이다. 서버가 별도 값을 주지 않으면 보통 임대 기간의 50%를 사용한다.
- 재바인딩을 시작하는 시간이다. 별도 값이 없으면 보통 임대 기간의 87.5%를 사용한다.
- DHCPv4 신규 임대의 대표 흐름인 Discover, Offer, Request, ACK의 머리글자를 묶은 이름이다.
- 클라이언트가 사용할 서버와 설정을 찾기 위해 보내는 메시지다.
- 서버가 제공할 수 있는 주소와 설정 조건을 제안하는 메시지다.
- 클라이언트가 선택한 임대 또는 기존 임대의 확인·연장을 요청하는 메시지다. 상태에 따라 목적지와 필드가 달라진다.
- 서버가 임대와 설정을 승인하여 클라이언트에게 알려 주는 메시지다.
- 클라이언트가 요청한 주소 상태를 인정할 수 없음을 서버가 알리는 메시지다.
- 클라이언트가 제공받은 주소의 충돌을 발견했음을 서버에 알리는 메시지다.
- 클라이언트가 임대받은 주소와 설정을 사용하는 상태다.
- 이후 기존 서버를 대상으로 임대 연장을 시도하는 상태다.
- 이후 기존 서버에 한정하지 않고 임대 연장을 시도하는 상태다.
- Gateway IP Address 필드다. 릴레이가 클라이언트가 속한 네트워크를 서버에 알리고 응답 경로를 정하는 데 사용한다.
- Client IP Address 필드다. 이미 주소를 알고 사용하는 클라이언트의 주소를 나타내는 상태에서 사용한다.
- Your IP Address 필드다. 서버가 클라이언트에게 제안하거나 할당하는 주소를 담는다.
- Requested IP Address 옵션이다. 클라이언트가 원하는 주소를 나타낸다.
- Server Identifier 옵션이다. 관련 서버를 식별한다.
- Agent Information 옵션이다. 릴레이 경로의 회선·단말 위치 식별 정보를 전달할 수 있다.
실습: 주소 풀·클라이언트 임대·두 서버의 Offer 비교
풀 설정이 클라이언트 주소로 이어지는 과정과 복수 Offer에서 한 임대가 확정되는 과정을 구분한다.
실습 구성과 전제
- 첫 사례는 192.168.0.1 라우터와 VPCS, 두 번째는 .254·.253 서버의 별도 캡처다. 서로 다른 실행이다.
- 주소 풀의 제외 범위와 게이트웨이 주소를 먼저 정한다. 명령의 풀 이름 LAB은 재구성한 이름이다.
주소 풀과 제외 범위 구성
- 네트워크는 /24이며 .1~.9는 고정 장치에 사용하도록 제외한다. default-router는 클라이언트에게 줄 옵션이고 라우터 자신의 인터페이스 주소 설정을 대신하지 않는다.
- 풀 이름은 로컬 관리 이름이다. 다른 서버의 풀 이름과 같다고 동일 풀을 공유하는 것은 아니다.
textip dhcp excluded-address 192.168.0.1 192.168.0.9 ip dhcp pool LAB network 192.168.0.0 255.255.255.0 default-router 192.168.0.1 exit interface FastEthernet0/0 ip address 192.168.0.1 255.255.255.0 no shutdown실제 풀·제외 범위를 반영한 IOS 재구성 예시
확인 기준서버 인터페이스 .1/24와 풀 네트워크가 일치하며 제외 주소를 동적으로 배정하지 않아야 한다.
주소가 없던 PC의 임대 결과 확인
- VPCS의 show ip는 초기 주소 0.0.0.0/0을 보인다. ip 이후 .10/24와 게이트웨이 .1이 출력된다.
- 이 결과는 첫 가용 주소가 .10이었던 해당 실행이다. 모든 구현이 항상 가장 작은 주소부터 배정한다고 일반화하지 않는다.
textPC1> ip dhcp PC1> show ip R1# show ip dhcp binding R1# show ip dhcp pool실습 흐름을 재구성한 명령 예시. 장치·인터페이스 이름은 구성에 맞춰 사용한다.
원본 크기로 보기 ↗- 초기 IP/MASK는 0.0.0.0/0, GATEWAY도 0.0.0.0이다.
- ip dhcp 뒤 IP 192.168.0.10/24 GW 192.168.0.1이 보인다.
확인 기준클라이언트 값과 서버의 임대 테이블을 대조한다.
별도 두 서버 사례의 거래 식별
- 같은 ID에 .254와 .253의 Offer가 보인다. Offer 개수를 최종 임대 개수로 읽지 않는다.
- Discover는 0.0.0.0에서 브로드캐스트로 향하며 68→67이다. Request와 ACK를 이어서 읽고 선택 서버는 Request의 Server Identifier 옵션으로 확정한다.
원본 크기로 보기 ↗- 동일 거래에 서로 다른 두 서버의 Offer가 보인다.
- Discover의 출발지 0.0.0.0, 목적지 255.255.255.255와 UDP 68→67이 보인다.
확인 기준화면에 접히거나 잘린 옵션값을 추정하지 않고 상세 트리에서 확인한다.
응답의 유니캐스트와 BOOTP op 구분
- 선택한 Offer는 67→68이며 제안받을 클라이언트를 향한 유니캐스트다. 응답이 항상 브로드캐스트라는 설명은 맞지 않는다.
- Boot Reply (2)는 BOOTP op이며 Offer 유형 옵션과 구분한다. ACK 이후의 는 주소 사용 과정의 추가 관찰이다.
원본 크기로 보기 ↗- Offer가 192.168.0.254에서 192.168.0.1로 향한다.
- UDP 67→68 및 Message type Boot Reply (2)가 보인다.
확인 기준서버의 ACK와 클라이언트 주소 적용을 함께 확인한다.
실습에서 확인한 동작 원리
- 풀·제외·인터페이스·옵션은 각각 다른 구성 요소다.
- 는 거래 식별자와 클라이언트 식별자를 묶어 추적해야 한다.
동작·명령 참고 문서
04예제로 따라가기
- 클라이언트가 =0x12345678로 Discover를 보낸다. 릴레이 주소는 192.0.2.1이고 서버 A·B가 서로 충돌하지 않는 풀에서 주소를 제안하는 예다. A는 192.0.2.100, B는 192.0.2.150을 같은 거래에 대한 Offer로 제안한다. Offer를 두 개 받았다고 클라이언트가 두 주소를 동시에 임대로 사용하지 않는다.
- 클라이언트는 를 연결해 Requested IP=192.0.2.100, Server Identifier=A인 Request를 보낸다. B도 이를 보고 자신의 제안이 선택되지 않았음을 판단할 수 있다. A의 ACK에 있는 임대·마스크·라우터 옵션을 확인하고 주소 중복 확인을 수행한다. 충돌이 드러나면 Decline으로 알리고 그 주소를 정상 주소로 사용하지 않는다.
- 성공한 임대가 3600초이고 ·가 별도 지정되지 않으면 기본 비율로 =1800초, =3150초다. 갱신 성공 시 받은 새 임대 정보를 기준으로 시간 상태가 다시 정해진다.
05혼동하기 쉬운 점과 확인 기준
- 클라이언트 구간에서 Discover가 보이지만 서버 구간에 없으면 helper 적용 인터페이스·서버 경로·전달 정책을 좁힌다. 릴레이 설정은 클라이언트 브로드캐스트를 받는 인터페이스와 연결된다.
- 서버가 Discover를 받아도 가 가리키는 링크의 풀이 없거나 주소가 소진되면 정상 Offer를 만들지 못할 수 있다. 서버 자체 인터페이스의 만 보는 것으로는 부족하다.
- 서버가 ACK를 송신한 증거와 릴레이 수신·클라이언트 전달을 분리한다. 서버의 반환 경로와 릴레이가 사용하는 유니캐스트·브로드캐스트 전달 조건을 함께 본다.
06상세 노트 · 실습 자료
헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.
함께 보는 학습 자료
아래 공식 자료를 본문의 개념·예제와 함께 읽어 보세요. 자료별로 확인할 위치와 관찰할 내용을 적었습니다.
RFC 2131 §4.4·Figure 5: 클라이언트 상태 기계
이후 갱신·재바인딩·만료를 읽어 상태별 필드가 달라지는 이유를 이해한다.
- SELECTING·INIT-REBOOT·의 필드 차이
- §4.4.5의 유니캐스트와 브로드캐스트
- 또는 임대 만료의 사용 중단
공식 문서 · 표준
기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.