IPv4 vs IPv6

Dohyeon Ko·2021년 12월 3일
1

Network

목록 보기
3/3
post-thumbnail

충남대학교 컴퓨터융합학부의 김상하 교수님의 컴퓨터네트워크를 수강한 후 정리한 글입니다.

Network Layer

Network Layer 는 서로 다른 호스트의 사이의 패킷 전송을 책임진다.

DataLink Layerhop to hop 을 지원한다. 하지만 host to host 를 지원하지 않는다.

Network Layer

host to host 를 지원한다. Network Layer 의 존재 목적이라고도 볼 수 있다.

실제 전송과정을 살펴보자.

  1. 상위 계층, Application Layer 에서 데이터가 내려온다.
  2. Network Layer 에서 출발지와 목적지에 대한 정보(헤더)를 붙인다.
  3. DataLink Layer 에서는 1개의 홉에서의 출발지와 목적지에 대한 정보(헤더)를 붙인다.

정리하자면 Network Layer Header 의 경우 목적지에 도달하기 전까지 변하지 않는다. 이와 다르게 DataLink Layer Header 의 경우 각 홉을 지날 때마다 값이 바뀐다는 것이다.

Network Layer 의 경우 출발지(A) 에서 목적지(P)에 도달할 때까지 패킷이 변하지 않는 모습을 볼 수 있다. 이와 다르게 DataLink Layer 의 경우 각 홉을 지날 때마다 프레임이 변하는 모습을 볼 수 있다. 이러한 과정을 통해 목적지가 다른 LAN에 있을 때도 정상적으로 전송할 수 있게끔 해주는 것이 Network Layer 의 역할이다.

패킷 전달 방식

인터넷의 경우 현재 Datagram 방식을 채택하고 있다. (무엇인지 모른다면 여기를 클릭!) 그 이유는 당연하다. 인터넷은 수 많은 네트워크가 연결되어 있는 것이므로 이를 가상 회선 방식으로 구현한다면 무한대에 가까운 모든 경로를 다 지정해줘야하는 결과를 가져오게 될 것이다.


IPv4 vs IPv6

IPv4, IPv6 살면서 한번 쯤은 들어본 그런 단어이다. 하지만 이게 뭔지는 지금까지 모르고 있었다. Internet Protocol Version 4와 6 로써 패킷 전송을 위한 프로토콜이다. 하나씩 알아보도록 하자.

IPv4

IPv6보다 먼저 출시된 프로토콜로써 가장 대중적인 인터넷 프로토콜이다.unreliable 하고 connectionless 한 특징이 있다. 이를 해석하자면 패킷 전송 과정에서 오류가 발생할 수 있고(비신뢰적) 전송된 패킷 간에 순서가 섞일 수 있다(비연결형). 전송 자체에 초점을 맞추고 있다고 볼 수 있다. 또한 IPv4에서의 패킷을 데이터그램이라고 한다.

전송 과정에서 오류가 발생하거나 순서가 섞이게 되면 결국엔 전송 자체가 의미가 없는 거 아닌가요? 🤨

이에 대한 처리를 하지 않는다면 의미 없는 전송이라고 봐도 무방하다. 하지만 패킷 전송 과정에서의 오류는 상위 계층인Transport Layer 에서 오류가 발생하지 않도록 이를 처리하고 있다. 패킷 간의 순서는 offset 을 통해 순서를 맞춰준다.

IPv4 format

지난 게시글에서 봤던 헤더의 모습과 다르다. 좀 더 자세하게 나타낸 그림이라고 볼 수 있다.

  • VER : 프로토콜 종류

  • HLEN : 헤더의 크기
    헤더의 크기의 경우 최소 20바이트부터 옵션에 따라 최대 60바이트까지 가능하다. 이를 4bit로 어떻게 표현할 수 있을까?
    4bit의 경우 0 ~ 15를 의미하는데 여기에 4를 곱해주면 0 ~ 60가 된다. 이를 그대로 사용한다. 최소 20바이트이므로 4x5 -> 0101(2)로 표현할 수 있고, 최대 60바이트이므로 4x15 -> 1111(2)로 표현할 수 있다. 즉, 헤더의 크기의 경우 20바이트 이상이므로 최소 0101(2)는 되어야 한다는 것을 알 수 있다.

  • Service : IP 패킷 헤더 내 서비스 유형 및 혼잡 알림

  • Total length : 패킷의 크기
    헤더의 최소 크기는 20바이트이므로 패킷의 페이로드에 담을 수 있는 최대 크기는 65536 - 20 = 65516, 65516바이트가 된다.

  • Identification : 단편화 조각의 일련번호
    각 조각이 동일한 IP 패킷에 속하면 같은 일련번호를 공유한다.

  • Flags : 단편화 조각의 특성을 나타내는 Flag

  • Fragmentation offset : 단편화 조각의 오프셋
    단편화 과정에서 패킷의 순서가 뒤바뀔 수 있으므로 오프셋을 이용하여 순서를 맞춘다.

그런데 단편화가 꼭 필요한가요? 🧐

IP 패킷의 최대 크기는 65536 바이트이다. 이를 그대로 하위 계층인 DataLink Layer 에 전달할 수 있을까? 아니, 그럴 수 없다. 패킷이나 프레임을 전송할 때 하위 계층이 받을 수 있는 최대 크기가 존재하는데 이를 MTU(Maximum Transfer Unit) 라고 하며, MTU 크기 이하의 패킷이나 프레임을 전송해야 한다. 따라서 IP 패킷 역시 MTU 크기 이하의 단위로 단편화를 진행하여야 한다.

네트워크에 따라 다른 크기의 MTU를 갖고 있는 것을 볼 수 있다.

  • Time to Live : 패킷의 생존 시간
    hop to hop 을 진행할 때 1씩 감소한다. 이는 곧 거쳐갈 라우터의 개수를 의미한다. 0이 되면 해당 패킷 전체를 폐기한다.

  • Protocol : 페이로드에 포함된 상위 계층의 프로토콜 종류

  • Header checksum : 헤더에 관한 오류 검출

  • Source IP address : 패킷의 출발지 IP 주소

  • Destination IP address : 패킷의 도착지 IP 주소

  • Option
    Record route : 거쳐온 라우터
    Strict sour route : 반드시 지나야 하는 경로
    Loose sour route : 반드시 거쳐야 하는 라우터
    Timestamp

IPv6

IPv6IPv4 보다 더 많은 주소를 표현할 수 있고 전송 효율을 높인 인터넷 프로토콜이다. IPv4 의 경우 주소 표현 비트가 32비트로 2^32개의 주소를 표현할 수 있는 점에 반해 IPv6 의 경우 128비트로 2^128개의 훨씬 더 많은 주소를 표현할 수 있다. Base headerExtension headers 를 분리함으로써 라우터 간의 전송 과정에서 불필요한 과정을 줄여서 전송 효율을 높였다.

IPv6 format

Base headerExtension headers 를 분리했다.

Next header 에 들어가는 옵션들은 아래와 같다.

  • VER : 프로토콜 종류

  • PRI : IPv4의 Service 와 유사

  • Flow label

  • Payload length : Extension header + Data 의 크기

  • Next header : 확장 헤더의 종류

  • Hop limit : IPv4의 TTL 과 유사

  • Source address : 패킷의 출발지 IP 주소

  • Destination address : 패킷의 도착지 IP 주소

IPv6 extension header

hop by hop 을 제외한 다른 옵션들은 라우터가 반드시 꺼내볼 필요는 없다.

  • Hop by hop

  • Source routing : 거쳐야 할 라우터들을 리스트 형태로 저장

목적지에 도착하면 source routing 에 들어있는 경로로 목적지가 변경되는 것을 볼 수 있다.

  • Fragmentation

  • Authentication

  • Encrypted sercurity payload

  • Destination option

IPv6 에서는 Destination IP address 가 아닌 경우 Base header 만 참조하므로 기존의 IPv4와 다르게 단편화, 헤더 오류 탐지 등의 과정이 생략되면서 전송 과정이 빨라졌다.

차이점

  1. IPv4에 있던 HLEN가 사라졌다. IPv6는 헤더의 크기가 40바이트로 고정되었기 때문이다.
  2. IPv4에 있던 패킷의 총 크기인 Total Length가 사라지고 Payload Length가 추가되었다.
  3. IPv4에 있던 단편화와 관련된 필드(identification, flag, offset)가 IPv6의 Base Header 에서 사라지고 Extension Header 에 추가되었다.
  4. IPv4에 있던 TTL은 IPv6에서는 Hop Limit으로 변경되었다.
  5. IPv4에 있던 Protocol Field가 사라지고 next header field로 변경되었다.
  6. IPv4에 있던 option field가 사라지고 extension header로 변경되었다.
profile
티스토리로 옮겼어요! (https://codekodo.tistory.com)

0개의 댓글