1. Bibliothèque
  2. IP 주소
  3. 주소 할당

Mis à jour il y a 1 mois

카페에서 노트북을 엽니다. 몇 초 후, 인터넷에 연결됩니다.

그런데 방금 일어난 일의 중심에는 역설이 숨어 있습니다.

노트북은 네트워크에서 통신하려면 IP 주소가 필요합니다. IP 주소를 요청하려면 이미 통신할 수 있어야 합니다. 주소 없이는 말할 수 없고, 말하지 않고는 주소를 받을 수 없습니다.

이것이 바로 부트스트랩 역설입니다. DHCP—동적 호스트 구성 프로토콜—은 이 문제를 해결하는 방법입니다.

부트스트랩 역설

기기가 처음으로 네트워크에 연결될 때, 그 기기에는 네트워크 정체성이 없습니다. IP 주소도 없습니다. 대화에 참여할 방법도 없습니다.

단순한 해결책: 수동 설정. 연결하기 전에 누군가가 주소를 할당해 줍니다. 수십 대의 기기가 있는 네트워크에서는 이 방법이 통했습니다. 하지만 수천 대의 기기가 끊임없이 들어오고 나가고, 스마트폰이 하루에 수십 개의 Wi-Fi 네트워크에 연결되는 세상에서는 완전히 실패합니다.

DHCP는 어둠 속에서 시작되는 대화를 통해 이 문제를 해결합니다—기기가 아무런 정체성도 없는 상태에서부터요. 고유한 주소 없이도 통신할 수 있도록, 기기는 브로드캐스트 메시지를 이용해 허공에 외칩니다—로컬 네트워크의 모든 이에게 전송되는 공지입니다. DHCP 서버는 이 외침에 귀를 기울이고 응답하며, 인식을 통해 정체성을 부여합니다.

이것은 더 깊은 패턴을 반영합니다. 첫 직장을 얻으려면 경력이 필요하지만, 경력을 쌓으려면 직장이 필요합니다. 신용을 얻으려면 신용 이력이 필요하지만, 신용 이력을 쌓으려면 신용이 필요합니다. 네트워크도 같은 역설에 직면했습니다. DHCP는 정교하게 짜인 절차를 통해 이를 해결했습니다.

DORA 과정

DHCP는 네 단계로 작동합니다: Discovery(발견), Offer(제안), Request(요청), Acknowledgment(확인).

1. Discovery: "거기 누구 있나요?"

기기가 처음 연결되면, DHCP Discover 메시지를 보냅니다—로컬 네트워크 전체에 보내는 브로드캐스트 외침입니다. 기기는 Layer 2에서 MAC 주소 FF:FF:FF:FF:FF:FF를, Layer 3에서 IP 주소 255.255.255.255를 사용합니다.

기기가 하는 말은 이겁니다: "저는 존재하지만 주소가 없습니다. 누가 도와주실 수 있나요?"

아직 IP 주소가 없기 때문에, 네트워크 카드에 새겨진 고유한 하드웨어 식별자인 MAC 주소로 자신을 식별합니다. 메시지는 출발지 IP 0.0.0.0("아무것도 없음"을 의미하는 주소)에서 목적지 255.255.255.255("모두 들어라"를 의미하는 주소)로, UDP 포트 67을 통해 전달됩니다.

2. Offer: "이것을 드릴 수 있습니다"

네트워크의 DHCP 서버들이 이 Discover 메시지를 받고 DHCP Offer로 응답합니다: "들었습니다. 사용할 수 있는 IP 주소와 필요한 모든 것을 드리겠습니다."

Offer에는 다음이 포함됩니다:

  • 서버 풀에서 가져온 사용 가능한 IP 주소
  • 네트워크 경계를 정의하는 서브넷 마스크
  • 임대 기간—해당 주소를 사용할 수 있는 기간
  • 서버 자체의 IP 주소
  • 기타 설정: 게이트웨이, DNS 서버, 도메인 이름

여러 DHCP 서버가 존재하는 경우(대규모 네트워크에서 이중화를 위해 흔히 사용), 클라이언트는 여러 Offer를 받을 수도 있습니다.

3. Request: "당신을 선택합니다"

클라이언트는 모든 Offer를 검토하고 하나를 선택합니다—보통 가장 먼저 도착한 것으로요. 그런 다음 네트워크 전체에 DHCP Request를 브로드캐스트합니다: "서버 X의 제안을 수락하고 IP 주소 Y를 사용하겠습니다."

선택한 서버에 직접 알리지 않고 왜 브로드캐스트할까요? 두 가지 이유가 있습니다. 첫째, 다른 DHCP 서버들이 자신이 선택되지 않았다는 것을 알아야 제안했던 주소들을 풀로 돌려보낼 수 있습니다. 둘째, 혹시 다른 기기가 이미 그 IP를 사용하고 있다면, 이 Request를 보고 이의를 제기할 수 있습니다.

Request는 여전히 출발지 IP 0.0.0.0에서 옵니다. 클라이언트는 주소의 소유권을 주장하는 것이 아니라 사용 허가를 요청하는 것입니다.

4. Acknowledgment: "이제 당신 것입니다"

선택된 서버는 DHCP Acknowledgment로 응답하며 공식적으로 사용 허가를 부여합니다. 이것은 IP 주소, 서브넷 마스크, 임대 기간, 그리고 기본 게이트웨이와 DNS 서버 같은 추가 설정을 확인해 줍니다.

클라이언트는 이 ACK를 받은 후에야 할당된 IP로 인터페이스를 설정합니다. 부트스트랩 역설이 해결됩니다. 기기는 대화를 통해 정체성을 협상했습니다. 이제 말할 수 있습니다.

마지막 안전 확인: 클라이언트는 새로 할당받은 IP에 대해 ARP 프로브를 수행하여 다른 기기가 이미 사용하고 있지 않은지 확인합니다. 충돌이 감지되면 DHCP Decline을 보내고 전체 과정이 다시 시작됩니다.

IP 주소 그 이상

DHCP는 IP 주소 이상을 제공합니다. 기기에 필요한 모든 것을 하나의 거래로 묶어 완전한 설정을 제공합니다:

서브넷 마스크: 네트워크 경계를 정의합니다. 255.255.255.0(또는 /24) 마스크는 처음 세 옥텟이 네트워크를 식별하고 마지막 옥텟이 개별 호스트를 식별한다는 의미입니다.

기본 게이트웨이: 다른 네트워크로 나가는 출구 역할을 하는 라우터입니다. 이것이 없으면 기기는 같은 로컬 서브넷의 다른 기기들과만 통신할 수 있습니다—외딴섬 신세가 됩니다.

DNS 서버: connected.app 같은 이름을 IP 주소로 변환해 주는 서버의 주소입니다. DNS가 없으면 모든 웹사이트의 IP 주소를 외워야 할 것입니다.

임대 시간: 할당이 유효한 기간입니다. 일반적인 임대 기간은 몇 시간에서 며칠까지입니다. 이를 통해 네트워크를 떠난 기기의 주소를 회수할 수 있습니다.

NTP 서버: 동기화를 위한 시간 서버—보안 인증서, 로그, 분산 시스템에 매우 중요합니다.

대안—각 기기마다 모든 설정값을 수동으로 입력하는 것—은 수십 대 이상의 기기가 있는 네트워크에서는 악몽입니다.

DHCP 서버는 어디에 있을까?

가정용 라우터: 대부분의 가정 네트워크에서 라우터가 DHCP 서버 역할을 합니다. 새 스마트폰을 Wi-Fi에 연결하는 즉시 인터넷에 접속할 수 있는 이유가 바로 이것입니다—라우터가 모든 것을 자동으로 설정해 주었기 때문입니다.

기업용 서버: 대규모 환경에서는 전용 DHCP 서버가 장애 조치 이중화, 상세 로그, Active Directory 통합을 갖추고 수천 대의 기기를 처리합니다.

클라우드 인프라: AWS, Azure, Google Cloud에서는 플랫폼 자체가 DHCP를 제공합니다. 가상 머신을 시작하면 클라우드 공급자의 DHCP 서비스로부터 자동으로 설정을 받습니다.

릴레이 에이전트: 여러 서브넷에 걸친 네트워크에서 DHCP 릴레이 에이전트는 세그먼트 간에 브로드캐스트 메시지를 전달하여, 중앙 서버가 원격 클라이언트에 서비스를 제공할 수 있게 해줍니다. 브로드캐스트 트래픽은 기본적으로 라우터 경계를 넘지 않습니다—릴레이가 이 문제를 해결합니다.

BOOTP에서 DHCP로

DHCP는 1985년에 정의된 부트스트랩 프로토콜(BOOTP)에서 발전했습니다. BOOTP는 중앙화된 설정을 위한 릴레이 에이전트를 도입했지만, 정적 할당을 사용했습니다: 각 기기는 서버 데이터베이스에 수동으로 설정된 MAC 주소를 기반으로 항상 같은 IP를 받았습니다. 동적 풀도 없었고, 임대 개념도 없었습니다.

네트워크가 유동적으로 변하면서—노트북, 모바일 기기, 임시 연결—정적 할당은 더 이상 유지하기 어려워졌습니다.

1997년 표준화된 DHCP는 오늘날 우리가 의존하는 혁신들을 추가했습니다: 주소를 일시적으로 할당하고 회수하는 동적 주소 풀, 특정 기간 동안의 임대 메커니즘, 풍부한 설정 옵션. 당시 정의된 핵심 프로토콜은 거의 30년이 지난 지금도 수십억 대의 기기에 서비스를 제공하고 있습니다.

IPv6에서의 DHCP

IPv6는 서버 없는 대안으로 DHCP의 지배적 위치에 도전했습니다.

SLAAC: 서버 없이 스스로 설정하기

SLAAC(상태 비저장 주소 자동 설정)을 사용하면 기기들은 DHCP 서버 없이 스스로 IPv6 주소를 설정합니다. 라우터가 네트워크 프리픽스를 브로드캐스트하면, 기기들은 자신의 식별자와 결합하여 완전한 주소를 만듭니다.

관리할 서버도 없습니다. 고갈될 주소 풀도 없습니다. 임대 추적도 없습니다.

하지만 SLAAC는 원래 DNS 서버 주소를 전달할 수 없었습니다. 이후 확장을 통해 이 문제가 해결되었지만, 운영 체제에 따라 지원이 다릅니다.

DHCPv6

DHCPv6는 IPv6에도 익숙한 방식을 가져옵니다: 상세 로그를 갖춘 중앙화된 주소 할당, 그리고 DNS, NTP, 도메인 설정.

두 방식의 공존

오늘날 대부분의 IPv6 네트워크는 두 가지를 모두 사용합니다: 주소는 SLAAC, DNS 및 기타 설정은 DHCPv6.

한 가지 복잡한 점이 있습니다: Android는 주소 할당을 위한 DHCPv6를 의도적으로 지원하지 않습니다—SLAAC만 지원합니다. 이 철학적 입장은 DHCPv6 전용 네트워크가 Android 기기에서 작동하지 않음을 의미합니다. 수십억 대의 스마트폰 때문에 네트워킹 세계도 결국 이에 맞춰야 했습니다.

DHCP가 중요한 이유

DHCP는 보이지 않는 인프라입니다. 문제가 생겼을 때만 알아차립니다—제대로 된 IP 대신 169.254.x.x("네트워크 고아가 되었습니다"를 의미하는 자가 할당 주소)를 보게 될 때처럼요.

기기가 새로운 Wi-Fi에 즉시 연결되어 모든 것이 잘 작동할 때, 그 이유는 DHCP입니다. 노트북이 집에서 회사로 이동해도 수동 설정 없이 작동할 때, 그 이유도 DHCP입니다.

DHCP 이전에는 관리자들이 모든 기기에 IP 주소를 수동으로 설정하고, 할당을 추적하는 스프레드시트를 유지하며, 설정을 업데이트하기 위해 직접 기기를 방문해야 했습니다. 수천 대 규모의 네트워크에서는 여러 사람이 전업으로 해야 하는 일이었습니다.

DHCP는 이 노동 집약적인 수동 과정을 자동으로 스스로 돌아가는 시스템으로 탈바꿈시켰습니다. DHCP는 우리가 당연하게 여기는 유동적이고 모바일하며 다중 네트워크 세계를 가능하게 합니다—어느 카페에 들어가서 Wi-Fi에 연결하면, 그 네트워크 구조에 대해 아무것도 몰라도 즉시 인터넷에 접속할 수 있는 세상.

정체성은 타고나는 것이 아닙니다. 그것은 협상을 통해 얻어지는 것, 인정받음으로써 주어지는 것입니다. DHCP는 대부분의 시스템이 이 문제를 인식하기도 전에 이것을 이해했습니다.

핵심 정리

  • DHCP는 부트스트랩 역설을 해결합니다—통신하려면 주소가 필요하고, 주소를 받으려면 통신해야 합니다—아무런 네트워크 정체성이 없어도 보낼 수 있는 브로드캐스트 메시지 덕분입니다.
  • DORA 과정(Discovery, Offer, Request, Acknowledgment)은 주소 할당과 충돌 감지를 처리하는 네 단계의 협상입니다.
  • DHCP는 하나의 거래로 완전한 설정을 제공합니다: IP 주소, 서브넷 마스크, 게이트웨이, DNS 서버, 임대 시간 등 모든 것을.
  • DHCP 서버는 가정용 라우터에서 전용 기업 서버, 클라우드 인프라까지 다양하며, 릴레이 에이전트를 통해 네트워크 경계를 넘어 운용됩니다.
  • IPv6는 SLAAC를 서버 없는 대안으로 도입했지만, 대부분의 네트워크는 혼합 방식을 사용합니다: 주소는 SLAAC, DNS 및 기타 설정은 DHCPv6.
  • 이 프로토콜의 설계는 거의 30년이 지났음에도 수십억 대의 기기에 서비스를 제공하며 근본적으로 변하지 않을 만큼 견고합니다.

DHCP에 관해 자주 묻는 질문

DHCP 서버가 응답하지 않으면 어떻게 되나요?

기기는 기다리고, 재시도하고, 결국 포기합니다. 대부분의 시스템에서는 그 후 169.254.x.x 범위의 주소를 스스로 할당합니다(APIPA 또는 링크-로컬 주소 지정이라고 합니다). 이를 통해 같은 네트워크 세그먼트의 기기들끼리는 통신할 수 있지만, 게이트웨이나 DNS 서버가 없어서 인터넷에는 접속할 수 없습니다.

두 기기가 DHCP로부터 같은 IP 주소를 받을 수 있나요?

드물지만 가능합니다—보통 서버 잘못 설정이나 데이터베이스 손상으로 발생합니다. 그래서 DORA 과정에는 안전 장치가 포함되어 있습니다: DHCP Request는 충돌이 감지될 수 있도록 브로드캐스트되고, 클라이언트는 할당된 주소를 사용하기 전에 ARP 프로브를 수행합니다. 충돌이 발견되면 클라이언트는 주소를 거부하고 처음부터 다시 시작합니다.

DHCP 임대는 왜 만료되나요?

임대는 주소 고갈을 방지합니다. 임대가 없다면, 한 번 연결했던 기기는 네트워크를 떠난 후에도 주소를 영원히 보유하게 됩니다. 임대는 주소가 재사용을 위해 풀로 돌아오도록 보장합니다. 계속 연결된 기기는 임대를 자동으로 갱신합니다—보통 임대 기간이 절반쯤 지났을 때.

특정 기기에 특정 IP를 예약할 수 있나요?

네. 대부분의 DHCP 서버는 특정 IP를 기기의 MAC 주소에 고정하는 "예약" 기능을 지원합니다. 기기는 여전히 DORA 과정을 거치지만, 항상 같은 주소를 받습니다. DHCP의 편의성과 정적 할당의 예측 가능성을 동시에 누릴 수 있습니다—프린터, 서버, 또는 안정적으로 찾아야 하는 모든 기기에 유용합니다.

DHCP와 정적 IP 할당의 차이점은 무엇인가요?

정적 할당에서는 각 기기에 IP 주소, 서브넷 마스크, 게이트웨이, DNS를 수동으로 설정합니다. 기기는 DHCP 서버에 접촉하지 않습니다. DHCP에서는 기기가 자동으로 설정을 요청합니다. 정적은 예측 가능하지만 확장이 어렵고, DHCP는 확장성이 있지만 작동하는 서버가 필요합니다. 많은 네트워크에서 두 가지를 모두 사용합니다: 대부분의 기기에는 DHCP, 인프라에는 정적 또는 예약 주소.

출처

Cette page vous a-t-elle été utile ?

😔
🤨
😃