IPv6 [컴퓨터 네트워크]

김용현·2024년 6월 23일

CS

목록 보기
4/12
post-thumbnail

본 포스트는 그림으로 공부하는 TCP/IP구조 책을 바탕으로 작성하였습니다.

IPv6

이전 포스트에 이어 이번에는 IPv6에 대해 알아보자

IPv4의 주소 길이는 32비트이다. 따라서 최대 약 43억 개의 IP 주소만을 할당할 수 있고, 현재 IP 주소의 부족 문제를 고려하여 IPv6가 새로이 표준화되었다.

패킷 포맷


IPv6의 헤더 포맷은 다음과 같다.
IPv4에 비해 훨씬 간단해졌다. 하나씩 알아보자

헤더 길이

IPv4는 가변 길이 옵션 필드가 있어 20바이트에서 헤더 길이가 달라진다. 그러나 IPv6는 확장 헤더라는 다른 헤더로 분리하여 IP 페이로드 앞에 배치함으로써 헤더 길이를 40바이트로 고정하고 있다.

헤더 길이가 고정되어 있어 받은 패킷 헤더의 길이를 하나하나 조사할 필요가 없어져 처리 부하가 줄고 성능이 향상된다.

필드 수 감소

성능 향상에 도움이 되지 않는 필드를 줄여 단순함을 표방하였다.

버전

버전을 나타내는 필드로 6이 들어간다.

트래픽 클래스

IPv6 패킷의 우선도를 나타내는 1바이트 필드이다. IPv4의 Tos 필드에 해당하며 QoS에서 사용한다.

플로우 라벨

통신 흐름을 식별하는 20비트 필드이다. IPv4에서는 '송신지 IP 주소, 수신지 IP 주소, 송신지 포트 번호, 수신지 포트 번호, L4 프로토콜'의 5개 정보를 기반으로 통신 흐름을 식별한다.

반면 IPv6에서는 이들을 플로우 라벨로 모아 정의하며, '이 값이면 이렇게 처리한다' 등과 같이 유연하게 처리할 수 있다.

페이로드 길이

IPv6의 페이로드 길이를 나타내는 2바이트 필드이다. IPv4는 헤더와 페이로드의 길이를 합친 값이 들어갔지만, IPv6에서는 헤더 길이가 40바이트로 고정이므로, 오직 페이로드 길이만 저장된다.

넥스트 헤더

IPv6 헤더 바로 뒤에 이어지는 헤더를 나타내는 1바이트 필드로 확장 헤더가 있다면 확장 헤더를 나타내는 값이 들어간다. 확장 헤더가 없다면 IPv4의 프로토콜 번호와 같은 역할을 한다.

홉 리미트

홉 수의 상한값을 나타내는 1바이트 필드이다. IPv4의 TTL에 해당한다.

송신지/수신지 IPv6 주소

IPv6 네트워크에서 주소와 같은 역할을 한다.

IPv6 주소와 프리픽스

IPv6 주소의 길이는 128비트이다. 따라서 약 340간 개의 주소를 할당할 수 있다.

IPv6는 128비트를 16비트씩 :(콜론)을 이용해 8개의 16진수로 표기한다.

서브넷 프리픽스와 인터페이스 ID

서브넷 프리픽스 = IPv4의 네트워크 부분
인터페이스 ID = IPv4의 호스트 부분

어디까지가 서브넷 프리픽스인가? -> CIDR 표기법 사용
ex) 2001:db8:0:0:0:0:0:1/64의 경우
2001:db8:0:0 네트워크에 포함된 0:0:0:0:1이라는 단말이다.

IPv6 주소 표기 규칙

일단 주소가 128비트로 굉장히 길기 때문에 복잡허다.

각 필드 맨 앞에 연속한 0은 생략할 수 있다.

각 필드(:(콜론)으로 구분된 각 영역) 맨 앞에 연속한 0이 있는 경우 생략할 수 있다. 만약 전부 다 0이면 그냥 0 하나 쓰면 된다.

여러 필드에 걸쳐 0이 이어질 때는 ::으로 생략할 수 있다.

한 필드 안에서 0이 연속되는 경우 뿐만 아니라 여러 필드가 0으로 차있는 것이 연속된다면 그 구간만큼 생략할 수 있다.

생략은 한 번만 할 수 있다.

여러 필드에 걸쳐 0이 나타나는 경우가 간격을 두고 여러 번 나타나더라도 생략은 가장 많이 생략될 수 있는 부분을 생략한다.

하나의 필드만 모두 0일 때 생략할 수 없다.

::으로 생략하는 경우는 여러 필드에 0이 계속되어 이어질 때 뿐이다.

가능한 짧게 만든다.

사용자 마음대로 생략할 수 있음에도 생략을 하지 않는 것은 불가능하다.

가장 많이 생략할 수 있는 부분을 생략한다.

생략할 수 있는 곳이 여러 곳일 때는 가장 많이 생략할 수 있는 부분을 생략해야 한다. 이 때 가장 많이 생략되는 곳의 길이가 같다면 가장 첫 위치를 생략한다.

소문자로 표기한다.

IPv6의 주소는 소문자로 표기해야 한다.

다양한 IPv6 주소

IPv6 주소는 다음

  • 유니캐스트 주소
  • 멀티캐스트 주소
  • 애니캐스트 주소

총 3가지로 분류할 수 있다.

하나씩 알아보자

유니캐스트 주소

1:1 통신에서 사용하는 IPv6 주소이다. 웹, 메일 통신의 경우에 해당한다. 이 중에서도 특별한 역할을 하는 주소들이 정의 되어 있는데,

글로벌 유니캐스트 주소(2000::/3)

IPv4의 글로벌 IPv4 주소에 해당한다. 인터넷 상에서 고유한 IPv6 주소이며 ICANN과 그 하부조직에 의해 세계적, 계층적으로 관리되고 있다.

글로벌 유니캐스트 주소는 앞의 3비트가 001인 IPv6 주소인데 이를 16진수로 표기하면 2000::/3이 된다.

서브넷 프리픽스 안에 글로벌 라우팅 프리픽스와 서브넷 ID를 나누어 서브네팅을 수행한다.

유니크 로컬 주소(fc00::/7)

IPv4의 프라이빗 주소에 해당하는 주소로 조직 내에 유일한 IPv6 주소이다.

주로 하트비트용 네트워크나 네트워크 스토리지용 네트워크 등 외부와 교환하지 않고 내부에서 완결되는 통신 네트워크에 사용한다.

주소 앞의 7비트가 1111110인 주소로 16진수로 표기하면 'fc00::/7'이 된다.

8비트는 로컬에서 관리되는가를 나타내는 비트로 0은 미정의, 1이 로컬을 나타낸다. 0의 의미는 아직 RFC에서 정의되지 않았으므로 실질적으로 1만 존재한다. 즉, fd00::/8 뿐이다.

이어서 나오는 Global ID는 사이트를 식별하는 40비트의 필드이다. 일정한 계산 방법에 의해 무작위로 생성해야 하며, 이후 16비트는 서브넷 ID, 그 뒤로 64비트의 인터페이스 ID가 이어진다.

링크 로컬 주소(fe80::/10)

같은 네트워크 내에서만 통신할 수 있는 주소이다.
링크 로컬 주소는 앞의 10비트가 1111111010인 주소로 16진수로 표기하면 fe80::/10이 된다.

11비트 이후에는 54비트의 0, 64비트의 인터페이스 ID가 주어진다.

이 외에도 특수한 주소가 정의되어 있다.

멀티캐스트 주소


IPv4 주소의 클래스 D에 대응하는 IPv6 주소로 특정 그룹에 대한 통신에 사용한다.
또한 IPv4에 있던 브로드캐스트도 IPv6에서는 멀티캐스트의 일부로 취급한다.

멀티 캐스트 주소는 앞 8비트가 모두 1인 주소로 16진수로 표기하면, ff00::/8이 된다. 이어지는 4비트는 IANA에 의해 예약되어 있으며 영구적인 주소인지 아닌지를 나타낸다.

그 뒤 4비트는 멀티 캐스트가 도달하는 범위를, 마지막 112비트가 멀티캐스트 그룹을 식별하는 ID를 나타낸다.

애니캐스트 주소

여러 단말에 의해 공유되어 있는 글로벌 유니캐스트 주소이다. 즉 하나의 유니캐스트를 여러 개의 단말에 할당하면 애니캐스트 주소가 된다.

profile
평생 여행 다니는게 꿈 💭 👊 😁 🏋️‍♀️ 🦦 🔥

0개의 댓글