IPv4의 주소 고갈 문제 해결을 위해 IPv6는 등장하였다.
IPv4는 32비트를 사용하지만 IPv6는 128비트 주소 체계를 사용한다

IPv6 체계의 데이터그램은 위와 같은 구조를 가진다.
헤더가 40바이트로 고정되어 있고 그래서 헤더 정보를 빠르게 읽을 수 있다.
가장 큰 특징은 IP address 필드가 128비트로 늘었다는 것이다.
IPv4 datagram의 payload 부분에 IPv6 datagram을 실어 보내는 것을 터널링이라고 한다.
현재 존재하는 라우터가 모두 IPv6을 지원하지 않기 때문에 IPv4 형식으로 전달해야 하는 경우가 있는데 이 때 터널링이 사용된다. 비슷한 맥락으로 4G/5G 통신에서도 터널링이 사용된다.

위 그림을 보면 IPv4 datagram의 payload 부분에 IPv6 datagram이 들어가 있는 것을 볼 수 있다.

라우터 B, E 간에 데이터 전송을 할 때 IPv4 datagram을 사용해야 한다면 라우터 B에서 tunneling, encapsulation이 이루어진다.

source가 A, destination이 F인 IPv6 datagram을 source가 B, destination이 E인 IPv4 datagram으로 감싸서 전송하고 있는 것을 볼 수 있다.
라우터 E(dest)에 도착하면 다시 descapsulation을 수행하여 IPv6 datagram을 전달한다.