서브넷팅은 대규모 네트워크를 더 작고 관리하기 쉬운 서브넷으로 나누는 기술이다.
이는 대규모 조직에서 한정된 IP 주소를 효율적으로 관리하고
네트워크의 여러 부분을 분할하여 보안을 개선하고
세그먼트간의 불필요한 데이터 전송을 최소화하여 흐름을 제어한다.
IP 주소는 MAC 주소와 같이 장치를 식별하는 데 사용되며
고정되어있는 실제 주소인 MAC 주소와 다르게 IP 주소는 동적이며, 가상의 주소이다.
우리가 자주보는 IP주소 형태인 (ex. 192.168.1.20) 처럼 각각의 숫자는 이진수로 나타내며, 그렇기에 표현할 수 있는 가장 큰 IP 주소는 255.255.255.255 이다.
IPv4의 주소형태를 살펴보면, 총 32비트로 구성되어있고
3개의 옥탯으로 각각 8비트씩 나누어진 형태이다.
이진수로 나타낼 경우 다음과 같은 형태이다.
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
여기서 1로 표현된 부분을 더한다고 생각하면 된다.
즉 위의 10000001을 나타내면 128 + 1 =129 로 표현할 수 있고
모든 비트가 1일때 모두 더하면 255가 나오는걸 확인할 수 있다.
IP 주소 중 얼마나 많은 부분이 네트워크에 속하고,
얼마나 많은 부분이 호스트에 예약되는지 정의하는 데 사용한다.
| BITS USED FOR MASK | DEFAULT NETMASK | SUBNET BINARY |
|---|---|---|
| /8 | 255.0.0.0 | 11111111.00000000.00000000.00000000 |
| /16 | 255.255.0.0 | 11111111.11111111.00000000.00000000 |
| /24 | 255.255.255.0 | 11111111.11111111.11111111.00000000 |
위의 이진수로 표현한 서브넷 마스크를 IP 주소와 논리곱 (AND 연산) 을 하여
나온 결과가 네트워크에 속하고, 그 나머지 부분이 호스트 주소에 속한다.
💡 서브넷 마스크에서 1로 표현된 부분까지 네트워크 주소라고 생각하면 된다.
IP 주소에는 5개의 클래스가 있으며, 서브넷팅에 사용되는 클래스는 총 3개이다.
| Class | Netmask | 1st Octet | 2nd Octet | 3rd Octet | 4th Octet |
|---|---|---|---|---|---|
| Class A | 127.0.0.0 | 01111110 | 00000000 | 00000000 | 00000000 |
| Class B | 191.255.0.0 | 10111111 | 11111111 | 00000000 | 00000000 |
| Class C | 223.255.255.0 | 11011111 | 11111111 | 11111111 | 00000000 |
위와 같이 3개의 클래스가 정의되며
각각의 클래스를 나누는 기준은 네트워크 주소의 첫 비트가 0, 10, 110 인 수다.
이 수들은 네트워크 주소의 클래스를 나타내기 위해 고정된 값이며,
그에 따라 실제 네트워크 주소를 나타내는 네트워크 비트는
A 클래스가 7개, B 클래스는 14개, C 클래스는 21개이다.
클래스 A, B, C IP 주소의 범위는 다음과 같다
서브넷팅은 큰 네트워크를 작은 네트워크로 나눠서 관리하는 것을 말한다.
즉, 내가 현재 사용하고있는 집단에서의 네트워크 (큰 네트워크) 를
집단내에서 그룹이나 부서별 (작은 네트워크) 로 나누고 싶을때
호스트 주소의 개수 (장치 수) 를 줄이고 네트워크 주소로 사용 하는 것이다.
기존의 네트워크 주소에서 서브넷팅을 하려면 필요한 네트워크 개수만큼
호스트 주소의 비트를 빌린다.
2빌린 비트 수 만큼의 서브넷이 생성되며
2호스트 주소 비트 수 - 네트워크 주소로 빌려간 비트 수 - 2 만큼의 호스트 주소를 사용할 수 있다
위에서 호스트 주소를 구할때 2를 뺀 이유는 한 네트워크 내에서 가장 첫 주소는
네트워크의 식별에 사용되는 네트워크 주소이고 가장 끝 주소는 네트워크 내
모든 장치로 데이터 전송에 사용되는 브로드캐스트 주소이기 때문에
실제 사용가능한 호스트의 수는 전체 호스트 주소의 개수 - 2 개 이다.
주어진 IP : 43.17.255.71/27
가장 먼저 살펴볼 것은 이 IP 주소가 어느 클래스에 속해 있는지를 파악하는 것이다.
각 클래스의 주소 범위를 살펴보면 우리는 이 IP가 A클래스인 것을 바로 알 수 있다.
기본적으로 우리가 아는 A 클래스는 가장 앞의 8비트를 네트워크 주소로 사용하는데
여기선 /27을 통해 27비트가 네트워크 비트에 할당되어있는 것 또한 바로 알 수 있다.
그렇다면 3번째 옥텟까지는 고정된 네트워크 주소로 사용되고
마지막 4번째 옥텟에서 호스트 비트에서 3비트를 빌려 서브넷을 구성하고 있다.
이를 통해 23 = 8개의 서브넷이 있음을 확인할 수 있다.
또한 각각의 서브넷에는 25 = 32개의 호스트가 있음을 알 수 있다.
즉, 다음과 같다.
| Subnet | Last Octet | Block size | IP Address | |
|---|---|---|---|---|
| 1 | 0 | + | 32 | 43.17.255.0 |
| 2 | 32 | + | 32 | 43.17.255.32 |
| 3 | 64 | + | 32 | 43.17.255.64 |
| 4 | 96 | + | 32 | 43.17.255.96 |
| 5 | 128 | + | 32 | 43.17.255.128 |
| 6 | 160 | + | 32 | 43.17.255.160 |
| 7 | 192 | + | 32 | 43.17.255.192 |
| 8 | 224 | + | 32 | 43.17.255.224 |
그렇다면 43.17.255.71/27 의 가장 마지막 옥텟만 확인해보면
71이 64 ~ 96 범위에 해당함을 알 수 있다.
따라서 43.17.255.71/27의 서브넷 네트워크의 주소는 43.17.255.64 이다.
IP 주소와 네트워크 설계는 단순한 숫자들이지만, 이를 어떻게 구성하고 나누는지에
따라 무한한 방법이 존재하고, 효율성과 확장성을 고려한 설계가 매우 중요해진다.
필요한 서브넷의 수 (부서의 수) 를 고려하고, 각 서브넷에 필요한
호스트 수 (컴퓨터, 장비 등의 수) 를 고려해야 하며 기존의 클래스에 기반하여
서브넷의 크기만큼 서브넷 마스크를 결정한다.
각 서브넷에서 네트워크 주소와 브로드캐스트 주소는 제외함을 확인해야 하고
IP 주소의 낭비를 최소화하기 위해 서브넷의 크기를 잘 계산해야 하며
향후 확장성을 위해 서브넷의 크기를 너무 작게 설정하지 않도록 한다.
추가로 부사별로 서브넷을 분리하여 네트워크 공격이나 유출이 다른 서브넷에
영향을 미치지 않도록 하여 보안을 강화할 수 있다.
결론적으론 상황에 맞는 최적의 방법을 선택하며 효율적인 설계가 가장 중요하다.
단순히 주소를 할당하는 작업이 아닌 전체적인 시스템과 관리를 고려하는 복잡한 과정이다.