The next-generation Internet Protocol: IPv6

Contents
1️⃣ IPv6
2️⃣ ICMPv6
Summary of IPv6

오늘날 인터넷을 사용하는 환경은 굉장히 다양한 형태의 단말기가 끊임 없이 등장하고 있다. 10년 20년 전만하더라도 인터넷을 사용할수있는 장치는 데스크탑 PC가 일반적이었다. 하지만 오늘날 인터넷을 사용하는 장치는 PC이외에도 노트북, 패드, 스마트폰, 스마트워치, 스마트안경 인터넷과의 연결이 필요한 많은 장치들이 있다. 그러다보니 할당해줄 수 있는 IPv4주소 공간이 부족하다는 점이 문제가 되고 있다. 특히 클래스별로 주소를 분류하다 보니 주소 공간이 한 쪽로 쏠려 있는 문제 또한 있다. 특히 미국에서 개발된 인터넷의 특성상 국가별로 보유하고있는 IP주소의 개수가 불균형적이다. 참고로 약 43억개의 주소를 가지고 있는 IPv4는 미국의 경우는 16억개의 IP를 보유하고 있다. 결론적으로 IPv4의 주소가 부족해지고 있는 실정이다. 이 부족한 주소공간의 어려움을 해소하기위해 NAT방식을 이용해서 주소공간을 공유하고있다. 가정에서 사용하는 "공유기"와 같은 개념이다. 공유기는 1개의 IPv4를 사용하고있고 공유기에 달려있는 장치는 여러개가 될 수 있다. 이런 기술을 NAT라고 한다. 현재시점에선 NAT라는 기술을 통해 IP주소를 절약하고있지만 공유 방식이다 보니 한계점이있기 때문에 근본적인 문제점을 해결하지는 못하고 있다. 주소공간이외에도 어려운점은 주소 자동 설정 기능이 부족한 점이있다. DHCP를 통해 자동설정이 가능하지만 IPv4혼자 설정하진 못하기 때문이다. 또한 IPv4는 초기 설계 시 보안 기능이 충분히 고려되지 않았다. 데이터 암호화, 인증, 무결성 등을 기본적으로 지원하지 않기 때문에 외부 공격에 취약하다.이러한 이유로 별도의 보안 프로토콜(IPsec 등)이 필요하다.
IPv6는 IPv4의 한계를 극복하기 위해 설계된 차세대 인터넷 프로토콜이다. IPv6는 인터넷의 미래를 위한 핵심 기술이다. 완전한 전환에는 시간이 걸리겠지만, IPv4의 한계를 극복하고 차세대 인터넷 환경을 구축하는 데 필수적인 역할을 할 것이다. IPv6와 관련된 장점과 특징을 이해하는 것은 앞으로의 네트워크 환경에 대비하는 데 중요한 첫걸음이 될 것이다.

✅IPv6의 특징
주소 공간 확장
IPv4: 32비트 주소(약 43억 개 주소)
IPv6는 128비트 주소 체계를 사용하여 2¹²⁸ 개의 주소를 제공한다.
이는 사실상 무한에 가까운 수로, 모든 인터넷 디바이스에 고유한 IP 주소를 할당할 수 있게 된다. 예) 2001:0db8:85a3:0000:0000:8a2e:0370:7334
단순화된 헤더 구조
IPv6는 라우터의 처리 속도 향상과 네트워크 장치의 부담 감소를 위해 헤더 구조를 단순화하였다.
패킷 단편화 제거: IPv4에서는 네트워크 상의 라우터가 패킷을 단편화할 수 있었지만, IPv6에서는 이를 송신 장치에서만 수행하도록 제한했다. 이로 인해 네트워크 장치(특히 라우터)의 부담이 크게 줄어들고, 패킷 처리 속도가 향상되었다.
검사합 필드 제거: IPv4에서는 IP 헤더에 포함된 검사합 필드를 통해 데이터 오류를 확인했지만, IPv6에서는 이를 제거하였다. 이는 하위 계층의 통신 기술(TCP/UDP 등)이 발전하여 IP 헤더에서 오류 검사가 필요하지 않게 되었기 때문이다.
서비스 품질(QoS) 지원 강화
IPv6는 Flow Label 필드를 추가하여 효과적인 QoS를 지원한다.
QoS는 특정 서비스의 패킷을 구별하여 네트워크에서 우선적으로 처리하거나, 일정한 품질을 보장하는 기술이다.
IPv4의 ToS(Type of Service) 필드는 크기가 작아 한계가 있었지만, IPv6는 이를 확장하여 더 나은 QoS 지원이 가능해졌다.
4. 보안 기능 향상
IPv6는 IPsec(IP Security)을 기본적으로 포함하여 네트워크 보안을 강화한다.
IPsec은 데이터 암호화 및 인증을 제공하여 패킷이 전송 중에 도청되거나 위조되는 것을 방지한다.
IPv4에서도 IPsec을 사용할 수 있었지만, IPv6는 이를 프로토콜 수준에서 기본적으로 지원한다.
✅ IPv6가 아직 널리 보급되지 않은 이유
기존 인프라 호환성 문제: 많은 네트워크 장비와 소프트웨어가 여전히 IPv4에 최적화되어 있어, IPv6로 전환하는 데 어려움이 있다.
이전 비용: IPv4에서 IPv6로의 전환은 새로운 하드웨어 및 소프트웨어 업그레이드와 같은 상당한 비용이 요구된다.
IPv4의 연장 기술: NAT(Network Address Translation)와 같은 기술로 IPv4 주소 부족 문제를 부분적으로 해결하고 있어 IPv6 전환이 지연되고 있다.
IPv6 #1: 특징 및 표기 방식
💡요약: IPv6 주소는 128비트를 사용하며, 이를 효율적으로 표현하기 위해 콜론-16진수 표기법이 사용된다. 이는 IPv4의 점-10진 표기법과 비교했을 때 훨씬 긴 주소를 보다 간결하게 나타내기 위한 방식이다. IPv6 주소는 여전히 사람이 외우기 어렵지만, 이러한 표기법을 통해 기술적 효율성과 가독성을 최대화하려는 노력의 결과라고 볼 수 있다.
✅ IPv4와 IPv6 표기법 비교
IPv4는 32비트 주소 체계로, 점-10진 표기법을 사용한다.
예)
192.168.0.1각 점으로 구분된 숫자는 8비트(1바이트)를 10진수로 나타낸 값이다.IPv6는 128비트 주소 체계로, 콜론-16진수 표기법을 사용한다.
예)
FDEC:BA98:7654:3210:ADBF:BBFF:2922:FFFF각 콜론으로 구분된 숫자는 16비트(2바이트)를 16진수로 표현한 값입니다.

✅16 콜론-16진수 표기법의 구조
IPv6 주소는 128비트를 16비트씩 8개로 나누어 작성한다. (16 × 8 = 128)
각 16비트는 4자리의 16진수로 표현되며, 구분 기호로 콜론(
:)을 사용한다.예제)
FDEC:BA98:7654:3210:ADBF:BBFF:2922:FFFF
✅16진수 표기법의 이유
IPv4 방식(점-10진수)을 그대로 IPv6에 적용하면 주소 길이가 약 4배 증가하여 사람이 읽거나 입력하기 어렵게된다.
16진수로 변환하면 숫자 자릿수를 줄이고 더 간결하게 표현할 수 있게 된다.
- 10진수: 0~255 → 16진수:
0~FF(단위 표현 축소)
- 10진수: 0~255 → 16진수:
✅표기법 최적화
IPv6는 사람이 읽기 쉽도록 몇 가지 추가 규칙으로 주소 길이를 줄일 수 있다.
연속된 0 생략: 연속된 0은 하나의
::로 축약 가능하다. 한 주소에서 단 한 번만 사용할 수 있다. 두 번 이상 사용하면 각 그룹이 몇 개의0으로 채워지는지 계산할 수 없기 때문이다. 예)2001:0db8:0000:0000:0000:ff00:0042:8329→2001:db8::ff00:42:8329잘못된 예)::0000::1(불가능)상위의 0 생략: 각 16비트(4자리 16진수) 그룹에서 앞쪽에 위치한
0은 생략할 수 있습니다.
예:00FF→FF,0074→74,000F→F생략된
0계산:::로 생략된0은 128비트 전체 길이에서 나머지 비트를 0으로 채우는 방식으로 해석된다.예:
1234::101234는 16비트를 차지,10은 16비트를 차지.나머지 96비트(128비트 - 16비트 - 16비트)는
0으로 채워지게 된다.실제 주소:
1234:0000:0000:0000:0000:0000:0000:0010
IPv6 #2: 주소 공간의 구조 및 주요 특징
💡요약: IPv6 주소 공간은 128비트로 구성되어 총 2¹²⁸개의 주소를 제공합니다. 이는 IPv4 주소 공간(32비트)의 약 340언덕 개 이상으로, 사실상 무한에 가까운 주소를 지원합니다. IPv6 주소 공간은 특정 목적에 따라 여러 구역으로 나뉘며, 각각의 사용 용도가 정의되어 있다.

✅주소 공간의 분할
IPv6 주소 공간은 128비트를 기준으로, 특정 범위에 따라 주소의 용도를 표준으로 정의한다.
첨부된 그림에서 볼 수 있듯이:
맨 왼쪽: 모든 비트가 0으로 채워진 주소 공간.
맨 오른쪽: 모든 비트가 1로 채워진 주소 공간.
이 사이의 구간은 예약 상태(Reserved) 또는 특정 용도로 지정된다.
2. Global Unicast Address
그림에서 노란색으로 표시된 Global Unicast Address는 전 세계적으로 일반적인 인터넷 통신에 사용되는 주소이다.
전체 IPv6 주소 공간의 1/8만 차지하고 있다.
나머지 공간은 대부분 예약 상태로 남겨져 있으며, 추후 필요한 경우 사용될 수 있도록 설정되어 있다.
3. Reserved/Assigned 구역
맨 앞쪽(A~F 구역): 예약된 상태 또는 특정 용도로 할당된 상태.
맨 뒷부분(J, L, N 구역): 특정 목적(예: Unique Local Address, Multicast Address)에 사용.
4. IPv4와의 호환성 (A: 1/256 IPv4 Compatible)
IPv6 주소 공간의 일부는 IPv4와의 호환성을 위해 예약되어 있다.
A 구역은 전체 IPv6 주소의 1/256에 해당하며, IPv4 주소와의 호환을 지원한다.
IPv6 도입 초기, IPv4와 IPv6는 일정 기간 동안 공존해야 한다.
이 구역은 IPv6로의 전환을 위한 과도기적 장치로 사용된다.
5. J, L, N 구역
J (1/128 Unique Local Unicast):
지역 네트워크 내에서 사용되는 IPv6 주소.
공용 네트워크에서는 라우팅되지 않으며, 내부 통신 용도로 설계됨.
L (1/1024 Link Local):
동일 네트워크 링크 내에서 통신을 위한 주소.
IPv6에서 모든 인터페이스에 반드시 할당되는 주소.
N (1/256 Multicast):
- 멀티캐스트 통신(한 번의 전송으로 여러 대상에게 데이터 전송)을 위해 사용.
👀번외: IPv6는 미래 인터넷 환경의 요구를 충족하기 위해 설계되었지만, 전 세계가 동시에 IPv6로 전환하는 것은 현실적으로 불가능하다. 따라서 IPv4와 IPv6의 공존 기간이 필요하며, 이를 위한 주소 공간이 별도로 마련되었다.
IPv4 Compatible Address: IPv4 주소를 IPv6 환경에서 사용할 수 있도록 지원.
- 예:
::192.168.0.1(IPv4를 포함한 IPv6 주소 형식).
- 예:
IPv6의 주소 공간은 위에서 설명했듯이 128비트로 구성되어 있으며, 이를 특정 용도에 맞게 상위 비트를 기준으로 여러 블록으로 나누었다. 첨부된 표는 이러한 주소 공간의 구조를 정리한 예시이다. 이를 통해 IPv6 주소의 분리 방식과 각 블록의 용도를 명확히 이해한다.

1. 8개의 주요 블록으로 분리
IPv6 주소는 상위 3비트를 기준으로 8개의 큰 블록으로 나뉜다.
상위 3비트 값이
000,001,010, ...,111로 구분된다.각 블록은 128비트 중 상위 3비트를 사용해 정의되며, 나머지 125비트는 주소를 세분화하는 데 사용된다.
이 중 일부 블록은 세부적으로 추가 분리되어 특정 용도로 예약되었다.
2. Global Unicast Address (2000::/3)
001로 시작하는 주소는
Global Unicast주소로 정의되었다.상위 3비트:
001, 16진수 표기:2000::/3이 주소 공간은 전 세계에서 일반적으로 사용되는 IPv6 주소를 나타낸다.
중요한 점: 2000::/3은 상위 3비트만 중요하므로,
0010뿐 아니라0011로 시작하는 주소도 포함된다. 예)2000::,3000::도 글로벌 유니캐스트에 포함한다.
3. Reserved/Assigned 구역
첫 번째 블록(
000)과 마지막 블록(111)은 세분화되어 여러 용도로 나뉘어 있다.IPv4 Compatible Address (0000::/8): IPv4와의 호환을 위한 주소.
Unique Local Unicast (FC00::/7): 지역 네트워크 내에서 사용되는 주소.
Link Local Address (FE80::/10): 링크 내부 통신을 위한 주소.
Multicast Address (FF00::/8): 멀티캐스트 통신에 사용되는 주소.
4. 주소의 CIDR 표현
표에서
CIDR(Classless Inter-Domain Routing) 표기법을 사용하여 각 블록의 범위를 나타낸다.- 예:
2000::/3: 상위 3비트가001인 주소,나머지 125비트는 해당 범위 안에서 사용 가능.
- 예:
IPv6 #3: 주소의 상위 비트 해석 과정
💡요약:IPv6의 주소 공간은 방대하기 때문에 상위 비트를 기준으로 용도와 범위를 판별하는 방식이 필수적이다. 첨부된 이미지는 IPv6 주소의 상위 비트 해석 과정을 시각화한 예로, 각 비트 값을 따라가며 주소가 어떤 용도로 사용되는지 파악하는 방법을 보여주고 있다.
✅ Start 지점
Start는 IPv6 주소의 상위 비트(최초 비트)에서 시작하는 것을 의미한다.128비트 중 첫 번째 비트부터 순차적으로 확인하며 주소의 용도를 판별한다.
✅해석의 흐름
상위 비트를 0 또는 1로 읽으면서, 해당 비트가 다음 용도로 정의된 범위에 속하는지 확인한다.
비트의 흐름을 따라가면 특정 블록에 해당하는지 알 수 있다.
분기점(다이아몬드): 해당 비트 값을 확인 후 어느 경로로 갈지 결정.
도착 지점(박스): 해당 비트 값이 특정 용도로 정의된 블록에 도달.

1. Global Unicast Address (아래 자세한 설명 있음)
상위 비트:
001경로:
첫 번째 비트가
0.두 번째 비트가
0.세 번째 비트가
1→ Global Unicast 블록에 도달.
해당 주소는 전 세계적으로 사용 가능한 유니캐스트 주소.
2. Link Local Address (아래 자세한 설명 있음)
상위 비트:
10경로:
첫 번째 비트가
1.두 번째 비트가
0→ Link Local 블록에 도달.
해당 주소는 동일 링크(네트워크 내)에서 통신을 위한 주소.
3. Multicast Address (아래 자세한 설명 있음)
상위 비트:
11111110경로:
첫 번째 비트가
1.두 번째 비트가
1.이후 연속된 비트가
11111110→ Multicast 블록에 도달.
해당 주소는 멀티캐스트 통신에 사용.
IPv6 #4: 전역 유니 캐스트 주소 (Global Unicast Address)
💡요약: 네트워크 인터페이스를 고유하게 식별하며, 외부와의 통신에서 가장 일반적으로 사용되는 기본 IPv6 주소이다. 이 주소는 128비트 길이로 구성되며, 전 세계 네트워크 통신을 지원하도록 설계되었다.
IPv6의 전역 유니캐스트 주소는 3개의 주요 필드로 나뉜다:

✅ Global Routing Prefix (전역 라우팅 프리픽스)
상위
n비트로 구성된다.네트워크 사업자를 식별하며, 전 세계적으로 고유한 네트워크를 구분하는 데 사용된다.
표준 가이드에 따르면 48비트가 권장된다.
- 예: SKT, KT, LGU+ 같은 네트워크 사업자가 이 공간에 포함된다.
총 2⁴⁸개의 네트워크 사업자를 구분할 수 있다.
✅ Subnet Identifier (서브넷 아이디)
128 - n - m 비트, 일반적으로 16비트가 권장된다.
네트워크 사업자가 내부적으로 사용하는 서브넷을 구분하는 데 사용된다.
예를 들어, 회사나 기관 내에서 부서별 또는 지리적으로 구분된 서브넷 관리에 사용된다.
✅ Interface Identifier (인터페이스 아이디)
하위
m비트, 일반적으로 64비트이다.개별 네트워크 인터페이스(예: 특정 컴퓨터, 디바이스)를 고유하게 식별한다.
사용자가 직접 설정하거나, 네트워크 장비에서 자동으로 할당할 수 있다.
이 자동 주소 설정에서는 interface identifier의 64비트를 어떻게 정의할 것 인지가 문제가 된다. 이런 부분에서도 규칙이 존재한다. EUI-64 표준을 사용하는 것이다. MAC 주소를 기반으로 64비트를 생성한다. 또는 랜덤 값을 생성하여 프라이버시를 강화할 수 있다.
👀번외: IPv4와의 비교
IPv4의 주소 공간: 2³²(약 43억 개)
IPv6의 전역 유니캐스트 주소 공간: 2¹²⁵(약 4×10³⁷ 개)
IPv6의 주소 공간은 IPv4의 약 340언덕 개에 달한다.
이는 향후 사물인터넷(IoT) 환경과 같이 폭발적으로 증가하는 디바이스를 지원하기 위한 충분한 공간을 제공한다.
👀번외: 자동 주소 설정 기능, EUI-64 표준
EUI-64는 IPv6의 Interface Identifier를 자동으로 생성하는 데 사용되는 규칙이다.

1. EUI-64 규칙의 목적
IPv6 주소의 하위 64비트(Interface Identifier)를 생성하기 위해 네트워크 인터페이스의 MAC 주소를 활용한다.
MAC 주소(48비트)는 네트워크 카드 제조업체에서 설정한 고유한 물리적 주소로, 중복되지 않을 가능성이 높기 때문이다. 이는 충돌 가능성을 최소화 한다.
2. EUI-64 생성 과정
48비트 MAC 주소를 기반으로 64비트 Interface Identifier를 생성한다.
MAC 주소의 상위 3바이트와 하위 3바이트를 그대로 사용한다.
나머지 16비트는 FFFE 패턴으로 채운다.
상위 3바이트의 7번째 비트(Universal/Local 비트)를 1로 설정하여 글로벌 유니크성을 표시한다.
- 예외: 프라이버시 강화 주소(Privacy Address), 랜덤화된 하위 64비트를 생성하여 개인 정보를 보호할 수 있다.
IPv6 #5: 링크 로컬 주소(Link Local Address)
💡요약: 로컬 네트워크(하나의 링크) 내에서만 사용되는 특수한 IPv6 주소이다. IPv4에는 없는 개념으로 네트워크 초기화와 기본 통신을 위한 필수 구성 요소이다. 자동 생성 및 로컬 네트워크 전용 설계로 인해, 추가적인 설정 없이도 기본 네트워크 기능을 제공하며, IPv6의 유연성과 효율성을 높이는 중요한 요소이다.

✅주소 구성
IPv6 링크 로컬 주소는 항상
FE80::/10범위에서 시작한다.상위 10비트는 고정:
1111111010(16진수로FE80).이후 54비트는 모두
0으로 채워지게 된다.마지막 64비트는 Interface Identifier로, EUI-64 규칙에 따라 생성된다.
✅ 하위 64비트: Interface Identifier
하위 64비트는 EUI-64 규칙에 따라 생성된다.
컴퓨터의 MAC 주소를 기반으로 자동 생성.
또는 랜덤화된 값이 사용될 수도 있다.(프라이버시 강화).
✅로컬 네트워크 전용(Local Network Only)
링크 로컬 주소는 동일 네트워크 내에서만 유효하다.
라우터를 통해 외부 네트워크로 전달되지 않음.
- 예: 링크 로컬 주소는 다른 네트워크로의 데이터 전송에 사용되지 않음.
✅자동 생성
링크 로컬 주소는 네트워크 인터페이스에서 자동으로 생성된다.
사용자가 수동으로 설정하지 않아도, 컴퓨터 부팅 시 자동으로 할당되게 된다.
IPv6 #6: 고유 로컬 유니캐스트 주소(Unique Local Unicast Address)
💡요약: 조직 내부 네트워크에서 사용하기 위한 사설 주소이다. 외부 네트워크와 통신하지 않고 내부 통신에만 사용된다. IPv6의 설계 철학에 맞게, 주소 고유성을 보장하면서도 내부 네트워크 관리에 유연성을 제공한다.
✅상위 7비트 (고정)
항상 **
FC00::/7**로 시작한다.첫 번째 비트는
1111110(7비트)로 고정되어 있다.

✅랜덤 값 (40비트): 40비트의 랜덤 숫자를 포함하여, 동일한 네트워크에서 중복되지 않는 고유성을 보장한다.
✅ Subnet ID (16비트): 조직 내부에서 네트워크를 세분화하기 위해 사용하는 서브넷 식별자이다.
✅ Interface ID (64비트): 네트워크 인터페이스를 고유하게 식별하기 위한 인터페이스 식별자이다. 일반적으로 EUI-64 규칙에 따라 생성되거나, 랜덤 값으로 설정된다.
IPv6 #7: 멀티캐스트 주소(Multicast Address)
💡요약: 특정 범위 내에서 다수의 노드에 데이터를 전송하기 위해 설계된 주소이다. IPv4에서도 멀티캐스트가 존재했지만, IPv6는 멀티캐스트를 더 체계적이고 세부적으로 정의하여 네트워크 효율성을 극대화하였다.
IPv6 멀티캐스트 주소는 128비트로 구성되며, 다음과 같은 필드를 포함한다.
✅ 상위 8비트: 멀티캐스트 식별자
- 항상
11111111(16진수:FF)로 설정된다. IPv6에서FF로 시작하는 주소는 모두 멀티캐스트 주소로 간주된다.

✅ Flag 필드 (4비트)
멀티캐스트 주소의 속성을 정의한다.
이 필드값에 따라서 주소값이 영구적인지 일시적인지 나타낸다.
0: Permanent (영구적): 특정 프로토콜이나 서비스에 고정된 멀티캐스트 주소이다. 이 주소는 인터넷 관리기구(ICANN)에서 정의하였다.1: Transient (일시적): 일시적으로 생성된 멀티캐스트 주소.
✅ Scope 필드 (4비트)
멀티캐스트 주소가 어느 범위에서 유효한지를 정의한다.
주요 값:
0: Reserved (예약됨)1: Node-Local (현재 노드 내)2: Link-Local (같은 링크 내)5: Site-Local (사이트 범위)8: Organization-Local (조직 범위)E: Global (전역 범위)
✅Group ID (112비트): 멀티캐스트 그룹을 고유하게 식별하는 값이다.
IPv6의 멀티캐스트 주소는 특정 목적에 맞게 사전에 정의된 주소들이 있으며, 종류는 아래와 같다. 네트워크 초기화 및 통신에 필수적인 역할을 한다.
멀티캐스트 주소와 IPv6의 장점
✅ 사전 정의된 주소
- IPv6에서는 멀티캐스트 주소가 프로토콜 내부에 사전 정의되어 있어, 추가적인 설정 없이 사용 가능하다. 이는 IPv4에 비해 설정의 번거로움을 크게 줄일 수 있다.
✅ 네트워크 초기화 및 탐색 지원
- 컴퓨터가 부팅되거나 네트워크에 연결될 때, 멀티캐스트 주소를 통해 라우터 및 다른 노드와의 통신을 간소화할 수 있다.
✅효율적인 네트워크 운영
- 특정 범위에만 데이터를 전송하여, 네트워크 자원의 낭비를 방지한다.
멀티캐스트 주소의 주요 특징

✅ 예약된 멀티캐스트 주소
하위 비트가 모두
0인 멀티캐스트 주소는 예약되어 있으며, 사용 불가능하다.예: 주소
FF0X::,FF01::,FF02::
✅ 주소가 FF01::1 인 노드 - Node Local
범위(Scope): Node-Local: 단일 노드 내에서 사용되며, 외부로 패킷이 전송되지 않음.
용도: 노드 내의 모든 인터페이스를 지정한다. 노드 내의 모든 인터페이스를 가리키는데 요즘엔 하나의 컴퓨터가 하나의 인터페이스만 가지고있는게 아니기 때문에 더 많은 인터 페이스들이 내장될 수 밖에 없다. 이 주소는 컴퓨터를 부팅하기만하면 세팅되는 주소이다.
예: 다중 네트워크 인터페이스가 있는 시스템에서 내부 통신.
✅ FF02::1 - Link Local
범위(Scope): Link-Local: 링크 내(같은 네트워크)에 연결된 모든 노드를 가리킴.
용도: 링크 내의 모든 노드와 통신.
✅FF02::2 - Link Local (라우터)
- FF01::1, FF02::1을 보면 모든 마지막 노드가 1을 가리키고 있는데 여기에서 숫자가 2로 설정되어 있다면 그 네트워크에서의 라우터를 지칭하도록 사전에 정의가 되어있다는 뜻이다. 따라서 FF02::2 뜻은 컴퓨터가 연결되어있는 링크안에있는 모든 라우터를 지칭하게 된다.
범위(Scope): Link-Local
링크 내(같은 네트워크)에 있는 모든 라우터를 지정.
용도: 로컬 네트워크에서 라우터를 자동으로 발견.
IPv6의 장점: IPv4에서는 라우터 정보를 별도로 설정해야 해서 번거로웠지만 IPv6에서는 이 주소를 통해 자동으로 라우터를 탐지할 수 있어서 편하다.
✅FF02::B - Mobile Agent
범위(Scope): Link-Local
모바일 IP 환경에서 에이전트를 지정.
이와 같은 주소 들은 별도의 설정 필요없이 프로토콜 내부에 박혀있는 주소이다.
✅FF02::C - DHCP Agent
범위(Scope): Link-Local
DHCP 에이전트를 지정.
용도: DHCP 서버와 통신하거나, DHCP 정보를 제공. 이와 같은 주소 들은 별도의 설정 필요없이 프로토콜 내부에 박혀있는 주소이다.
✅Solicited Node Address (FF02:0:0:0:0:1:FFXX:XXXX)
범위(Scope): Link-Local
마지막 24비트는 해당 노드의 주소에서 생성. 지금은 이해하기 어려울수있다. 간단하게 설명하자면 총 128비트중에서 상위 104비트가 정의되어 있는데 나머지 24비트는 컴퓨터 내부에서 그때 그때 발생시키는 주소라고 생각하자.
용도: FF02:0:0:0:0:FF00::/104: 대체적으로 주소를 갖고 있는 컴퓨터가 특정 로컬 네트워크에 존재 하는지 확인하고 싶을때 사용하는 주소라고 생각하자.
이 주소는 주로 Neighbor Discovery Protocol(NDP)에서 사용되며, IPv6 환경에서 ARP와 유사한 역할을 수행한다.
💡멀티캐스트 주소와 IPv6의 장점
사전 정의된 주소
IPv6에서는 멀티캐스트 주소가 프로토콜 내부에 사전 정의되어 있어, 추가적인 설정 없이 사용 가능.
이는 IPv4에 비해 설정의 번거로움을 크게 줄임.
네트워크 초기화 및 탐색 지원
- 컴퓨터가 부팅되거나 네트워크에 연결될 때, 멀티캐스트 주소를 통해 라우터 및 다른 노드와의 통신을 간소화.
효율적인 네트워크 운영
- 특정 범위에만 데이터를 전송하여, 네트워크 자원의 낭비를 방지.
IPv6 #8: IPv6가 전환기 동안 IPv4와의 공존을 지원하기 위해 제공하는 2가지
💡요약: IPv4 호환 주소(IPv4-Compatible Address)와 IPv4 맵 주소(IPv4-Mapped Address)이다. 이 주소들은 IPv4 네트워크 및 장치와의 상호 작용을 지원하기 위해 설계되었다. 이 두 주소 유형은 IPv4와 IPv6가 공존하는 과도기적 시기에 중요한 역할을 한다.
✅IPv4 호환 주소 (IPv4-Compatible Address)
1. 목적
IPv6 패킷이 IPv4 네트워크를 통과할 수 있도록 지원.
IPv6 네트워크가 아닌 IPv4 네트워크와의 상호 운용성을 보장.

2. 구조
총 128비트로 구성되며, 다음과 같은 필드로 나뉜다.
상위 96비트:
0으로 채워짐.하위 32비트: IPv4 주소를 포함.
예)
::192.168.0.1이 주소는 IPv4 주소192.168.0.1을 IPv6 형식으로 나타낸 것이다.
3. 사용 예
- IPv6 전환 초기, IPv4 네트워크에서 IPv6 주소를 사용하는 호스트와 통신하기 위해 사용.
✅ IPv4 맵 주소 (IPv4-Mapped Address)
1. 목적
IPv6 호스트가 IPv4 호스트와 직접 통신할 때 사용.
IPv6 컴퓨터에서 IPv4-only 컴퓨터로 메시지를 전달할 때 활용.

2. 구조
총 128비트로 구성되며, 다음과 같은 필드로 나뉜다.
상위 80비트:
0으로 채워짐.다음 16비트:
1로 채워짐 (FFFF).하위 32비트: IPv4 주소를 포함.
예:
::FFFF:192.168.0.1- 이 주소는 IPv4 주소
192.168.0.1을 IPv6 맵 주소 형식으로 변환한 것이다.
- 이 주소는 IPv4 주소
3. 사용 예
IPv6 애플리케이션이 IPv4 주소만 지원하는 시스템과 통신할 때.
IPv4 네트워크 내에서 IPv6 기능을 활용하려는 경우.

IPv6 #8: 호스트 (=컴퓨터)가 자신의 주소를 모르는 상태에서 사용하는 주소값
💡요약: IPv6에는 네트워크 초기화나 테스트에 사용되는 특별한 주소인 비지정 주소(Unspecified Address)와 루프백 주소(Loopback Address)가 정의되어 있다. 비지정 주소란 호스트 (=컴퓨터)가 자신의 주소를 모르는 상태에서 사용하는 주소값을 의미한다. 즉 모든 비트가 0으로 설정된 주소값이다. 컴퓨터가 부팅하자마자 아무런 정보가 설정되어있지 않은 컴퓨터는 자기 자신을 표기할수 없기 때문에 0000 이라는 주소를 사용하기도 한다. 루프백이란 네트워크를 통과하지 않고 자체적으로 테스트하기위한 주소값으로써 호스트 자기자신에게 전달되는 주소이다.
✅비지정 주소 (Unspecified Address) (::)
정의: IPv6 비지정 주소는 모든 비트가 0으로 설정된 주소로, ::/128로 표기된다.
용도: 컴퓨터가 자신의 IP 주소를 아직 설정하지 않은 상태에서 사용한다. 초기 네트워크 설정 및 부팅 과정에서 임시적으로 사용한다.
구조: 128비트 구성

[Prefix: 8 bits (00000000)] [Suffix: 120 bits (All 0s)]
비지정 주소는 출발지 주소로만 사용 가능하며, 목적지 주소로는 사용할 수 없다.
주로 DHCP 또는 Neighbor Discovery Protocol(NDP)과 같은 초기 네트워크 프로토콜에서 활용된다.
✅루프백 주소 (Loopback Address) (::1)
정의: IPv6 루프백 주소는 ::1/128로, IPv4의 127.0.0.1과 동일한 기능을 제공한다.
용도: 네트워크를 거치지 않고, 호스트 자신에게 데이터를 전달한다. 네트워크 연결 상태나 애플리케이션의 동작을 테스트할 때 사용한다.
구조: 128비트 구성

[Prefix: 8 bits (00000000)] [Suffix: 120 bits (All 0s)] [Last bit: 1]
루프백 주소는 자기 자신을 테스트하기 위한 목적으로만 사용되며, 네트워크를 통해 전달되지 않는다.
목적지 주소로 사용되며, 루프백 테스트 시 애플리케이션의 동작이나 네트워크 스택의 기능을 확인할 수 있다.

IPv6 #9: 패킷 헤더 구조
💡요약: IPv6의 특징 부분에서 언급된 "단순화된 헤더 구조"에 대해 자세히 알아본다. IPv6의 패킷 헤더 구조는 IPv4와 비교하여 단순화되었으며, 고속 처리를 위해 설계되었다. 기본 IPv6 헤더는 고정 길이 40바이트로 구성되며, 필수적인 정보만 포함되어 있어 네트워크 장치의 처리 부담을 줄일수 있게 되었다.
주요 장점
간소화된 구조: IPv6 헤더는 IPv4보다 단순하며, 처리 속도가 빨라짐.
확장성: 확장 헤더를 통해 추가 기능을 유연하게 지원.
QoS 및 데이터 흐름 관리: Traffic Class와 Flow Label을 통해 네트워크 성능 최적화 가능.
✅ IPv6 패킷 헤더의 구조: IPv6 패킷 헤더는 다음과 같은 필드로 구성된다.

Base Header: 고정 길이 40바이트로 구성된다. 네트워크 장치가 패킷을 효율적으로 처리하도록 설계되었다.
Extension Headers (선택적) 아래 추가 설명
추가적인 기능(보안, 프래그먼트 등)을 제공한다.
필요할 때만 사용되므로 기본 헤더의 단순성을 유지.
Version (VER): 4비트: IPv6의 버전을 나타낸다. 항상
6으로 설정된다.Traffic Class: 8비트
- 서로 다른 전달 요구사항을 갖는 데이터 패킷을 구분하기 위한 용도로 사용된다.
(IPv4의 ToS와 유사하다).
- 서로 다른 전달 요구사항을 갖는 데이터 패킷을 구분하기 위한 용도로 사용된다.
Flow Label: 20비트
- 특정 데이터 흐름(스트림)을 구분하여 효율적으로 제어하는 역할을 한다.
Payload Length: 16비트
- IPv6 헤더를 제외한 페이로드의 전체 길이를 나타낸다.
Hop Limit: 8비트
- 패킷이 네트워크를 통과할 수 있는 최대 홉 수를 지정한다. (IPv4의 TTL과 동일한 기능을 한다.)
Source Address: 128비트 (16바이트), 패킷의 발신자 주소이다.
Destination Address: 128비트 (16바이트), 패킷의 수신자 주소이다.
✅ Next Header 설명
Next Header 필드는 기본 헤더 이후에 오는 확장 헤더나 상위 계층 프로토콜(TCP/UDP)을 식별하는 역할을 한다.

1. 기능
IPv6 패킷의 기본 헤더 또는 확장 헤더 뒤에 어떤 헤더가 오는지 식별한다.
값은 코드로 지정되며, 각 코드 값은 특정 헤더 또는 프로토콜을 나타낸다.
2. Next Header의 활용
확장 헤더를 순서대로 연결.
상위 계층 프로토콜(TCP, UDP 등)을 식별하여 데이터가 처리될 방식을 결정한다.
✅Extension Header 설명
확장헤더는 기본 헤더에 포함되지 않은 다양한 기능을 제공한다. optional로 필요할 때만 추가되며, 체인 형태로 연결되어 IPv6 패킷의 유연성과 확장성을 보장한다.


확장 헤더의 구조를 자세히 살펴본다. 위에서 언급된 것처럼 IPv6의 확장 헤더는 체인 구조로 설계되어, 필요할 때만 확장 헤더를 추가하고, 기본적으로 간단한 패킷 구조를 유지한다. Next Header 필드는 각 헤더의 연결을 담당하며, 마지막으로 전송 계층 프로토콜(TCP, UDP, ICMP 등)을 가리킨다. 이러한 구조는 IPv6 패킷 처리의 유연성과 효율성을 높이는 핵심 설계이다.


2️⃣ ICMPv6
💡요약: ICMPv6(Internet Control Message Protocol for IPv6)는 IPv6 프로토콜을 기능적으로 지원하기 위한 필수 구성 요소로, IPv4의 ICMP를 확장한 기능을 제공한다. ICMPv4와 비교하여 기능이 추가되었다 (ARP & MLD & NDP기능, 주소 자동 설정, 보안기능)

✅ ICMPv6의 주요 기능
오류 메시지 (Error Messages)
IPv6 패킷 처리 중 발생한 오류를 보고한다.
패킷이 목적지에 도달하지 못하거나, MTU 크기 초과 등의 상황에서 사용.

종류:
Destination Unreachable: 목적지에 도달할 수 없음.
Packet Too Big: 패킷 크기가 MTU를 초과.
Time Exceeded: 홉 제한 초과.
Parameter Problem: 패킷 헤더의 문제가 발생.
정보 메시지 (Informational Messages)
에코요구 메세지(Ping을 이용해서 서버가 살아있는지 확인)네트워크 상태를 확인하거나 요청과 응답 메시지를 전달하는 곳이다.
Ping 명령에서 사용:
Echo Request: 서버 또는 노드 상태를 확인하는 요청.
Echo Reply: 요청에 대한 응답.
이웃 탐색 메시지 (Neighbor Discovery Messages)
IPv4의 ARP(Address Resolution Protocol)를 대체하며, 1) 패킷을 전송하려는 이웃 라우터를 찾거나 2)이웃 노드들의 물리주소를 찾는 용도로 사용한다. 물리 주소를 찾는 기능은 ARP가 담당하던 기능인데 이 기능이 그대로 옮겨왔다.
Solicitation Message는 리퀘스트의 형태를 띄고있고 Advertisement Message는 응답의 성격을 띈다.

Router Solicitation (RS) / Router Advertisement (RA):
RS: 호스트가 네트워크 정보를 요청 (멀티캐스트 주소
FF02::2사용).RA: 라우터가 네트워크 정보(주소 프리픽스, MTU 등)를 제공.
Neighbor Solicitation (NS) / Neighbor Advertisement (NA):
NS: 특정 IPv6 주소에 대한 물리 주소를 요청.
NA: 요청에 응답하여 물리 주소를 제공.
Redirect Message:
- 호스트에 더 최적화된 라우터 경로를 알림.
그룹 멤버십 메시지 (Group Membership Messages)
IPv4의 IGMP(Internet Group Management Protocol)가 수행했던 역할을 대체한다. 멀티캐스트 그룹 관리에 사용된다.
주요 메시지:
Query Message: 멀티캐스트 그룹 상태를 요청.
Report Message: 멀티캐스트 그룹 참여 상태를 보고.
ICMPv6 #1: IPv6의 주소 자동 설정(Address Auto-configuration)
💡요약: IPv6의 주요 특징 중 하나로, DHCP 서버 없이 호스트가 스스로 주소를 생성하는 Stateless Auto-configuration을 지원한다. 이는 IPv4와의 주요 차이점으로, 네트워크 설정을 간소화하고 자동화를 가능하게 할수있다.
✅ 주소 자동 설정의 주요 특징
Stateless Auto-configuration
- DHCP프로토콜을 사용하지 않고 호스트의 IPv6주소를 설정하는 절차이다.
Stateless는 네트워크 장치나 서버가 호스트 정보를 저장하지 않음을 의미.
각 호스트가 스스로 고유한 IPv6 주소를 생성.
주소 구조
IPv6 주소는 총 128비트이며, 상위 64비트는 네트워크 프리픽스, 하위 64비트는 인터페이스 식별자(Interface Identifier)로 사용한다.
하위 64비트는 호스트가 EUI-64 규칙에 따라 스스로 생성된다.
주소 중복 확인 (DAD)
- 여러 대의 호스트가 동일한 주소값을 생성하는 경우가 있을 수 있으므로 이를 확인하기 위한 절차로서 DAD(Duplicate Address Detection) 과정을 수행한다.
✅DHCP프로토콜을 사용하지 않고 호스트의 IPv6주소를 설정하는 절차
- 호스트는 자신의 링크 계층 주소(MAC주소)로부터 하위 64비트의 인터페이스 식별자(Interface Identifier)를 생성하고 링크 로컬 주소를 생성한다. 이때 EUI-64규칙을 사용해서 컴퓨터가 스스로 생성한다.
⬇️
- EUI-64규칙으로 생성된 주소값은 이미 누군가 사용하고 있을수있다. 즉 여러 대의 호스트가 동일한 주소값을 생성하는 경우가 있을 수 있으므로 이를 확인하기 위한 절차로서 DAD(Duplicate Address Detection) 과정을 수행한다.
✅ICMPv6를 이용한 주소 자동 설정 절차
- 호스트는 자신의 링크 계층 주소로부터 하위 64비트의 인터페이스 식별자(EUI-64)를 생성하고 링크 로컬 주소(상위 64비트의 값은 항상 고정)를 자동으로 생성한다.
⬇️
- 동일한 인터페이스 식별자를 갖는 호스트가 있는지 확인하기 위하여 Solicited-Node Multicast Address(FF02::01:FFXX:XXXX)에게 이웃 간청 메시지를 전송한다. 마치 arp를 하는것과 같다. 송신지 주소는 아직 지정되지 않았기 때문에 비지정 주소, 목적지 주소는 자신이 생성한 인터페이스 식별자를 이용하여 생성한 Solicited-Node Multicast Address로 지정한다.
⬇️
- 이웃 간청 메시지에 대해서 응답이 없으면 주소가 동일한 호스트가 없다는 의미이므로 생성한 주소를 그대로 사용하게 된다. 중복됨을 판단하면(=응답이 온다면) 주소 자동 설정을 포기한다. 주소 설정이 안되기 때문이다.
⬇️
- 링크 로컬 주소를 송신지 주소로 이용하여 링크 내의 모든 라우터(FF02::2)에게 라우터 간청 메시지를 전송한다.
⬇️
- 그렇게 보내고 나서 응답을 받는다. 라우터 광고 메시지를 수신하여 주소 프리픽스 정보를 획득하고, 생성한 인터페이스 식별자와 조합하여 전역 유니캐스트 주소를 만들어낼 수 있게 된다.


