서브넷팅(subnetting)은 서브넷 마스크로 네트워크 부분과 호스트 부분의 경계를 옮겨, 네트워크 하나를 더 작은 네트워크 여러 개로 나누는 것입니다. 경계를 /26처럼 앞 비트 수로 적는 꼴을 CIDR 표기라고 합니다.
IP 주소와 IPv6의 클래스는 경계가 8·16·24비트로 굳어 있어 크기가 맞지 않습니다. 장치가 50대인 부서에 C 클래스 하나(254대)를 주면 200개 넘게 남고, 300대면 C 하나로 모자랍니다. 아래 그림은 /24 네트워크의 경계를 2비트 옮겨 넷으로 나누고, 그 가운데 한 서브넷의 주소를 구합니다.
1서브넷 마스크와 CIDR 표기
서브넷 마스크(subnet mask)는 IP 주소와 같은 32비트로, 네트워크 부분 자리에 1을, 호스트 부분 자리에 0을 둡니다. 1은 앞에서부터 끊기지 않고 이어집니다. CIDR(Classless Inter-Domain Routing) 표기는 1의 개수를 주소 뒤에 /와 함께 적어, 192.168.10.77/26은 앞 26비트가 네트워크 부분이라는 뜻입니다.
| CIDR | 마지막 옥텟 | 서브넷 마스크 | 주소 수 |
|---|---|---|---|
| /24 | 00000000 | 255.255.255.0 | 256 |
| /25 | 10000000 | 255.255.255.128 | 128 |
| /26 | 11000000 | 255.255.255.192 | 64 |
| /27 | 11100000 | 255.255.255.224 | 32 |
| /28 | 11110000 | 255.255.255.240 | 16 |
클래스의 경계도 이 꼴로 적을 수 있습니다. A는 /8(255.0.0.0), B는 /16(255.255.0.0), C는 /24입니다.
2서브넷으로 나누기
호스트 부분에서 n비트를 빌려 경계를 옮기면 서브넷이 2ⁿ개 생깁니다. 남은 호스트 비트가 h개면 서브넷마다 주소가 2ʰ개입니다. 192.168.10.0/24에서 2비트를 빌린 /26은 서브넷 4개로, 마지막 옥텟이 0·64·128·192에서 시작하는 64개씩입니다.
서브넷을 k개 만들려면 2ⁿ이 k 이상이 되는 가장 작은 n을 빌립니다. 경계가 마지막 옥텟 안에 있으면 서브넷 크기는 256에서 마스크의 마지막 옥텟을 빼서도 구합니다(256 − 192 = 64).
3네트워크 주소와 브로드캐스트 주소
주소가 어느 서브넷에 드는지는 주소와 마스크를 비트마다 AND(둘 다 1일 때만 1)해서 구합니다. 호스트 부분이 모두 0이 되는데, 이것이 그 서브넷의 네트워크 주소(network address)입니다.
77 01001101
/26 11000000
AND 01000000 = 64
호스트 부분을 모두 1로 채운 주소는 브로드캐스트 주소(broadcast address)로, 그 서브넷의 모든 장치에게 한꺼번에 보낼 때 씁니다. 192.168.10.77/26이면 네트워크 주소는 192.168.10.64, 브로드캐스트 주소는 64 + 63인 192.168.10.127입니다.
두 주소는 장치에 줄 수 없으므로, 쓸 수 있는 호스트 수는 2ʰ − 2입니다. /26은 2⁶ − 2 = 62개(192.168.10.65~126)입니다. 경계를 한 비트 더 옮긴 /27은 서브넷이 8개로 늘고, 서브넷마다 호스트는 30개로 줄어듭니다.
예제
200.1.1.0/24를 서브넷 5개로 나누고, 넷째 서브넷의 네트워크 주소·브로드캐스트 주소·쓸 수 있는 호스트를 구해 보세요.
| 차례 | 계산 | 결과 |
|---|---|---|
| 빌릴 비트 | 2² = 4는 모자라고 2³ = 8 | 3비트, /27 |
| 서브넷 크기 | 2⁵ = 32 | 0 · 32 · 64 · 96 … |
| 넷째 서브넷 | 96부터 32개 | 200.1.1.96 |
| 브로드캐스트 | 96 + 31 | 200.1.1.127 |
| 호스트 | 2⁵ − 2 = 30 | .97 ~ .126 |
거꾸로 '서브넷마다 장치 25대'가 조건이어도 답은 같습니다. 2⁴ − 2 = 14는 모자라고 2⁵ − 2 = 30이면 되므로 호스트 비트 5개, 곧 /27입니다. 답을 CIDR로 쓰라면 /27, 마스크로 쓰라면 255.255.255.224입니다.
시험 포인트
- 필기: 마스크와 CIDR을 서로 바꾸고, 주소 하나로 네트워크 주소·브로드캐스트 주소·호스트 수를 구합니다. 서브넷 수는 2ⁿ, 호스트 수는 2ʰ − 2입니다 — 2를 빼지 않거나, 마스크 값 192를 서브넷 크기로 읽는 실수를 노립니다.
- 실기: 계산한 답을 문제가 정한 꼴로 씁니다 — CIDR(/26), 마스크(255.255.255.192), 주소. 이름도 씁니다 — 서브넷 마스크(Subnet Mask), CIDR(Classless Inter-Domain Routing), 네트워크 주소(Network Address), 브로드캐스트 주소(Broadcast Address).
확인 문제
1. 192.168.10.64/26 서브넷에 있는 PC에 줄 수 있는 주소를 고르세요.
- ① 192.168.10.64
- ② 192.168.10.100
- ③ 192.168.10.127
- ④ 192.168.10.130
정답
②입니다. /26은 호스트 비트가 6개라 이 서브넷은 .64부터 .127까지 64개이고, 양 끝을 뺀 .65~.126을 장치에 줄 수 있습니다.
- ① 호스트 비트가 모두 0인 네트워크 주소입니다.
- ③ 호스트 비트가 모두 1인 브로드캐스트 주소입니다.
- ④ .128부터는 다음 서브넷입니다.
2. 다음 (가)~(라)에 맞는 이름을 한글 이름과 영문으로 함께 쓰세요. 약어로 부르는 이름은 약어와 영문 원어를 씁니다. 답을 끝까지 쓴 뒤 정답을 펼치세요.
- (가) 255.255.255.224처럼 32비트 가운데 앞의 자리들을 1로 채워, 어디까지가 네트워크를 가리키는지 알려 주는 값
- (나) (가)를
/27처럼 1의 개수로 줄여 주소 뒤에 붙이는 표기 - (다) 한 서브넷에서 호스트 비트가 모두 0이라, 그 서브넷 자체를 가리키는 주소
- (라) 한 서브넷에서 호스트 비트가 모두 1이라, 그 안의 장치 모두에게 한꺼번에 보낼 때 쓰는 주소
정답
받는 답: (가) 서브넷 마스크(Subnet Mask) · (나) CIDR(Classless Inter-Domain Routing) · (다) 네트워크 주소(Network Address) · (라) 브로드캐스트 주소(Broadcast Address)
(가)의 실마리는 '앞을 1로 채워 경계를 알린다', (나)는 '1의 개수를 / 뒤에', (다)는 '호스트 비트 모두 0', (라)는 '호스트 비트 모두 1 · 모두에게'입니다.
- 틀리는 꼴 서브넷팅 — (가)에: 경계를 옮겨 네트워크를 나누는 일의 이름입니다. 경계를 적은 값이 서브넷 마스크입니다.
- 틀리는 꼴 브로드캐스트 주소 — (다)에: 호스트 비트가 모두 1인 쪽입니다. 모두 0인 쪽이 네트워크 주소입니다.
3. 그림의 주소를 192.168.10.77/27로 바꿨습니다. 네트워크 주소, 브로드캐스트 주소, 쓸 수 있는 호스트 수를 쓰세요. 답을 끝까지 쓴 뒤 정답을 펼치세요.
정답
받는 답: 192.168.10.64 · 192.168.10.95 · 30
/27은 마지막 옥텟이 11100000(224)이라 호스트 비트가 5개입니다. 77 AND 224 = 64라 네트워크 주소는 .64이고, 서브넷 크기가 32라 브로드캐스트 주소는 64 + 31 = 95입니다. 호스트는 2⁵ − 2 = 30개입니다.
- 틀리는 꼴 192.168.10.127: /26일 때의 브로드캐스트 주소입니다. 경계가 한 비트 옮겨 가면 서브넷이 절반(32개)으로 줄어 끝이 .95가 됩니다.
- 틀리는 꼴 32: 네트워크 주소와 브로드캐스트 주소를 빼지 않았습니다.
4. 10.1.70.9/18의 네트워크 주소와 브로드캐스트 주소를 구합니다. 경계가 셋째 옥텟 안에 있습니다. 표의 (가)~(다)를 채워 답을 쓰세요. 답을 끝까지 쓴 뒤 정답을 펼치세요.
| 차례 | 값 |
|---|---|
| 마스크 | 255.255.192.0 |
| 셋째 옥텟 70 | 01000110 |
| 70 AND 192 | (가) |
| 네트워크 주소 | 10.1.(가).0 |
| 셋째 옥텟의 호스트 비트 수 | (나) |
| 브로드캐스트 주소 | 10.1.(다).255 |
정답
받는 답: (가) 64 · (나) 6 · (다) 127 — 네트워크 주소 10.1.64.0 · 브로드캐스트 주소 10.1.127.255
/18은 셋째 옥텟에서 앞 2비트까지가 네트워크 부분이라 마스크의 셋째 옥텟이 192입니다. 01000110 AND 11000000 = 01000000 = 64입니다. 셋째 옥텟에 남은 호스트 비트 6개와 넷째 옥텟 8비트를 모두 1로 채우면 64 + 63 = 127과 255가 됩니다.
- 틀리는 꼴 10.1.70.255: 셋째 옥텟을 그대로 두고 넷째 옥텟만 채웠습니다. 경계가 셋째 옥텟 안에 있으면 셋째 옥텟의 호스트 비트도 1로 채웁니다.
- 틀리는 꼴 10.1.64.255: 넷째 옥텟만 1로 채웠습니다. 셋째 옥텟에 남은 호스트 비트 6개도 1로 채워야 합니다.