서브넷 마스크(Subnet Mask)
요약
IPv4 주소 체계의 핵심인 서브넷 마스크의 원리와 역할을 설명합니다. 서브넷 마스크를 이용해 네트워크에서 사용 가능한 IP 주소 개수를 계산하고, 주어진 호스트 주소로부터 네트워크 주소와 브로드캐스트 주소를 구하는 방법을 상세히 다룹니다. 정보처리기사 실기 시험에 출제된 기출 문제와 유사 문제를 통해 학습 내용을 점검할 수 있습니다.
헷갈리기 쉬운 용어 요약
| 용어 | 설명 |
|---|---|
| 서브넷 마스크 | 네트워크 주소 구하는데 사용 |
| 서브네팅(FLSM) | 서브넷 구하는데 사용 |
IP 주소의 기본 개념(IPv4/IPv6, 네트워크/호스트/브로드캐스트 주소)은 IP 주소에서 확인하세요.
서브넷 마스크
서브넷 마스크 문제는 IPv4 주소 문제만 나옵니다.(IPv6일 경우 너무 길어짐)
IPv4 주소는 32비트로 구성되어 있으며, 8비트씩 4개로 나눕니다. 각 8비트는 0~255 범위의 10진수로 표현되어 IP주소는 0.0.0.0 ~ 255.255.255.255 까지 표현할 수 있습니다.
서브넷 마스크를 쓰는 이유
IPv4에 의한 IP 주소 총량은 정해져있습니다. (대략 43억개 정도입니다.)
2011년 이미 IPv4 주소는 모두 소진되었습니다.
현재 IP 주소 할당 방법
이로 인해 신규 서비스, 모바일의 경우 IPv6가 할당되거나 기존 할당한 IPv4 주소가 중고 거래되고 있습니다. 또한 NAT 기술이 적용되어 공유 아이피가 사설 IP 주소(192.168.x.x)를 사용할 수 있게 되어 IPv4 주소를 절약할 수 있게 되었습니다.
이렇게 빠르게 IPv4가 소진된 이유는 PC, 스마트폰 등 기기들의 급속한 증가 때문이기도 하지만 IPv4를 임대하는 기존 방식도 문제였습니다.
기존 방식인 클래스 할당 방식은 국가, 초대형 기업에 한 번에 많은 IP 주소(약 1650만개)를 임대하는 방식이었습니다.

서브넷 마스크는 IPv4 주소를 더 잘게 나누어서 임대할 수 있도록 해줍니다.
IP 주소를 임대해보자
제가 192.168.1.0 ~ 192.168.255.255 까지의 IP 주소를 갖고 있다고 가정해보겠습니다.
A기업에 256개의 IP 주소를 임대해주고 싶습니다. 192.168.1.0 ~ 192.168.1.255 까지의 IP 주소를 임대해주면 될겁니다.
이 때 이렇게 임대해주면 됩니다.
"A기업은 192.168.1.0 네트워크 주소를 사용하세요. 서브넷 마스크는 255.255.255.0 입니다."
IP 주소 종류
IP 주소는 네트워크 주소, 호스트 주소, 브로드캐스트 주소로 나눌 수 있습니다. (자세히 보기)
"A기업은 192.168.1.0 네트워크 주소를 사용하세요."
이 문장을 통해 A기업은 192.168.1.0 이 내가 할당받은 네트워크의 대표 주소임을 알게 됩니다.
그렇다면 "서브넷 마스크는 255.255.255.0 입니다." 라는 문장은 무엇을 의미할까요?
서브넷 마스크는 임대받은 기업이 사용할 수 있는 주소의 범위를 결정한다
255.255.255.0 은 2진수로 11111111.11111111.11111111.00000000 이 됩니다.
뒤의 0의 갯수가 사용할 수 있는 주소의 범위를 결정합니다. 2진수로 00000000 에서 11111111 까지의 모든 조합을 IP주소로 사용할 수 있는 것이죠.

서브넷 마스크는 앞부분이 1, 뒷부분이 0으로 구성됩니다. 서브넷 마스크는 IP 주소에서 "여기까지가 네트워크 부분이고, 나머지는 호스트 부분입니다"라는 경계를 표시하는 역할을 합니다. 1인 부분은 네트워크 부분(같은 그룹 내 모든 장치가 동일)을, 0인 부분은 호스트 부분(각 장치에 할당하는 부분)을 나타냅니다. 따라서 0의 갯수가 곧 사용 가능한 주소의 범위를 결정합니다.
1개 비트(2진수) 당 2가지 경우의 수(0 아니면 1)가 있죠.
위 서브넷 마스크 11111111.11111111.11111111.00000000에서 호스트 부분의 0이 8개이므로, 8개의 비트를 사용할 수 있습니다. 따라서 2^8 = 256개의 IP 주소를 임대해줄 수 있습니다.
다른 예시를 들어볼까요? 만약 서브넷 마스크가 255.255.255.224 라면 어떨까요?
255.255.255.224 를 2진수로 바꾸면 11111111.11111111.11111111.11100000 이 됩니다.
뒤의 0의 갯수가 5개 이므로 IP주소를 결정하는데 사용할 수 있는 비트는 5개 입니다.
따라서 2^5 = 32개의 IP 주소를 사용할 수 있습니다.
문제 - 사용 가능한 IP 주소 갯수 구하기
B기업이 사용하는 네트워크 주소 구하기
이번에는 B기업에게 IP 주소를 임대해주면서 이렇게 이야기했다고 해봅시다.
"B기업은 192.168.1.123이 포함된 IP주소를 사용하세요. 서브넷 마스크는 255.255.255.192 입니다."
이 때 B기업이 사용하는 네트워크 주소는 뭘까요?
네트워크 주소는 호스트 부분이 모두 0인 주소입니다. 따라서 호스트 부분을 모두 0으로 만들어주면 네트워크 주소를 구할 수 있습니다.
서브넷 마스크는 네트워크 부분이 1, 호스트 부분이 0으로 구성되어 있습니다. 이 값을 IP 주소와 AND 연산하면 호스트 부분이 모두 0이 되므로 네트워크 주소가 됩니다.
IP 주소 192.168.1.123과 서브넷 마스크 255.255.255.192를 2진수로 바꿔 AND 연산하면 다음과 같습니다.
서브넷 마스크가 1인 네트워크 부분은 IP 주소의 원래 값이 유지되고, 0인 호스트 부분은 모두 0이 된 것을 볼 수 있습니다.
이 2진수 11000000.10101000.00000001.01000000를 10진수로 바꾸면 192.168.1.64가 됩니다.
따라서 B기업이 사용하는 네트워크 주소는 192.168.1.64 입니다.
추가로 B기업이 임대받은 IP 주소의 갯수는 64개입니다. 문제 - 사용 가능한 IP 주소 갯수 구하기와 서브넷 마스크가 동일하니, 임대받은 IP 주소의 갯수도 같겠죠. 192.168.1.64 ~ 192.168.1.127 까지의 IP 주소를 사용할 수 있습니다.
호스트 주소와 서브넷 마스크로 네트워크 주소 구하기
방금은 그냥 IP 주소로 192.168.1.123을 이야기했는데 이건 결국 호스트 주소입니다.(네트워크 주소, 브로드캐스트 주소가 아니라면 호스트 주소니까요. 헷갈리면 여기로)
호스트 주소와 서브넷 마스크가 있다면 방금처럼 네트워크 주소를 유추해낼 수 있습니다.
문제 - 호스트 주소와 서브넷 마스크로 네트워크 주소 구하기
네트워크 주소와 서브넷 마스크로 브로드캐스트 주소 구하기
브로드캐스트 주소는 호스트 부분이 모두 1인 주소입니다. 따라서 호스트 부분을 모두 1로 채워주면 브로드캐스트 주소를 구할 수 있습니다.
서브넷 마스크를 반전(NOT)시키면 호스트 부분만 1인 마스크가 됩니다. 이 값을 OR 연산하면 호스트 부분이 모두 1로 채워지므로 브로드캐스트 주소가 됩니다.
서브넷 마스크(11111111.11111111.11111111.11000000)를 반전시키면 00000000.00000000.00000000.00111111이 됩니다.
이 반전된 서브넷 마스크를 네트워크 주소와 OR 연산하면:
호스트 주소와 OR 연산해도 동일한 결과가 나옵니다:
두 경우 모두 10진수로 223.13.234.191이 됩니다.
왜 네트워크 주소든 호스트 주소든 결과가 같을까?
반전된 서브넷 마스크는 호스트 부분이 모두 1입니다. OR 연산에서 1과 연산하면 상대 값이 무엇이든 결과는 항상 1이 됩니다.
즉, 호스트 부분은 네트워크 주소(모두 0)든 호스트 주소(어떤 값이든)든 상관없이 OR 연산 후 모두 1로 채워집니다.
반대로 네트워크 부분은 반전된 서브넷 마스크가 모두 0이므로, OR 연산 결과는 원래 값이 그대로 남습니다. 네트워크 주소와 호스트 주소의 네트워크 부분은 동일하기 때문에 결과도 같습니다.
문제 - 호스트 주소와 서브넷 마스크로 네트워크 주소 구하기의 상황을 가져와서 브로드캐스트 주소를 구해봅시다.