흔히 사용되는 IPv4 주소 체계는 클래스를 나누어 IP를 할당한다.
-> 매우 비효율적
ex) 한 기관에 N 클래스를 할당할 때, 16,777,214 개의 호스트를 할당이 가능하다.
이 때, 기관이 100개의 호스트를 할당한다고 해도 16,777,114 개의 호스트가 낭비되게 된다.
이런 비효율성을 해결하기 위해 네트워크 장치들의 수에 따라 효율적으로 사용할 수 있는 서브넷(subnet)이 등장하게 되었다.
서브넷은 IP 주소에서 네트워크 영역을 부분적으로 나눈 부분 네트워크를 뜻한다.
이러한 서브넷을 만들 때 사용되는 것이 서브넷 마스크이다.
즉, 서브넷 마스크는 IP 주소 체계의 Network ID와 Host ID를 분리하는 역할을 한다.
예시로, C 클래스는 기본적으로 앞의 24비트는 Network ID, 뒤의 8비트는 Host ID를 나타낸다.
이때, 서브넷 마스크를 이용할 경우, 원본 네트워크를 여러 개의 네트워크로 분리할 수 있다.
-> 이러한 과정을 서브넷팅이라고 한다.
기본 서브넷 마스크(Default Subnet Mask)에 대해 먼저 알아보자.
각 클래스마다 기본 서브넷 마스크는 위 표와 동일하다. (D, E클래스는 사용X)
이 기본 서브넷 마스크를 이용하면 IP 주소의 Network ID와 Host ID를 구분할 수 있다.
-> IP 주소에 서브넷 마스크를 AND 연산하면 Network ID가 된다.
예를 들어 C클래스인 192.168.32.0 이라는 IP 주소가 있다.
C클래스의 기본 서브넷 마스크와 AND 연산 시, 192.168.32.0 이 나오고 이것이 Network ID이다.
-> 이때 서브넷 마스크의 Network ID는 모두 1, Host ID는 모두 0이어야 된다.
예시의 IP 주소를 보면 오른쪽에 /24 부분이 있는데, 이것은 서브넷 마스크의 bit 수(왼쪽에서부터 1의 개수)를 나타낸다.
그렇다면, 애초에 IP 클래스들은 Network ID와 Host ID를 나타내는 부분이 나뉘어져 있는데, 왜 서브넷 마스크가 필요한가?
-> 서브넷팅을 하여 효율적인 네트워크 사용을 위함이다.
서브넷팅은 IP 주소 낭비를 방지하기 위해 원본 네트워크를 여러개의 서브넷으로 분리하는 과정을 뜻한다.
즉, 서브넷 마스크의 bit 수를 증가시키는 것이라고 생각하면 편하다.
서브넷 마스크의 bit 수를 1씩 증가시키면 할당할 수 있는 네트워크가 2배수로 증가하고, 호스트 수는 2배수로 감소한다.
-2를 하는 이유는 첫 번째 주소는 Network Address로 쓰이고, 마지막 주소는 Broadcast로 쓰이기 때문이다.
위 그림을 보면 네트워크 수가 늘어나는 것을 이해하기 쉽다.
정리하면