본문 바로가기
학교공부/[컴퓨터 네트워크]

[컴퓨터 네트워크] - Network Layer_IPv6

by 윈디개 2025. 6. 5.

 지난 글에서 NAT에 대해서 설명할 때, IPv4의 주소 부족 문제를 IPv6로 대체하면서 해결해야 된다고 했지만, NAT라는 편법같은 방법을 사용함으로써 IPv6가 잘 쓰이고 있지 않다고 정리했다.

 

 이번 정리글에서는 이 IPv6가 무엇인지, 어떻게 IPv4의 주소 부족 문제를 해결해 대안으로 나왔는지에 대해서 정리해 볼 것이다.


1. IPv6 datagram 포맷

 이전 IP 관련 정리글에서, datagram 포맷에 대해서 정리했는데, 그 글에서 정리했던 포맷은 IPv4의 datagram이었다. 이번에는 IPv6의 datagram 포맷에 대해서 정리해 보려고 한다. 다음 사진을 먼저 확인해 보자.

첫째줄부터 차례대로 살펴보자.

  • ver : IP의 버전을 나타낸 것이고, IPv6이다.
  • pri : flow에서 우선순위를 식별하기 위한 필드이다.
  • flow label : 같은 "flow"에서 datagram을 식별하기 위한 field("flow"의 개념은 잘 정의되어 있지 않다.)

다음 둘째줄을 살펴보자.

  • payload len : 데이터의 길이
  • next hdr : TCP/UDP 구분
  • hop limit : IPv4의 TTL(time to leave) 역할, hop 지날 때마다 감소, 0되면 버림

나머지 부분도 살펴보자.

  • source address : IPv6의 source 주소를 128bits로 나타낸 것이다. 총 4줄로 나타낸다.
  • destination address : IPv6의 목적지 주소를 128bits로 나타낸 것이다. 총 4줄이다.
  • payload(data) : 상위계층 헤더들 + 실제 데이터들

IPv6의 datagram 헤더의 크기는 IPv4와 다르게 총 40byte이다. IPv4와 다른 점들은 다음과 같다.

  • checksum이 없다.
  • fragmentation/reassembly가 없다. 이는 요즘 2계층이 Ethernet로 거의 통일되었기 때문에 쪼갤 필요가 없어졌기 때문
  • no options : option이 필요하면 상위 계층에서 구현하도록 하고, 3계층의 역할을 간소화한다.

위와 같은 필드들을 제거했지만, 그만큼 source address와 destination address의 크기를 늘렸기 때문에 header의 크기는 40byte로 더 커졌다.


2. Tunneling

현재, 모든 라우터가 동시에 IPv6를 지원하도록 업그레이드하는 것은 현실적으로 어렵다. 과거에는 인터넷 의존도가 높지 않았기 때문에, 1983년 TCP/IP 전환 때와 같이 “flag day”를 정해 일괄적으로 전환하는 방식도 가능했지만, 현대처럼 인터넷에 전적으로 의존하는 환경에서는 이런 대규모 일괄 전환은 불가능하다.

 

 이런 이유로, IPv6로 모든 라우터가 대체될 때까지(아마 이런 일은 거의 일어나지 않을 것 같긴 하다) IPv4와 IPv6를 같이 써야하는 상황이 발생한다. 그렇다면, 이 둘을 어떻게 같이 쓸 수 있을까?

 

 위 질문에 대한 해결책이 바로 Tunneling이다. 이 터널링은 IPv6 datagram이 IPv4 라우터에서 IPv4 datagram처럼 운반되는 것이다. 다음 그림을 확인해 보자.

 

 위 그림과 같이 IPv6의 Datagram에 IPv4 datagram의 header와 source,destination 주소를 씌워주는 것이다. 이런 방법들은 5G 휴대폰이 4G 기지국을 잠시 지나갈 때, 자동으로 4G 방식으로 전환되는 것과 비슷한 개념이다.

 

 다음 그림과 같은 상황을 가정해 보자.

위 그림과 같이 IPv6를 지원하는 라우터들 사이에 IPv4만을 지원하는 router들의 네트워크가 존재하는 상태이다. 이때 사용하는 방법이 tunneling인데, IPv6는 logical view로 다음과 같이 표현할 수 있다.

위의 그림과 같이 IPv6를 지원하는 라우터들은 서로 직접 연결된 것처럼 생각하고, B-E는 그저 긴 터널이 있다고 생각한다. 실제로는 다음 그림과 같다.

 이렇게 되면, B를 통과하고 나서는, tunneling을 통해 IPv4만을 지원하는 라우터 C를 IPv4 datagram인 것처럼 통과해야 된다. 즉, B에 C로 datagram을 보낼 때, IPv4 datagram의 헤더와 src, dest 주소 정보를 씌워서 보내야된다. 다음 그림을 한 번 살펴보자.

즉, 위의 그림과 같이, B에서 전달할 때는, 빨간색 부분처럼, IPv6를 다시 지원하기 시작하는 지점의 라우터인 E를 목적지로 해서 IPv4 datagram을 씌워주는 것이다. 그 이후, E를 통과하면, 빨간쌕 부분을 벗기고 최종 목적지로 데이터를 옮기게 된다.


3. IPv6 채택 비율

 사실 IPv6는 무려 30년 전부터 나온 버전이다. 그렇지만, 현재까지는 약 30% 정도만이 사용하고 있고, 아마 여기서 더 이상 IPv4의 취약점이 발견되기 전까지는(아마 발견 안 될 가능성이 농후..) 채택 비율이 늘어갈 것 같지는 않다고 한다.

 

 이런 이유는 저번에 설명했던 NAT와 같은 IP주소 확장 기술 때문이다. 이 NAT도 감당하지 못하는 IP 주소가 필요하다면, 옮길 가능성이 있지만 이마저도 가능성이 그리 커 보이지 않는다.