서브넷 마스크

 


1. 개요
2. 상세
3. 계산 방법
4. 활용


1. 개요


21세기에 가까워질수록 IPv4 주소의 고갈이 현실화되였고 각국의 NIC에서는 이를 최대한 늦추기 위하여 각 라우터가 브로드캐스팅하는 로컬 네트워크 영역에 공인 IP 대역을 호스트가 필요한 만큼만 할당하려는 노력을 하였다.
이러한 NIC 기관의 요구에 맞춰서 IETF에서는 로컬 네트워크 내부에서 접속한 호스트의 IP 대역을 외부 네트워크와 명확하게 구분할 수 있는 수단을 표준화하였고 이것이 '''서브넷 마스크'''(Subnet Mask)다.

2. 상세


IPv4 주소는 4개의 바이너리 8자리수로 이루어져 총 32비트로 구성되어 있다. 예를 들어 192.168.0.1은 1100 0000 . 1010 1000 . 0000 0000 . 0000 0001 로 표현된다.
이를 제대로 이해하기 위해서는 우선 '''서브넷'''의 개념을 알 필요가 있다.
IP 주소는 네트워크 부분과 호스트 부분으로 나누어진다. 하나의 로컬 네트워크란 하나의 라우터를 거쳐가는 여러개의 호스트들이 연결된 브로드캐스트 영역이다. 즉, 어떤 네트워크에서 한 노드가 브로드캐스트를 했을 때 그 네트워크의 모든 노드가 신호를 받았다면 그 네트워크는 하나의 네트워크라고 볼 수 있다. 호스트란 그냥 각각의 노드(PC, 스마트폰, 태블릿 등)들이다.
다시 말해 하나의 로컬 네트워크에서는 IP 주소의 네트워크 부분은 같아야 하고, 호스트 부분은 달라야 한다는 것이다.
이해를 돕기 위해 간단한 예시를 들자면, '''서울시 중랑구 면목동 Namu아파트 A동 건물의 301호'''에 있는 사람이 '''서울시 중랑구 면목동 Namu아파트 A동 건물의 505호'''에 있는 사람을 찾아가려고 한다면 '''현재 그 사람이 위치해 있는 건물을 나갈 필요가 없다.'''
이처럼 쓸 데 없이 같은 건물에 있는 사람을 찾기 위해 건물 밖을 나갔다 온다든가 하는 불필요한 짓 없이도 효율적인 네트워크 통신과, 브로드캐스팅을 위해 장치들을 일정한 규칙에 따라 하나의 그룹으로 묶고자 하였고, 이것이 서브넷의 기본 개념이다. 기본적으로 서브넷 내의 호스트는 같은 서브넷의 호스트 끼리만 통신이 가능하다. 그러나 건물 밖의 대상(=같은 서브넷에 속하지 않은 호스트)을 찾아가고자 한다면?
목적지가 같은 서울시 중랑구 면목동 Namu아파트라고 하더라도, A동이 아니라 바로 옆 건물 B동만 되어도 일단 A동 건물 출입구를 통해 먼저 밖으로 나가야 한다. 이때 이 건물 출입구가 바로 '''게이트웨이'''다. 즉, 게이트웨이가 없다는 것은 건물 출입구가 없어서 건물 밖을 나갈 수 없다는 말과 동일하다. 또한 대상이 중랑구 면목동의 다른 건물이든, 중랑구 망우동이든, 옆동네 광진구든, 아니면 부천시든, 심지어 해외로 가더라도 아무튼 제일 먼저 '''건물 출입구를 통해 그 건물을 나가야 한다는 점'''은 항상 같다. 즉, 만약 통신하고자 하는 대상 호스트가 현재 장치가 속한 네트워크의 서브넷의 범위를 벗어나는 경우에는 '''게이트웨이'''를 통해 해당 네트워크 밖으로 나간 후에, 여러 라우터를 거치며 대상 호스트가 속한 네트워크를 찾아내는 식으로 통신이 이루어진다.
서브넷 마스크는 이 '''서브넷'''을 구분하는 방법 중 하나이다. 위의 건물 예시에서의 서브넷 마스크는 '''아파트의 동 건물 한채'''라고 할 수 있다. 이 범위 밖에 있는 장치들은 모두 같은 건물이 아니다, 즉 로컬 네트워크가 아니라고 판단하는 것이다.
따라서 이 서브넷 마스크를 어떤 범위로 하냐에 따라 로컬 네트워크의 범위가 넓어지기도, 좁아질 수도 있다. 해당 아파트 전체가 같은 네트워크 일수도, 좁게는 같은 건물의 5층 라인만이 같은 네트워크 일 수도 있는 것이다.
IP 주소에서 192.168.0.1/24 혹은 192.168.0.1 서브넷 마스크:255.255.255.0과 같은 것을 본 적이 있을 것이다. 여기서 /24 와 255.255.255.0은 같은 것을 나타내는데, 255.255.255.0을 2진수로 쓰면 1111 1111.1111 1111.1111 1111.0000 0000이다. 여기서 앞에서부터 연속된 1의 개수만 나타낸 것이 /24이다. 슬래시로 표시되는 단위를 CIDR 표기법이라고도 한다.
기존에는 '''클래스'''라는 단위가 이 역할을 대신했으나, 클래스 단위가 8비트 단위로 커지는 터라 공인 아이피 대역을 기관에 할당하는 과정에서 할당량 조절에 실패하는 현상을 개선하고자 생긴 개념이다. 쉽게 말해 단체 급식에서 반찬을 배식할 때 '''무조건 한 번만 덜어줄 수 있다는 제한이 있다고 하자.''' 기존에는 '''큰 국자, 중간 국자, 작은 국자''' 세 개만 갖고 배식하다가 서브넷 마스크의 등장으로 '''집게로 각자 필요한 양만큼만''' 덜어줄 수 있게 개선된 것이다.

3. 계산 방법


서브넷 마스크를 계산할 때는 논리곱(논리 AND)을 사용한다.
예:
192.168.0.1/24
여기서 1을 논리곱하는 부분이 네트워크 부분, 0을 논리곱하는 부분이 호스트 부분이다.
1100 0000. 1010 1000. 0000 0000. 0000 0001 - IP 주소
1111 1111. 1111 1111. 1111 1111. 0000 0000 - 서브넷 마스크
1100 0000. 1010 1000. 0000 0000. 0000 0000 - 서브넷 네트워크
호스트 개수 : 네트워크 주소와 브로드캐스트 주소를 제외한 254개
네트워크 개수 : 1개

4. 활용


IPv4 주소가 이미 할당받은 대역을 제외하고는 고갈 상태이기 때문에 공인 IP 대역별 기본 서브넷 마스크를 쓸 수 없는 상황에 이르렀다. 이에 따라서 클래스 별 기본 서브넷 마스크를 쓰지 않고 서브넷 마스크를 커스텀으로 변경하여 네트워크 부분을 늘리고 호스트 부분을 줄이는 조정을 하는 것을 서브네팅(Subnetting)이라고 한다.
또한 서브네팅은 브로드캐스팅 영역을 쪼개는 결과를 기대할 수 있으므로 라우터의 브로드캐스팅 부담을 줄일 수 있다.[1]
사설 IP 대역을 사용하는 로컬 네트워크의 경우에는 서브네팅이 무의미하므로 라우터에서 기본값으로 설정한 서브넷 마스크를 쓰는 경우가 많다.

[1] 가정에서 사용되는 서버에는 주로 /24 크기의 대역들로 나뉘어 할당되며 일부는 /25, /26 단위로 쪼개져 할당되기도 한다.