컴퓨터망 23) IPv6 addressing

zh025700·2022년 7월 8일
0

컴퓨터네트워크

목록 보기
23/26

컴퓨터망

23. IPv6 addressing

IPv4 프로토콜의 주소 고갈은 IPv6 프로토콜 개발의 주요 원인 중 하나다
IPv6 주소의 구조는 IPv4 주소의 구조와 몇 가지 근본적인 차이점이 있다

Introduction

  • IPv6 주소는 길이가 128비트 또는 16바이트(옥텟)이다
    • IPv6의 주소 길이는 IPv4의 주소 길이의 4배이다

Colon Hexadecimal notation

  • 주소를 더 읽기 쉽게 만들기 위해 IPv6은 콜론 16진수 표기법(또는 줄여서 콜론 16진수)을 지정한다
  • 이 표기법에서 128비트는 각각 길이가 2바이트인 8개의 섹션으로 나뉜다
    • 16진수 표기법의 2바이트에는 4자리의 16진수가 필요하다
  • 주소는 32개의 16진수로 구성되며 2바이트마다 콜론으로 구분된다

Zero compression

  • 많은 숫자가 0일 경우 주소를 축약할 수 있다
  • 섹션의 앞부분 0은 생략할 수 있다
    • 이 형식의 약어를 사용하면 0074를 74로, 000F를 F로, 0000을 0으로 쓸 수 있다
      • 3210은 약어로 쓸 수 없습니다.
  • 0으로만 구성된 연속 섹션이 있는 경우 종종 zero compression이라고 하는 것을 표기법에 적용할 수 있다
    • 0을 모두 제거하고 이중 세미콜론으로 바꿀 수 있다

CIDR Notation

  • IPv6은 계층적 주소 지정을 사용한다
  • 이러한 이유로 IPv6은 classless 주소 지정 및 CIDR 표기법을 허용한다
  • 예를 들어, 그림은 CIDR을 사용하여 60비트의 prefix를 정의하는 방법이다

Address space allocation

  • IPv4의 주소 공간과 마찬가지로 IPv6의 주소 공간은 다양한 크기의 여러 블록으로 나뉘며 각 블록은 특별한 용도로 할당된다
  • 대부분의 블록은 여전히 할당되지 않고 향후 사용을 위해 남겨져 있다
  • 주소 공간에서 각 블록의 할당과 위치를 더 잘 이해하기 위해 먼저 전체 주소 공간을 8개의 동일한 범위로 나눈다
  • 이 구분은 블록 할당을 표시하지 않지만 각 실제 블록이 있는 위치를 표시한다고 생각한다

  • 각 섹션은 전체 주소 공간(2125개 주소)의 1/8이다
  • 첫 번째 섹션에는 6개의 가변 크기 블록이 있다
    • 이 블록 중 3개는 예약되어 있고 3개는 할당되지 않았다
  • 두 번째 섹션은 하나의 단일 블록으로 간주되며 전역 유니캐스트 주소에 사용된다
  • 다음 5개 섹션은 할당되지 않은 주소다
  • 마지막 섹션은 8개의 블록으로 나뉜다
    • 블록 중 일부는 아직 할당되지 않고 일부는 특수 목적으로 예약되어 있다
  • 주소 공간의 1/8만 사용자 간의 유니캐스트 통신에 사용된다

Assigned and reserved blocks

Unspecified address

  • 전체 주소는 0으로 구성된다
  • 지정되지 않은 주소는 호스트가 자신의 주소를 모르고 그것을 찾기 위해 조회를 보내려고 할 때 사용된다
  • 모든 IPv6 패킷에는 소스 주소가 필요하므로 호스트는 이 용도로 이 주소를 사용한다
  • 지정되지 않은 주소는 목적지 주소로 사용할 수 없다
  • 이 단일 주소 하위 블록에 대한 CIDR 표기법은::/128이다

IPv6에서 지정되지 않은 주소는::/128이다 목적지 주소로 절대 사용하면 안된다

Loopback address

  • 하나의 단일 주소로 구성된다

  • 호스트가 네트워크에 들어가지 않고 스스로를 테스트하기 위해 사용하는 주소다

  • 루프백 주소는 prefix 00000000 뒤에 119개의 0과 하나의 1로 구성

  • 이 단일 주소 단일 블록에 대한 CIDR 표기법은 ::1/128이다

IPv6의 루프백 주소는 ::1/128이다 목적지 주소로 절대 사용하면 안된다

Compatible address

  • 호스트는 IPv6 주소에 포함된 IPv4 주소를 사용할 수 있다

    • IPv6 -> IPv6로 보낼때 사용된다

      • 그 사이 IPv4를 만날 수 있으니
    • 호환 가능한 주소는 96비트의 0과 32비트의 IPv4 주소로 구성된 주소다

  • IPv4 주소 앞에 96개의 0이 추가되어 128비트 IPv6 주소를 생성한다

  • CIDR 표기법은 ::/96이다

Mapped address

  • 80비트의 0, 16비트의 1, 32비트 IPv4 주소로 구성
  • IPv6 컴퓨터가 IPv4를 사용하는 컴퓨터에 패킷을 보내려고 할 때 사용
  • 패킷은 대부분 IPv6 네트워크를 통해 이동하지만 최종적으로는 IPv4를 사용하는 호스트로 전달

Unique local unicast address

  • IPv6은 private 주소 지정을 위해 두 개의 큰 블록을 사용한다
    • 하나는 사이트 수준이고 다른 하나는 링크 수준이다
  • 블록 식별자 1111 110을 가지며, 다음 비트는 주소가 선택되는 방법(로컬 또는 권한에 의해)을 정의하기 위해 0 또는 1이 될 수 있다
  • 다음 40비트는 길이 40비트의 무작위로 생성된 수를 사용하여 사이트에서 선택한다
    • 40비트 난수는 주소가 중복될 확률을 극도로 낮춘다

  • PRIVATE 주소용으로 설계된 두 번째 블록은 링크 로컬 블록이다
  • 이 블록의 하위 블록은 네트워크에서 개인 주소로 사용될 수 있다
  • 이 유형의 주소에는 블록 식별자 1111111010이 있다
  • 다음 54비트는 0으로 설정된다
  • 마지막 64비트를 변경하여 각 컴퓨터의 인터페이스를 정의할 수 있다

Multicast address

  • 멀티캐스트 주소는 하나가 아닌 호스트 그룹을 정의하는 데 사용된다
  • IPv6에서는 멀티캐스팅을 위해 많은 주소 블록이 할당된다
  • prefix 11111111을 사용한다
  • 두 번째 필드는 그룹 주소를 영구 또는 임시로 정의하는 플래그다
    • 영구 그룹 주소는 인터넷 기관에서 정의하며 항상 액세스할 수 있다
    • 반면에 임시 그룹 주소는 일시적으로만 사용된다
  • 세 번째 필드는 그룹 주소를 정의

Global unicast addressing

인터넷에서 두 호스트 간의 유니캐스트(일대일) 통신에 사용되는 주소 공간의 블록을 글로벌 유니캐스트 주소 블록이라고 한다
블록에 대한 CIDR 표기법은 2000::/3이며, 이는 이 블록(001)의 모든 주소에 대해 맨 왼쪽 비트 3개가 동일함을 의미한다
이 블록의 크기는 2^125비트로 향후 몇 년 동안 인터넷이 확장되기에 충분하다

  • 이 블록의 주소는 전역 라우팅 prefix, 서브넷 식별자 및 인터페이스 식별자의 세 부분으로 나뉜다

Global routing prefix

  • 글로벌 유니캐스트 주소의 처음 48비트를 글로벌 라우팅 prefix라고 한다
  • 48비트는 인터넷을 통해 블록을 소유한 ISP와 같은 조직 사이트로 패킷을 라우팅하는 데 사용된다
  • 이 부분의 처음 3비트는 고정(001)이므로 나머지 45비트는 최대 2^45개 사이트(민간 조직 또는 ISP)까지 정의할 수 있다
  • 인터넷의 글로벌 라우터는 n 값을 기반으로 패킷을 목적지 사이트로 라우팅합니다.

Subnet identifier

  • 16비트는 조직의 서브넷을 정의
  • 이는 조직이 최대 2^16 = 6553개의 서브넷을 가질 수 있음을 의미

Interface identifier

  • 마지막 64비트는 인터페이스 식별자를 정의
  • 인터페이스 식별자는 IPv4 주소 지정에서 hostid와 유사하다
  • 5장에서 논의한 것처럼 호스트 식별자는 실제로 호스트가 아닌 인터페이스를 정의하기 때문입니다
  • 호스트가 한 인터페이스에서 다른 인터페이스로 이동하는 경우 해당 IP 주소를 변경해야 합니다.

Mapping EUI 64

64비트 물리적 주소를 매핑하려면 그림과 같이 인터페이스 주소를 정의하기 위해 이 형식의 글로벌/로컬 비트를 0에서 1(로컬에서 글로벌로)로 변경해야 한다

Mapping Ethernet Mac Address

48비트 이더넷 주소를 64비트 인터페이스 식별자에 매핑하는 것은 더 복잡하다

  • 로컬/글로벌 비트를 1로 변경하고 16비트를 추가로 삽입해야한다
  • 추가 16비트는 15개 다음에 0 하나가 오는 FFFE16으로 정의된다

Autoconfiguration

IPv6 주소 지정의 흥미로운 기능 중 하나는 호스트의 자동 구성이다
IPv4에서 논의했듯이 호스트와 라우터는 원래 네트워크 관리자가 수동으로 구성한다 그러나 동적 호스트 구성 프로토콜(DHCP)을 사용하여 네트워크에 참여하는 호스트에 IPv4 주소를 할당할 수 있다
IPv6에서 DHCP 프로토콜은 IPv6 주소를 호스트에 할당하는 데 계속 사용할 수 있지만 호스트가 자체적으로 구성할 수도 있다

  1. 호스트는 먼저 자신을 위한 링크 로컬 주소를 생성합니다. 이것은 10비트 링크 로컬 접두사(1111 1110 10)에 54개의 0을 추가하고 64비트 인터페이스 식별자를 추가하는 것입니다. 이 식별자는 모든 호스트가 인터페이스 카드에서 생성하는 방법을 알고 있습니다. 결과는 128비트 링크 로컬 주소입니다.
  2. 그런 다음 호스트는 이 링크 로컬 주소가 고유하고 다른 호스트에서 사용하지 않는지 테스트합니다. 64비트 인터페이스 식별자는 고유해야 하므로 생성된 링크 로컬 주소는 높은 확률로 고유합니다. 그러나 확실히 하기 위해 호스트는 이웃 요청 메시지(28장 참조)를 보내고 이웃 광고 메시지를 기다립니다. 서브넷의 호스트가 이 링크 로컬 주소를 사용하는 경우 프로세스가 실패하고 호스트가 자체적으로 자동 구성할 수 없습니다. 이를 위해 DHCP 프로토콜과 같은 다른 수단을 사용해야 합니다.
  3. 링크 로컬 주소의 고유성이 전달되면 호스트는 이 주소를 링크 로컬 주소(개인 통신용)로 저장하지만 여전히 글로벌 유니캐스트 주소가 필요합니다. 그런 다음 호스트는 라우터 요청 메시지(28장 참조)를 로컬 라우터로 보냅니다. 네트워크에서 실행 중인 라우터가 있는 경우 호스트는 전역 유니캐스트 접두사와 호스트가 전역 유니캐스트 주소를 생성하기 위해 인터페이스 식별자에 추가해야 하는 서브넷 접두사를 포함하는 라우터 알림 메시지를 수신합니다. 라우터가 호스트의 설정을 도울 수 없는 경우 라우터 알림 메시지(플래그 설정)로 호스트에게 알립니다. 그런 다음 호스트는 구성을 위해 다른 수단을 사용해야 합니다.
profile
정리

0개의 댓글