서브넷 마스크의 형태는 IP주소와 똑같이 32bit의 2진수로 되어 있으며, 8bit(1byte)
마다 .(dot)
으로 구분하고 있다. 즉, IP와 똑같은 OOO.OOO.OOO.OOO의 모습을 가지고 있다. 그러나 형태가 똑같다고 하여서 역할을 혼동하면 안 된다. 형태가 똑같은 이유는 IP주소와 서브넷 마스크를 AND 연산하기 위해서이다.
서브넷마스크를 이해하기 위해서는 기본 서브넷마스크(Default Subnet Mask)와 서브넷 네트워크를 알고 있어야 한다. 사실 우리가 IP를 클래스로 나눈다는 뜻은, 결국 서브넷마스크를 사용한다는 말과 같은 의미다. 이게 무슨 말이냐면, 예를 들어 C클래스를 그대로 사용한다는 것은 C클래스 네트워크를 쪼개지 않고 그대로 하나의 네트워크에 할당할 수 있는 2^8-2개의 호스트 ID를 사용하겠다는 뜻이고 이때는 255.255.255.0
이 기본 서브넷 마스크가 된다. 즉, ''별개의 서브넷마스크를 생성하지 않아도 기본적으로 적용되어 있는게 기본 서브넷마스크''이고, 기본 서브넷마스크로 쪼개진 네트워크 주소를 서브넷 네크워크라고 한다.
IP 클래스별 기본 서브넷 마스크를 정리하자면 다음 표와 같다.
A Class | Octet 1 | Octet 2 | Octet 3 | Octet 4 |
---|---|---|---|---|
A Class IP (예시) | 116 | 81 | 97 | 8 |
Network ID | Network ID | Network ID | Host ID | |
Subnet Mask ( /8 ) | 255 | 0 | 0 | 0 |
B Class | Octet 1 | Octet 2 | Octet 3 | Octet 4 |
---|---|---|---|---|
B Class IP (예시) | 171 | 47 | 154 | 1 |
Network ID | Network ID | Network ID | Host ID | |
Subnet Mask ( /16 ) | 255 | 255 | 0 | 0 |
C Class | Octet 1 | Octet 2 | Octet 3 | Octet 4 |
---|---|---|---|---|
C Class IP (예시) | 214 | 175 | 213 | 51 |
Network ID | Network ID | Network ID | Host ID | |
Subnet Mask ( /24 ) | 255 | 255 | 255 | 0 |
기본 서브넷 마스크의 형태를 보면, 네트워크 부분의 비트만 1로 치환한 모습이다. 기본 서브넷 마스크는 넷마스크라고도 할 수 있는 것이다.
IP주소 뒤에 붙은 /24
같은 것들은 서브넷 마스크의 bit 수를 의미한다. 옥탯의 8bit가 모두 1일 경우 10진수로 255가 되기에 /24는 왼쪽부터 나열된 1bit의 수가 24개라는 뜻이다. 따라서 192.168.0.3/24는 IP주소가 192.168.0.3 이며, 서브넷 마스크가 255.255.255.0이라는 의미가 된다.
사실 서브넷 마스크를 알기 전 내가 공부하고자 한 목표는
이 네 가지 였다.
어디에도 서브넷 마스크란 말은 나오지 않는데, 넷마스크를 구글링 하면 서브넷 마스크에 대한 정보만 나와서 많이 헷갈렸었다. 서브넷 마스크를 공부하다보니 넷마스크의 정의와 별 차이가 없는 것 같아서 기본 서브넷 마스크가 넷마스크인가보다 했는데, 후에 우연히 이 글을 보게 되어서 이 섹션을 추가했다.
결론만 말하자면, 요즘에는 뚜렷하게 넷마스크와 서브넷마스크를 구분하지 않는다고 한다. 왜냐면 CIDR 이후(현재) subnet mask만 쓰고 있기 때문이다.
우리가 서브넷 마스크를 공부한 이유는, IP 주소에 바로 그 마스크를 씌워 서브넷팅
을 하기 위해서이다. 서브넷팅이란... 다음 포스트에 열심히 정리해보았다.
기본 서브넷 마스크의 표에서 NetworkID, HostID 표기에 수정이 필요한 것 같습니다.
A class의 경우에는 (Network ID, HostID, HostID, HostID)
B class의 경우에는 (NetworkID, NetworkID, HostID, HostID)
C class의 경우에는 (NetworkID, NetworkID, NetworkID, HostID)가 나와야 하지 않을까요?