핵심 인사이트 (3줄 요약)

  1. 본질: NDP(Neighbor Discovery Protocol)는 IPv4 시절 난잡하게 흩어져 있던 ARP(MAC 찾기), ICMP 라우터 찾기, DAD(IP 충돌 검사) 기능들을 ICMPv6라는 하나의 거대한 통제 센터 안으로 깔끔하게 통합한 IPv6 전용 이웃 탐색 프로토콜이다.
  2. 브로드캐스트의 소멸: IPv4의 ARP는 동네 전체를 시끄럽게 하는 브로드캐스트 방식이었으나, NDP는 내가 찾고자 하는 대상에게만 콕 집어서 묻는 '솔리시티드 노드 멀티캐스트(Solicited-Node Multicast)' 방식을 도입해 네트워크 소음(CPU 인터럽트)을 완벽히 제거했다.
  3. 4대 핵심 메시지 (RS/RA, NS/NA): 라우터를 찾고 앞자리 IP를 받아오는 RS/RA (Router Solicitation / Advertisement) 세트와, 옆자리 PC의 MAC 주소를 찾고 IP 충돌을 검사하는 NS/NA (Neighbor Solicitation / Advertisement) 세트의 핑퐁 교환으로 모든 통신 인프라가 완성된다.

Ⅰ. 개요 및 필요성 (Context & Necessity)

  • 개념: IPv6 환경에서 같은 링크(서브넷) 상에 있는 호스트나 라우터의 존재, 주소, 상태를 탐색하고 유지하는 핵심 제어 프로토콜 (RFC 4861). ICMPv6를 기반으로 동작한다.

  • 필요성: IPv4는 낡은 아파트였다. MAC 주소를 찾으려면 ARP라는 독립된 방송 시스템을 써야 했고, 핑을 치려면 ICMP를 썼으며, 공유기에서 IP를 받으려면 DHCP라는 외부 용역을 불러야 했다. 게다가 이들은 틈만 나면 동네방네 브로드캐스트(방송)를 때려대서 아파트가 항상 시끄러웠다. IPv6 설계자들은 "차세대 인터넷은 우아해야 한다! 잡다한 기능들을 다 부수고 '이웃 탐색(NDP)'이라는 하나의 우아한 카카오톡 단톡방(멀티캐스트) 시스템으로 통합해 버리자!"라고 결심했다.

  • 💡 비유:

    • IPv4 (ARP): 아파트 복도에서 "105호 사는 사람 나와봐라!!" 하고 소리치는 동네 방송. (모든 집이 문을 열어보고 아니면 닫아야 함).
    • IPv6 (NDP): 아파트 게시판에 **"끝자리가 5호인 사람들만 모이는 단톡방(멀티캐스트)"**을 만들어 두고, 그 방에 들어가 "105호 분 계시나요?"라고 조용히 묻는 스마트폰 알림. (나머지 101, 102호 사람들은 알람조차 울리지 않아 편안히 잠을 잠).

📢 섹션 요약 비유: NDP는 흩어져 있던 주민센터(DHCP), 114 전화번호부(ARP), 파출소(충돌 검사) 업무를 **"ICMPv6"**라는 하나의 거대한 스마트폰 통합 앱으로 합쳐버린 궁극의 전자정부 시스템입니다.


Ⅱ. NDP의 4대 핵심 메시지와 동작 원리 (Deep Dive)

NDP는 크게 라우터와 소통하는 부분(RS/RA)과 이웃 PC와 소통하는 부분(NS/NA)으로 나뉜다.

1. 라우터와의 소통 (SLAAC 자동 주소 완성)

내가 인터넷으로 나갈 공인 IP 앞자리가 필요할 때 라우터와 대화하는 과정이다.

  • RS (Router Solicitation, Type 133): PC ──▶ 라우터
    • "이 동네 라우터님 계시나요? 저 앞자리 주소(Prefix) 좀 주세요!"
  • RA (Router Advertisement, Type 134): 라우터 ──▶ PC
    • "오냐, 나 여기 있다. 우리 동네 앞자리는 2001:db8:: 이고, 나는 기본 게이트웨이야!"
    • (참고: 라우터는 굳이 안 물어봐도 자발적으로 주기적으로 RA 메시지를 동네방네 뿌린다).

2. 이웃과의 소통 (ARP 대체 및 충돌 검사)

김대리 PC(2001:db8::20)로 엑셀 파일을 보내기 위해 MAC 주소를 물어보는 과정이다.

  • NS (Neighbor Solicitation, Type 135): 내 PC ──▶ 김대리 PC
    • "혹시 IP가 2001:db8::20이신 분, MAC 주소 좀 알려주세요!"
    • [마법의 멀티캐스트]: 이때 패킷은 브로드캐스트로 날아가지 않는다. 목적지 IP를 FF02::1:FF00:20이라는 특수한 솔리시티드 노드 멀티캐스트 주소로 변환해서 쏜다. 이 주소는 20으로 끝나는 애들만 반응하는 특수 주파수라서, 30번이나 40번 PC는 랜카드 칩셋 단위에서 패킷을 기계적으로 무시(Drop)하므로 CPU가 전혀 방해받지 않는다.
  • NA (Neighbor Advertisement, Type 136): 김대리 PC ──▶ 내 PC
    • "저 부르셨어요? 제 MAC 주소는 AA:BB:CC... 입니다!" (조용히 유니캐스트로 대답함).
 ┌─────────────────────────────────────────────────────────────┐
 │                NDP를 통한 이웃 탐색(NS/NA) 시나리오              │
 ├─────────────────────────────────────────────────────────────┤
 │                                                             │
 │   [ 내 PC ]                                  [ 김대리 PC ]   │
 │   (IP: ::10, MAC: AA)                     (IP: ::20, MAC: BB)│
 │                                                             │
 │   1. "IP 끝자리 20번인 분, MAC 주소 좀!" (NS 발송)               │
 │   목적지 IP: 솔리시티드 멀티캐스트 (FF02::1:FFxx:xxxx)             │
 │   ─────────────────────────────────────────▶           │
 │               (동네 다른 PC들은 듣고도 무시함)                    │
 │                                                             │
 │   2. "저 여깄어요! MAC은 BB 입니다!" (NA 응답)                 │
 │   목적지 IP: 내 PC의 유니캐스트 주소 (::10)                       │
 │   ◀─────────────────────────────────────────            │
 │                                                             │
 │   ▶ 결과: 브로드캐스트의 소음 공해 없이 조용하고 우아하게 MAC 획득 성공!│
 └─────────────────────────────────────────────────────────────┘

3. DAD (Duplicate Address Detection - IP 충돌 검사)

내 컴퓨터가 스스로 IP를 만들었다. 남이 혹시 이 IP를 쓰고 있는지 확인해야 한다.

  • 내 PC는 자기 자신이 방금 만든 IP(::10)를 향해 **NS (Type 135)**를 날려본다. (허공에 "저기요~ 10번 쓰는 분?" 하고 물어봄).
  • 만약 누군가 **NA (Type 136)**로 "어 나 10번 쓰는데?"라고 대답하면 IP 충돌이 발생한 것이므로 즉시 그 IP 사용을 포기한다.

📢 섹션 요약 비유: NDP의 진정한 위대함은 **"소음 통제"**에 있습니다. 과거엔 한 명이 길을 찾으면 온 동네 사람이 다 깨서 대답해야 했지만, 이제는 **"자기 이름 끝자리와 똑같은 무전기 채널"**만 열어두고 자기 채널이 불릴 때만 대답하는 궁극의 평화로운 동네가 되었습니다.