




이번 8장의 경우엔 IPv6에 대해서 공부할 것이다.
현재 IPv4의 경우 32비트의 주소 공간을 지원하는 프로토콜이지만 인터넷이 급성장함에 따라 이 정도의 크기만으로는 거의 한계점에 이른 상황이다.
이를 해결하기 위해 호스트의 주소 공간을 대폭 확장한 IPv6는 기존 인터넷 환경에서 사용하는 IPv4를 대체하기 위한 차세대 프로토콜이다.

IPv6의 다른 점은 다음과 같다.
주소 공간 확장
헤더 구조 단순화
흐름 제어 기능 지원

IPv6는 IPv4보다 적은 9개의 기본 필드만 지원하며
총 40바이트 중 32바이트는 주소 공간, 나머지 8바이트는 프로토콜 기능을 위해 사용한다.
IPv6의 패킷 헤더는 기본 헤더와 확장 헤더로 나뉜다.

확장 헤더의 종류는 위와 같다.

확장 헤더를 하나하나 자세하게 알아보자.

IPv6의 헤더 구조를 보면 2번째 줄에 Payload Length가 있다.
여기서 Payload는 위의 계층에서 가져온 데이터만을 가지고 표현한 것을 말한다.
따라서 Payload Length는 그 데이터의 길이가 얼마나 되느냐를 말하며 이 부분은 16비트가 할당되기 때문에 위에서 내려온 데이터 전체를 16비트만으로 표현하지 못하는 경우가 생긴다.
이때 확장 헤더를 붙인다.
이 확장 헤더가 바로 Hop-by-Hop Options Header이다.
이 Hop-by-Hop Options Header에서 필드 값을 기재하여 Jumbo 페이로드 옵션을 사용해 16비트만으로 표현하지 못하는 데이터를 처리할 수 있도록 도와준다.
라우터 긴급 옵션도 마찬가지로 필드에 값을 기재하여 활성화 하는 옵션이다.
소스 라우팅 방식으로 라우팅을 진행할 때 앞에 붙이는 헤더이다.
소스 라우팅 방식 = 패킷을 전송할 때 어느 라우터를 거쳐야 하는지 미리 적어놓고 보내는 방식
따라서 Routing Header도 패킷이 Routing Header에 지정된 특정 노드를 경유하여 전송하는 방식이다.

패킷을 분할할 때 사용하는 헤더로 IPv4의 Fragment Offset, Identification, MF 필드가 이곳에 속한다.
간단히 패킷 분할과 관련된 정보를 포함하는 헤더이다.
수신 호스트가 확인할 수 있는 옵션 정보를 제공한다만 알아두면 된다.
AH라고 불리는 헤더로 패킷의 무결성을 확인할 때 사용된다.
여기서 무결성이란 패킷이 전송될 때 변형이 일어났는지, 신뢰할 수 있는 송신자로부터 전달된 것인지를 의미하고
AH는 암호화하는 기능도 포함된다.
Encapsulating Security Payload Header는 페이로드 암호화와 인증된 목적지 호스트에서 암호화된 데이터를 해독하는 복호화 정보를 함께 제공한다.

이제 확장 헤더가 아닌 IPv6에 존재하는 기본 헤더들을 살펴보자.
DS = 차등 서비스를 제공하기 위해 사용
ECN = 혼잡 제어를 위해 사용
흐름을 제어하기 위해 사용되는 필드
간단히 송신 호스트와 수신 호스트의 주소가 같고 기타 사용되는 프로토콜이 같은 연속되는 패킷들이 하나의 흐름으로 처리될 수 있도록 지원하는 필드이다.
하나의 흐름에 대해서 패킷은 모두 동일한 값으로 기재되어야 한다.
A와 B 간의 흐름
A와 C 간의 흐름
A와 D 간의 흐름
이렇게 흐름들이 존재하는데
여기서 A와 B간의 흐름은 더 빨리 진행되어야 해와 같이 우선순위를 지원하는 필드이다.
지정된 값이 0인 경우는 IPv4나 IPv6로 업그레이드 되었지만 아직 Flow Label 필드의 기능을 지원하지 못하는 경우를 의미하며
이런 경우엔 0의 값을 부여하도록 한다.
따라서 0이 아닌 값을 부여받은 패킷은 같은 흐름일 경우엔 값은 값을 부여 받아야 한다.

이제 기타 다른 필드들을 확인해보자.

Version Number 필드는 IP 프로토콜의 버전 번호를 표기하는 필드로 IPv6는 6으로 지정된다.
Payload Length는 위에서 설명한 것과 같이 헤더를 제외한 상위 필드에서 내려온 데이터의 길이를 의미한다.
Next Header는 기본 헤더 다음에 이어지는 헤더(확장 헤더)의 유형을 수신 호스트에게 알려주는 필드로
만약 패킷 분할을 진행한다면 확장 헤더 중 Fragment Header를 가리키는 값이 Next Header에 기재된다.
뒤에 확장 헤더가 붙지 않는다면 상위 계층에서 내려올 때 붙어있던 헤더를 지정하게 된다.
TCP 프로토콜을 사용하면 TCP 헤더, UDP 프로토콜을 사용하면 UDP 헤더가 붙게 된다.

네트워크에서 패킷이 살아있을 수 있는 시간을 거치는 홉의 갯수로 표현하는 필드로
패킷이 거칠 수 있는 홉의 갯수를 지정하는 필드이다.
간단하게 송수신 호스트의 IP 주소가 저장되는 필드이다.

IPv6와 IPv4는 다음과 같은 차이가 있다.


출처 : GPT
요약하면 다음과 같다.
IPv4: 32비트 → 4개의 8비트로 나뉘어 표현 (10진수 점(.) 표기법).
IPv6: 128비트 → 8개의 16비트로 나뉘어 표현 (16진수 콜론(:) 표기법).

앞에 상위 주소가 무엇이냐에 따라서 용도가 달라진다.
0000 0000의 경우
IPv4와 소통하기 위해서 사용되는 용도로
IPv6에서 IPv4를 사용하는 장비에게 데이터를 전송하고 소통하기 위해서 사용된다.


클래스 D는 멀티캐스팅에서 이용되고
클래스 E는 새로운 응용 환경을 위해서 예약된 클래스이다.