본문 바로가기

전공/네트워크

네트워크 계층 - IP에 대한 모든 것 #2. IPv4 & IPv6

반응형

IP에 대한 개요 및 주소 체계: as-backup.tistory.com/15

 

네트워크 계층 - IP에 대한 모든 것 #1. IP의 주소 체계

네트워크 계층을 대표하는 여러 프로토콜이 존재한다. RIP, BGP, ICMP 등등 그러나 그중 가장 대표적인 프로토콜은 IP라고 생각한다. IP는 Internet Protocol의 약자로 인터넷에서 사용되는 규칙이다. 인

as-backup.tistory.com

IPv4의 주소는 2의 32승 개의 전자기기를 표현할 수 있다. 2의 32승은 40억이 넘는 수를 의미한다. 그러나 흔히들 'IP주소의 고갈'에 대해 들어봤을 것이다. 한 사람이 가지고 있는 전자기기의 수가 평균 2~3대가 되어버렸으며 이에 나아가 IoT 세계가 도래하면서 전자기기 수는 40억을 훌쩍 뛰어넘을 것으로 보인다.

이에 따라 IPv4의 주소 고갈을 해결하기 위한 방법이 많이 모색되어 왔다. NAT, DHCP, CIDR 등. 그러나 이러한 방식에도 불구하고 부족하다는 의견이 많아 아예 IP의 버전을 갈아엎으려는 움직임이 보였고 그 결과 나온 것이 IP version 6인 IPv6다. IPv6는 128개의 bits로 표현된다. 따라서 2의 128개의 전자기기를 표현할 수 있다. 이는 IPv4의 40억의 4배인 160억 개의 기기를 표현 가능하다는 의미다. 또한, IPv4를 표현할 때는 *.*.*.* 이라하여 온점[.]을 기반으로 각 옥텟을 구분했지만 IPv6에선 더 이상 콜론[:]으로 각 수치를 구분한다. 

이 외에도 IPv4와 IPv6는 많은 차이를 보인다. 해당 포스팅에서는 해당 주소를 사용하고 있는 패킷의 구조를 기반으로 둘의 차이점을 자세히 살펴보자.

 

1. IPv4

IPv4는 32비트의 주소 체계를 가지고 있으므로 IPv4가 사용하는 송신자, 수신자의 주소 또한 32비트다.

IPv4의 패킷 구조

필드 이름 역할
ver [version] 프로토콜의 버전 이름이다. IPv4는 숫자 4가 담긴다.
header len [header length] IPv4의 헤더는 20Byte다. (cf. TCP:20Byte, UDP:8Byte)
Type Of Service QoS를 보장한다. 해당 필드에 담기는 Type에 따라 패킷의 우선순위가 달라진다. 예를 들어, Type이 '실시간'이면 우선순위가 높아진다.
Length 데이터그램의 전체 크기다. Option 필드에 값이 들어갈지 말지에 따라 데이터그램 크기가 달라지기 때문에 존재한다.
16Bit ID, Flags, Fragment Offset 데이터그램의 크기와 해당 데이터그램이 전송되는 링크 채널의 크기를 맞추기 위해 존재한다. 링크 크기<데이터그램 크기라면 데이터그램을 링크 크기에 맞춰 쪼개야 한다.
Time To Live 데이터가 수신자에게 도착할거란 보장은 100%가 아니다. 가다가 길을 잃을 가능성이 있다. 그러나 데이터가 평생 존재한다면 네트워크는 굉장히 혼잡해진다. 이를 방지하기 위해 데이터그램에 수명을 지정해주었다. 해당 필드에 '10'이 담긴다면, 해당 데이터그램은 오직 10개의 라우터를 넘을 수 있고, 11번째 라우터를 넘으려는 순간 스스로 삭제된다. 
Upper Layer 네트워크 Upper Layer는 전송 계층이고 전송 계층의 프로토콜에는 UDP와 TCP가 있다. 둘 중 어느 프로토콜에 전달할지 표현한다.
Header Checksum 전송된 데이터그램의 오류를 탐지하여 정정한다.
Option 타임 스탬프, 기타 로그 기록 등 
Data 위의 내용은 모두 Header고 실제 전달되는 데이터는 해당 필드에 담긴다. 

 

Cf. 16Bit ID, Flags, Frament Offset 필드는 데이터그램을 링크 크기에 맞춰 쪼갤 때 사용된다고 하였다. 이를 단편화[Fragment]라고 한다. 해당 필드를 이용하여 데이터그램을 자르는 방식은 아래 포스팅에서 확인할 수 있다.

 

2. IPv6

IPv6는 128비트 주소 체계다. (외울 때 2^(버전+1) 비트라 외우자) 데이터그램 구조가 IPv4에 비하여 굉장히 간소해졌다.

IPv6의 패킷 구조

   
ver [version] 버전이 담긴다. IPv6엔 숫자 '6'이 담긴다.
priority [또는 Traffic Class] IPv4의 ToS와 같다. QoS를 위해 타입에 따라 우선순위를 지정한다.
Flow Label  
Payload Length Data 필드에 담기는 내용의 크기를 의미한다.
Next Header Upper Layer와 같은 역할을 한다. 다음 계층에서 사용될 프로토콜을 담는다.
Hop Limit IPv4의 TTL과 같다. 해당 패킷의 수명을 의미한다.
Data 실제 데이터[=Payload]가 담긴다.

 

3. IPv4 & IPv6의 차이점

- 주소 크기가 다르다. (32비트 vs 128비트)

- IPv4는 유니캐스트, 멀티캐스트가 가능하다. IPv6에선 유니캐스트, 멀티캐스트, 애니캐스트가 가능하다. 애니캐스트 주소로 명시된 데이터그램은 호스트 영역 내에 존재하는 어떤 컴퓨터에게도 전달될 수 있다.

- IPv4는 단편화와 재결합을 통해 링크 계층이 수용할 수 있는 크기를 맞춘다. 그러나 IPv6의 경우에는 링크에 데이터가 들어가지 못하면 해당 데이터그램을 아예 폐기 시켜버리고 "Packet Too Big"이란 ICMP 오류를 송신자에게 보내서 송신자가 데이터 자체를 적게 보내도록 유도한다. 재결합과 단편화로 인해 소요되는 시간이 길기 때문에 IPv6에선 해당 기능을 지우고 IP 전달 속도를 높였다. 

- IPv6에는 헤더 체크섬이 없다. 데이터링크와 전송 계층에서는 이미 데이터 오류를 탐색 및 정정하기 때문에 네트워크 계층에서는 수행하지 않아도 된다고 간주하여 생략시켰다.

- IPv4에는 Option 필드가 존재하여 헤더의 크기는 Option에 따라 크기가 달라졌다. 그러나 IPv6에는 Option필드가 없기 때문에 40Byte로 고정되어서 헤더 길이를 기록하지 않아도 된다. 

- IPv6에 추가된 Flow Label 필드는 실시간 서비스 등 같은 우선권을 주기 위해 특정 트래픽 Flow에 라벨링 해 놓은 것이다.

- IPv4와 비교하였을 때 IPv6에서 사라진 필드와 그 이유

사라진 필드 이유
Header Length IPv6의 헤더는 고정 크기이므로 헤더 길이를 기록이 불필요하다.
ID, Flags, Fragment Offset IPv6는 단편화와 재결합을 수행하지 않는다.
Header Sum 링크와 전송 계층에서 오류 정정 기술이 좋아짐에 따라 네트워크에서는 수행하지 않음
Option IPv6에선 옵션을 지우고 추가 옵션사항이 있다면 그냥 페이로드에 붙여버림

- IPv4와 비교하였을 때 이름이 변경된 필드

IPv4 필드 이름 IPv6 필드 이름
Type Of Service Traffic Class [=Pri]
Length Payload Length
Time to Live Hop limit
Protocol Next Header

 

 

IPv4와 IPv6의 구조가 어떻게 다른지 살펴보았다. 그러나 의문점이 하나 생긴다. 현재 존재하고 있는 전자기기나 라우터는 IPv4를 기반으로 만들어졌기 때문에 IPv6 형식의 패킷을 보면 다르게 해석을 해야하지만 과거에 설치되었기 때문에 IPv6를 이해할 수 없다. 그렇다고 하여 세상에 존재하는 모든 라우터를 IPv6가 지원가능하도록 바꿔버리기에는 사회적 비용과 시간이 크게 소모된다. 따라서, 라우터가 IPv6를 이해하지 못해도 IPv6을 처리할 수 있도록 SW기술적으로 처리해야 한다.

가장 많이 사용되는 방식이 터널링[Tunelling]이다. 데이터를 전송할 때 논리적인 터널을 만들어서 라우터를 통과하게 하는 방식이다. 예를 들어 다음 그림을 보자.

IPv4와 IPv6의 터널링

IPv6을 기반으로 동작하는 두 개의 노드가 있다. 그러나 두 노드의 경로 상에는 IPv4용 라우터가 존재한다. (그림에서는 C,D) 이 경우, IPv4와 연결된 IPv6 라우터는, 해당 데이터그램을 전송하기 전에 '터널링'을 준비한다.

IPv6 라우터는 IPv4 구조로 되어있는 데이터그램을 하나 생성한 다음, IPv4의 'Data' 필드에 IPv6 구조로 생성된 데이터그램을 통째로 넣어버린다. 그리고 IPv4 헤더의 목적 주소에는 경로 상에 있는 IPv6용 라우터를 적는다(그림상 E

IPv4용 라우터는 IPv4 패킷을 그대로 해석한 다음 목적지 노드인 IPv6라우터 E까지 도달한다. 라우터 E는 해당 데이터그램이 원래는 IPv6이라는 것을 이해한 후, IPv4의 데이터 필드에 저장되어 있는 IPv6 데이터그램을 다시 꺼낸 후 다음 라우터에 전달한다.

해당 방식을 방식을 통해 IPv4용 라우터를 전혀 건들이지 않고도 IPv6 패킷의 데이터를 전달할 수 있다.

 

반응형