IPv4 서브넷·CIDR·VLSM 계산

네트워크보안 · 주소 체계

이 페이지의 목차

IPv4는 32비트 주소를 8비트씩 네 옥텟으로 나누어 십진수로 표시한다. /n은 앞 n비트가 네트워크 프리픽스이고 나머지 32−n비트가 호스트 부분이라는 뜻이다. 네트워크 주소는 IP 주소와 서브넷 마스크를 비트 AND하여 구할 수 있다.

핵심 요약

프리픽스로 주소 범위를 계산하고 요구 호스트 수에 맞춰 서브넷을 배정합니다.

본문

서브넷 마스크는 프리픽스의 위치를 표시한다

서브넷 마스크(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의 개수를 프리픽스 길이로 표현하는 방식이 기본이다.

CIDR: 클래스 대신 프리픽스 길이로 주소 공간을 표현한다

초기의 IPv4 주소 체계는 주소의 앞부분에 따라 Class A, B, C처럼 고정된 경계를 사용했다. 예를 들어 전통적인 Class C는 기본적으로 /24 경계를 사용했다. 그러나 이런 고정 크기 방식은 실제 필요한 주소 수와 맞지 않을 때 주소 공간을 낭비하기 쉽다.

CIDR(Classless Inter-Domain Routing, 클래스 없는 도메인 간 라우팅)은 고정된 A/B/C 클래스 경계에 의존하지 않고 주소/프리픽스 길이 형태로 네트워크를 표현한다.

예:

  • 192.0.2.0/24
  • 198.51.100.64/27
  • 203.0.113.128/25

여기서 중요한 것은 현대적인 주소 계산에서는 클래스보다 프리픽스 길이가 실제 네트워크 경계를 결정한다는 점이다. 시험 문제가 특별히 “클래스 기반 주소”나 “기본 클래스 마스크”를 묻지 않는다면 /n 또는 서브넷 마스크를 기준으로 계산해야 한다.

클래스 기반 주소와 CIDR의 차이

구분클래스 기반 주소 지정CIDR
네트워크 경계A/B/C의 고정 경계/n으로 임의의 연속 프리픽스 지정
대표 경계A /8, B /16, C /24/0~/32 범위의 프리픽스 표현 가능
주소 활용필요한 크기와 맞지 않으면 낭비가 큼필요한 크기에 더 가깝게 배정 가능
현대적 판단 기준역사적 개념으로 이해실제 계산과 라우팅에서 프리픽스 중심

Class D와 E까지 포함한 역사적 클래스 체계는 주소 유형을 이해할 때 참고할 수 있지만, 서브넷 계산을 클래스 규칙에 고정해서 풀면 안 된다.

네트워크 주소·브로드캐스트 주소·호스트 범위

일반적인 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 점대점 링크처럼 특별한 조건을 제시하면 그 조건을 우선한다.

완결 예제 1: 주어진 IP가 속한 서브넷 계산

다음 주소가 주어졌다고 하자.

예시·텍스트
198.51.100.77/27

프리픽스에서 마스크 구하기

/27은 앞 27비트가 1이다.

예시·텍스트
255.255.255.224

블록 크기 구하기

예시·텍스트
256 - 224 = 32

주소가 속한 블록 찾기

마지막 옥텟의 경계는 다음과 같다.

예시·텍스트
0, 32, 64, 96, 128, 160, 192, 224

77은 64 이상 96 미만이므로 64~95 블록에 속한다.

핵심 주소 결정

  • 네트워크 주소: 198.51.100.64
  • 브로드캐스트 주소: 198.51.100.95
  • 사용 가능 범위: 198.51.100.65 ~ 198.51.100.94

일반 호스트 수 계산

호스트 비트는 32 - 27 = 5개다.

예시·텍스트
2^5 - 2 = 30

따라서 일반적인 호스트 주소는 30개다.

전체 맞춤새 창 보기
/27 주소 범위 계산

완결 예제 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다.

서브넷 개수에서 프리픽스를 구하기

/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로 계산한다.

완결 예제 3: VLSM으로 주소 공간 배정

VLSM(가변 길이 서브넷 마스크)은 요구량에 따라 서로 다른 크기의 서브넷을 배정한다. CIDR이 클래스 없이 프리픽스로 표현·집약하는 개념이라면, VLSM은 나눌 때 서로 다른 마스크 길이를 사용하는 방법이다.

192.0.2.0/24에서 다음 네 부서에 주소를 배정한다고 하자.

부서필요한 일반 호스트 수
A100
B50
C20
D10

각 요구량에 필요한 최소 블록 찾기

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이 필요하다.

큰 블록부터 배정

부서배정 네트워크일반 호스트 범위브로드캐스트일반 호스트 수
A192.0.2.0/25192.0.2.1 ~ 192.0.2.126192.0.2.127126
B192.0.2.128/26192.0.2.129 ~ 192.0.2.190192.0.2.19162
C192.0.2.192/27192.0.2.193 ~ 192.0.2.222192.0.2.22330
D192.0.2.224/28192.0.2.225 ~ 192.0.2.238192.0.2.23914

남은 주소 공간은 192.0.2.240/28이다. 필요하다면 이후 별도 소규모 서브넷에 다시 배정할 수 있다.

왜 큰 블록부터 배정하는가

작은 블록을 먼저 아무 위치에 배정하면 큰 블록이 요구하는 정렬된 연속 주소 공간을 뒤에서 확보하지 못할 수 있다. 큰 블록부터 경계에 맞춰 배정하면 이런 조각화를 줄이고 계산 실수를 방지하기 쉽다.

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)를 이해할 때도 중요하다.

복습 문제

답을 생각한 뒤 정답과 근거를 펼쳐 보세요.

01

198.51.100.77/27의 네트워크·브로드캐스트 주소와 일반 호스트 수는?

정답과 근거

네트워크는 198.51.100.64, 브로드캐스트는 198.51.100.95, 일반 호스트 수는 2^5−2=30개다.

본문 예제

예를 들어 /27은 호스트 비트가 5개다.

02

일반 호스트 50대를 수용하는 가장 작은 서브넷의 프리픽스는?

정답과 근거

/26이다. 호스트 5비트는 30개로 부족하고 6비트는 62개를 제공하므로 32−6=26이다.