Breaking News
recent

서브넷 마스크와 서브넷팅 계산법


 우리가 흔히 사용하는 IP 주소 체계인 IPv4는 이론적으로 42억 개의 네트워크 장치에 IP Address를 부여할 수 있습니다. 언뜻 보면 많아 보이지만 컴퓨터뿐 아니라 스마트폰까지 대중화된 시대에 42억 개는 그리 많은 수가 아닙니다.

 그런데 문제는 42억 개를 각 네트워크 영역마다 아무렇게 둘 수 없다는 점입니다. 극단적인 예시로 A 클래스를 보시면 이해하기 쉽습니다. A 클래스는 하나의 네트워크에 16,777,214개나 되는 호스트에 IP를 할당할 수 있기에 엄청나게 큰 규모의 국제적인 기업 또는 단체가 아니라면 매우 비효율적입니다. 개인적으로 1,600만 개의 네트워크 장치를 사용하는 기관이 있을지도 의문입니다. 어쨌든 만약 네트워크 장치가 4개가 있는 가정집에 A 클래스를 그대로 부여한다면 Network Address와 Broadcast Address까지 포함하여 6개가 사용되고 남은 16,777,208개는 아무도 사용하지 않고 그대로 낭비되게 됩니다. 이러한 문제를 해결하기 위하여 IP를 사용하는 네트워크 장치들의 수에 따라 효율적으로 사용할 수 있도록하는 서브넷(Subnet)이 등장하게 되었습니다.

서브넷 마스크보다 먼저 알아야 하는 참조문서 - IP 주소체계와 클래스 구별법(IPv4)



서브넷 마스크란

 서브넷 마스크는 IP 주소 체계의 Network ID와 Host ID를 서브넷 마스크를 통해 변경하여서 '네트워크 영역을 분리 또는 합체'시키는 개념입니다. 그리고 네트워크를 분리하는걸 서브넷팅(Subnetting)이라고 하며, 합치는걸 슈퍼넷팅(Supernetting)이라고 합니다. 서브넷팅은 서브넷 마스크를 이용하여 Host ID를 Network ID로 변환하게 되고, 슈퍼넷팅은 서브넷 마스크를 이용하여 Network ID를 Host ID로 변환하게 되어서 가능해집니다. 이 글에서는 서브넷팅에 대해서만 언급하도록 하겠습니다.

Subnetting
< 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)를  사용하여 서브넷팅을 시키지 않은 모든 네트워크에서도 동일하게 적용되니 주의하여 주시면 되겠습니다.

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



Su-hyeon Jo

Su-hyeon Jo

댓글 13개 :

  1. 유용한 정보, 정리잘된 자료 잘봤습니다..^^

    답글삭제
    답글
    1. 도움 되셨다니 저도 기분이 좋네요 :)

      삭제
  2. 이해하기 쉽게 설명이 잘되어있네요 잘봤습니다~!!

    답글삭제
    답글
    1. 보기 쉽게 정리할려고 노력했는데, 쉽게 이해하셨다니 다행입니다. ^^

      삭제
  3. 이해가 잘되네요 감사합니다!!

    답글삭제
    답글
    1. 부족하지만 이해가 잘 되셨다니 기분이 좋네요 ^^

      삭제
  4. 그래도 이해가 안 될 땐 무엇부터 다시 공부해야 하나요?

    답글삭제
    답글
    1. IPv4 주소 체계랑 컴퓨터 기초에서 bit 개념을 이해하는게 어떨까요 ?

      삭제
  5. 저 subnet에 포함된 address의 갯수를 구한값은 네트워크 ID를 말해야되나요 호스트 ID를 말해야되나요 ?

    답글삭제
    답글
    1. 어떤걸 여쭤보는지 잘 모르습니다..ㅠ

      삭제
  6. 유용한 정보 감사합니다. 현재 학부생인데 과제 중 서치하여 찾아보다가 이글을 보고 모르던 부분히 확실하게 정리 되었습니다. 감사합니다!

    답글삭제
    답글
    1. 처음 넷마스크를 이해할 때 햇갈리는 부분이 많죠. 그래도 모르던 부분을 알게되셔서 다행입니다.^^ 과제 열심히 하세요 !!

      삭제
  7. 안녕하세요 유용한 지식 올려주셔서 감사합니다!
    이제막 공부하는 초보라 이해안가는 부분좀 여쭤보겠습니다. 비전공자라 물어볼때가 없어요 ㅠㅠ

    위에 설명을 보면,
    194.139.10.123/26으로 하나 더 해보겠습니다. /26은 서브넷 마스크가 26bit이기에 255.255.255.192가 됩니다. // <-- 이까지 이해가 됩니다. 문제는 다음 부분..

    따라서 호스트에 할당 가능한 IP의 범위는 [0~63], [64~127], [128~191], [192~255]로 가능하며, <-- 이 부분이 이해가 되지 않습니다... /26 이면 11111111.11111111.11111111.11000000 <--이렇게 나타나고 11111111.1111111.1111111.11 <--이까지가 Net ID이고, 뒷부분인 000000 이게 Host ID로 이해하고 있습니다. 그럼 호스트 할당 가능한 범위가 최소 000000 ->10진수 전환시 0에서 최대 111111 -> 10진수 전환시 63, 즉 0~63이 되는것 같은데, [0~63], [64~127], [128~191], [192~255] 왜 이렇게 나누어 질수 있는지 이해가 가질않습니다.
    제가 잘못이해한것 같은데 답변 꼭 부탁드립니다!ㅜㅜ

    답글삭제

Google Blogger 서비스는 비밀 댓글을 지원하지 않기에 비공개를 원하시면 메일로 문의주시기 바랍니다. MAIL TO.

대또(Dae DDo). Powered by Blogger.