{{위키데이터 속성 추적}}
{{IP스택}}
'''동적 호스트 구성 프로토콜'''({{lang|en|Dynamic Host Configuration Protocol}}, '''DHCP''')은 [[호스트]] [[IP]] 구성 관리를 단순화하는 IP 표준이다. 동적 호스트 구성 프로토콜 표준에서는 DHCP 서버를 사용하여 IP 주소 및 관련된 기타 구성 세부 정보를 [[네트워크]]의 DHCP 사용 [[클라이언트]]에게 동적으로 할당하는 방법을 제공한다.

== 역사 ==
1984년, [[디스크리스 노드|디스크리스 워크스테이션]]과 같은 단순 장치들이 동적으로 적절한 IP 주소를 취득할 수 있도록 RFC 903<nowiki/>에 정의된 [[역순 주소 결정 프로토콜]](RARP)이 도입되었다. 그러나 [[데이터 링크 계층]]에서 수행했기 때문에 수많은 서버 플랫폼에서 구현하기가 어려웠으며 서버가 각각의 개별 네트워크 링크에 존재해야만 했다. RARP는 1985년 9월 RFC 951<nowiki/>에 정의된 [[BOOTP]]가 대신하게 되었다. 이를 통해 릴레이 에이전트의 개념이 되어 네트워크를 통해 BOOTP 패킷의 포워드를 허용함으로써 중앙 BOOTP 서버가 수많은 IP 서브넷의 호스트들에 서비스할 수 있게 되었다.<ref>{{웹 인용|url=http://tools.ietf.org/html/rfc951#section-6|title=RFC 951 - Bootstrap Protocol|author=Bill Croft|author2=John Gilmore|date=September 1985|work=Network Working Group}}</ref>

DHCP는 BOOTP에 기반을 두고 있지만, 풀로부터 IP 주소들을 동적으로 할당할 수 있으며 더 이상 사용되지 않는 경우 회수한다. 플랫폼에 특화된 매개변수들을 포함한 다양한 추가적인 구성 변수들을 IP 클라이언트에 전달하는 목적으로 사용할 수도 있다.<ref name="Network+ certification">Network+ Certification 2006 Published By Microsoft Press.</ref> 1993년 DHCP는 RFC 1531에 처음 정의되었지만 편집 과정에서의 오류로 인해 RFC 1541로 거의 즉시 재발행되었다.

4년 뒤 DHCPINFORM 메시지 타입<ref>used for the Web Proxy Autodiscovery Protocol [[Web Proxy Autodiscovery Protocol|WPAD]]</ref> 및 기타 사소한 변경 사항들이 RFC 2131에 추가되었으며 2014년 기준으로 IPv4 네트워크의 표준으로 남아있다.

[[DHCPv6]]은 2003년 RFC 3315에 의해 처음 정의되었으나 수많은 차기 RFC들에 의해 업데이트되고 있다.<ref>RFC 4361, RFC 5494, RFC 6221, RFC 6422, RFC 6644, RFC 7083, RFC 7227, RFC 7283</ref> RFC 3633은 [[프리픽스 위임]]을 위한 DHCPv6을 추가하였으며 [[IPv6|무상태 주소 자동 구성]]은 RFC 3736에 의해 추가되었다.

=== DHCP 버전 ===
DHCP의 경우 각각에 대해서 RFC 로 표준이 정해 져 있으며, 이것에 대해서 DHCP v2,v3 와 같은 개별로 버전 번호가 RFC 표준에서는 SNMP v2,v3 와는 다르게 지정되어 있지 않다.<ref>https://tools.ietf.org/html/rfc2131</ref>
다만 무료로 DHCP 서버 기능을 하는 ISC(Internet Software Consortium) DHCP 서버의 경우 버전 V1 에서V2, V3 라는 형태로 나와 있는데 이것에 대해서도 버전이라는 명칭대신에 일반적으로는 Release 1 , Release 2. Release 3 라는 형태로 불리고 있다.<ref>{{웹 인용 |url=http://www.isc.org/products/DHCP/ |제목=보관된 사본 |확인날짜=2017-07-03 |보존url=https://web.archive.org/web/20080907030145/http://isc.org/products/DHCP |보존날짜=2008-09-07 |url-status=dead }}</ref>
* ISC DHCP Release 1 :
DHCP 릴리즈1은 초기 릴리즈된 배포판에서 버그를 어느정도 수정하여 2년이라는 기간을 거쳐 좀더 안정적인 상태로 수정된 버전이다

* ISC DHCP Release 2
DHCP 릴리즈 2번은 DHCP서버, DHCP 클라이언트 와 DHCP relay agent로 구성이 되며, 특징은 IP 할당이전에 ping을 지원하고 좀 더 효율적으로 잘못 설정된 클라이언트들의 IP 주소 설정을 해제하여 DHCP 인증시 오류를 방지하는 기능이 포함되어 있다.

* ISC DHCP Release 3
릴리즈 3은의 주요한 특징은 선택적으로 DHCP 서버 기능의 동작이 가능하도록 초기화하는 기능과 IP를 할당 받는 클라이언트를 각각 필요한 목적별 구성단위로 묶는 기능이 포함된다. 또한 Relay Agent의 정보가 선택적으로 가능 하도록 하므로, IP 주소를 할당받은 그룹이 되는 POOL 을 각각 필요한 그룹 단위로 분리하여 관리하는 것이 가능하다. 그리고 동적인 DNS 정보를 활용할 수 있는 기능 및 DHCP 인증등이 포함된것이다.

* IPv6 DHCP의 경우 RFC를 통해서 표준이 정해져 있으며, 최신 버전은 IPv6의 주소 자동 구성 기능이 포함된 DHCPv6 - RFC 3736 에 의해서 정의 되어 있다.

== 개요 ==
[[전송 제어 프로토콜|TCP]]/IP 통신을 실행하기 위해 필요한 설정 정보를 자동적으로 할당, 관리하기 위한 통신 규약. RFC 1541에 규정되어 있다. TCP/IP 환경의 통신망에서 IP 주소의 일률적 관리 서비스를 제공한다. 초기 적재 통신 규약(BOOTP)과 마찬가지로 [[사용자 데이터그램 프로토콜]](UDP)상의 프로토콜로서 DHCP 서버는 DHCP 클라이언트의 요구에 따라서 IP 주소를 할당하는 한편, [[BOOTP]]는 [[서버]]/클라이언트 간에 주고받는 것을 담당한다. BOOTP를 확장한 통신 규약으로서 할당된 IP 주소에 임대 기간을 설정할 수 있다는 점이 BOOTP와 다르다.

== 프로토콜 ==
DHCP는 네트워크 관리자들이 조직 내의 네트워크 상에서 IP 주소를 중앙에서 관리하고 할당해줄 수 있도록 해주는 프로토콜이다. [[인터넷]]의 TCP/IP 프로토콜에서는, 각 컴퓨터들이 고유한 IP 주소를 가져야만 인터넷에 접속할 수 있다. 조직에서 컴퓨터 사용자들이 인터넷에 접속할 때, IP 주소는 각 컴퓨터에 반드시 할당되어야만 한다. DHCP를 사용하지 않는 경우에는, 각 컴퓨터마다 IP 주소가 수작업으로 입력되어야만 하며, 만약 컴퓨터가 네트워크의 다른 부분에 속한 장소로 이동되면 IP 주소를 새로이 입력해야 한다. DHCP는 네트워크 관리자가 중앙에서 IP 주소를 관리하고 할당하며, 컴퓨터가 네트워크의 다른 장소에 접속되었을 때 자동으로 새로운 IP 주소를 보내줄 수 있게 해준다.

== DHCP 동작 원리 ==

DHCP 동작 원리는 크게 네 단계로 단말과 서버 간에 통신이 이루어진다.<ref>https://tools.ietf.org/html/rfc2131</ref>

# '''DHCP Discover''': 단말에서 DHCP 서버로 보낸다. 브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF)를 통해서, 단말장비가 DHCP 서버에게 아이피 주소를 할당을 요청하는 것이다
# '''DHCP Offer''': DHCP 서버에서 단말로 보낸다. 브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF)이거나 유니캐스트를 통해서 이루어지며, 단말에서 요청을 한 아이피 주소 정보를 포함한 네트워크 정보의 할당 요청을, DHCP 서버가 받아서 이것에 대해서 응답을 하는 것이며, 이때 아이피 주소 정보 와 단말의 MAC 주소 정보 등을 네트워크 정보와 함께 같이 전송한다.
# '''DHCP Request''': 단말에서 DHCP 서버로 보낸다. 브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF) 로 단말이 받은 아이피 주소 정보를 사용하겠다는 것을 서버로 보내서, 확정을 받기 위한 메시지이다.
# '''DHCP Ack''': DHCP 서버에서 단말로 보낸다. 브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF) 혹은 유니캐스트일수 있다. 단말에서 보낸 DHCP Request 메시지 내의 Broadcast Flag=1이면 DHCP 서버는 DHCP Ack 메시지를 Broadcast로, Flag=0 이면 Unicast로 보내주며, 단말의 MAC 어드레스에 매칭이 되는 IP 주소와 게이트웨이 주소를 확정하여 주는 것이다.

== 임대 ==
DHCP는 주어진 IP 주소가 일정한 시간 동안만 그 컴퓨터에 유효하도록 하는 "임대" 개념을 사용한다. 임대시간은 사용자가 특정한 장소에서 얼마나 오랫동안 인터넷 접속이 필요할 것인지에 따라 달라질 수 있다. DHCP는 사용자들이 자주 바뀌는 학교와 같은 환경에서 특히 유용하다. DHCP는 사용 가능한 IP 주소의 개수보다 더 많은 컴퓨터가 있는 경우에도 IP 주소의 임대시간을 짧게 함으로써 네트워크를 동적으로 재구성할 수 있다. 영구적인 IP 주소를 필요로 하는 웹서버에 대해서는 정적인 주소를 제공한다.

== BOOTP의 대안 ==
DHCP는 네트워크 IP 관리 프로토콜인 BOOTP의 대안으로 사용된다. DHCP가 더욱 진보된 프로토콜이지만, 두 개의 프로토콜 모두 일반적으로 사용된다. 어떤 조직에서는 두 개의 프로토콜 모두를 사용하지만, 동일한 조직에서 그것을 언제, 어떻게 사용할지를 이해하는 것이 무엇보다 중요하다. [[윈도우 NT]]와 같은 몇몇 운영체계에는 DHCP 서버가 딸려 나온다. DHCP 또는 BOOTP 클라이언트는 네트워크가 구성될 수 있도록 각 컴퓨터에 위치하는 프로그램이다.

== IETF 표준 문서 ==
* RFC 2131, Dynamic Host Configuration Protocol
* RFC 2132, DHCP Options and BOOTP Vendor Extensions
* RFC 3046, DHCP Relay Agent Information Option
* RFC 3942, Reclassifying Dynamic Host Configuration Protocol Version Four (DHCPv4) Options
* RFC 4242, Information Refresh Time Option for Dynamic Host Configuration Protocol for IPv6
* RFC 4361, Node-specific Client Identifiers for Dynamic Host Configuration Protocol Version Four (DHCPv4)
* RFC 4436, Detecting Network Attachment in IPv4 (DNAv4)

== 같이 보기 ==
* [[DHCPv6]]
* [[DDNS]]

== 각주 ==
{{각주}}

== 외부 링크 ==
* {{위키공용분류-줄}}

{{전거 통제}}

[[분류:인터넷 표준]]
[[분류:응용 계층 프로토콜]]
[[분류:네트워크 서비스]]