서브넷 마스크란
서브넷 마스크는 IP 주소 체계의 Network ID와 Host ID를 서브넷 마스크를 통해 변경하여서 '네트워크 영역을 분리 또는 합체'시키는 개념입니다. 그리고 네트워크를 분리하는걸 서브넷팅(Subnetting)이라고 하며, 합치는걸 슈퍼넷팅(Supernetting)이라고 합니다. 서브넷팅은 서브넷 마스크를 이용하여 Host ID를 Network ID로 변환하게 되고, 슈퍼넷팅은 서브넷 마스크를 이용하여 Network ID를 Host ID로 변환하게 되어서 가능해집니다. 이 글에서는 서브넷팅에 대해서만 언급하도록 하겠습니다.
< Subnetting > |
서브넷 마스크의 형태는 IP주소와 똑같이 32bit의 2진수로 되어 있으며, 8bit(1byte)마다 '.(dot)'으로 구분하고 있습니다. 즉, IP와 똑같은 OOO.OOO.OOO.OOO의 모습을 가지고 있습니다. 그러나 형태가 똑같다고 하여서 역할을 혼동하시면 안 됩니다. 형태가 똑같은 이유는 IP주소와 서브넷 마스크를 AND 연산하기 위해서입니다.
그럼 IP주소의 클래스별 기본 서브넷 마스크(Default Subnet Mask)를 보도록 하겠습니다.
Octet 1 | Octet 2 | Octet 3 | Octet 4 | |
A Class IP | 116 | 81 | 97 | 8 |
Network ID | Host ID | Host ID | Host ID | |
Subnet Mask ( /8 ) | 255 | 0 | 0 | 0 |
Octet 1 | Octet 2 | Octet 3 | Octet 4 | |
B Class IP | 171 | 47 | 154 | 1 |
Network ID | Network ID | Host ID | Host ID | |
Subnet Mask ( /16 ) | 255 | 255 | 0 | 0 |
Octet 1 | Octet 2 | Octet 3 | Octet 4 | |
C Class IP | 214 | 175 | 213 | 51 |
Network ID | Network ID | Network ID | Host ID | |
Subnet Mask ( /24 ) | 255 | 255 | 255 | 0 |
각 클래스마다 Network ID로 사용되는 옥탯에 255가 있다는 점을 확인하실 수 있습니다. 이 때문에 IP주소의 클래스를 구분할 때 서브넷 마스크를 보시는 분들도 계시겠지만 잘못된 방식입니다. 서브넷이 등장한 이유가 IP의 부족현상을 해결하기 위함인데 먼저 탄생한 IP의 주소체계를 서브넷을 통해 구분하시면 안 됩니다. 특히 서브넷과 반대되는 개념인 분할 되어 있는 네트워크를 합치는 슈퍼넷을 이해하시기 어려워집니다.
또한 바로 아래 나오는 [서브넷팅의 이해]에 나오는 예시에서 A클래스를 서브넷 마스크 255.255.0.0을 이용하여 서브넷팅을 시키는 방법에 대해서도 이해하기 어려워집니다. IPv4 주소체계가 이렇게 복잡한 이유는 처음 IPv4를 연구할 때에는 지금처럼 인터넷 사용 기기가 많아질 거라고 예측하지 못하였기 때문입니다.
그리고 IP주소 뒤에 /24 같은 것들이 붙는 걸 보신 분들도 계실 겁니다. 이는 Prefix(접두어)로 서브넷 마스크의 bit 수를 의미합니다. 옥탯의 8bit가 모두 1일 경우 10진수로 255가 되기에 /24는 왼쪽부터 나열된 1bit의 수가 24개라는 뜻이 됩니다. 따라서 192.168.0.3/24는 IP주소가 192.168.0.3 이며, 서브넷 마스크가 255.255.255.0이라는 의미가 됩니다.
서브넷팅의 이해
만약 A 클래스 IP주소 1.1.1.1을 그대로 할당하게 되면, Network ID가 1.0.0.0이 되고 Host ID가 0.1.1.1이 됩니다. 이때 Host ID 범위는 0.0.0.0 ~ 0.255.255.255이 되므로 할당 가능한 호스트 수가 16,777,216개나 되어 매우 비효율적이게 됩니다.
참고로 어떻게 16,777,216이 나오는지 궁금하시면 256 * 256 * 256을 계산 하시면 되겠습니다. 여기서 왜 255가 아니라 256이 나오는지 궁금해하실 분들도 계실 것입니다. 이는 0부터 할당할 수 있기에 0이 포함되어 255까지 세었을 때 나오는 개수입니다.
이제 A 클래스가 얼마나 비효율적으로 사용되는지 확인하셨으니 서브넷팅을 통하여 더 많은 네트워크 영역에서 사용할 수 있도록 계산하도록 하겠습니다. 먼저 아래의 서브넷팅 된 A 클래스 IP주소를 보시겠습니다.
Octet 1 | Octet 2 | Octet 3 | Octet 4 | ||
IP Address | 0000 0001 (1) | 0000 0001 (1) | 0000 0001 (1) | 0000 0001 (1) | |
Subnet Mask | 1111 1111 (255) | 1111 1111 (255) | 0000 0000 (0) | 0000 0000 (0) | |
Network ID | 0000 0001 (1) | 0000 0001 (1) | 0000 0000 (0) | 0000 0000 (0) | 네트워크 - 256 |
Host ID | 0000 0000 (0) | 0000 0000 (0) | 0000 0001 (1) | 0000 0001 (1) | 호스트 – 65,534 |
앞선 예시와 동일하게 IP주소는 A 클래스 1.1.1.1을 할당하였으며, Subnet mask를 255.255.0.0으로 변경 하였습니다. 먼저 IP Address와 Subnet Mask를 AND 연산하게 되면 Network ID가 기존의 1.0.0.0이 아닌 1.1.0.0으로 확장된 모습을 확인하실 수 있습니다. 그럼 1.0.0.0 ~ 1.255.0.0의 범위를 가지게 되어서 256개의 네트워크에 할당할 수 있습니다. 그리고 Host ID는 Network ID의 범위가 변경됨에 따라 기존의 0.1.1.1이 아닌 0.0.1.1로 변경되었습니다. 그럼 0.0.0.0 ~ 0.0.255.255가 되기에 한 네트워크에 65,534개(256 * 256)의 호스트를 할당할 수 있습니다.
하지만 아직도 네트워크 하나에 할당 가능한 호스트 수가 65,534개나 되기에 트래픽을 처리하기가 힘듭니다. 그래서 일반적으로 사용되기 어렵겠지만, 기존의 IP를 그대로 사용하는 것보다는 훨씬 효율적으로 바뀌었습니다.
서브넷팅의 특징
2진수로 표현하였을 때 Network ID 부분은 1이 연속적으로 있어야 하며, Host ID 부분은 0이 연속적으로 있어야 합니다. 즉, 중간에 1이나 0이 섞이면서 나열될 수 없습니다. 이로 인해 서브넷 마스크는 Network ID를 확장하면서 1bit씩 확보하게 되면 네트워크 할당 가능 수가 2배수로 증가하지만 반대로 호스트 할당가능 수가 2배수로 줄어들게 됩니다. 예를 들어 11111111.11111111.1111111.00000000(255.255.255.0)에서 네 번째 옥탯에 1bit를 확보하면 11111111.11111111.11111111.10000000(255.255.255.128)이 됩니다.
서브넷팅을 통해 Network ID가 확장되므로 인해 할당할 수 있는 네트워크의 수가 늘어납니다. 하지만 네트워크가 분리되므로 인하여 서로가 통신하기 위해서는 라우터를 통하여서만 가능하게 됩니다. 물론 각 네트워크에 속해 있는 호스트들은 같은 영역에 존재하기에 라우터까지 거치지 않고도 통신할 수 있습니다.
특정 몇 군데의 호스트에서 너무 많은 트래픽을 발생시켜서 속도를 저하시키는 문제를 해결할 때 용이합니다. 이는 서브넷팅을 통하여 네트워크가 분리되기 때문에 브로드캐스트 도메인의 크기가 줄어들게 되므로 가능해집니다.
서브넷팅 계산 방법
서브넷팅을 계산하는 건 그리 어렵지 않습니다. Host ID를 Network ID로 변화하기 위해 한 Bit씩 가져올 때마다 네트워크 크기는 2배로 증가하고 호스트 수는 2로 나누어지게 됩니다. 예를 들어 194.139.10.123/25를 보여드리겠습니다. /25는 서브넷 마스크가 25bit라는 의미로 255.255.255.128이 됩니다. 그럼 호스트에 IP를 할당할 수 있는 범위가 [0~127], [128~255]가 되며, 네트워크는 [194.139.10.0], [194.139.10.128]이기에 2개로 나누어지게 됩니다. 결국 194.139.10.7/25가 속한 네트워크는 194.139.10.0/25 대역에 속하게 되며, 다른 서브넷팅 된 네트워크와는 라우터를 통하여서만 통신할 수 있습니다.
194.139.10.123/26으로 하나 더 해보겠습니다. /26은 서브넷 마스크가 26bit이기에 255.255.255.192가 됩니다. 따라서 호스트에 할당 가능한 IP의 범위는 [0~63], [64~127], [128~191], [192~255]로 가능하며, 네트워크는 [194.139.10.0], [194.139.10.64], [194.139.10.128], [194.139.10.192] 총 4개로 나누어지게 됩니다. 따라서 194.139.10.123이 속한 네트워크는 194.168.10.64/26에 속하게 되며, 서브넷팅 된 3개의 다른 네트워크와는 라우터를 통하여서만 통신할 수 있습니다.
이때 중요하게 보셔야 할 점이 있습니다. 각 네트워크를 구분할 때 각 범위의 가장 첫 번째 IP를 사용하고 있다는 것입니다. 이를 Network Address 라고 부르며, 사용할 수 없는 IP주소입니다. 또 가장 마지막 IP주소는 Broadcast address이기에 사용하실 수 없습니다. 따라서 각 네트워크의 IP 범위에서 가장 첫 번째 주소와 가장 마지막 주소 두 개는 호스트에 할당할 수 없습니다. 이는 기본 서브넷 마스크(Default Subnet Mask)를 사용하여 서브넷팅을 시키지 않은 모든 네트워크에서도 동일하게 적용되니 주의하여 주시면 되겠습니다.
194.139.10.0/26 | 194.139.10.0/26 | Network Address |
194.139.10.1 ~ 194.139.10.62 | Host IP | |
194. 139.10.63 | Broadcast Address | |
194.139.10.64/26 | 194.139.10.64/26 | Network Address |
194.139.10.65 ~ 194.139.10.126 | Host IP | |
194. 139.10.127 | Broadcast Address | |
194.139.10.128/26 | 194.139.10.128/26 | Network Address |
194.139.10.129 ~ 194.139.10.190 | Host IP | |
194. 139.10.191 | Broadcast Address | |
194.139.10.192/26 | 194.139.10.192/26 | Network Address |
194.139.10.193 ~ 194.139.10.254 | Host IP | |
194. 139.10.255 | Broadcast Address |
<출처 - http://korean-daeddo.blogspot.kr/2015/12/blog-post_14.html>