IPv4 서브넷·CIDR·VLSM 계산
프리픽스로 주소 범위를 계산하고 요구 호스트 수에 맞춰 서브넷을 배정합니다.
IPv4는 32비트 주소를 8비트씩 네 옥텟으로 나누어 십진수로 표시한다. /n은 앞 n비트가 네트워크 프리픽스이고 나머지 32−n비트가 호스트 부분이라는 뜻이다. 네트워크 주소는 IP 주소와 서브넷 마스크를 비트 AND하여 구할 수 있다.
1. 서브넷 마스크는 프리픽스의 위치를 표시한다
서브넷 마스크(subnet mask)는 IPv4 주소에서 네트워크 프리픽스에 해당하는 비트를 1, 호스트 부분을 0으로 표현한 32비트 값이다.
/27의 마스크를 2진수로 쓰면 다음과 같다.
11111111.11111111.11111111.11100000
8비트씩 10진수로 바꾸면 다음과 같다.
255.255.255.224
따라서 다음 두 표기는 같은 프리픽스 길이를 나타낸다.
198.51.100.77/27
198.51.100.77 mask 255.255.255.224
서브넷 마스크의 1은 왼쪽부터 연속되어야 한다. 현대적인 IP 라우팅에서는 이 연속된 1의 개수를 프리픽스 길이로 표현하는 방식이 기본이다.
2. CIDR: 클래스 대신 프리픽스 길이로 주소 공간을 표현한다
초기의 IPv4 주소 체계는 주소의 앞부분에 따라 Class A, B, C처럼 고정된 경계를 사용했다. 예를 들어 전통적인 Class C는 기본적으로 /24 경계를 사용했다. 그러나 이런 고정 크기 방식은 실제 필요한 주소 수와 맞지 않을 때 주소 공간을 낭비하기 쉽다.
CIDR(Classless Inter-Domain Routing, 클래스 없는 도메인 간 라우팅)은 고정된 A/B/C 클래스 경계에 의존하지 않고 주소/프리픽스 길이 형태로 네트워크를 표현한다.
예:
192.0.2.0/24198.51.100.64/27203.0.113.128/25
여기서 중요한 것은 현대적인 주소 계산에서는 클래스보다 프리픽스 길이가 실제 네트워크 경계를 결정한다는 점이다. 시험 문제가 특별히 “클래스 기반 주소”나 “기본 클래스 마스크”를 묻지 않는다면 /n 또는 서브넷 마스크를 기준으로 계산해야 한다.
클래스 기반 주소와 CIDR의 차이
| 구분 | 클래스 기반 주소 지정 | CIDR |
|---|---|---|
| 네트워크 경계 | A/B/C의 고정 경계 | /n으로 임의의 연속 프리픽스 지정 |
| 대표 경계 | A /8, B /16, C /24 | /0~/32 범위의 프리픽스 표현 가능 |
| 주소 활용 | 필요한 크기와 맞지 않으면 낭비가 큼 | 필요한 크기에 더 가깝게 배정 가능 |
| 현대적 판단 기준 | 역사적 개념으로 이해 | 실제 계산과 라우팅에서 프리픽스 중심 |
Class D와 E까지 포함한 역사적 클래스 체계는 주소 유형을 이해할 때 참고할 수 있지만, 서브넷 계산을 클래스 규칙에 고정해서 풀면 안 된다.
3. 네트워크 주소·브로드캐스트 주소·호스트 범위
일반적인 IPv4 서브넷에서 호스트 부분을 기준으로 보면 다음과 같다.
- 호스트 비트가 모두 0: 네트워크 주소
- 호스트 비트가 모두 1: 해당 서브넷의 브로드캐스트 주소
- 그 사이의 값: 일반적인 호스트 주소
호스트 비트가 h개라면 한 서브넷에 포함되는 전체 주소 수는 다음과 같다.
전체 주소 수 = 2^h
전통적인 일반 서브넷에서 네트워크 주소와 브로드캐스트 주소를 호스트에 할당하지 않으므로 일반적인 사용 가능 호스트 수는 다음과 같다.
일반적인 사용 가능 호스트 수 = 2^h - 2
예를 들어 /27은 호스트 비트가 5개다.
전체 주소 수 = 2^5 = 32
일반적인 사용 가능 호스트 수 = 32 - 2 = 30
/31과 /32는 예외를 구분한다
2^h - 2 공식을 모든 프리픽스에 기계적으로 적용하면 안 된다.
/31: 점대점(point-to-point) 링크에서는 두 주소를 모두 사용할 수 있도록 정의된 특별한 사용 방식이 있다./32: 하나의 IPv4 주소 자체를 나타내는 프리픽스로, 호스트 경로나 정책 객체에서 사용할 수 있다.
따라서 일반적인 서브넷 호스트 수 문제라면 2^h - 2를 사용하되, 문제에서 /31 점대점 링크처럼 특별한 조건을 제시하면 그 조건을 우선한다.
4. 완결 예제 1: 주어진 IP가 속한 서브넷 계산
다음 주소가 주어졌다고 하자.
198.51.100.77/27
1. 프리픽스에서 마스크 구하기
/27은 앞 27비트가 1이다.
255.255.255.224
2. 블록 크기 구하기
256 - 224 = 32
3. 주소가 속한 블록 찾기
마지막 옥텟의 경계는 다음과 같다.
0, 32, 64, 96, 128, 160, 192, 224
77은 64 이상 96 미만이므로 64~95 블록에 속한다.
4. 핵심 주소 결정
- 네트워크 주소:
198.51.100.64 - 브로드캐스트 주소:
198.51.100.95 - 사용 가능 범위:
198.51.100.65~198.51.100.94
5. 일반 호스트 수 계산
호스트 비트는 32 - 27 = 5개다.
2^5 - 2 = 30
따라서 일반적인 호스트 주소는 30개다.
5. 완결 예제 2: 필요한 호스트 수에서 프리픽스 구하기
한 서브넷에서 최소 50개의 일반 호스트 주소가 필요하다고 하자.
호스트 비트 수 h에 대해 다음 조건을 만족해야 한다.
2^h - 2 ≥ 50
작은 값부터 확인한다.
h = 5 → 2^5 - 2 = 30 (부족)
h = 6 → 2^6 - 2 = 62 (충족)
호스트 비트가 6개 필요하므로 프리픽스 길이는 다음과 같다.
32 - 6 = /26
따라서 최소 50개 일반 호스트를 수용할 수 있는 가장 작은 일반 서브넷은 /26이며, 마스크는 255.255.255.192다.
6. 서브넷 개수에서 프리픽스를 구하기
/24 네트워크를 같은 크기의 8개 서브넷으로 나눈다고 하자.
8은 2^3이므로 기존 호스트 부분에서 3비트를 추가로 프리픽스에 사용한다.
기존 /24 + 3비트 = /27
결과는 다음과 같다.
- 서브넷 수:
2^3 = 8 - 각 서브넷의 전체 주소 수:
2^(32-27) = 32 - 각 서브넷의 일반 호스트 수:
30 - 네트워크 시작 주소:
.0,.32,.64,.96,.128,.160,.192,.224
오래된 설명에서는 첫 번째와 마지막 서브넷을 사용하지 않는 규칙을 접할 수 있지만, CIDR 환경에서 서브넷 번호가 모두 0이거나 모두 1인 서브넷을 일률적으로 제외하는 방식은 현대적인 일반 계산 기준이 아니다. 특별한 조건이 없다면 빌린 비트가 s개일 때 같은 크기 서브넷 수를 2^s로 계산한다.
7. 완결 예제 3: VLSM으로 주소 공간 배정
VLSM(가변 길이 서브넷 마스크)은 요구량에 따라 서로 다른 크기의 서브넷을 배정한다. CIDR이 클래스 없이 프리픽스로 표현·집약하는 개념이라면, VLSM은 나눌 때 서로 다른 마스크 길이를 사용하는 방법이다.
192.0.2.0/24에서 다음 네 부서에 주소를 배정한다고 하자.
| 부서 | 필요한 일반 호스트 수 |
|---|---|
| A | 100 |
| B | 50 |
| C | 20 |
| D | 10 |
1. 각 요구량에 필요한 최소 블록 찾기
A: 100대
2^6 - 2 = 62 → 부족
2^7 - 2 = 126 → 충족
호스트 7비트이므로 /25가 필요하다.
B: 50대
2^6 - 2 = 62 → 충족
/26이 필요하다.
C: 20대
2^5 - 2 = 30 → 충족
/27이 필요하다.
D: 10대
2^4 - 2 = 14 → 충족
/28이 필요하다.
2. 큰 블록부터 배정
| 부서 | 배정 네트워크 | 일반 호스트 범위 | 브로드캐스트 | 일반 호스트 수 |
|---|---|---|---|---|
| A | 192.0.2.0/25 | 192.0.2.1 ~ 192.0.2.126 | 192.0.2.127 | 126 |
| B | 192.0.2.128/26 | 192.0.2.129 ~ 192.0.2.190 | 192.0.2.191 | 62 |
| C | 192.0.2.192/27 | 192.0.2.193 ~ 192.0.2.222 | 192.0.2.223 | 30 |
| D | 192.0.2.224/28 | 192.0.2.225 ~ 192.0.2.238 | 192.0.2.239 | 14 |
남은 주소 공간은 192.0.2.240/28이다. 필요하다면 이후 별도 소규모 서브넷에 다시 배정할 수 있다.
왜 큰 블록부터 배정하는가
작은 블록을 먼저 아무 위치에 배정하면 큰 블록이 요구하는 정렬된 연속 주소 공간을 뒤에서 확보하지 못할 수 있다. 큰 블록부터 경계에 맞춰 배정하면 이런 조각화를 줄이고 계산 실수를 방지하기 쉽다.
8. CIDR 집약의 핵심: 연속성과 경계 정렬
CIDR은 여러 연속된 프리픽스를 하나의 더 짧은 프리픽스로 표현하는 경로 집약(route aggregation)에도 사용된다. 단, 단순히 주소가 가까워 보인다고 아무 네트워크나 합칠 수 있는 것은 아니다.
예를 들어 다음 두 /26은 연속되고 /25 경계에 맞게 배치되어 있다.
192.0.2.0/26 → .0 ~ .63
192.0.2.64/26 → .64 ~ .127
두 네트워크는 다음 하나로 집약할 수 있다.
192.0.2.0/25 → .0 ~ .127
반면 192.0.2.64/26과 192.0.2.128/26은 서로 붙어 있어 보여도 하나의 /25 경계에 맞는 쌍이 아니다. /25 경계는 .0과 .128에서 시작하므로 이 둘만 정확히 나타내는 단일 /25는 없다.
이 원리는 이후 라우팅에서 최장 프리픽스 일치(longest prefix match)를 이해할 때도 중요하다.
개념 확인 문제
문제를 누르면 바로 아래에서 정답과 해설을 확인할 수 있습니다.
01198.51.100.77/27의 네트워크·브로드캐스트 주소와 일반 호스트 수는?
네트워크는 198.51.100.64, 브로드캐스트는 198.51.100.95, 일반 호스트 수는 2^5−2=30개다.
02일반 호스트 50대를 수용하는 가장 작은 서브넷의 프리픽스는?
/26이다. 호스트 5비트는 30개로 부족하고 6비트는 62개를 제공하므로 32−6=26이다.