ICMPv6

ICMPv6(Internet Control Message Protocol version 6)은 IPv6(인터넷 프로토콜 버전 6)용 인터넷 제어 메시지 프로토콜(ICMP) 구현체이다. IPCMv6는 RFC 4443에 정의되어 있다. ICMPv6는 IPv6의 중요한 부분이며 오류 보고와 진단 기능(예: 핑)을 수행하고, 앞으로의 변경사항을 구현할 확장기능을 위한 프레임워크를 가지고 있다.

새로운 ICMPv6 메시지 타입을 정의하는 여러 확장기능들과 기존 ICMPv6 메시지 타입을 위한 새로운 옵션들이 게시되고 있다. 이웃 탐색 프로토콜(NDP)은 IPv6의 노드 탐색 프로토콜이며 ARP의 기능을 대체하고 강화한다. 안전 이웃 탐색(Secure Neighbor Discovery, SEND)은 추가 보안을 제공하는 NDP의 확장이다. 멀티캐스트 리스너 디스커버리(MLD)는 직접 부착된 링크 위의 멀티캐스트 리스너를 IPv6 라우터가 탐색하기 위해 사용되며 이는 마치 IPv4에서 인터넷 그룹 관리 프로토콜(IGMP)을 사용하는 것과 같다. 멀티캐스트 라우터 디스커버리(MRD)는 멀티캐스트 라우터의 탐색을 허용한다.

메시지 타입과 포맷 
ICMPv6 메시지들은 오류 메시지와 정보 메시지로 분류할 수 있다. ICMPv6 메시지들은 IPv6 패킷에 의해 전달되며 이 패킷 안의 ICMPv6의 IPv6 넥스트 헤더 값은 값 58로 설정된다.

ICMPv6 메시지는 헤더와 프로토콜 페이로드로 구성된다. 헤더에는 오직 3개의 필드만을 담고 있다: type (8비트), code (8비트), checksum (16비트). type은 메시지의 타입을 지정한다. 0~127 사이(high-order 비트는 0)의 값은 오류 메시지를 나타내는 반면, 128~255 사이의 값(high-order 비트는 1)은 정보 메시지를 의미한다. code 필드의 값은 메시지의 타입에 따라 달라지며 메시지의 세부 수준을 제공한다. checksum 필드는 ICMP 메시지의 최소한의 수준의 무결성 확인을 제공한다.

타입 
컨트롤 메시지는 type 필드의 값에 의해 식별된다. code 필드는 메시지의 추가 문맥 정보를 제공한다. 일부 메시지들은 ICMP 메시지 타입과 동등한 역할을 수행한다.

위의 표는 완전하지 않으며, 할당된 IPCMv6 타입의 완전한 목록은 이 링크에서 볼 수 있다: IANA: ICMPv6 Parameters.

체크섬 
ICMPv6는 
헤더에 16비트 체크섬을 포함시킴으로써 최소한의 수준의 메시지 무결성 확인을 제공한다. 체크섬은 IPv6 표준에 의거하여 IPv6 헤더의 의사 헤더로 시작하여 계산되며 원본과 도착 주소, 패킷 길이와 넥스트 헤더 필드로 구성되며 후자의 경우 58이라는 값으로 설정된다. 이 의사 헤더 뒤에 체크섬은 IPCMv6 메시지와 함께 계속해나간다. 체크섬 계산은 인터넷 프로토콜 표준에 따라 수행된다. ICMP의 IPv4의 계산 방식과는 차이가 있으나 TCP에서 수행되는 계산 방식과 비슷하다.

메시지 처리 
IPCMv6 노드가 패킷을 수신하면 메시지의 타입에 의존하는 조치에 착수해야 한다. ICMPv6 프로토콜은 네트워크 부하를 피하기 위해 동일 도착지로 전송되는 오류 메시지의 수에 제한을 두어야 한다. 이를테면 노드가 오류가 있는 패킷의 포워드를 계속하는 경우 ICMP는 최초 패킷에 오류 신호를 보내고 주기적으로 이 작업을 수행하며, 여기에는 최소한의 고정 주기라든지 고정된 네트워크 최대 부하가 설정된다. ICMP 오류 메시지는 다른 ICMP 오류 메시지에 대한 응답에 대해 송신해서는 안 된다.

각주

외부 링크 
  IANA: ICMPv6 Parameters
 

인터넷 프로토콜
인터넷 계층 프로토콜
네트워크 계층 프로토콜
IPv6