현재 선택한 정보보안 과정

정보보안기사 필기 이론 학습

이론 목록으로 돌아가기

IPv4 서브넷·CIDR·VLSM 계산

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

예상 읽기 9

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

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

서브넷 마스크(subnet mask)는 IPv4 주소에서 네트워크 프리픽스에 해당하는 비트를 1, 호스트 부분을 0으로 표현한 32비트 값이다.

/27의 마스크를 2진수로 쓰면 다음과 같다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
11111111.11111111.11111111.11100000

8비트씩 10진수로 바꾸면 다음과 같다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
255.255.255.224

따라서 다음 두 표기는 같은 프리픽스 길이를 나타낸다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
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/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까지 포함한 역사적 클래스 체계는 주소 유형을 이해할 때 참고할 수 있지만, 서브넷 계산을 클래스 규칙에 고정해서 풀면 안 된다.

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

일반적인 IPv4 서브넷에서 호스트 부분을 기준으로 보면 다음과 같다.

  • 호스트 비트가 모두 0: 네트워크 주소
  • 호스트 비트가 모두 1: 해당 서브넷의 브로드캐스트 주소
  • 그 사이의 값: 일반적인 호스트 주소

호스트 비트가 h개라면 한 서브넷에 포함되는 전체 주소 수는 다음과 같다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
전체 주소 수 = 2^h

전통적인 일반 서브넷에서 네트워크 주소와 브로드캐스트 주소를 호스트에 할당하지 않으므로 일반적인 사용 가능 호스트 수는 다음과 같다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
일반적인 사용 가능 호스트 수 = 2^h - 2

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

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
전체 주소 수 = 2^5 = 32
일반적인 사용 가능 호스트 수 = 32 - 2 = 30

/31/32는 예외를 구분한다

2^h - 2 공식을 모든 프리픽스에 기계적으로 적용하면 안 된다.

  • /31: 점대점(point-to-point) 링크에서는 두 주소를 모두 사용할 수 있도록 정의된 특별한 사용 방식이 있다.
  • /32: 하나의 IPv4 주소 자체를 나타내는 프리픽스로, 호스트 경로나 정책 객체에서 사용할 수 있다.

따라서 일반적인 서브넷 호스트 수 문제라면 2^h - 2를 사용하되, 문제에서 /31 점대점 링크처럼 특별한 조건을 제시하면 그 조건을 우선한다.

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

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

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
198.51.100.77/27

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

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

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
255.255.255.224

2. 블록 크기 구하기

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
256 - 224 = 32

3. 주소가 속한 블록 찾기

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

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
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개다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
2^5 - 2 = 30

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

좌우로 이동해 그림을 확인하세요.그림 크게 보기
/27 주소 범위 계산
/27 주소 범위 계산

5. 완결 예제 2: 필요한 호스트 수에서 프리픽스 구하기

한 서브넷에서 최소 50개의 일반 호스트 주소가 필요하다고 하자.

호스트 비트 수 h에 대해 다음 조건을 만족해야 한다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
2^h - 2 ≥ 50

작은 값부터 확인한다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
h = 5 → 2^5 - 2 = 30  (부족)
h = 6 → 2^6 - 2 = 62  (충족)

호스트 비트가 6개 필요하므로 프리픽스 길이는 다음과 같다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
32 - 6 = /26

따라서 최소 50개 일반 호스트를 수용할 수 있는 가장 작은 일반 서브넷은 /26이며, 마스크는 255.255.255.192다.

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

/24 네트워크를 같은 크기의 8개 서브넷으로 나눈다고 하자.

8은 2^3이므로 기존 호스트 부분에서 3비트를 추가로 프리픽스에 사용한다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
기존 /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에서 다음 네 부서에 주소를 배정한다고 하자.

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

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

A: 100대

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
2^6 - 2 = 62   → 부족
2^7 - 2 = 126  → 충족

호스트 7비트이므로 /25가 필요하다.

B: 50대

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
2^6 - 2 = 62 → 충족

/26이 필요하다.

C: 20대

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
2^5 - 2 = 30 → 충족

/27이 필요하다.

D: 10대

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
2^4 - 2 = 14 → 충족

/28이 필요하다.

2. 큰 블록부터 배정

부서배정 네트워크일반 호스트 범위브로드캐스트일반 호스트 수
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이다. 필요하다면 이후 별도 소규모 서브넷에 다시 배정할 수 있다.

왜 큰 블록부터 배정하는가

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

8. CIDR 집약의 핵심: 연속성과 경계 정렬

CIDR은 여러 연속된 프리픽스를 하나의 더 짧은 프리픽스로 표현하는 경로 집약(route aggregation)에도 사용된다. 단, 단순히 주소가 가까워 보인다고 아무 네트워크나 합칠 수 있는 것은 아니다.

예를 들어 다음 두 /26은 연속되고 /25 경계에 맞게 배치되어 있다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
192.0.2.0/26      → .0   ~ .63
192.0.2.64/26     → .64  ~ .127

두 네트워크는 다음 하나로 집약할 수 있다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
192.0.2.0/25      → .0 ~ .127

반면 192.0.2.64/26192.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이다.