서브네팅이란? (Subnetting)
네트워크 관리자가 네트워크 성능을 향상시키기 위해, 자원을 효율적으로 분배하는 것. 여기서 자원을 효율적으로 분배한다는 것은 네트워크 영역과 호스트 영역을 분할 하는 것.
네트워크적인 측면에서 말하자면, 너무 큰 브로드캐스트 도메인은 네트워크 환경에서 패킷전송을 느리게하고 성능저하를 발생시킨다. 따라서 네트워크를 쪼개서 통신 성능을 보장하는 것이다. 또한 IP는 32자리 2진수로 표현할 수 있는데 이 말은 결국 최대 2의 32승만큼의 표현만 가능하다는 뜻이다. 즉, 자원의 한계가 존재한다는 뜻이고 결국 제한적인 자원으로 인해 주소에 낭비 없이 아껴써야 합니다.
즉, 자원의 한계가 존재한다는 뜻이고 결국 제한적인 자원으로 인해 주소에 낭비 없이 아껴써야 해서 등장하는 것이 서브넷마스크다. 서브넷 마스크는 필요한 네트워크 주소만 호스트 IP로 할당 할 수 있게 만들어 네트워크 낭비를 방지합니다. 이를 전문용어로 서브네팅이라 하며 그 반대는 슈퍼네팅이라고 합니다.
IP의 특징
하나의 IP는 네트워크 부분 + 호스트 부분으로 구성. 하나의 네트워크 즉 하나의 브로드캐스트 도메인에 있는 IP끼리 통신하기 위해선 네크워크 영역이 같아야하며, 호스트 IP는 달라야 한다. 호스트 IP가 다르지 않다면 IP 충돌이 나겠죠? 당연히 통신하기 위해선 네트워크 영역이 같아야 한다.
(네트워크 영역이 달라도 라우터나 게이트웨이와 같은 통신장비를 통해 통신 가능)
다만 라우터와 네트워크장비 없이 통신할 수 있는 영역을 우리는 브로드캐스트 도메인이라 함. 하나의 네트워크 영역 안에선 네트워크 영역은 같고, 호스트 IP는 자신의 노드를 식별할 수 있도록 다른 호스트 IP와 달라야 함. 호스트 IP는 중복될 수 없는 유일무이한 것이다.
예를 들어 192.168.0.3 과 192.168.0.4 를 보면 192.168.0 은 네트워크 영역이고 3과 4는 호스트 IP다.
=> 192.168.0 이라는 네트워크 영역에서 서로 통신할 수 있는 3과 4가 존재한다는 뜻
서브넷마스크 (Subnet Mask)
서브네팅을 하기 위해선 서브넷마스크가 필요하다.
어느 한 네트워크에서 1~100까지 IP를 할당받을 수 있고 우리가 필요한 IP가 20개정도라고 가정할 때, 굳이 1~100까지 IP를 줄 필요가 없고 최소 1~20까지만 IP를 주면 된다. 그럼 나머지 21~100은 사용자가 신경쓰지 않게 끔, 서브넷마스크로 가려버린다라고 이해하면 될 것이다.
서브넷 마스크 표시 방법
서브넷마스크는 기본적으로 1과 0으로 구성되어 있다. IP는 32자리 2진수로 표현할 수 있다고 했는데, 서브넷마스크 또한, IP와 크기만큼 32자리 2진수로 표현한다.
즉, 서브넷마스크는 1과 0으로 이뤄져있고, 1이 연속으로 나와야 한다.
ex) 11101(X) 11001(X) 1111000(O)
IP주소에서 만약 192.168.0.1/24 라고 하면 이는 C클래스이고 기본 디폴트 마스크는 255.255.255.0다. 디폴트 마스크도 서브넷마스크다. 255.255.255.0 은 우리가 알기 쉽게 10진수로 표현한 것일 뿐 2진수로 바꾸면....
결국 1111 1111 . 1111 1111 . 1111 1111 . 0000 0000 다. 여기서 연속으로 1이 24개가 있는 것을 알 수 있다. 즉 IP 뒤에 /24 라는 표현이 1이 24개가 있다는 뜻이다
1은 네트워크 영역으로 사용하겠다는 뜻이고 0은 호스트 IP로 사용하겠다는 뜻이다. 즉 사용자에게 0이 표현된 부분만 호스트 IP를 할당할 수 있게 만든 것이다.
기본 서브넷 마스크, 서브넷 네트워크, 논리 AND 계산
EX) 210.100.100.1 이라는 IP주소가 있다. 이 주소는 C클래스며 C클래스를 사용하고 있다는 뜻은 결국 서브넷마스크를 사용한다는 말과 같다.
즉, C클래스를 그대로 사용한다는 것은 C클래스 네트워크를 쪼개지 않고 그대로 하나의 네트워크에 할당할 수 있는 2^8-2개의 호스트 IP를 사용하겠다는 뜻이고 255.255.255.0 이 기본 서브넷 마스크가 된다.
또한, 192.0.0 ~ 223.255.255 까지의 네트워크가 곧 서브넷 네트워크가 된다.
기본 서브넷 마스크: 별개의 서브넷마스크를 생성하지 않아도 기본적으로 적용되어 있는 것
서브넷 네트워크: 기본 서브넷 마스크로 쪼개진 네트워크 주소
따라서 IP 210.100.100.1의 기본서브넷마스크 : 255.255.255.0 서브넷네트워크 : 210.100.100.0
B클래스의 기본서브넷마스크: 255.255.0.0
A클래스의 기본서브넷마스크: 255.0.0.0
ex) IP 210.100.100.1
1101 0010. 0110 0100. 0110 0100. 0000 0001 = 210.100.100.1 (IP주소)
1111 1111. 1111 1111. 1111 1111. 0000 0000 = 255.255.255.0 (C클래스 기본서브넷마스크)
1101 0010. 0110 0100. 0110 0100. 0000 0000 = 210.100.100.0 (서브넷네트워크)
또한, IP주소와 서브넷마스크를 논리 AND 연산하면 서브넷네트워크를 구할 수 있다.
논리 AND 연산은 1 AND 1 = 1, 1 AND 0 = 0, 0 AND 1 = 0, 0 AND 0 = 0
ex) IP 150.150.100.1
1001 0110. 1001 0110. 0110 0100. 0000 0001 = 150.150.100.1 (IP주소)
1111 1111. 1111 1111. 1111 1111. 0000 0000 = 255.255.255.0 (C클래스 기본서브넷마스크)
1001 0110. 1001 0110. 0110 0100. 0000 0000 = 150.150.100.0 (서브넷네트워크)
150.150.100.1 은 분명 B클래스인데, 서브넷 마스크가 C클래스다. 150.150.100.1의 기본서브넷마스크인 255.255.0.0을 사용하지 않고4
C클래스 255.255.255.0 을 사용한다는 것은 B클래스 주소를 마치 C클래스 주소처럼 사용하겠다는 뜻이다.
다시말해 B클래스에 의해서 150.150 까지가 네트워크 영역이고 나머지 3,4번째 옥태드가 호스트 영역인데, C클래스 기본 서브넷마스크인 255.255.255.0을 씌우면서 150.150.100까지 네트워크영역이 되고 4번째 옥태드만 호스트 IP를 배정할 수 있게 만든 것이다.
즉 네트워크 영역을 늘리고 호스트 영역을 줄이겠다는 뜻을 내포하고 있다는 것이다. 이렇게 하나의 주소에 서브넷 마스크를 씌워서 자신에게 맞는 네트워크를 만드는 것을 서브네팅이라고 한다.
(참고로 서브넷 마스크로 나뉘어진 서브넷 네트워크 간 통신은 라우터를 통해서 통신이 되어야 한다. 다른 말로 서브넷 네트워크는 하나의 독립적인 네트워크다.)
네트워크 영역, 호스트 영역 범위
201.222.5.0 IP를 255.255.255.248 서브넷마스크(기본서브넷마스크가 아닌 사용자가 만든 서브넷마스크)에 씌워보자
11001001 11011110 00000101 00000000 = 201.222.5.0 (IP 주소)
11111111 11111111 11111111 11111000 = 255.255.255.248 (서브넷마스크)
11111111 11111111 11111111 (기본 C클래스가 가질 수 있는 네트워크 영역)
11111 (사용자 지정한 네트워크영역)
000 (사용자가 지정한 호스트영역)
파란색 부분이 바로 서브넷 네트워크가 가질 수 있는 범위다. 즉 00000 ~ 11111 (2^5) 까지 계속 바꿔 넣으면 32개의 서브넷 네트워크로 쪼갤 수 있다. 그럼 각 서브넷 마스크가 가질 수 있는 호스트 IP 갯수는 몇개일까요? 초록색 부분이다. 000 ~ 111 (2^3-2) 까지 계쏙 바꿔 넣으면 8개를 가질 수 있습니다. 하지만 네트워크 주소와 브로드캐스트 주소를 써야하기 때문에 -2 를 해줍니다. 이건 지난시간에 배웠습니다. ㅎㅎ 결국 호스트 IP 갯수는 6개다.
서브넷 마스크는 하나의 IP에서 사용자의 입맛에 맞게 네트워크 영역과 호스트 영역을 나눠주는 역할을 한다. 기본 서브넷 네트워크도 물론 네트워크 영역과 호스트 영역을 나눠주기 때문에 서브넷 마스크라고도 한다.
하지만 진정한 의미에 서브넷마스크는 A클래스, B클래스, C클래스의 기본 서브넷마스크에서 가질 수 있는 네트워크영역과 호스트영역을 더 쪼개서 더 효율적으로 서브네팅하는 것이다. 그렇기 때문에 위에처럼 C클래스(3옥테드까지만 네트워크로 사용함) 이상으로 4옥테드 영역에 5자리 2진수를 네트워크 영역으로 확대하고 호스트 영역을 3자리 2진수를 할당함으로써 기본 서브넷 마스크로 커버할 수 없었던 서브 네팅을 구현할 수 있다.
참고:
https://limkydev.tistory.com/166
'CS' 카테고리의 다른 글
WIFI MESH (0) | 2021.08.04 |
---|---|
WIFI 보안 방식 (0) | 2021.08.04 |
IP 주소 & IP 주소 클래스 (0) | 2021.08.04 |
LINUX 파일 시스템 (0) | 2021.07.28 |
쿠키, 세션 개념 및 차이점 (0) | 2021.07.28 |