서브넷 마스크(Subnet Mask)와 서브넷팅(Subnetting)??
서브넷팅(Subnetting)이란 ??
서브넷팅이란 IP주소 낭비를 방지하기 위해 네트워크를 분할하여 효율적으로 사용하는 개념입니다.
IPv4 주소(32bit)의 고갈이 현실화되며 이 문제를 해결하기 위해 서브넷팅이라는 개념이 등장했습니다.
서브넷팅에 대해 알아보기 전에 우선 ip에 대해 간략하게 알아보겠습니다.127.0.0.1
흔히 볼 수 있는 이런 형태의 ip가 IPv4 형식입니다.
이를 2진수로 나타내면 01111111.00000000.00000000.00000001
과 같습니다.
ip는 네트워크 영역, 호스트 영역 두 가지로 나누어집니다.
- 네트워크 영역: 내부적으로 자유롭게 통신이 가능한 영역(호스트들을 모은 네트워크를 지칭하는 주소)
- 호스트 영역: 한 네트워크 내에서 서로를 구분하는 주소, 호스트를 개별적으로 관리
그럼 이 IP에서 네트워크 주소와 호스트 주소를 어떻게 구분할까요?
이를 위해 IP에는 클래스라는 개념이 존재합니다.
IP 주소의 클래스
IP 주소는 크게 5개(A, B, C, D, E)의 클래스로 나누어집니다.
Class A
0.0.0.0 ~ 127.255.255.255 (0xxx xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx)
- 네트워크 주소는
1.0.0.0 ~ 126.0.0.0
으로 규정되어 있음 (127은 규정상 제외) - 호스트의 개수는 2^24 - 2
Class B
128.0.0.0 ~ 191.255.255.255 (10xx xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx)
- 네트워크 개수는 2^14 (
10xx xxxx. xxxx xxxx
x의 경우의 수) - 호스트의 개수는 2^16 - 2
Class C
0.0.0.0 ~ 127.255.255.255 (110x xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx)
- 네트워크 개수는 2^21 (
10xx xxxx. xxxx xxxx. xxxx xxxx
x의 경우의 수) - 호스트의 개수는 2^8 - 2
호스트 영역에서 네트워크 주소
와 브로드 캐스트 주소
는 사용할 수 없어 호스트의 개수에 -2 를 하게 됩니다.
- 네트워크 주소: 일반적으로 하나의 네트워크를 통칭하기 위해 사용하는 주소, 해당 네트워크의 첫 번째 IP주소
- 브로드캐스트 주소: 네트워크에 있는 모든 호스트에게 한 번에 데이터를 전송하는 데 사용되는 주소, 해당 네트워크의 마지막 IP주소
서브넷팅의 장점
네트워크를 효율적으로 나누어 사용하므로 IP주소의 자원 낭비를 최소화할 수 있습니다.
네트워크 영역은 클래스 단위로 나누게 되는데 이때 클래스 단위로 부여하게 되면 실제 사용하는 ip는 몇 개 안되어 낭비되는 ip가 많아져 굉장히 비효율적입니다.
예를 들어 A 클래스의 ip를 부여받았다고 가정해보겠습니다.
A 클래스에는 16,777,214개나 되는 호스트에 ip를 할당할 수 있습니다.
만약 자그마한 회사나 일반적인 사용자에게 해당 ip를 부여하게 된다면 Network Address, Broadcase Address
를 포함하더라도 저 수많은 ip를 다 사용하진 않을 것입니다.
그렇게 되면 남는 ip들은 모두 낭비가 됩니다. 또한, A 클래스에 브로드캐스팅이 있다고 해보면 최대 16,777,214개의 호스트에 모든 데이터가 전송됩니다.
이런 경우 굉장한 부하가 있어 성능저하 및 장애로 이어질 수 있습니다.
결국 서브넷은 IP주소에서 네트워크 영역을 부분적으로 나눈 부분을 뜻합니다.
이 서브넷을 만들 때 사용되는 것이 서브넷 마스크입니다.
서브넷 마스크(subnet mask)란 ?
서브넷마스크(subnet master)는 IP 주소에서 네트워크 주소와 호스트 주소를 구분하기 위해 사용됩니다.
32비트의 2진수로 표현되며 네트워크 주소인 '1'과 호스트 주소인 '0'으로 이루어져 있습니다.
그리고 서브넷마스크는 연속된 1과 연속된 0으로 이루어져야 합니다.ex) 11110000, 11000000, 11111110 ...
다음은 각 클래스들의 기본 서브넷 마스크입니다.
서브넷마스크 계산은 IP와 서브넷마스크의 2진수 논리AND 연산으로 이루어집니다.
다음은 제 노트북의 ip 설정입니다. 해당 ip와 서브넷마스크를 예시로 네트워크 주소와 호스트 주소를 구해보겠습니다.
해당 ip와 서브넷마스크를 10진수, 2진수로 나타내면 다음과 같습니다.
10진수 | 2진수 | |
---|---|---|
ip | 192.168.0.20 | 11000000. 10101000. 11111111. 00010100 |
subnet | 255.255.255.0 | 11111111. 11111111. 11111111. 00000000 |
여기서 ip와 서브넷마스크의 2진수를 and 연산으로 계산하면 다음과 같은 결과가 나옵니다.
11000000. 10101000. 11111111. 00000000 = 192.168.0.0
ip와 서브넷마스크의 연속된 1까지를 and연산으로 계산한 결과가 네트워크 주소가 되고 나머지 부분이 호스트 주소가 됩니다.
즉 해당 ip의 네트워크 주소는 192.168.0.0
가 되고 호스트 주소는 0.0.0.20
이 되는 것입니다.
여기서 네트워크 주소는 서브넷 네트워크라고도 부릅니다.
그럼 ip: 152.134.25.10
, subnet: 255.255.0.0
의 네트워크 주소와 호스트 주소를 계산하면 어떻게 될까요??
10진수 | 2진수 | |
---|---|---|
ip | 152.134.25.10 | 10011000. 10000110. 00011001. 00001010 |
subnet | 255.255.0.0 | 11111111. 11111111. 00000000. 00000000 |
동일하게 두 2진수를 and 연산으로 계산해보겠습니다.
10011000. 10000110. 00000000. 00000000 = 152.134.0.0
해당 ip의 네트워크 주소는 152.134.0.0
, 호스트 주소는 0.0.25.10
이 됩니다.
서브넷마스크를 이용해 네트워크 영역과 호스트 영역의 범위 구하기
ip주소를 보다 보면 192.168.10.0/24, 192.168.10.0/25, 192.168.10.0/26 ...
과 같이 /
뒤에 숫자가 붙어있는 것을 보신 기억이 있을 겁니다.
뒤의 숫자가 바로 앞서 말한 서브넷마스크입니다.
24라면 11111111. 11111111. 11111111. 00000000
, 25는 11111111. 11111111. 11111111. 10000000
과 같이 1의 개수를 뜻합니다.
1과 0은 반드시 연속 되어야 합니다. 11100111. 00111100...
이런식으로는 나타낼 수 없습니다.
이 숫자를 이용해 네트워크 주소와 호스트 주소의 범위를 구하는 방법을 알아보겠습니다.192.168.10.0/24
의 네트워크 영역과 호스트 영역의 범위는 어떻게 될까요??
ip는 192.168.10.0, 서브넷마스크는 24이기에 표로 나타내면 다음과 같습니다.
10진수 | 2진수 | |
---|---|---|
ip | 192.168.10.0 | 11000000. 10101000. 00001010. 00000000 |
subnet | 255.255.255.0 | 11111111. 11111111. 11111111. 00000000 |
아까와 같이 AND 연산을 이용해보겠습니다.
11000000. 10101000. 00001010. 00000000 (ip)
11111111. 11111111. 11111111. 00000000 (subnet)
서브넷의 노란색은 네트워크 영역이고 하늘색은 호스트 영역입니다.
네트워크 영역까지는 and 연산을 하고 나머지 호스트 영역에 대해서는 해당 네트워크가 사용가능한 호스트 주소 범위입니다.
즉, 192.168.10.0/24
의 사용가능한 네트워크 영역은 192.168.10.0
이 되고 호스트 영역은 00000000 (subnet) 이 됩니다.
즉, 2^8 - 2 = 254
의 범위를 가지게 되어 192.168.10.1 - 192.168.10.254
가 호스트의 범위가 되고 개수는 2^8 - 2 = 254
가 됩니다.
2를 빼는 이유는 위에서 네트워크 주소와 브로드캐스트 주소는 외한다고 말씀드렸습니다.
네트워크 주소는 해당 ip의 첫번째 주소, 브로드캐스트 주소는 마지막 주소이니
여기서는 네트워크 주소: 192.168.10.0
, 브로드캐스트 주소: 192.168.10.255
가 됩니다.
그럼 다른 값으로도 다시 계산해보겠습니다.150.115.120.13/27
의 네트워크 영역과 호스트 주소의 범위, 개수를 알아보겠습니다.
10진수 | 2진수 | |
---|---|---|
ip | 150.115.120.13 | 10010110. 01110011. 01111000. 00001101 |
subnet | 255.255.255.224 | 11111111. 11111111. 11111111. 11100000 |
10010110. 01110011. 01111000. 00001101 (ip)
11111111. 11111111. 11111111. 11100000 (subnet)
위 값을 계산하면 네트워크 영역은 10010110. 01110011. 01111000. 00000000 (150.115.120.0)
가 됩니다.
그리고 호스트 영역은 00000 입니다. 저 부분을 계산하면 호스트의 범위는 2^5 - 2 = 30
이므로 150.115.120.1 - 150.115.120.30
이고 개수는 30개가 됩니다.
네트워크 주소는 150.115.120.0
, 브로드캐스트 주소는 150.115.120.31
이 됩니다.
reference
https://limkydev.tistory.com/166
https://nordvpn.com/ko/blog/what-is-subnet-mask/
'Network' 카테고리의 다른 글
[Network] Telnet 설치 및 사용법 (MAC 기준) (0) | 2024.06.06 |
---|---|
REST API, REST, RESTful API 란 ? (0) | 2024.02.10 |