본문 바로가기
Network/이론

[네트워크] IPv6란?

by 재현짱 2024. 6. 24.
728x90

IPv6란?

개요

  • IPv4의 한계를 극복하기 위해 설계된 인터넷 프로토콜
  • 차세대 IP(IPng: Internet Protocol Next Generation)에 대한 연구가 IETF(Internet Engineering Task Force)에서 진행
  • IPv6(IP version 6, RFC 2460) 탄생

등장배경

IPv4의 한계

  • IP 주소의 부족
  • 다양한 Iot 네트워크 등장
  • 취약한 인터넷 보안

개선

  • IPv4: 32 bit => IPv6: 128 bit
  • 하나의 주소 계층을 여러 계층으로 분할
  • 확장헤더를 이용해 종단간 암호화 지원

IPv4와 IPv6의 특징

 

[표 1] IPv6와 IPv4의 특징

구분 IPv4 IPv6
주소 길이 32 bit 128 bit
표시 방법 8 bit씩 4부분으로 10진수 표시 16 bit씩 8부분으로 16진수로 표시
주소 개수 약 48억개 ( 2의 8승) 3.4*10의 32승
주소할당 방식 클래스 단위의 비순차적 할당 네트워크 규모, 단말기 수에 따른 순차적 할당
브로드캐스트 있음 없음
헤더 크기 고정 가변
QoS 제공 미흡 제공
보안 IPSex 프로토콜 별도 설치 IPSec 자체 지원
서비스 품질 제한적 품질 보장 확장된 품질 보장
Plug & Play 불가 자동 구성 지원

 

IPv6 패킷 구성

  • 기본 헤더: 40 bit, 패킷의 기본적인 정보와 송수신 주소 등, 전송에 필수적인 정보로 구성
  • 확장 헤더(Extension Header): 추가적인 전송 기능이 필요할 때 사용되며 기본 헤더 뒤에 선택적으로 추가
  • 데이터 필드: IP 상위 프로토콜에서 사용하는 부분으로 *TCP 세그먼트*UDP 데이터그램 등이 될 수 있음

*TCP Segment: 데이터 전송을 위한 TCP Protocol의 단위. 각 세그먼트는 TCP 헤더와 데이터로 구성되며, 헤더에는 소스 및 목적지 포트 번호, 시퀀스 번호, 확인 응답 번호 등이 포함 (신뢰성, 순서 보장, 오류 검출 및 재전송 제공)

 

*UDP Datagram: 데이터 전송을 위한 UDP Protocol의 단위. 데이터그램은 간단한 헤더와 데이터로 구성되며, 헤더에는 소스 및 목적지 포트 번호, 길이, 체크섬 등이 포함 (신뢰성, 순서 보장, 오류 검출 및 재전송이 제공되지 않음)

IPv4 IPv6 헤더

 

IPv6 패킷 포맷

  • IPv4의 헤더 길이(Header Length), 식별자(Identification), 플래그(Flags), 분할 옵셋(Fragment Offset), 헤더 체크섬( Header Checksum)과 같은 다섯 가지 필드가 제거
  • 서비스 타입 (TOS) 필드는 트래픽 클래스(Traffic Class) 필드로 대체
  • 프로토콜 타입(Protocol Type) 필드와 TTL(Time To Live) 필드는 다음 헤더(Next Header)와 홉 제한(Hop Limit) 필드로 이름이 변경
  • 플로우 레이블(Flow Lable) 필드가 추가

IPv6 패킷 포맷

  • 고정적인 길이인 40byte 헤더를 사용하기 때문에 헤더의 길이를 예측 가능
  • 하드웨어 관점에서 신속한 처리 가능
  • IPv4 가변길이 패킷과의 호환을 위해 IPv6에서는 기본 헤더 뒤에 확장 헤더를 삽입 가능
  • 패킷 단편화 관련 필드가 삭제됨
  • 패킷을 단편화 시키는 기능은 라우터 부하를 증가시키는 원인, 네트워크 자원의 효율성을 저하시키기 때문에 IPv4에서 사용하던 식별자 필드와 단편 오프셋 필드를 삭제
  • IPv4 헤더에 있던 체크섬 필드 삭제됨
  • 체크섬 필드는 패킷의 정확한 전송 여부를 검사하기 위한 필드, 데이터링크 계층에서 체크섬 계산이 실시되기 때문에 체크섬 게산을 하기 위한 부하를 줄이기 위해 삭제
  • IPv4에 비해서 주소 필드의 증가로 기본 헤더의 길이는 두 배, 전체 필드수는 12 -> 8개로 단순화 (기본 처리 속도 향상)

버전(Version)

  • IP Protocol Version을 의미 
  • 6으로 설정

트래픽 클래스(Traffic Class: 8 bit)

  • IPv6 패킷의 클래스나 우선 순위를 나타내며 IPv4의 TOS(Type Of Service) 필드와 유사한 기능 수행
  • 실시간 데이터와 같이 특별한 처리가 필요한 경우 특정 값을 사용하여 다른 패킷과의 차별화를 지원
  • 트래픽 클래스 필드는 IPv6 패킷이 IPv4 패킷으로 변활될 때 IPv4의 TOS 필드 값 계산에 활용

플로우 레이블(Flow Label: 20 bit)

  • 동일한 서비스 클래스를 필요로 하는 패킷들을 표현
  • 기본적으로 0으로 설정됨
  • 음성, 화상등의 실시간 데이터 트래픽을 나타내기 위해 0이 아닌 값으로 설정

페이로드 길이(Payload Length: 16 bit)

  • 페이로드 길이를 바이트 단위로 표시
  • 최대 길이 65,535 바이트
  • 이보다 더 큰 데이터를 보낼 때는 점보 페이로드(Jumbo Payload) 확장 헤더 옵션을 사용
  • 점보 페이로드 옵션을 사용할 때 페이로드 길이 필드는 0으로 설정

다음 헤더(Next Header: 8 bit)

  • IPv6 기본 헤더 이후에 전송되는 데이터 종류를 나타내며 확장 옵션 또는 상위 계층 데이터의 종류를 지정

[표 2] Next Header

값(10진수) 헤더
0 홉-바이-홉 (Hop-by-Hop) 옵션
1 ICMPv4
2 IGMPv4
4 IP
6 TCP
17 UDP
41 UPv6
43 라우팅 헤더 (Routing header) 옵션
44 분할 헤더 (Fragment header) 옵션
45 IDRP (Interdomain Routing Protocol)
46 RSVP (Resource Reservation Protocol)
50 ESP (Encapsulation Security Payload) 헤더
51 인증 헤더 (Authentication header)
58 ICMPv6
59 헤더 없음 (No Next Header)
60 목적지 옵션 헤더 (Destination Option Header)
134-254 미 지정
255 예약된 부분 (Reserved)

 

홉 제한(Hop Limit: 8 bit)

  • 패킷이 경유할 수 있는 최대 라우터 홉 수를 나타냄
  • 홉 제한 필드 값은 IPv4의 TTL 필드와 같이 라우터를 지날때마다 1씩 감소되어 0이 되면 패킷을 폐기하고 송신측으로 ICMP 메시지가 전달
  • 임의의 값을 주어 패킷의 전송 범위를 제한

확장 헤더(Extension Header)

  • 부가적인 기능이 필요할 때에는 기본 헤더 뒤에 확장 헤더를 추가하여 사용
  • 각 확장 헤더는 다음 헤더 값을 통해 식별

Extension Header

 

확장 헤더 순서

  • 정해진 순서로 사용되는데 각각의 확장 헤더는 생략될 수 있지만 다른 순서로는 사용할 수 없음
  • 목적지 옵션 헤더
    • 라우팅 헤더 앞에 사용되는 경우에는 전송 경로에 있는 노드들에서만 해당 옵션을 사용
    • 옵션 헤더가 마지막에 위치하는 경우에는 최종 목적지 호스트에서만 해당 옵션이 사용

확장 헤더 순서

 

확장 헤더 포맷

  • 다음 헤더 필드: 1바이트로 다음에 위치할 헤더의 종류 표현
  • 헤더 길이: 1바이트로 확장 헤더 데이터 길이
  • 옵션 데이터 필드: 확장 헤더의 종류에 따라서 다르게 사용

확장 헤더 포맷

 

홉-바이-홉 옵션(Hop-by-hop option)

  • 홉-바이-홉 옵션은 패킷의 전달 경로에 있는 모든 노드에서 해당 옵션을 처리하고자 하는 경우 사용
  • 경로상에 있는 모든 라우터에 패킷을 전달하고자 하는 경우, IPv4에서는 각각의 라우터로 패킷을 따로 전송해야 하지만 IPv6에는 홉-바이-홉 옵션을 사용하여 한 번에 전송
  • 다음 헤더값은 0이며, 옵션 필드는 타입(type), 옵션 길이, 데이터 필드로 구성

Hop-By-Hop

 

[표 3] Hop-By-Hop Option Type

종류 설명
Pad1 Pad1은 한 바이트 패딩 데이터를 삽입하여 다른 옵션들을 4 bit 단위로 정렬하기 위해 사용
PadN PadN은 여러 바이트의 패딩을 위해 사용
한 바이트 이상의 패딩을 위해서는 여러 개의 Pad1보다는 PadN을 사용
PadN은 옵션 타입으로 1을 사용
점보 페이로드
(Jumbo Payload)
IPv6에서는 페이로드 길이를 65,535 bit로 제한
65,535 보다 더 큰 IPv6 패킷을 점보그램(Jumbogram)이라고 하는데, 점보 페이로드는 점보그램을 전송하기 위해 사용
점보 페이로드는 옵션 타입으로 194, 옵션 길이로 4 bit를 사용
라우터 경고
(Router Alert)
패킷이 경유하는 모든 라우터에게 IP Packet의 내용을 더  자세히 검사하도록 경고를 하는 옵션
라우터 경고 옵션은 대역폭 예약 프로토콜인 RSVP(Resource Reservation Protocol)와 같이 경로상의 모든 라우터에서 특정한 처리를 필요로 하는 경우에 사용

 

라우팅 헤더 옵션(Routing Header Option)

  • 송신측에서 지정한 경로를 따라서 패킷 전송
  • IPv4의 *엄격한 소스 라우팅 옵션*느슨한 소스 라우팅 옵션을 모두 지원
  • 다음 헤더 값으로 43 사용
  • 라우팅 헤더 옵션 필드
    • 라우터 타입 필드는 라우팅 주소 운용 방법을 규정, 0은 느슨한 소스 라우팅, 1은 엄격한 소스 라우팅 의미
    • 남은 세그먼트 필드는 주소 목록 중 방문할 예정인 주소 개수
    • 주소 필드에는 경유할 라우터 주소가 삽입

Routing Header Option

 

*엄격한 소스 라우팅 옵션 (Strict Source Routing): IPv6 라우팅 헤더에 정확한 경로의 모든 홉을 지정하면, 패킷은 지정된 순서대로 모든 홉을 거침

 

*느슨한 소스 라우팅 옵션 (Loose Source Routing): IPv6 라우팅 헤더에 거쳐야 할 주요 지점들만 지정하면, 패킷은 이 지점들을 반드시 거치면서도 그 사이의 경로는 자유롭게 선택될 수 있음

 

분할 헤더 옵션(Fragment Header Option)

  • 전송 경로의 MTU보다 더 큰 패킷을 나누어 전송할 때 사용
  • 다음 헤더 필드 값 44 사용
  • 옵션 필드
    • 분할 옵셋(Fragment Offset) 필드는 전체 데이터에서 해당 패킷의 상대적인 위치를 8 bit 단위로 기술
    • M(More Fragment Flag) bit는 해당 패킷이 전체 데이터의 마지막 부분인지 아닌지를 나타냄. M 비트가 '0'인 경우는 해당 패킷이 마지막 패킷임을 의미
    • 분할된 패킷들은 동일한 데이터로부터 분할되었음을 인식, 재조립할 수 있도록 같은 분할 식별자를 가짐

Fragment Header Option

 

인증 헤더 옵션(Authentication Header option)

  • 크게 두 가지 목적으로 사용
    • 송신자가 바뀌지 않았음을 보여주는 것
    • 데이터 필드의 무결성을 보장하는 것
  • 수신측에서는 인증 헤더를 사용하여 정확한 송신자로부터 메시지가 올바르게 전달
  • 다음 헤더 필드 값은 51 사용

목적지 헤더 옵션(Destination Header Option)

  • 목적지 헤더 옵션은 패킷의 목적지 호스트에서만 특정 기능을 수행하고 싶을 때 사용되는 옵션
  • 헤더 포맷은 홉-바이-홉 헤더에서와 비슷
  • 목적지 옵션 헤더의 다음 헤더 필드 값은 60번 사용

IPv6 주소 구성

  • 각 16 비트 블록은 다시 4자리 16진수로 변환되고 콜론으로 구분
  • *RFC 2373에 의거한 기술적 경계인 64비트를 기준, 앞 64비트를 네트워크 주소, 뒤 64비트를 랜카드 장비 등으로 활용
  • C간 협의에 기초하여 정책적 경계를 나눔
  • 앞 48비트는 상위 네트워크 주소, 뒤 16비트는 하위 네트워크 주소

*RFC 2373: IPv6 주소 구조를 정의하는 문서

IPv6 Address

주소 프리픽스의 표기 방법

  • IPv6 주소 네트워크 프리픽스 표기법은 IPv4의 *CIDR(Classless Inter-Domain Routing) 표기법과 유사
  • IPv6 주소 뒤에 "/"를 표기하고 네트워크 프리픽스 길이를 10진수로 적음
  • ex) 3ffe:0501:97ff:efab / 70

*CIDR(Classless Inter-Domain Routing): IP 주소와 그에 따른 라우팅을 보다 효율적으로 할당 및 관리 하기 위해 개발

 

IPv6 주소 구성 형식

  • 주소 형태를 기술하는 필드인 포맷 프리픽스와 순수한 주소를 나타내는 주소 필드로 구성
  • IPv6 주소는 전송 방법에 따라 유니캐스트, 멀티캐스트, 애니캐스트 주소로 구분
  • IPv6 주소 포맷 프리픽스

IPv6 주소 Fomat Prefix

 

[표 4] IPv6/IPv4 주소 대응 관계

구분 IPv4주소 IPv6주소
멀티캐스트 주소 224.0.0.0/4(D class) FF00::/8
브로드캐스트 주소 255.255.255.255 또는
호스트 주소의 모든 bit가 1인 경우
해당 주소 없음
미지정 주소 0.0.0.0/32 ::/128
루프백 주소 127.0.0.1 ::1/128
공인 IP 주소 공인 IP 주소 Global Unicast Address
사설 IP 주소 10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
해당 주소 없음
링크 로컬 주소 169.254.0.0/16 FE80::/64

 

IPv6와 IPv4 주소의 동시 사용방법

 

Dual Stack (듀얼 스택)

  • 동일한 네트워크에 IPv4와 IPv6를 별개로 동작시키는 방법

Tunneling (터널링)

  • IPv4 패킷에 IPv6 패킷을 실어서 전송하거나 반대로 IPv6 패킷에 IPv4 패킷을 실어서 전송

NAT-PT (NAT-Protocol Translation)

  • IPv6 패킷과 IPv5 패킷을 변환하는 것을 NAT-PT 라고 함
  • 기술적인 문제와 복잡성으로 인하여 RFC 4966에서 더 이상 사용하지 않기로 함

IPv6 유니캐스트 주소

  • 단일 인터페이스를 식별하기 위한 주소
  • 주소 공간의 확장으로 더 많은 계층으로 구성
  • 미지정 주소 (Unspecified address)
  • 루프백 주소
  • IPv4 호환 주소 (IPv4-compatible address)

통합 글로벌 유니캐스트 주소(Aggregatable global unicast address)

  • 각 인터페이스를 유일하게 식별하는 주소로 IPv4의 공인 IP 개념
  • 통합 글로벌 유니캐스트 주소 형태

통합 글로벌 유니캐스트 주소

 

  • Format Prefix의 크기는 3 비트
  • 많은 양의 IPv6 주소를 체계적으로 할당하기 위한 역활과 주소의 종류를 구분
  • FP는 IANA(Internet Assigned Numbers Authority)가 관리

NLA 식별자 (Next Level Aggregation ID)

  • 두번째 라우팅 계층 주소로 19비트 사용
  • 특정 네트워크를 구별하기 위해 사용 Sub-TLA 에서 지정한 할당 기관에 의해 기관 단위로 할당 (국가기관 및 대형 ISP 등이 관리)
  • NLA 식별자는 네트워크 규모에 따라 더 많은 계층으로 나누어 사용 가능
  • 상위 3비트를 제외한 글로벌 크기인 32 ~ 48 비트까지를 관리하고 하위 사이트에게 /48 네트워크를 할당

SLA 식별자 (Site Level Aggregation ID)

  • IPv6 주소를 할당받고자 하는 사용자들의 집합 의미
  • 사이트 레벨 네트워크 식별자로 NLA 식별자를 할당받은 관리자가 해당 네트워크에서 서브넷을 구축하기 위해 사용하는 식별자
  • IPv4의 서브넷 식별자에 해당하는 부분, 16 비트로 구성되어 있기 때문에 최대 65,535개의 서브넷 구성이 가능
  • 각 사이트들은 글로벌 주소의 SLA 부분인 48-64비트까지를 관리, 내부 장비들에게 /64 네트워크 할당

사이트 로컬 주소 (Site Local Address)

  • IPv4의 사설 주소와 비슷한 개념으로 IPv6 프로토콜을 사용하지만 보안등의 이유로 인터넷에 접속하지 않은 경우에 사용되는 주소
  • 로컬 사이트 내에서만 사용 가능
  • 외부에서 사이트 로컬 주소를 사용하는 호스트로 패킷 전송 불가능
  • 로컬 주소는 "1111 1110"으로 시작

Site Local Address

멀티캐스트 주소 (Multicast Address)

  • 인터페이스 그룹을 식별하는 주소
  • 패킷을 해당 멀티캐스트 그룹에 등록되어 있는 모든 인터페이스에 전달
  • 하나의 인터페이스는 여러 멀티캐스트 그룹에 동시 가입
  • 상위 8비트가 '1'로 시작
  • 플래그 (Flags): 플래그 필드는 멀티캐스트 주소가 이미 정의되어 있는 주소인지, 아니면 일시적 사용을 위한 주소인지를 구분

Multicast Flags

 

애니캐스트 주소 (Anycast Address)

  • 다수의 인터페이스를 지정한다는 점에서 멀티캐스트 주소와 비슷하지만 해당 그룹에 속하는 모든 인터페이스로 패킷이 전달되지 않고 가장 가까운 거리에 있는 인터페이스에게만 패킷 전달
  • 가장 가까운 거리의 의미는 라우팅 거리가 가장 짧은 것을 의미
  • 가장 가까운 네트워크 자원을 찾아내기 위한 방법
  • 그룹을 나타내기 때문에 송신 주소로는 사용될 수 없으며 특정 인터페이스에 할당될 수도 없음

 

 

출처: 본 내용은 Kitri 교육과정의 pdf 파일을 참조하여 만들었습니다.