이진수 형태로 보면, 서브넷 마스크는 먼저 1만 연달아 나온 뒤 0이 주욱 이어지는 꼴이다. 이렇게 이진수로 바꿔 보면 맨눈으로도 쉽게 형태를 알아볼 수 있고 AND 연산을 암산으로 해 볼 수도 있다. 표 2-4에 대표적 서브넷 마스크와 해당 서브넷에 가능한 고유 호스트 개수를 나열했다. 서브넷마다 두 개의 주소는 예약되어 있어 호스트에 할당할 수 없음에 유의하자. 하나는 네트워크 주소로, 서브넷 내 유효 IP 주소를 마스크와 비트 AND 연산한 값이다.9 또 하나는 브로드캐스트 주소로, 서브넷 마스크의 보수를 네트워크 주소와 비트 OR 연산한 값이다. 즉, 네트워크 주소상 서브넷 마스크 영역 외의 비트를 모두 1로 한 값이다.10 서브넷 내에서 브로드캐스트 주소로 지정된 패킷은 해당 서브넷의 모든 호스트에 전달되어야 한다.
▼ 표 2-4 서브넷 마스크의 몇 가지 예
서브넷 마스크 |
서브넷 마스크 이진수 형태 |
상위 비트 수 |
가능한 호스트 개수 |
255.255.255.248 |
11111111 11111111 11111111 11111000 |
29 |
6 |
255.255.255.192 |
11111111 11111111 11111111 11000000 |
26 |
62 |
255.255.255.0 |
11111111 11111111 11111111 00000000 |
24 |
254 |
255.255.0.0 |
11111111 11111111 00000000 00000000 |
16 |
65534 |
255.0.0.0 |
11111111 00000000 00000000 00000000 |
8 |
16777214 |
9 역주 C+ + 코드로 표현하면: networkAddress = ipAddress & subnetMask;
10 역주 C+ + 코드로 표현하면: broadcastAddress = networkAddress | (~subnetMask);