개요
IP 주소 이해하기 글에서 클래스리스 네트워크에서는 클래스 개념이 없으므로 별도로 네트워크와 호스트 주소를 나누는 구분자를 사용해야 하며, 이 구분자가 바로 서브넷 마스크라고 했다. 서브넷 마스크는 정확히 어떤 방식으로 구분자 역할을 수행할까? 또 서브넷팅은 뭘까? 이번 포스팅에서는 서브넷 마스크와 서브넷팅에 대해 알아보고 예제를 풀어 개념을 명확히 이해해 보자.
서브넷? 서브넷 마스크?
서브넷이란
서브넷은 네트워크를 더 작은 네트워크로 나누는 것을 말한다.
앞선 포스팅에서 클래스 단위로 네트워크 주소와 호스트 주소를 나누게 되면 호스트 주소를 몇 개 할당하지 않아 많이 남아있어도 다른 네트워크에서 해당 네트워크 주소를 사용할 수 없어서 IP 주소가 많이 낭비된다고 했다. 이런 단점을 해결하기 위해 등장한 것이 바로 서브넷으로, 큰 네트워크 주소를 여러 곳에서 사용할 수 있도록 여러 개로 나눈다고 생각하면 된다.
서브넷 마스크란?
서브넷 마스크는 IP 주소를 네트워크 부분과 호스트 부분으로 나누는 데 사용된다.
클래스풀에서의 주소 구분
클래스풀 주소에서는 맨 앞 옥텟을 보고 어떤 클래스인지 알면 어디서부터 어디까지가 네트워크 주소고 호스트 주소인지 구분할 수 있었다. 예를 들어 A 클래스는 맨 앞 한 개의 옥텟만 네트워크 주소고 이후 세 개의 옥텟이 모두 호스트 주소임을 알 수 있다.
클래스리스에서의 주소 구분
클래스리스 주소에서는 클래스가 없는데 네트워크 주소와 호스트 주소를 어떻게 구분할 수 있는 걸까? 서브넷 마스크를 사용해서 구분하면 된다.
서브넷 마스크에서 2진수 숫자 1은 네트워크 주소, 0은 호스트 주소로 표시한다.
보통은 10진수를 사용해 255.0.0.0
, 255.255.0.0
, 255.255.255.0
과 같이 표현한다.
이진수 11111111을 10진수로 표현하면 255가 되고, 서브넷 마스크에서 1은 네트워크 주소를 나타낸다고 했으므로 255는 네트워크 주소 부분, 0은 호스트 주소 부분으로 구분된다.
서브넷 마스크로 네트워크 주소와 호스트 주소 구분하기
기본 서브넷 마스크
IP 주소에서 네트워크 주소만 뽑아낼 때는 IP 주소 && 기본 서브넷 마스크
를 하면 된다.
예를 들어, 103.9.32.146 주소에 255.255.255.0 서브넷 마스크를 사용하는 IP는 네트워크 주소가 103.9.32.0이고 호스트 주소는 0.0.0.146이 된다. 서브넷 마스크가 2진수 1인 부분(10진수로는 255인 부분)은 IP 주소가 그대로 연산 결과가 되고 서브넷 마스크가 0인 부분은 모두 0으로 변경된다.
서브넷팅
원래 부여된 클래스의 기준을 무시하고 사용자가 새로운 네트워크-호스트 구분 기준을 정해 원래 클래스풀 단위의 네트워크보다 더 쪼개 사용하는 것을 서브넷팅(Subnetting)이라고 한다.
옥텟 단위로 구분되는 서브넷팅은 이해가 쉽지만 실제로는 옥텟 단위보다 더 잘게 네트워크를 쪼개 2진수 1비트 단위로 네트워크를 분할한다.
기존에 103.9.32.146 주소에 255.255.255.0 서브넷 마스크를 사용한 예시를 알아봤다.
사실 255.255.255.0 서브넷 마스크를 사용하면 그냥 옥텟 단위로 나눈 서브넷팅이므로 클래스풀 주소와 다를 바가 없다.
여기서 더 쪼개는 연습을 해보자.
255.255.255.192
서브넷 마스크를 이용해 서브넷팅 해보자.
255.255.255.192 서브넷 마스크는 위의 그림에서 알 수 있듯 32bit 중 26bit를 네트워크 주소로, 6bit를 호스트 주소로 사용하는 서브넷 마스크다.
둘을 AND 연산하면 네트워크 주소를 알아낼 수 있다. AND 연산해보자.
AND 연산의 결과로 103.9.32.128이 네트워크 주소임을 알 수 있다.
이진수로 나타내면 01100111.00001001.00100000.10000000이 네트워크 주소고, 호스트 주소 중 가장 마지막 주소인 01100111.00001001.00100000.10111111이 브로드캐스트 주소다. 그리고 그 사이의 값들이 할당 가능한 호스트 주소가 된다.
둘을 계산할 때는 그림처럼 이진수로 표현하고 이진수끼리 연산하여 알아내는 것이 편하다.
서브넷 마스크 연습 문제
문제 : 네트워크 주소 찾기
IP 주소 : 192.168.10.25
서브넷 마스크 : 255.255.255.0
이 IP 주소의 네트워크 주소를 찾아라.
풀이
IP 주소와 서브넷 마스크를 AND 연산하면 네트워크 주소가 나온다.
따라서 네트워크 주소는 192.168.10.0이다.
문제 : 가능한 호스트 수 계산
서브넷 마스크 : 255.255.255.192
이 서브넷 마스크로 가능한 호스트의 수를 계산하라
풀이
우선 서브넷 마스크를 2진수로 변환해 보자.
11111111.11111111.11111111.11000000이다.
호스트는 총 6비트에 할당 가능하며 네트워크 주소와 브로드캐스트 주소를 제외한 주소에 할당 가능하므로
2^6 - 2인 62개가 답이다.
문제 : 서브넷 마스크 계산
IP 주소 : 10.0.0.1/16
서브넷 마스크를 계산하라
풀이
/16
은 서브넷 마스크의 32비트 중 앞의 16비트가 이진수 1이라는 것을 의미한다.
따라서 서브넷 마스크는 11111111.11111111.00000000.00000000이고 이걸 10진수로 나타내면 255.255.0.0이다.
문제: 브로드캐스트 주소 찾기
IP주소: 172.16.5.50
서브넷 마스크: 255.255.254.0
이 IP 주소의 브로드캐스트 주소를 찾아라.
풀이
브로드캐스트 주소는 호스트 주소의 마지막 주소다.
따라서 우선 네트워크 주소와 호스트 주소를 분리해야 한다.
네트워크 주소는 IP 주소와 서브넷 마스크를 AND 연산하여 알아낸다고 했다.
- IP 주소 : 10101100.00010000.00000101.00110010
- 서브넷 마스크 : 11111111.11111111.11111110.00000000
- 네트워크 주소 : 10101100.00010000.00000100.00000000
- 브로드캐스트 주소 : 10101100.00010000.00000101.11111111
이를 십진수로 나타내면 172.16.5.255이다.
문제: 서브넷 마스크를 이용한 IP 대역 구하기
IP주소: 192.168.5.130
서브넷 마스크: 255.255.255.240
이 IP 주소가 속한 서브넷의 IP 대역(네트워크 주소와 브로드캐스트 주소 포함)을 구하라.
풀이
먼저 각 주소들을 2진수로 변환한다.
- IP주소: 11000000.10101000.00000101.10000010
- 서브넷 마스크: 11111111.11111111.11111111.11110000
- 네트워크 주소 : 11000000.10101000.00000101.10000000
- 브로드캐스트 주소 11000000.10101000.00000101.10001111
IP 대역은 네트워크 주소 ~ 브로드캐스트 주소다. 따라서 둘을 십진수로 나타내면 192.168.5.128 ~ 192.168.5.143이 답이 된다.