본문 바로가기
computer science/네트워크

[네트워크] IPv4와 IPv6

by 박연호의 개발 블로그 2020. 1. 30.

이번 시간에는 IPv4와 IPv6에 대해서 공부해 보겠습니다.

 

우리가 집 주소가 있어야 우편 서비스를 이용할 수 있듯이 네트워크에 접속된 각 컴퓨터에도 고유한 식별번호가 있어야 데이터를 송수신할 수 있습니다. 따라서 인터넷에 연결된 모든 컴퓨터에는 고유 주소가 부여되는데 이것이 IP 주소입니다.

 

IP버전은 IPv4와 IPv6가 있습니다. 현재 주로 사용하는 IP 주소 체계인 IPv4는 32bit의 IP주소로 약 2^32(약 43억)개의 컴퓨터에 할당할 수 있습니다.


공인 IP주소와 사설 IP주소

집에서 인터넷에 연결하는 컴퓨터가 여러 대라면 공인 IP주소를 사용할 수 있는 수가 한정되어 있으므로 컴퓨터 한 대당 공인 IP주소를 할당하기가 쉽지 않습니다.그래서 ISP가 제공하는 공인 IP주소를 라우터에만 할당하고, LAN 안에서 사용하는 컴퓨터나 노트북을 인터넷에 연결할 때는 LAN의 네트워크 관리자가 자유롭게 사설 IP 주소를 할당하거나 라우터의 DHCP(IP주소를 자동으로 할당하는 프로토콜) 기능을 이용하여 주소를 자동으로 할당합니다.

 

일반 가정의 네트워크 환경을 생각해보면, 집에서는 공인 IP주소와 사설 IP를 통해 두 대의 컴퓨터와 노트북, 스마트폰을 인터넷에 연결하여 사용하고 있으며 공인 IP 주소 하나로 집(LAN)에 있는 여러 컴퓨터(사설 IP)를 인터넷에 연결하는 환경을 만들 수 있습니다.


IPv4

IP주소는 2진수 32비트를 구분하기 쉽게 10진수로 표시하여 사용합니다. 컴퓨터가 이해하려면 2진수가 필요하지만 사람이 읽기 쉽게 8bit 단위로 나누어 표시하며, 이것을 좀 더 읽기 쉽게 8bit 10진수로 변환한 것이 IPv4입니다.

 

즉 IP주소를 8bit 크기의 필드 4개를 모아서 구성한 32bit(4byte) 논리 주소입니다. 사실상 논리적으로 할당할 수 있는 IP는 0.0.0.0 ~ 255.255.255.255이지만 특별한 용도로 사용하는 예약된 주소와 IP주소 규정 등이 있어 실제로 사용할 수 있는 주소는 한정적입니다.

집 주소가 시, 동, 번지로 구분되는 것처럼 IP 주소도 네트워크 ID호스트ID로 구분됩니다.

네트워크 ID : 네트워크 자체를 나타내는 주소로 다른 네트워크와 구분하는 역할을 함

호스트 ID : 해당 네트워크에 속한 호스트(컴퓨터)의 주소를 나타냅니다.


IPv4의 클래스 구조

네트워크의 크기는 클래스 개념으로 구분하며, IP 주소는 네트워크의 규모에 따라 A,B,C,D,E 클래스로 나눕니다. 여기서 D클래스는 IP 멀티 캐스팅용으로, E클래스를 연구 및 특수 용도로 사용하는 주소이므로 일반 네트워크에서는 A클래스(대규모 네트워크 주소), B클래스(중형 네트워크 주소), C클래스(소규모 네트워크 주소)를 사용할 수 있습니다.

 

  • A 클래스 : 처음 8bit가 네트워크 ID이고 다음 24bit가 호스트 ID입니다.
  • B 클래스 : 처음 16bit가 네트워크 ID이고 다음 16bit가 호스트 ID입니다.
  • C 클래스 : 처음 24bit가 네트워크 ID이고 다음 8bit가 호스트 ID입니다.

 

A클래스

A클래스는 네트워크 ID로 8bit, 호스트 ID로 24bit를 사용합니다. 그림에서 가장 왼쪽비트가 0으로 고정되어 있는데, 이것이 A클래스를 구분하는 식별자 입니다. 맨 첫번째 byte의 첫 비트가 0이기 때문에 맨 처음 숫자는 0~127사이의 값을 가지고 범위는 0.0.0.0 ~ 127.255.255.255가 됩니다. 

 A클래스의 기본 네트워크 마스크는 255.0.0.0이며 이는 IP에서 네트워크 ID를 추출할 때 사용하는데, 예를 들어 IP가 1.1.1.2인 이고 네트워크 마스크가 255.0.0.0일 때 이 둘을 비트 AND연산을 해서 나온 결과값이 네트워크 주소가 됩니다. 

 또한 A클래스 네트워크는 네트워크 126개로 구성하고 총 24bit를 호스트 주소로 배정할 수 있으므로 호스트 ID는 총 2^24 = 16,777,216개가 됩니다. 그러나 여기서 모두 0이거나, 1인 경우를 제외하고 총 16,777,214개가 됩니다.

 주로 대형 기관 및 기업에서 사용합니다.

 

 

 

B클래스

B클래스는 네트워크 ID로 16bit, 호스트 ID에 16bit를 사용합니다. 그림에서 가장 왼쪽비트가 10으로 고정되어 있는데 이것이 B클래스를 구분하는 식별자 입니다. B클래스의 IP주소는 128.* ~ 191.*로 시작하고 기본 네트워크 주소 마스크는 255.255.0.0입니다. 호스트 ID는 2바이트 이므로 총 65534개를 구성할 수 있고 네트워크 ID는 맨 왼쪽 2비트를 제외한 14비트, 2^14 = 16,348개를 사용할 수 있습니다.

 주로 중형 기관 및 기업에서 사용합니다.

 

 

C클래스

C클래스는 네트워크 ID로 24bit, 호스트 ID에 8bit를 사용합니다 그림에서 가장 왼쪽 비트가 110으로 고정되어 있는데 이것이 C클래스를 구분하는 식별자 입니다. C클래스의 IP주소는 192.* ~ 223.*로 시작하고 기본 네트워크 주소 마스크는 255.255.255.0 입니다. 네트워크 ID는 192.0.0.0 ~ 223.255.255.0이고 호스트 ID는 1바이트로 254개를 사용할 수 있습니다(0, 255 제외).

 주로 소규모 기관에서 사용합니다. 

 

 

위의 사진은 현재 저의 IP입니다. 10진수롤 2진수로 변환하면 

10.99.32.82   ->  00001010  01100011  00100000 01010010 

이고, A클래스에 속합니다.


IP 주소 범위

 

 

 인터넷과 연결하지 않고 개별적으로 구성한 네트워크는 A,B,C 클래스의 어떤 IP주소를 사용해도 되지만 인터넷에 연결하려면 할당받은 공인 IP 주소를 사용해야 합니다. 공인 IP주소와 사설 IP주소의 범위는 별도로 정해져 있다. IP주소 중에는 인터넷에서 사용하지 않는 주소가 있는데 이것이 바로 사설 IP주소입니다.

 사설 IP주소는 IP 주소의 부족을 해결하기 위해 사용하는 것으로, 사설 IP와 공인 IP 주소의 범위는 위의 사진에서 처럼 나뉘어져 있습니다.


IPv6

IPv4는 산술적으로 43억개를 할당할 수 있지만 클래스별 주소 분류 방식 때문에 실제로 사용하지 않는 주소가 많습니다. 4차 산업혁명 시대에는 단말기마다 IP가 부여되는 환경이 필요하므로 IPv4를 사용하면 IP 주소가 부족하게 됩니다. IPv6는 60억 인구가 1인당 53,731,028개의 주소를 할당받을 수 있기 때문에 주소 부족 현상이 일어나지는 않을 것입니다. 그리고 기존의IPv4 주소도 하위 32비트는 IPv4주소를 그대로 두고 상위 비트는 모두 0으로 채워 IPv6주소로 표현할 수 있습니다.

 

IPv6 주소의 128bit는 2Byte 영역 8개로 나뉘며, 16진수 표기법에서 2byte는 16진수 4개로 나타낼 수 있으므로 IPv6 주소는 16진수 32개로 표현됩니다. IPv6주소에서 앞의64bit는 네트워크 주소를 의미하고 뒤의 64bit는 네트워크 연결된 통신 장비 등에 할당된 인터페이스 주소를 의미합니다.

 

IPv6의 표기법은 길기 때문에 경우에 따라 생략이 가능합니다.

1. 앞쪽의 0을 생략할 수 있습니다. 예를 들어 0056은 56, 000D는 D, 0000은 0으로 표현할 수 있습니다.

 

2. 연속으로 0으로만 (2byte 이상) 구성된 섹션은 0을 모두 지우고 콜론 2개로 대치할 수 있습니다. 이는 주소당 한 번만 허용됩니다. 예를 들어 FDCB : 0 : 0 : 0 : 0 : ASDD : 0 : FFFF  ->  FDCB :: ASDD : 0 : FFFF으로 가능합니다. 반대로 FDCB :: ASDD : 0 : FFFF으로 주어졌을 경우에는 총 8개의 섹션중에 생략되지 않은 부분이 FDCB, ASD, 0, FFFF 총 4개 이므로, :: 으로 생략된 0000 섹션이 총 4개라는 것을 알 수 있습니다.

 

 

IPv4와 마찬가지로 현재 저의 IP이며, 현재 저의 IPv6는 fe90 :: 10ba :: 3712 :: fe60 입니다. 이를 다시 풀어서 표현하면 fe90 : 0000 : 0000 : 0000 : 0000 : 10ba : 3712 : fe60이 됩니다.

 

 

 

'computer science > 네트워크' 카테고리의 다른 글

[네트워크] HTTPS와 SSL  (0) 2020.03.03
[네트워크] 서브넷 마스크와 서브네팅  (0) 2020.01.31
[네트워크] HTTP  (0) 2020.01.29
[네트워크] OSI 7 Layer  (0) 2020.01.09
[네트워크] 4 way handshake  (0) 2019.12.18