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

  1. 본질: IPv6 주소 체계 중 **링크 로컬 주소(Link-Local Address)**는 랜선이 꽂혀 있는 하나의 방(동일 스위치/허브 공간) 안에서만 통용되는 지역 전용 주소로, 라우터 밖(인터넷)으로는 절대 빠져나갈 수 없는 폐쇄형 내선 번호다.
  2. 무조건적인 자동 생성 (fe80::/10): IPv6를 켜는 순간, 윈도우나 리눅스 OS는 인터넷 개통(공유기 할당) 여부와 상관없이 0.1초 만에 앞머리가 **fe80::**으로 시작하는 링크 로컬 주소를 내 랜카드에 무조건 강제로 박아버린다.
  3. 용도 (생존의 뼈대): 공유기가 죽어 인터넷이 끊겨도, 같은 방에 있는 프린터나 옆자리 PC와 통신할 때 사용하며, 무엇보다 라우터(공유기)와 처음 인사를 나누고 "진짜 인터넷용 공인 IP 좀 주쇼!"라고 협상(NDP)을 시작하기 위한 최초의 '소통용 입(Mouth)' 역할을 수행한다.

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

  • 개념: IPv6 유니캐스트 주소의 한 종류로, 라우터를 넘지 못하는 단일 링크(Broadcast Domain) 내에서만 유효한 주소 (FE80::/10 대역).

  • 필요성: IPv4 시절에는 공유기가 IP를 안 주면(장애) PC가 먹통이 되다가 한참 뒤에 169.254.x.x (APIPA)를 마지못해 부여하며 징징댔다. IPv6 설계자들은 이 멍청한 구조를 갈아엎었다. "아예 처음부터 기계가 태어나자마자(전원이 켜지자마자) 자급자족으로 쓸 수 있는 공짜 기본 주소를 하나 줘버리자! 이 주소로 일단 동네 사람들이랑 라우터한테 인사부터 하고 나서, 인터넷으로 나갈 진짜 주소를 받아오게 만들자!"

  • 💡 비유: 링크 로컬 주소는 갓 태어난 아기에게 부모가 임시로 지어준 **"태명(예: 개똥이)"**과 같습니다. 태명만으로도 집안 식구들끼리(링크 내부)는 "개똥아 밥 먹어~" 하고 완벽하게 소통할 수 있습니다. 하지만 이 아기가 나중에 동사무소(라우터)에 태명을 말하고 정식 출생신고를 마쳐야만, 사회(인터넷)에서 통용되는 진짜 **"주민등록 이름(Global Unicast)"**을 얻고 바깥세상과 소통할 수 있습니다.

📢 섹션 요약 비유: 링크 로컬 주소(fe80::)는 무인도에 표류한 사람들끼리 서로 부르기 위해 임시로 등판에 써 붙인 **"등번호"**입니다. 섬 안에서는 100% 통하지만, 구조대가 와서 육지로 나가면 아무 의미 없는 번호입니다.


Ⅱ. 링크 로컬의 구조와 사이트 로컬의 폐기 (Deep Dive)

1. 링크 로컬 주소의 자동 조립 마법 (SLAAC 기반)

내 PC의 랜선을 꽂으면 다음과 같은 기계적 합체가 일어난다.

  • 앞머리 고정: 무조건 처음 64비트는 FE80:0000:0000:0000 (축약하면 fe80::)으로 고정한다.
  • 뒷머리 생성: 남은 64비트(인터페이스 ID)는, 내 랜카드의 고유한 MAC 주소(48비트)를 뻥튀기 조작(EUI-64 방식)하여 64비트로 만들어 끼워 넣는다.
  • 합체 완료: fe80::[내 MAC을 조작한 64비트]라는 전 세계 유일무이한 링크 로컬 주소가 1초 만에 공짜로 탄생한다. (공유기의 허락조차 필요 없다).
 ┌─────────────────────────────────────────────────────────────┐
 │                IPv6 통신의 시작점 (NDP와 라우터 찾기)            │
 ├─────────────────────────────────────────────────────────────┤
 │                                                             │
 │   [ 내 PC ] IP를 두 개 갖게 됨!                                 │
 │   1. Link-local (fe80::abcd...) ◀─ 켜자마자 자급자족으로 만듦    │
 │                                                             │
 │   * PC의 속마음: "일단 내 방(링크) 사람들과 대화할 입(fe80)은 생겼어. │
 │                이제 진짜 인터넷으로 나갈 주소를 구해보자!"         │
 │                                                             │
 │   2. 라우터 요청: "이 동네 라우터님 계심? (RS 발송)"                │
 │                  (출발지 주소를 방금 만든 fe80::abcd 로 씀!)     │
 │                                                             │
 │   3. 라우터 응답: "오냐 내 주소는 fe80::111 이다! 인터넷 할 거면    │
 │                  네 주소 앞자리에 2001:db8:.. (RA 발송) 써라!"    │
 │                                                             │
 │   4. Global Unicast (2001:db8:abcd...) ◀─ 드디어 밖으로 나갈   │
 │                                             진짜 인터넷 IP 완성! │
 └─────────────────────────────────────────────────────────────┘

2. 라우팅 테이블에서의 절대 법칙

모든 IPv6 지원 라우터는 출발지나 목적지가 fe80::으로 시작하는 패킷을 받으면, 어떤 짓을 해도 다른 포트로 라우팅(포워딩) 해주지 않고 가차 없이 차단(Drop)하거나 무시한다. "이건 너희 동네 안에서만 쓰는 번호야! 나보고 다른 동네로 배달하라고 하지 마!"라는 엄격한 격리 룰이다.

3. 사이트 로컬 주소 (Site-Local Address)의 폐기

  • 과거엔 IPv4의 '사설 IP(192.168.x.x)'와 완벽히 똑같은 역할을 하라고 **Site-Local 주소(fec0::/10)**라는 것도 만들었었다.
  • 하지만 IPv6는 기본적으로 공인 IP가 무한대라서 모든 기기가 공인 IP를 달고 살 수 있다. "어차피 널린 게 진짜 IP인데, 귀찮게 사설 IP 만들고 공유기(NAT)를 또 돌려야 해?"라는 회의론이 터졌다.
  • 결국 IETF(국제인터넷표준화기구)는 **"사이트 로컬 주소는 너무 복잡하고 쓸모없으니 공식적으로 폐기(Deprecated)한다!"**라고 선언했다. (현재는 ULA라는 대체 규격이 있으나 거의 안 쓴다).

📢 섹션 요약 비유: fe80::으로 시작하는 링크 로컬 주소는 마치 군대의 **"무전기 주파수"**와 같습니다. 우리 소대원들끼리 작전을 짤 때는 무전기(fe80)로 완벽히 소통하지만, 국방부 장관(인터넷 서버)에게 무전기(fe80)로 백날 연락해 봐야 거리가 닿지 않아 통신이 불가능합니다.