Classful IP Address 개념 정리
네트워크 공부하면서 알게된 Classful, Classless IP 주소에 대해서 정리해보고자 합니다. 우선 Classful IP 주소에 대해서 알아봅시다.
네트워크 OSI 7 Layer 중 3계층은 네트워크 계층으로, 주로 다른 네트워크 대역에 있는 컴퓨터 장비와 통신하기 위해 사용되는 프로토콜들이 있습니다. IP, ICMP, ARP등 여러 3계층 프로토콜들이 존재하는데요. 그 중에 IP 프로토콜에 대한 내용입니다.
네트워크 통신을 하기 위해서 어떤 장비하고 통신하고 싶은지 구분할 수 있는 식별자가 있어야 합니다.
예를 들어, 2계층 프로토콜인 이더넷(Ethernet) 프로토콜에서는 MAC 주소를 통해 컴퓨터 장비를 식별하고 이 주소를 통해 통신하기 원하는 컴퓨터 장비를 특정할 수 있게 됩니다.
하지만 MAC 주소는 같은 네트워크 대역에 있는 컴퓨터 장비들끼리만 식별할 수 있기 때문에 인터넷과 같은 외부 네트워크로 통신하는데 사용될 수 없습니다.
3계층 프로토콜인 IP 프로토콜은 이를 가능하게 해주는데요. IP 프로토콜에서 식별자로 사용되는 주소가 바로 IP 주소(IP Address)입니다.
📌 1. IP 주소
IP 주소는 다른 네트워크 대역에서 데이터 통신할 수 있게 식별자 역할로서 사용됩니다.
32 bit (4 bytes) 크기를 가지고 있고 표시는 다음과 같이 합니다.
172.50.3.152
0.0.0.0 부터 255.255.255.255까지 범위를 가지고 있고 네트워크와 연결되어 있는 각각의 컴퓨터 장비들은 안에서 고유 주소를 할당받게 됩니다.
IP주소는 16진수로 표현되기도 하는데요. 보편적으로 10진수 표기법을 사용합니다.
그리고 ip 주소를 표시할 때 각 유효한 숫자 앞에 0을 기입하면 안됩니다. 예를 들어, 172.50.3.152 주소에서 3자리로 맞춘다고 172.050.003.152 이렇게 표기하면 안됩니다.
📌 2. Classful IP?
IP주소는 처음 나왔을 때, 일종의 계층별로 ip주소를 나눠서 사용하였습니다. 이게 Classful IP Addres입니다.
클래스는 5개로 나누어서 사용했고 A, B, C, D, E 클래스라는 명칭으로 나누었습니다.
클래스별로 사용할 수 있는 주소 범위를 할당했는데요. 범위를 나누는 방식은 다음과 같습니다.
Class A: 0_______.xxxxxxxx.xxxxxxxx.xxxxxxxx
Class B: 10______.xxxxxxxx.xxxxxxxx.xxxxxxxx
Class C: 110_____.xxxxxxxx.xxxxxxxx.xxxxxxxx
Class D: 1110____.xxxxxxxx.xxxxxxxx.xxxxxxxx
Class E: 1111____.xxxxxxxx.xxxxxxxx.xxxxxxxx
이게 무슨 내용일까요,, 쉽게 말하자면 각 클래스마다 2진수로 표현한 ip 주소 맨앞에 일정한 규칙을 가지고 값을 고정하고 있습니다.
A 클래스부터 살펴보면 ip주소 맨 앞에 0을 고정해서 사용하겠다는 것이고, B 클래스는 10을, C 클래스는 110, D 클래스는 1110, 마지막으리로 E 클래스는 1111을 고정하겠다는 내용입니다.
(이렇게 되면 각 클래스에서 사용할 수 있는 ip 주소 범위의 시작지점과 끝 지점을 알 수 있습니다.)
위 내용을 정리하면 다음과 같습니다.
클래스 구분 | 주소 맨 앞의 고정값 (Leading Bits) |
시작 주소 | 마지막 주소 |
Class A | 0 *** | 0.0.0.0 | 127.255.255.255 |
Class B | 10 *** | 128.0.0.0 | 191.255.255.255 |
Class C | 110 *** | 192.0.0.0 | 223.255.255.255 |
Class D | 1110 *** | 224.0.0.0 | 239.255.255.255 |
Class E | 1111 *** | 240.0.0.0 | 255.255.255.255 |
📌 3. Classful IP 주소에서 네트워크 대역 구분
Classful IP 주소 체계에서는 ip 주소를 네트워크 대역을 구분하는 값과 호스트를 구분하는 값 두 부분으로 나누었습니다. ip 주소를 두 부분으로 쪼개서 하나는 네트워크를 구분지을 수 있는 식별자로 다른 하나는 해당 네트워크 안에 연결된 호스트(컴퓨터 장비들)들을 구분지을 수 있는 식별자로 사용했습니다.
여기서 각 Class 마다 네트워크 식별자와 호스트 식별자 두 부분으로 나누는 경계지점이 다른데 이 부분은 제가 참고했던 블로그 그림 내용을 참조해보겠습니다.
위 그림에서 볼 수 있듯이 Classful IP 주소에서는 점을 기준으로 네트워크 ID와 호스트 ID를 나누고 있습니다.
ip 주소는 32 bit로 4 바이트이고 xxxx.xxxx.xxxx.xxxx 이렇게 점을 기준으로 4부분으로 나누어 표시합니다. A 클래스는 첫번째 byte 지점을 네트워크 구분하는데 사용하겠다는 것이고, B 클래스는 두 번째 지점까지, C 클래스는 세 번째 지점까지 사용하겠다는 내용입니다.
D, E 클래스는 네트워크 ID를 따로 할당받지 않고 있는데요. 이 두 개 클래스는 reserved 클래스라고 해서 각각 특정 목적을 가지고 사용되는 주소라 따로 네트워크 구분값을 지정하지 않습니다.
A 클래스를 사용해서 ip 주소를 한 번 만들어보겠습니다.
A 클래스를 사용한 네트워크를 구성할 때 0.0.0.0 ~ 127.255.255.255 범위를 가지고 ip 주소를 할당해야 합니다. 이 사이의 주소값 중 120.0.0.xxx 을 선택했다고 해봅시다. 여기서 네트워크 식별자 값은 120이고, 120이라는 하나의 네트워크 대역 안에서 할당받을 수 있는 컴퓨터 장비들의 식별자 값은 0.0.1 ~ 255.255.254 범위 내에서 가능합니다.
(하나의 네트워크 ID안의 호스트 ID중 모든 비트의 값이 0인 주소는 네트워크 주소, 모든 비트의 값이 1인 주소는 broadcast 주소로 할당하고 있기 때문에 0.0.0과 255.255.255는 제외하였습니다.)
개수로 따지면 2의 24승 개(대략 1670만 개)정도 됩니다. 그 말인즉슨, A 클래스에서 하나의 네트워크에 할당가능한 컴퓨터 장비 대수는 1670만 개정도 가능하다는 얘기가 됩니다.
여기서 제가 임의로 네트워크 내에 컴퓨터 장비 24대를 연결하고자 한다고 했을 때, 각각의 컴퓨터 장비들의 ip 주소는 120.0.0.1 ~ 120.0.0.24로 할당할 수 있을 것 같네요.
📌 4. Classful IP Address의 한계
ip 주소가 나왔을 때 적용했던 Classful한 방식의 ip 주소 체계에는 어떤 한계가 있을까요.
방금 A 클래스에서 ip 주소를 할당하는 내용을 보시면 알 수 있습니다. 120.0.0.1 ~ 120.0.0.24 로 하나의 네트워크 대역에서 24대의 컴퓨터 장비에 ip 주소를 할당했었는데요. 이렇게 되면, 나머지 120.0.0.25 ~ 120.255.255.254 까지의 주소는 그대로 낭비하게 됩니다.
(120.255.255.255는 해당 네트워크 대역의 broadcast 주소로 사용될 것이라 제외하였습니다.)
호스트 식별 영역이 가장 작은 C 클래스에서 조차 많은 낭비가 발생합니다. 192.100.0.1 ~ 192.100.0.24로 24대 장비에 ip 주소를 할당했으면 192.100.0.25 ~ 192.100.0.254까지 229대 정도가 낭비되는 것입니다. (네트워크 식별자로 192.100.0 이 사용되었기에)
ip 주소를 처음 사용하기 시작했을 때 당시에는 컴퓨터 자체가 지금처럼 보급이 안되던 시대라서 이러한 낭비에 대해서 전혀 상관하지 않았습니다. (상관할 필요조차 없었을 것 같습니다.)
그런데 지금은 전세계적으로 컴퓨터는 각 가정당 하나씩, 심지어 개인당 하나씩 당연하게 가지고 있는 시대입니다. 여기에 IoT 기기까지 보급되면서 인터넷에 연결된 장비가 폭발적으로 증가했고 ip 주소가 부족한 상황에 놓여져 있습니다.
이에 대한 보완책으로 Classless IP Address가 나오게 되었는데요. 이부분은 다음 게시글에서 정리해보도록 하겠습니다.
Classful IP Address에 대해 잘 정리한 해외 게시글이 있어서 공유드리겠습니다.
https://www.geeksforgeeks.org/introduction-of-classful-ip-addressing/