IPv6 Header.
#1 Summary.
이래저래 살다보니 글이 늦어진 거 같다. 개인적으로는 공부할 게 너무 많은 거 같다.물론 헤더에 관해서 굳이 깊이 알아야되나 싶기도 하지만 한 번 제대로 알면 나중에 까먹어도 기억하기 쉬울 것이다. 누누히 말하자면 같이 공부하는 입장에서 많이 부족하니까 이미 아시는 분은 참고 정도로 생각해주시면 감사하겠다.
#2 Simple Differences Between The IPv4 Header And The IPv6 Header.
일단 IPv4에 비해 주소 필드의 증가로 기본 헤더의 길이는 2배가 되었고, 전체 필드 수는 12개에서 8개로 단순화되어 기본적인 처리 속도를 개선할 수 있게 되었다. IPv6 헤더는 패킷 처리에 대해 오버헤드를 줄이기 위해서 IPv4의 헤더에 비해 좀 더 정확하고 단순하게 구성되었다. IPv4에서는 사용 빈도가 높지 않은 헤더 필드를 삭제하고 확장 헤더를 도입하여 선택적인 사용이 가능하게 되었다. 즉 패킷을 중계하는 라우터들의 과부하를 줄이기 위한 것이다. 크케 2가지 특징이 존재한다.
1st ==> 헤더가 고정 길이로 변경되었다. 헤더의 길이를 고정하여 시스템에서 헤더의 길이를 파악하기가 쉬워져서 하드웨어를 이용한 빠른 처리가 가능해졌다. 또한 IPv4의 가변 길이 패킷과의 호환성 문제를 위해 IPv6에서는 선행 헤더 뒤에 확장 헤더를 붙여서 사용되게 구성되었다.
2st ==> 패킷 단편화, 즉 Packet Fragmentation 관련 필드가 삭제되었다. 패킷을 단편화 시키는 기능은 라우터에 많은 부담을 주고 네트워크의 효율적인 이용을 방해하기 때문에 IPv4에서 이용되던 식별자 필드와 단편 오프셋 필드를 삭제되었고, 또한 체크섬 필드도 삭제되었다. 간단히 말해 체크섬 필드는 패킷의 정확한 전송 여부를 검사하는 필드이고, 체크섬을 계산하기 위한 과부하가 있고 이러한 기능은 데이터링크 계층에서 체크섬 계산을 하고 있기 때문에 중복적인 요소도 있었기에 삭제가 되었다.
#3 IPv6 Header Structure.
1.Version(4bits) ==> IP의 버전을 나타내는 필드로써 IPv6의 경우는 6.
2.Traffic Class(8bits) ==> IPv6 패킷의 클래스 or 우선 순위를 나타낸다. IPv4의 Type Of Service 필드와 비슷한 기능을 한다. 만약에 IPv4과 연동 될시에 IPv4의 TOS 값에 매칭이 된다.
3.Flow Label(20bits) ==> 네트워크 상에서 패킷들의 어떤 특정한 흐름에 대한 특성을 나타내는 필드다. 기본적으로 0으로 되어있고, 실시간 데이터의 트래픽을 나타내기 위해 0이 아닌 값으로 설정되어있다. IP는 본질적으로 비연결형 프로토콜로 설계되었지만 IP 프로토콜을 연결지향형으로 사용하려는 분위기가 있다. MPLS 기술은 레이블 필드를 이용하여 IPv4 패킷을 MPLS 헤더에 캡슐화하였기에 IPv6를 연결지향형 프로토콜로 사용할 수 있게 되었다.
4.Payload Length(16bits) ==> 페이로드의 길이를 바이트 단위로 표시한다. 필드의 길이가 16비트이므로 65.536 바이트까지 표시한다. 좀 더 언급하자면 페이로드의 길이는 확장 헤더 + 상위 계층 데이터 < 2^16, 즉 65536인 것이다. IPv4은 헤더 길이 필드와 전체 길이 필드의 2개의 필드가 있지만, IPv6은 기본 헤더의 길이가 40바이트로 고정되어 있어 페이로드의 길이만 정의하면 된다. 좀 더 큰 데이터그램을 보내기 위해서는 Hop By Hop 확장 헤더의 Jumbo Payload 옵션을 이용한다. Jumbo Payload 옵션을 사용할 경우 페이로드 길이 필드는 모두 0으로 설정되어있다.
5.Next Header(8bits) ==> IPv6 기본 헤더 다음에 어떠한 종류의 확장 헤더가 오는지를 나타내는 필드. IPv4에서의 Protocol Type Field가 Next Header Field로 이름이 바뀌었다. 즉 기본 헤더 다음에 위치하는 확장 헤더의 종류를 표시하며 IPv4 프로토콜 번호와 유사한 역할을 한다.
6.Hop Limit(8bits) ==> IP 패킷이 전송되는 거리를 홉(Hop) 단위로 제한할 때 사용하는 필드이고 IPv4의 Time To Live 필드랑 같은 역할이다. 헤더 생성 시에 임의의 초기값으로 설정되고 각 라우터를 지날 때마다 값을 1씩 감소시키며 홉 제한 값이 0이 되면 패킷을 없앤다. 즉 라우팅 루프가 발생하는 것을 방지하는 것 이외에 멀티캐스트 그룹 내에서 가장 가까운 서버를 찾는 것에도 이용된다.
7.Source, Destination Address(128bits) ==> 패킷을 보내는 호스트의 주소와 패킷이 도착해야 할 목적지이고, 즉 호스트의 주소를 나타낸다. 다시 말해 Source Address는 원래 호스트의 IPv6 주소를 저장하고 필드의 크기는 128bits이고, Destination Address은 현재 대상 호스트의 IPv6 주소를 저장하고 역시 필드의 크기는 128bits다. 대부분의 경우 대상 주소는 마지막 대상 주소로 설정된다. 라우팅 확장 헤더가 있으면 대상 주소가 원본 라우터 목록에 있는 그 다음 라우터 인터페이스로 설정될 수 있다.
#4.IPv6 Transition Plan.
4-1.Dual Stack ==> IP 계층에서 두 방식을 모두 수용할 수 있는 기능 설치.
4-2.Tunneling(Configured, Auto, 6 over 4 // 수동, 자동, IPv4로 캡슐화).
A. IPv6 헤더의 캡슐화를 통해 IPv4 인터넷 환경 하에서 IPv6 패킷 전달.
B. IPv4 패킷 안에 IPv6 패킷을 포함하여 전달.
4-3.Gateway ==> 최종단 라우터에서 IPv6를 IPv4로 변환.
==> 헤더 변환 방식, 수송 릴레이 방식, 응용 계층 게트웨어 방식이 존재.
CF) 일단 이 글에서 말하고 싶은 내용은 이것이고 확장 헤더와 추가 관련 개념들은 다른 글에서 다시 언급하겠다.
'#NetWork' 카테고리의 다른 글
TCP/IP Header References. (0) | 2018.09.21 |
---|---|
NetWork Table. (0) | 2018.08.23 |
IPv4 Header. (0) | 2018.08.07 |
TCP. (0) | 2018.08.06 |
NAT. (0) | 2018.08.01 |