STUDY

[네트워크] 서브넷 마스크와 CIDR 계산법 정리

sed 2026. 5. 28. 16:17
SMALL

클래스리스 주소 체계와 서브넷 마스크

이전 글에서 A, B, C 클래스를 기준으로 IP 주소를 나누는 클래스풀 주소 체계를 살펴보았다.

 

클래스풀 주소 체계는 IP 주소를 네트워크 크기에 따라 A 클래스, B 클래스, C 클래스로 나누는 방식이다.

 

A 클래스는 큰 네트워크, B 클래스는 중간 규모 네트워크, C 클래스는 작은 네트워크에 사용할 수 있다.

 

하지만 이 방식에는 한계가 있다.

 

클래스풀 주소 체계의 한계

클래스풀 주소 체계는 클래스별 네트워크 크기가 고정되어 있다.

 

A 클래스는 네트워크 주소가 1옥텟이고, 호스트 주소가 3옥텟이다.  

B 클래스는 네트워크 주소가 2옥텟이고, 호스트 주소가 2옥텟이다.  

C 클래스는 네트워크 주소가 3옥텟이고, 호스트 주소가 1옥텟이다.

 

문제는 실제 네트워크가 항상 이 크기에 딱 맞지는 않는다는 점이다.

 

예를 들어 어떤 기관에 300개의 호스트 주소가 필요하다고 하자.

 

C 클래스는 호스트 주소가 1옥텟이므로 이론적으로 256개의 주소만 표현할 수 있다. 실제 할당 가능한 호스트 주소는 네트워크 주소와 브로드캐스트 주소를 제외한 254개이다.

 

300개 호스트를 수용하기에는 부족하다.

 

그렇다고 B 클래스를 할당하면 너무 많은 주소가 생긴다. B 클래스는 호스트 주소가 16비트이므로 이론적으로 65,536개의 주소를 표현할 수 있다. 실제 할당 가능한 호스트 주소도 65,534개나 된다.

 

300개만 필요한데 6만 개가 넘는 주소 공간을 받으면 대부분의 주소가 낭비된다.

 

클래스풀 주소 체계는 네트워크 크기가 고정되어 있기 때문에, 필요한 크기에 맞춰 유연하게 네트워크를 나누기 어렵다.

필요한 주소보다 너무 큰 클래스를 받으면 IP 주소가 낭비된다.
필요한 주소보다 작은 클래스를 받으면 호스트 주소가 부족하다.

 

이 한계를 보완하기 위해 등장한 방식이 클래스리스 주소 체계이다.

 

 

클래스리스 주소 체계

클래스리스 주소 체계(classless addressing)는 A, B, C 같은 클래스 개념에 얽매이지 않고 IP 주소의 네트워크 영역과 호스트 영역을 나누는 방식이다.

 

클래스풀 주소 체계에서는 네트워크 주소의 길이가 클래스별로 고정되어 있었다.

하지만 클래스리스 주소 체계에서는 네트워크 주소의 길이를 더 유연하게 정할 수 있다.

 

오늘날에는 클래스풀 주소 체계보다 클래스리스 주소 체계가 주로 사용된다.

 

서브넷 마스크

클래스 없이 IP 주소의 네트워크 주소와 호스트 주소를 구분하려면 기준이 필요하다.

이때 사용하는 것이 서브넷 마스크(subnet mask)이다.

 

서브넷 마스크는 IP 주소에서 어느 부분이 네트워크 주소이고, 어느 부분이 호스트 주소인지 알려주는 비트열이다.

 

서브넷 마스크에서 1로 표시된 부분은 네트워크 주소를 의미한다.
0으로 표시된 부분은 호스트 주소를 의미한다.

 

예를 들어 다음 서브넷 마스크를 보자.

255.255.255.0

 

이를 2진수로 나타내면 다음과 같다.

11111111.11111111.11111111.00000000

 

앞의 24비트는 1이고, 뒤의 8비트는 0이다.

앞의 24비트는 네트워크 주소이고, 뒤의 8비트는 호스트 주소라는 뜻이다.

 

기본 서브넷 마스크

A, B, C 클래스에는 기본 서브넷 마스크가 있다.

A 클래스 기본 서브넷 마스크
255.0.0.0
11111111.00000000.00000000.00000000

B 클래스 기본 서브넷 마스크
255.255.0.0
11111111.11111111.00000000.00000000

C 클래스 기본 서브넷 마스크
255.255.255.0
11111111.11111111.11111111.00000000

 

A 클래스는 앞의 8비트를 네트워크 주소로 사용한다.

B 클래스는 앞의 16비트를 네트워크 주소로 사용한다.

C 클래스는 앞의 24비트를 네트워크 주소로 사용한다.

 

 

서브네팅

서브네팅(subnetting)은 서브넷 마스크를 이용해 기존 네트워크를 더 작은 네트워크로 나누는 것이다.

 

예를 들어 C 클래스 기본 구조에서는 192.168.0.0/24처럼 앞의 24비트를 네트워크 주소로 사용한다.

 

이 경우 호스트 주소는 8비트이다.

192.168.0.0/24

네트워크 주소: 24비트
호스트 주소: 8비트

 

그런데 이 네트워크를 더 작게 나누고 싶다면 /25, /26처럼 네트워크 주소 부분을 더 늘릴 수 있다.

 

네트워크 주소 비트가 늘어나면 하나의 네트워크에 할당할 수 있는 호스트 수는 줄어든다. 대신 더 작은 네트워크를 여러 개 만들 수 있다.

서브네팅은 큰 네트워크를 필요한 크기에 맞게 잘게 나누는 방법이라고 보면 된다.

 

서브넷 마스크로 네트워크 주소 구하기

서브넷 마스크를 이용해 네트워크 주소를 구할 때는 IP 주소와 서브넷 마스크를 비트 AND 연산한다.

 

비트 AND 연산은 두 비트가 모두 1일 때만 결과가 1이 되는 연산이다.

1 AND 1 = 1
1 AND 0 = 0
0 AND 1 = 0
0 AND 0 = 0

 

IP 주소와 서브넷 마스크를 비트 AND 연산하면 네트워크 주소를 얻을 수 있다.

 

예를 들어 다음 IP 주소와 서브넷 마스크가 있다고 하자.

IP 주소: 192.168.219.10
서브넷 마스크: 255.255.255.0

 

서브넷 마스크가 255.255.255.0이라는 것은 앞의 24비트가 네트워크 주소이고, 뒤의 8비트가 호스트 주소라는 뜻이다.

 

따라서 네트워크 주소는 다음과 같다.

192.168.219.0

 

이 네트워크에서 호스트 주소가 모두 0인 주소는 네트워크 자체를 의미한다.

네트워크 주소: 192.168.219.0

 

호스트 주소가 모두 1인 주소는 브로드캐스트 주소이다.

브로드캐스트 주소: 192.168.219.255

 

실제로 호스트에게 할당 가능한 IP 주소 범위는 다음과 같다.

192.168.219.1 ~ 192.168.219.254

 

 

CIDR 표기법

서브넷 마스크는 10진수로 직접 표기할 수 있다.

255.255.255.0

 

하지만 더 간단하게 표기하는 방법도 있다.
이를 CIDR 표기법(Classless Inter-Domain Routing notation)이라고 한다.

 

CIDR 표기법은 IP 주소 뒤에 /를 붙이고, 서브넷 마스크에서 1의 개수를 적는 방식이다.

 

예를 들어 서브넷 마스크가 다음과 같다고 하자.

255.255.255.0

 

2진수로 바꾸면 다음과 같다.

11111111.11111111.11111111.00000000

 

1이 총 24개이므로 CIDR 표기법으로는 /24라고 쓴다.

192.168.0.1/24

 

/24는 앞의 24비트가 네트워크 주소라는 뜻이다.

 

 

예제: 192.168.0.2/25

이번에는 192.168.0.2/25가 어떤 네트워크에 속한 어떤 호스트를 의미하는지 계산해보자.

 

먼저 IP 주소 192.168.0.2를 2진수로 나타낸다.

192.168.0.2

192 = 11000000
168 = 10101000
0   = 00000000
2   = 00000010

 

따라서 전체 2진수 표현은 다음과 같다.

11000000.10101000.00000000.00000010

 

/25는 서브넷 마스크에서 1이 25개라는 뜻이다.

11111111.11111111.11111111.10000000

 

이를 10진수로 바꾸면 다음과 같다.

255.255.255.128

 

이제 IP 주소와 서브넷 마스크를 비트 AND 연산한다.

IP 주소
11000000.10101000.00000000.00000010

서브넷 마스크
11111111.11111111.11111111.10000000

결과
11000000.10101000.00000000.00000000

 

결과를 10진수로 바꾸면 다음과 같다.

192.168.0.0

 

이 주소가 네트워크 주소이다.

네트워크 주소: 192.168.0.0

 

/25에서는 앞의 25비트가 네트워크 주소이고, 나머지 7비트가 호스트 주소이다.

호스트 주소 비트 수 = 32 - 25 = 7비트

 

7비트로 표현할 수 있는 주소 수는 2^7이니 128이다.

 

하지만 호스트 주소가 모두 0인 주소는 네트워크 주소로 사용되고, 모두 1인 주소는 브로드캐스트 주소로 사용된다.

따라서 실제 호스트에게 할당 가능한 주소 수는 126개이다.

 

192.168.0.0/25 네트워크의 주소 범위는 다음과 같다.

네트워크 주소: 192.168.0.0
브로드캐스트 주소: 192.168.0.127
할당 가능한 호스트 주소: 192.168.0.1 ~ 192.168.0.126

 

따라서 192.168.0.2/25 192.168.0.0/25 네트워크에 속한 호스트 주소이다.

LIST