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의 단위. 데이터그램은 간단한 헤더와 데이터로 구성되며, 헤더에는 소스 및 목적지 포트 번호, 길이, 체크섬 등이 포함 (신뢰성, 순서 보장, 오류 검출 및 재전송이 제공되지 않음)
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) 필드가 추가
- 고정적인 길이인 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)
- 부가적인 기능이 필요할 때에는 기본 헤더 뒤에 확장 헤더를 추가하여 사용
- 각 확장 헤더는 다음 헤더 값을 통해 식별
확장 헤더 순서
- 정해진 순서로 사용되는데 각각의 확장 헤더는 생략될 수 있지만 다른 순서로는 사용할 수 없음
- 목적지 옵션 헤더
- 라우팅 헤더 앞에 사용되는 경우에는 전송 경로에 있는 노드들에서만 해당 옵션을 사용
- 옵션 헤더가 마지막에 위치하는 경우에는 최종 목적지 호스트에서만 해당 옵션이 사용
확장 헤더 포맷
- 다음 헤더 필드: 1바이트로 다음에 위치할 헤더의 종류 표현
- 헤더 길이: 1바이트로 확장 헤더 데이터 길이
- 옵션 데이터 필드: 확장 헤더의 종류에 따라서 다르게 사용
홉-바이-홉 옵션(Hop-by-hop option)
- 홉-바이-홉 옵션은 패킷의 전달 경로에 있는 모든 노드에서 해당 옵션을 처리하고자 하는 경우 사용
- 경로상에 있는 모든 라우터에 패킷을 전달하고자 하는 경우, IPv4에서는 각각의 라우터로 패킷을 따로 전송해야 하지만 IPv6에는 홉-바이-홉 옵션을 사용하여 한 번에 전송
- 다음 헤더값은 0이며, 옵션 필드는 타입(type), 옵션 길이, 데이터 필드로 구성
[표 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은 엄격한 소스 라우팅 의미
- 남은 세그먼트 필드는 주소 목록 중 방문할 예정인 주소 개수
- 주소 필드에는 경유할 라우터 주소가 삽입
*엄격한 소스 라우팅 옵션 (Strict Source Routing): IPv6 라우팅 헤더에 정확한 경로의 모든 홉을 지정하면, 패킷은 지정된 순서대로 모든 홉을 거침
*느슨한 소스 라우팅 옵션 (Loose Source Routing): IPv6 라우팅 헤더에 거쳐야 할 주요 지점들만 지정하면, 패킷은 이 지점들을 반드시 거치면서도 그 사이의 경로는 자유롭게 선택될 수 있음
분할 헤더 옵션(Fragment Header Option)
- 전송 경로의 MTU보다 더 큰 패킷을 나누어 전송할 때 사용
- 다음 헤더 필드 값 44 사용
- 옵션 필드
- 분할 옵셋(Fragment Offset) 필드는 전체 데이터에서 해당 패킷의 상대적인 위치를 8 bit 단위로 기술
- M(More Fragment Flag) bit는 해당 패킷이 전체 데이터의 마지막 부분인지 아닌지를 나타냄. M 비트가 '0'인 경우는 해당 패킷이 마지막 패킷임을 의미
- 분할된 패킷들은 동일한 데이터로부터 분할되었음을 인식, 재조립할 수 있도록 같은 분할 식별자를 가짐
인증 헤더 옵션(Authentication Header option)
- 크게 두 가지 목적으로 사용
- 송신자가 바뀌지 않았음을 보여주는 것
- 데이터 필드의 무결성을 보장하는 것
- 수신측에서는 인증 헤더를 사용하여 정확한 송신자로부터 메시지가 올바르게 전달
- 다음 헤더 필드 값은 51 사용
목적지 헤더 옵션(Destination Header Option)
- 목적지 헤더 옵션은 패킷의 목적지 호스트에서만 특정 기능을 수행하고 싶을 때 사용되는 옵션
- 헤더 포맷은 홉-바이-홉 헤더에서와 비슷
- 목적지 옵션 헤더의 다음 헤더 필드 값은 60번 사용
IPv6 주소 구성
- 각 16 비트 블록은 다시 4자리 16진수로 변환되고 콜론으로 구분
- *RFC 2373에 의거한 기술적 경계인 64비트를 기준, 앞 64비트를 네트워크 주소, 뒤 64비트를 랜카드 장비 등으로 활용
- C간 협의에 기초하여 정책적 경계를 나눔
- 앞 48비트는 상위 네트워크 주소, 뒤 16비트는 하위 네트워크 주소
*RFC 2373: IPv6 주소 구조를 정의하는 문서
주소 프리픽스의 표기 방법
- IPv6 주소 네트워크 프리픽스 표기법은 IPv4의 *CIDR(Classless Inter-Domain Routing) 표기법과 유사
- IPv6 주소 뒤에 "/"를 표기하고 네트워크 프리픽스 길이를 10진수로 적음
- ex) 3ffe:0501:97ff:efab / 70
*CIDR(Classless Inter-Domain Routing): IP 주소와 그에 따른 라우팅을 보다 효율적으로 할당 및 관리 하기 위해 개발
IPv6 주소 구성 형식
- 주소 형태를 기술하는 필드인 포맷 프리픽스와 순수한 주소를 나타내는 주소 필드로 구성
- IPv6 주소는 전송 방법에 따라 유니캐스트, 멀티캐스트, 애니캐스트 주소로 구분
- IPv6 주소 포맷 프리픽스
[표 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"으로 시작
멀티캐스트 주소 (Multicast Address)
- 인터페이스 그룹을 식별하는 주소
- 패킷을 해당 멀티캐스트 그룹에 등록되어 있는 모든 인터페이스에 전달
- 하나의 인터페이스는 여러 멀티캐스트 그룹에 동시 가입
- 상위 8비트가 '1'로 시작
- 플래그 (Flags): 플래그 필드는 멀티캐스트 주소가 이미 정의되어 있는 주소인지, 아니면 일시적 사용을 위한 주소인지를 구분
애니캐스트 주소 (Anycast Address)
- 다수의 인터페이스를 지정한다는 점에서 멀티캐스트 주소와 비슷하지만 해당 그룹에 속하는 모든 인터페이스로 패킷이 전달되지 않고 가장 가까운 거리에 있는 인터페이스에게만 패킷 전달
- 가장 가까운 거리의 의미는 라우팅 거리가 가장 짧은 것을 의미
- 가장 가까운 네트워크 자원을 찾아내기 위한 방법
- 그룹을 나타내기 때문에 송신 주소로는 사용될 수 없으며 특정 인터페이스에 할당될 수도 없음
출처: 본 내용은 Kitri 교육과정의 pdf 파일을 참조하여 만들었습니다.
'Network > 이론' 카테고리의 다른 글
[네트워크] 방화벽(Firewall)이란? (0) | 2024.06.26 |
---|---|
[네트워크] SNMP(Simple Network Management Protocol)란? (0) | 2024.06.25 |
[네트워크 - 이중화] FHRP(First Hop Redundancy Protocol)란? (1) | 2024.06.18 |
[네트워크] ARP(Address Resolution Protocol)란? (0) | 2024.06.10 |
[보안] ACL(Access Control List)란? (0) | 2024.04.19 |