오늘의 나보다 성장한 내일의 나를 위해….
서브넷 마스크(Subnet Mask)란?
서브넷 마스크의 개념에 앞서 서브네팅(Sub-netting)의 개념에 대해 먼저 알아야 한다.
서브넷팅은 하나의 주 네트워크(Major Network)를 필요한 만큼 분할하여 상호 연결 망을 구축할 수 있게 해주는 것이다. IP 주소의 고갈 문제를 해결하기 위해 설계된 개념이고 반대로 축약하는 개념은 수퍼넷팅(Super-netting)이라고 한다.
예를 들어, 회사에 영업부(50명), 회계부(50명), 관리부(50명) 등이 존재하는데 이를 하나의 네트워크로 묶을 수도 있지만 이를 분할해서 네트워크를 구분 지어준다. 이 구분된 네트워크를 브로드캐스트 도메인(Broadcast Domain)이라고 하고 너무 큰 브로드캐스트 도메인은 자원을 효율적으로 분배하기 어려워서 속도가 느려진다.
따라서, 서브넷팅으로 네트워크를 분할하게 되면 필요한 네트워크 주소만 호스트 IP로 할당해서 쓸모없이 버려지는 잉여 IP를 최소화할 수 있으며 Broadcast Domain Size를 줄여주므로 LAN의 Traffic을 줄일 수 있다. 또한 여러 네트워크로 분할되므로 분할된 각 network(서로 다른 부서) 업무 간에 보안을 유지할 수 있다.
서브넷 마스크란?
서브넷 마스크란 IP Address에서 첫비트부터 어디까지가 네트워크 부분인가 알려주는 역할이다. 쉽게 생각하면 IP 주소에 마스크를 씌워서 어디까지가 네트워크 부분인가를 표시하는 것이다. IP Address처럼 32비트로 구성되며, 네트워크 부분을 표시하는 비트는 1, 호스트 부분은 </span>을 표시하는 비트는 0이다. 또한,연속성이 존재해서 네트워크 부분 중간에 0이 들어갈 수 없다.
예를 들어, IP 주소 192.168.1.1에 서브넷 마스크가 255.255.255.0라면 255로 표시된 부분인 192.168.1.까지는 네트워크 부분이고 0으로 표시된 부분인 .1은 호스트 부분이다. 다시 말해, 255는 이진법으로 표시하면 1111111이기 때문에 네트워크 부분인 것이다.
네트워크 부분과 호스트 부분을 구하는 TIP!
서브네팅한 네트워크 부분을 확인할 때는 IP주소와 Subnet mask를 AND 연산해서 구한다. AND 연산은 각 비트를 비교해서 모두 1인 경우에만 1 값을 반환한다.
255.255.255.0 서브넷 마스크의 경우 24 bit가 네트워크 부분이며, prefix 표기법으로 /24이다.
AND 연산을 통해서 네트워크 부분을 구하게 될 경우 Network Address를 구할 수 있으며, 이때 호스트 부분을 모두 1로 바꿀 경우 Broadcast Address를 구할 수 있다. 이 두가지 주소의 경우 호스트에 할당할 수 없으며 이를 제외한 나머지 IP주소가 호스트에 할당 가능한 주소(Assigned Address)이다.
따라서 위의 네트워크를 보면, 192.168.1.1/24는 Network Address가 192.168.1.0이고 Broadcast Address가 192.168.1.255이며 할당 가능한 호스트는 192.168.1.1~192.168.1.254까지이다. 호스트 수는 254개 이며 이를 구하는 공식은 2의 호스트 비트수 제곱에서 2를 뺀 값이다.
문제를 통한 이해
IP: 10.0.24.100 Subnet Mask: 255.0.0.0 (= 10.0.25.100/8)
- Network Address: 10.0.0.0
- Broadcast Address: 10.255.255.255
- 할당 가능한 호스트 주소: 10.0.0.1 ~ 10.255.255.254
- 호스트 개수: 2^24-2 = 16777216-2 = 16777214
IP: 192.100.2.31/16
- Network Address: 192.100.0.0
- Broadcast Address: 192.100.255.255
- 할당 가능한 호스트 주소: 192.100.0.1 ~ 192.100.255.254
- 호스트 개수: 2^16-2 = 65536-2 = 65534
IP: 151.3.192.17 Subnet Mask: 255.255.240.0 (= 151.3.192.17/20)
- Network Address: 151.3.192.0
- Broadcast Address: 151.3.207.255
- 할당 가능한 호스트 주소: 151.3.192.1 ~ 151.3.207.254
- 호스트 개수: 2^12-2=4096-2 = 4094
IP: 192.168.4.100/26
- Network Address: 192.168.4.64
- Broadcast Address: 192.168.4.127
- 할당 가능한 호스트 주소: 192.168.4.65 ~ 192.168.4.126
- 호스트 개수: 2^6-2 = 64-2 = 66
마지막 문제
192.168.4.100/26를 비트화 시켜보면
11000000 10101000 00000100 01100100
11111111 11111111 11111111 1100000
11000000 10101000 00000100 01 까지 네트워크 부분이고 나머지 6비트는 호스트이다.
그래서 호스트 비트를 0으로 채운 192.168.4.64가 네트워크 주소(Network Address)이고 1로 채운
11000000 10101000 00000100 01111111 (192.168.4.127)는 브로드캐스트 주소(Broadcast Address)이다.
따라서 네트워크 주소와 브로드캐스트 주소 사이에 있는 IP 주소들이 호스트에게 할당가능한 주소(192.168.4.65 ~ 192.168.4.126)이다. 또한, 호스트 개수는 호스트 비트가 6bit 이기 때문에 2의 6제곱 빼기 2 = 64 - 2 = 62개이다.
마지막으로 한가지만 더 짚어보자
192.168.4.100은 192로 시작하기 때문에 C 클래스이다. 그러면 네트워크 부분이 192.168.4.0/24 이렇게 된다. 그러면 해당 네트워크에는 호스트 수가 .4.1부터 .4.254까지 254개가 된다.
그.런.데 위의 문제는 네트워크 부분이 2비트가 늘어났다. 자 이렇게 서브네팅을 하게되면
192.168.4.0 ~ 192.168.4.255
이렇게 하나였던 네트워크를
192.168.4.0 ~ 192.168.4.63
192.168.4.64 ~ 192.168.4.127
192.168.4.128 ~ 192.168.4.191
192.168.4.192 ~ 192.168.4.254
이렇게 4개 네트워크로 분할하게 된다.
위 문제에 있던 .100 이라는 호스트는 두 번째 네트워크에 해당된다.
하나의 네트워크 일때는 호스트가 254개인데 4개의 네트워크로 분할하면 각 네트워크당 62개씩으로 할당된다. 더 효율적으로 활용이 가능하게 된 것이다. 이처럼 서브넷팅은 분할에 사용하며 반대로 네트워크를 합칠 때는 축약이라고 하며 수퍼넷팅이라고 한다.