ICMPv6
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
ICMPv6는 IPv6 네트워크에서 사용되는 프로토콜로, 오류 메시지 전달 및 네트워크 진단 기능을 수행한다. ICMPv6 메시지는 오류 메시지와 정보 메시지로 구분되며, 타입, 코드, 체크섬 필드를 포함하는 헤더와 메시지 본문으로 구성된다. ICMPv6는 이웃 탐색(NDP), 멀티캐스트 리스너 디스커버리(MLD), 경로 MTU 탐색, 노드 정보 쿼리 등 IPv6의 핵심 기능들을 지원하며, IPv4의 ARP, ICMP Router Discovery, DHCP 등의 기능을 통합한다.
더 읽어볼만한 페이지
- IPv6 - 6LoWPAN
6LoWPAN은 저전력 무선 개인 영역 네트워크에서 IPv6 패킷 전송을 위한 기술 규격으로, 헤더 압축 및 단편화 기술을 통해 작은 MTU를 극복하여 다양한 IoT 환경에 적용되며, 관련 표준 문서에서 기본적인 틀과 기능들을 정의하고 있다. - IPv6 - DHCPv6
DHCPv6는 IPv6 호스트에게 IP 주소 및 DNS 서버 주소와 같은 구성 정보를 자동으로 할당하며, IPv4의 DHCP와 유사하게 작동하지만 IPv6 환경에 맞춰 설계되었고, IETF에서 표준화되었다. - 인터넷 계층 프로토콜 - IPv6
IPv6는 IPv4 주소 고갈 문제를 해결하고자 개발된 차세대 인터넷 프로토콜로, 128비트 주소 체계를 통해 사실상 무한대에 가까운 IP 주소를 제공하며, 주소 자동 설정, 패킷 처리 효율성 향상, 보안 기능 강화 등의 특징을 갖는다. - 인터넷 계층 프로토콜 - IPv4
IPv4는 인터넷을 가능하게 하는 인터넷 프로토콜 제품군의 핵심 프로토콜로, 32비트 주소 체계를 사용하며 주소 낭비 문제 해결을 위해 CIDR 방식이 도입되었고, IPv4 주소 고갈 문제의 장기적인 해결책으로 IPv6가 개발되었다. - 네트워크 계층 프로토콜 - IPv6
IPv6는 IPv4 주소 고갈 문제를 해결하고자 개발된 차세대 인터넷 프로토콜로, 128비트 주소 체계를 통해 사실상 무한대에 가까운 IP 주소를 제공하며, 주소 자동 설정, 패킷 처리 효율성 향상, 보안 기능 강화 등의 특징을 갖는다. - 네트워크 계층 프로토콜 - X.25
X.25는 CCITT가 1970년대 중반에 개발한 패킷 교환 데이터 통신 표준으로, 가상 회선 서비스 기반의 3계층 구조를 가지며 공중 데이터망의 기반이 되었으나 1990년대 초부터 프레임 릴레이와 TCP/IP로 대체되기 시작하여 현재는 일부 시스템 및 아마추어 무선 분야에서 사용된다. 
| ICMPv6 | |
|---|---|
| ICMPv6 개요 | |
| 목적 | IPv6를 위한 보조 프로토콜 | 
| 개발자 | 알 수 없음 | 
| 날짜 | 1995년 12월 | 
| 기반 | 알 수 없음 | 
| 영향 | 알 수 없음 | 
| OSI 모델 계층 | 네트워크 계층 | 
| 포트 | 알 수 없음 | 
| RFC | RFC 4443 섹션=3  | 
| 하드웨어 | 알 수 없음 | 
| 일반 구조 | |
![]()  | |
2. 메시지 타입과 포맷
ICMPv6 메시지는 크게 오류 메시지와 정보 메시지로 나뉘며, IPv6 패킷에 캡슐화되어 전달된다. 이 패킷 안에서 ICMPv6의 IPv6 넥스트 헤더 값은 58로 설정된다.
ICMPv6 메시지는 헤더와 프로토콜 페이로드로 구성된다. 헤더는 ''type''(8비트), ''code''(8비트), ''checksum''(16비트)의 세 필드를 포함한다.
| 비트 오프셋 | 0–7 | 8–15 | 16–31 | |||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Type | Code | Checksum | |||||||||||||||||||||||||||||
| 32 | 메시지 본문 | |||||||||||||||||||||||||||||||
- Type: 메시지 유형을 지정한다. 0~127 사이의 값(상위 비트는 0)은 오류 메시지, 128~255 사이의 값(상위 비트는 1)은 정보 메시지를 나타낸다.
 - Code: 메시지 타입에 따라 달라지며, 추가적인 메시지 세분성을 제공한다.
 - Checksum: ICMP 메시지의 최소 수준의 무결성 검증을 제공한다.
 
메시지 본문은 메시지 유형에 따라 내용이 달라진다.
IPv6에서는 ICMPv6의 틀을 이용하여 주소 해결 및 주소 중복 감지 등에도 사용하며, type 번호도 IPv4의 ICMP와는 다른 번호가 다시 정의되었으므로, ICMPv6는 IPv4의 ICMP와는 다른 새로운 프로토콜로 정의되어 있다. 프로토콜 번호는 58이다.
2. 1. 타입
ICMPv6 메시지는 크게 오류 메시지와 정보 메시지로 나뉜다. 각 메시지는 8비트의 ''type'' 필드를 가지며, 이 필드의 값에 따라 메시지의 종류가 결정된다. 0~127 사이의 값은 오류 메시지를, 128~255 사이의 값은 정보 메시지를 나타낸다.''code'' 필드(8비트)는 메시지 타입에 따라 추가적인 정보를 제공하여, 메시지의 세부적인 내용을 파악할 수 있게 한다. ''checksum'' 필드(16비트)는 ICMPv6 메시지의 무결성을 검사하는 데 사용된다.
ICMPv6 패킷의 구조는 다음과 같다.
| 비트 오프셋 | 0–7 | 8–15 | 16–31 | 
|---|---|---|---|
| 0 | Type | Code | Checksum | 
| 32 | 메시지 본문 | ||
- Type: 메시지 유형을 나타낸다. (8비트)
 - Code: 메시지 유형에 따른 추가 정보를 제공한다. (8비트)
 - Checksum: 메시지 무결성 검사에 사용된다. (16비트)
 - 메시지 본문: 메시지 유형에 따라 내용이 달라진다.
 
ICMPv6의 ''type''은 IPv4의 ICMP와는 다르게 재정의되어 있으며, 프로토콜 번호는 58이다.
2. 1. 1. 오류 메시지
ICMPv6 오류 메시지는 제어 메시지의 일종으로, ''type'' 필드 값으로 식별된다. ''code'' 필드는 메시지에 대한 추가적인 정보를 제공한다.| 타입 | 의미 | 코드 | 의미 | 
|---|---|---|---|
| 1 | 목적지 도달 불가능 | 0 | 목적지로 가는 경로 없음 | 
| 1 | 목적지와의 통신이 관리상 금지됨 | ||
| 2 | 소스 주소 범위를 벗어남 | ||
| 3 | 주소에 도달할 수 없음 | ||
| 4 | 포트에 도달할 수 없음 | ||
| 5 | 소스 주소가 ingress/egress 정책에 실패함 | ||
| 6 | 목적지로 가는 경로 거부 | ||
| 7 | 소스 라우팅 헤더에 오류 발생 | ||
| 2 | 패킷이 너무 큼 | 0 | |
| 3 | 시간 초과 | 0 | 전송 중 홉 제한 초과 | 
| 1 | 단편 재조립 시간 초과 | ||
| 4 | 매개변수 문제 | 0 | 오류가 있는 헤더 필드 발견 | 
| 1 | 인식할 수 없는 다음 헤더 유형 발견 | ||
| 2 | 인식할 수 없는 IPv6 옵션 발견 | ||
| 100 | 개인 실험 | ||
| 101 | 개인 실험 | ||
| 127 | ICMPv6 오류 메시지 확장을 위해 예약됨 | 
- 목적지 도달 불가능 (Type 1): 다양한 원인으로 인해 목적지에 도달할 수 없음을 알린다.
 - Code 0: 목적지로의 경로 없음
 - Code 1: 관리적으로 금지됨
 - Code 2: 원본 주소 범위 초과
 - Code 3: 주소 도달 불가
 - Code 4: 포트 도달 불가
 - Code 5: 원본 주소가 정책의 ingress/egress를 실패함
 - Code 6: 목적지로의 루트 거부
 - Code 7: 원본 라우팅 헤더의 오류
 - 패킷이 너무 큼 (Type 2): 전송 경로상의 MTU보다 패킷 크기가 커서 전송할 수 없음을 알린다. IPv6의 패킷 단편화는 전송 중인 라우터가 아닌 송신자에서만 수행되므로 송신자는 전송되는 모든 경로에서 통과할 수 있는 패킷의 크기(경로 MTU)를 알아야 한다. 이를 수행하는 것이 경로 MTU 탐색이다.[1]
 - 시간 초과 (Type 3): 홉 제한 초과 또는 단편 재조합 시간 초과 등의 이유로 패킷의 유효 시간이 만료되었음을 알린다.
 - 파라미터 문제 (Type 4): IPv6 헤더 또는 확장 헤더의 문제점을 알린다.
 
2. 1. 2. 정보 메시지
ICMPv6 정보 메시지는 네트워크 관리에 필요한 다양한 정보를 제공하며, 다음과 같은 유형들이 있다.| 값 | 의미 | 코드 값 | 코드 의미 | 
|---|---|---|---|
| 128 | 핑 | 0 | 네트워크 연결 상태를 확인하는 데 사용된다. | 
| 129 | 핑 | 0 | 네트워크 연결 상태를 확인하는 데 사용된다. | 
| 130 | 멀티캐스트 리스너 쿼리 (MLD) | 0 | 멀티캐스트 그룹에 참여하는 호스트를 찾는다. | 
| 131 | 멀티캐스트 리스너 리포트 (MLD) | 0 | 멀티캐스트 그룹 가입을 알린다. | 
| 132 | 멀티캐스트 리스너 던 (MLD) | 0 | 멀티캐스트 그룹 탈퇴를 알린다. | 
| 133 | 라우터 요청 (NDP) | 0 | 네트워크에 있는 라우터를 찾는다. | 
| 134 | 라우터 광고 (NDP) | 0 | 라우터가 자신의 존재와 네트워크 정보를 알린다. | 
| 135 | 이웃 요청 (NDP) | 0 | IPv6 주소에 해당하는 MAC 주소를 찾는다. | 
| 136 | 이웃 광고 (NDP) | 0 | IPv6 주소와 MAC 주소 간의 연결 정보를 알린다. | 
| 137 | 리다이렉트 메시지 (NDP) | 0 | 더 나은 경로로 패킷을 보내도록 알린다. | 
| 138 | 라우터 리넘버링 | 0 | 라우터 리넘버링 커맨드 | 
| 1 | 라우터 리넘버링 결과 | ||
| 255 | 시퀀스 번호 리셋 | ||
| 139 | ICMP 노드 정보 쿼리 | 0 | 데이터 필드는 이 쿼리의 주제인 IPv6 주소를 포함한다. | 
| 1 | 데이터 필드는 이 쿼리의 주제인 이름을 포함하며 NOOP의 경우 비어있다. | ||
| 2 | 데이터 필드는 이 쿼리의 주제인 IPv4 주소를 포함한다. | ||
| 140 | ICMP 노드 정보 응답 | 0 | 응답 성공. 응답 데이터 필드는 비어있을 수도, 비어있지 않을 수도 있다. | 
| 1 | 응답자가 답변 제공을 거부한다. 응답 데이터 필드는 비어있다. | ||
| 2 | 응답자에 대한 쿼리의 Qtype을 알 수 없다. 응답 데이터 필드는 비어있다. | ||
| 141 | Inverse Neighbor Discovery Solicitation Message | 0 | |
| 142 | Inverse Neighbor Discovery Advertisement Message | 0 | |
| 143 | MLDv2 멀티캐스트 리스너 리포트 | ||
| 144 | Home Agent Address Discovery Request Message | 0 | |
| 145 | Home Agent Address Discovery Reply Message | 0 | |
| 146 | Mobile Prefix Solicitation | 0 | |
| 147 | Mobile Prefix Advertisement | 0 | |
| 148 | Certification Path Solicitation (SEND) | ||
| 149 | Certification Path Advertisement (SEND) | ||
| 151 | 멀티캐스트 라우터 광고 (MRD) | ||
| 152 | Multicast Router Solicitation (MRD) | ||
| 153 | Multicast Router Termination (MRD) | ||
| 155 | RPL 컨트롤 메시지 | ||
| 200 | 비공개 실험 | ||
| 201 | 비공개 실험 | ||
| 255 | ICMPv6 정보 메시지를 위한 확장을 위해 예약됨 | 
2. 2. 체크섬
ICMPv6는 헤더에 16비트 체크섬을 포함시켜 최소한의 수준으로 메시지 무결성을 확인한다. 체크섬은 IPv6 표준에 따라 IPv6 헤더의 가상 헤더에서 시작하여 계산되며,[3] 원본 주소, 도착 주소, 패킷 길이, 넥스트 헤더 필드로 구성된다. 넥스트 헤더 필드는 58로 설정된다. 이 가상 헤더 뒤에 ICMPv6 메시지를 더하여 체크섬을 계산한다. 체크섬 계산은 인터넷 프로토콜 표준에 따라 수행된다.[4] 이는 ICMP에서 IPv4에 대해 계산되는 방식과는 다르지만, TCP에서 수행되는 계산 방식과 유사하다.| 비트 오프셋 | 0 – 7 | 8–15 | 16–23 | 24–31 | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 원본 주소 | |||||||||||||||||||||||||||||||
| 32 | ||||||||||||||||||||||||||||||||
| 64 | ||||||||||||||||||||||||||||||||
| 96 | ||||||||||||||||||||||||||||||||
| 128 | 도착 주소 | |||||||||||||||||||||||||||||||
| 160 | ||||||||||||||||||||||||||||||||
| 192 | ||||||||||||||||||||||||||||||||
| 224 | ||||||||||||||||||||||||||||||||
| 256 | ICMPv6 길이 | |||||||||||||||||||||||||||||||
| 288 | 제로(0) | 넥스트 헤더 | ||||||||||||||||||||||||||||||
ICMPv6 노드가 패킷을 수신하면 메시지 타입에 따라 다른 작업을 수행해야 한다. ICMPv6 프로토콜은 동일한 목적지로 전송되는 오류 메시지 수를 제한하여 네트워크 과부하를 방지해야 한다.[1] 예를 들어, 노드가 오류가 있는 패킷을 계속 전달하면 ICMP는 첫 번째 패킷에 오류를 알리고, 고정된 최소 기간 또는 고정된 네트워크 최대 부하를 사용하여 주기적으로 오류를 알린다.[1] ICMP 오류 메시지는 다른 ICMP 오류 메시지에 대한 응답으로 전송되어서는 안 된다.[1] 
IPv6에서는 ICMPv6의 틀을 이용하여 주소 해결 및 주소 중복 감지 등에도 사용하며, IPv4의 ICMP와는 다른 새로운 프로토콜로 정의되어 있다. ICMPv6는 프로토콜 번호 58번을 사용하며, 에 의해 규정되어 있다.
3. 메시지 처리
4. IPv6에서의 활용
ICMPv6는 IPv4의 ARP, ICMP Router Discovery, DHCP 등의 기능을 통합한 이웃 탐색 프로토콜(NDP)을 사용하여 주소 해결, 라우터 탐색, 중복 주소 감지(DAD) 등의 기능을 수행한다. 또한, 멀티캐스트 리스너 디스커버리를 통해 IPv4의 인터넷 그룹 관리 프로토콜(IGMP)에 해당하는 기능을 수행하고,[1] 경로 MTU 탐색을 통해 전송 가능한 패킷 크기를 파악한다. IPv6 노드는 직접 노드명, 주소 등을 질의할 수 있는 노드 정보 쿼리 기능도 제공한다.[1]
4. 1. 이웃 탐색 (Neighbor Discovery)
IPv6는 ICMPv6 기반의 이웃 탐색 프로토콜(NDP)을 사용하여 주소 해결, 라우터 탐색, 중복 주소 감지(DAD) 등의 기능을 수행한다. 이는 IPv4의 ARP, ICMP Router Discovery, DHCP 등의 기능을 통합한 것이다.
라우터 광고는 ICMP에서도 정의되어 있지만, IPv6에서는 DHCP와 같은 주소 할당용 서버가 없어도 노드가 스스로 주소를 설정하는(상태 비저장 주소 자동 설정) 수단을 제공하기 위해 적극적으로 이용되고 있다. 이 또한 넓은 의미에서의 Neighbor Discovery이며, 에서 규정하고 있다.
4. 1. 1. 주소 확인
IPv6에서는 IP 주소로부터 MAC 주소를 획득하기 위해 IPv4의 ARP와 같은 별도의 프로토콜을 정의하는 대신, ICMPv6의 프레임워크(NDP, Neighbor Discovery)를 사용하여 주소 확인을 수행한다. 주소 확인을 하고 싶은 노드는 페이로드에 확인하고 싶은 IP 주소를 저장하고, 멀티캐스트 주소로 IPv4의 ARP 요청에 해당하는 Neighbor Solicitation영어 (NS) 패킷을 전송한다. 이에 응답해야 할 노드는 Target linklayer address option에 자체 노드의 MAC 주소를 저장한 Neighbor Advertisement영어 (NA)를 전송하여 주소 확인을 수행한다.[1]
NS 패킷과 NA 패킷은 RFC 4861에서 규정하고 있다.
4. 1. 2. 중복 주소 감지 (Duplicate Address Detection)
주소는 수동으로 설정하거나 상태 비저장 주소 자동 설정을 사용하여 할당하는 경우, 해당 주소의 고유성을 확인할 수 없으므로 중복 주소 감지(Duplicate Address Detection; DAD)를 통해 해당 고유성을 확인한다.[1]
어떤 노드에 주소가 할당되면 해당 주소는 'TENTATIVE' 상태가 되며 주소 중복 감지를 수행한다. 이는 target 주소에 해당 중복 감지를 수행할 주소를 넣은, 주소 확인에 사용되는 인접 요청(Neighbor Solicitation)을 전송하는 것이다. 만약 이미 해당 주소를 사용하고 있는 노드가 있다면 인접 광고(Neighbor Advertisement; NA)를 반환하므로 주소 중복을 감지할 수 있다.[1] 1초 이내에 NA가 반환되지 않으면 해당 주소는 중복이 없는 것으로 판단되어 사용 가능한 주소가 된다.[1]
4. 2. 멀티캐스트 리스너 디스커버리 (Multicast Listener Discovery)
멀티캐스트 리스너 디스커버리는 IPv4의 인터넷 그룹 관리 프로토콜(IGMP)에 해당하는 기능을 한다.[1]
4. 3. 경로 MTU 탐색 (Path MTU Discovery)
IPv6에서 패킷 단편화는 전송 중인 라우터가 아닌 송신 호스트에서만 수행되므로, 송신 호스트는 전송되는 모든 경로에서 통과할 수 있는 패킷의 크기(경로 MTU)를 알아야 한다. 이를 위해 경로 MTU 탐색이 사용된다.
송신 호스트는 초기에는 해당 인터페이스의 MTU 값 등 가능한 큰 값으로 패킷을 전송한다. 만약 도중의 라우터에서 전송 대상 인터페이스의 MTU 값이 해당 패킷보다 작으면, 라우터는 송신 호스트에게 "패킷 과대(Packet too big)" 오류를 반환하고 전송 가능한 MTU 값도 함께 알려준다. 송신 호스트는 이 정보를 바탕으로 패킷을 작게 조각내어 다시 전송한다. 이 과정을 반복하면서 송신 호스트는 전송 대상까지 도달 가능한 MTU 값(경로 MTU)을 파악하게 되고, 이후부터는 처음부터 해당 값으로 패킷을 조각내어 전송할 수 있게 된다.
4. 4. 노드 정보 쿼리
IPv6 노드는 직접 해당 노드의 노드명, 주소 등을 질의할 수 있다.[1] 4620에서는 노드명(FQDN), IPv6 주소, IPv4 주소의 질의 프로토콜에 대해 규정하고 있다.[1]
참조
[1] 
간행물
 
Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification
 
RFC 4443
 
[2] 
간행물
 
RFC 3315, § 3
 
[3] 
간행물
 
Internet Protocol, Version 6 (IPv6) Specification, Section 8.1 (Upper-Layer Checksum)
 
http://tools.ietf.or[...] 
RFC 2460
 
1998-12
 
[4] 
간행물
 
Computing the Internet Checksum
 
RFC 1071
 
1988-09
 
                        
                        본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다. 
                        모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
                        하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다. 
                        따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
                        
                        문의하기 : help@durumis.com
                    
