티스토리 뷰

study/Network

[스크랩] 서브넷과 서브넷마스크

알 수 없는 사용자 2008. 5. 7. 00:00
서브네트워크
호스트 비트를 이용하여 서브네트워크를 구성하는 것은 논리적으로 아주 명확하지만 서브네트워크를 구축하는 실제적인 방법은 이보다 좀 더 복잡합니다. 서브네트워크를 구축하기 위해서는 세단계를 거쳐야 합니다.
  1. 서브넷을 위해 사용할 호스트 비트의 수를 결정합니다.
  2. 새로운 서브넷 네트워크 ID를 열거합니다.
  3. 각 새로운 서브넷 네트워크 ID 별로 IP 주소를 열거합니다.
스텝 1: 호스트 비트의 개수 정하기
서브넷을 위해 사용될 호스트 비트의 개수는 가능한 서브넷의 개수와 서브넷 별 호스트의 개수를 결정하게 됩니다. 호스트 비트를 선택하기 이전에 앞날의 서브넷과 호스트 확장성도 고려하여 결정하는 것이 좋습니다. 현재 서브넷 마스크를 위해 필요한 비트보다 좀 더 많은 비트를 사용하는 것이 앞으로 발생할 수 있는 확장에 좀 더 쉽게 대처할 수 있을 것입니다.
호스트 비트를 더 많이 사용할수록 더 많은 서브넷을 사용할 수 있습니다. 하지만, 호스트의 개수는 상대적으로 줄어들게 됩니다. 만일 너무 많은 호스트 비트를 사용하게 되면 서브넷의 개수는 증가할 수 있으나 호스트의 개수를 너무 제한하게 될 것입니다. 반대로 호스트 비트를 너무 적게 사용하면 호스트의 증가에는 대처할 수 있으나, 서브넷의 증가가 많이 제한 받게 됩니다.
실제로, 네트워크 관리자는 하나의 네트워크에서 원하는 최대 노드 개수를 정의합니다. 동일한 네트워크 상의 모든 노드는 동일한 브로드캐스트 트래픽을 공유합니다. 그러므로, 서브넷 별 호스트 개수의 증가보다는 서브넷 개수의 증가를 더 선호하는 편입니다.
서브넷을 위해 사용할 호스트 비트의 개수를 정하기 위해서는 다음과 같은 가이드라인을 따르기 바랍니다.
  1. 얼만큼의 서브넷이 필요한지 결정하고 앞으로 필요해질 서브넷의 양을 예측합니다. 모든 물리적 네트워크은 서브넷입니다. WAN 연결 또한 라우터에 따라 서브넷으로 간주해야 할 필요도 있습니다.
  2. 다음과 같은 경우 서브넷을 위해 추가적인 비트를 사용합니다.
    • 현재 남아있는 비트에 의해 사용할 수 있는 호스트 개수 만큼 호스트를 절대 사용하지 않는 경우.
    • 앞으로 서브넷의 개수가 증가할 가능성이 있는 경우.
적합한 서브넷 계획을 결정하기 위해서는 우선 서브넷으로 구성되어야 할 현재 네트워크 ID에서부터 시작해야 합니다. 서브넷으로 구성될 네트워크 ID는 클래스 기반의 네트워크 ID이거나 서브넷 네트워크 ID, 슈퍼넷 네트워크 ID일 수 있습니다. 현재 존재하는 네트워크 ID는 고정된 연속적인 네트워크 ID 비트를 가지고 있을 것입니다. 이러한 연속적인 호스트 ID 비트는 가변적입니다. 필요한 서브넷의 개수와 서브넷 당 호스트의 개수에 근거하여 서브넷을 위해 사용될 호스트 비트를 사용하게 될 것입니다.
표 16은 클래스 A 네트워크 ID 서브넷을 보이고 있습니다. 필요한 서브넷과 서브넷 당 최대 호스트 개수에 근거하여 서브넷 설계를 할 수 있습니다.
표 16   Class A 네트워크 ID 서브넷
필요한 서브넷 개수 호스트 비트 개수 서브넷 마스크 서브넷 당 호스트 개수
1-2 1 255.128.0.0 or /9 8,388,606
3-4 2 255.192.0.0 or /10 4,194,302
5-8 3 255.224.0.0 or /11 2,097,150
9-16 4 255.240.0.0 or /12 1,048,574
17-32 5 255.248.0.0 or /13 524,286
33-64 6 255.252.0.0 or /14 262,142
65-128 7 255.254.0.0 or /15 131,070
129-256 8 255.255.0.0 or /16 65,534
257-512 9 255.255.128.0 or /17 32,766
513-1,024 10 255.255.192.0 or /18 16,382
1,025-2,048 11 255.255.224.0 or /19 8,190
2,049-4,096 12 255.255.240.0 or /20 4,094
4,097-8,192 13 255.255.248.0 or /21 2,046
8,193-16,384 14 255.255.252.0 or /22 1,022
16,385-32,768 15 255.255.254.0 or /23 510
32,769-65,536 16 255.255.255.0 or /24 254
65,537-131,072 17 255.255.255.128 or /25 126
131,073-262,144 18 255.255.255.192 or /26 62
262,145-524,288 19 255.255.255.224 or /27 30
524,289-1,048,576 20 255.255.255.240 or /28 14
1,048,577-2,097,152 21 255.255.255.248 or /29 6
2,097,153-4,194,304 22 255.255.255.252 or /30 2
표 17은 클래스 B 네트워크 ID에 대한 서브넷을 보이고 있습니다.
표 17   클래스 B 네트워크 ID 서브넷
필요한 서브넷 개수 호스트 비트 개수 서브넷 마스크 서브넷 당 호스트 개수
1-2 1 255.255.128.0 or /17 32,766
3-4 2 255.255.192.0 or /18 16,382
5-8 3 255.255.224.0 or /19 8,190
9-16 4 255.255.240.0 or /20 4,094
17-32 5 255.255.248.0 or /21 2,046
33-64 6 255.255.252.0 or /22 1,022
65-128 7 255.255.254.0 or /23 510
129-256 8 255.255.255.0 or /24 254
257-512 9 255.255.255.128 or /25 126
513-1,024 10 255.255.255.192 or /26 62
1,025-2,048 11 255.255.255.224 or /27 30
2,049-4,096 12 255.255.255.240 or /28 14
4,097-8,192 13 255.255.255.248 or /29 6
8,193-16,384 14 255.255.255.252 or /30 2
표 18은 클래스 C 네트워크 ID에 대한 서브넷을 보이고 있습니다.
표 18    클래스 C 네트워크 ID 서브넷
필요한 서브넷 개수 호스트 비트 개수 서브넷 마스크 서브넷 당 호스트 개수
1-2 1 255.255.255.128 or /25 126
3-4 2 255.255.255.192 or /26 62
5-8 3 255.255.255.224 or /27 30
9-16 4 255.255.255.240 or /28 14
17-32 5 255.255.255.248 or /29 6
33-64 6 255.255.255.252 or /30 2
스텝 2: 서브넷 네트워크 ID 열거
호스트 비트의 개수에 따라 서브넷을 사용할 수 있습니다. 우선 새로운 서브넷 네트워크 ID에 대해 살펴보아야 합니다. 이에는 다음과 같은 세가지 방법이 있습니다.
  • 2진수-서브넷으로 선택된 호스트 비트의 가능한 모든 조합을 열거합니다. 그리고, 각 조합의 값을 점으로 구분한 10진수 형태로 변환합니다.
  • 10진수-각 연속적인 서브넷 네트워크 ID에 계산된 증가 값을 더하고 점으로 구분한 10진수 표기법으로 변환합니다.
각 방법은 동일한 결과를 보여줍니다. 이 방법을 이용하여 서브넷 네트워크 ID에 대한 목록을 구성할 수 있습니다.
주의    서브넷 구성을 위한 방법에는 여러 가지 방안이 존재합니다. 그러나, 그러한 방법들은 특정한 제약조건(예를 들어, 클래스 기반 네트워크 ID에서 8비트의 경우에만 사용 가능)에서만 사용 가능한 방법입니다. 여기서 설명하는 방법은 어떠한 서브넷 구성 환경(8비트 이상의 클래스 기반, 슈퍼넷, 가변 길이 서브넷 등)에서도 사용 가능한 것입니다.
이진 서브넷 구성 절차
  1. 서브넷을 위해 선택된 호스트 비트의 개수를 n 이라 하고, 2n 엔트리를 가진 3 컬럼의 테이블을 작성합니다. 첫번째 컬럼은 서브넷 번호를 나타내고, 두 번째는 서브넷 네트워크 ID의 이진수 표현입니다. 마지막 세 번째 컬럼은 서브넷 네트워크 ID의 10진수 표기된 결과를 나타냅니다.
    각각의 이진 표기된 값에서 서브넷으로 사용되는 네트워크 ID 비트는 적절한 값으로 지정하고 나머지 호스트 비트 값은 모두 0으로 지정합니다. 서브넷을 위해 사용되는 호스트 비트의 개수는 가변적일 것입니다.
  2. 첫번째 테이블 엔트리는 모든 서브넷 비트를 0으로 지정하고 이 값을 10진 표기로 변경합니다. 기존 네트워크 ID는 새로운 서브넷 마스크로 서브넷으로 구성 됩니다.
  3. 테이블의 다음 엔트리에는 서브넷 비트의 값을 증가 시킵니다.
  4. 이진 값을 10진 표기로 변경합니다.
  5. 테이블을 모두 작성할 때까지 3과 4의 과정을 반복합니다.
예를 들어, 네트워크 ID가 192.168.0.0이고 3비트 서브넷을 구성해야 하는 경우를 생각해봅시다. 새로운 서브넷 네트워크 ID를 위한 서브넷 마스크의 값은 255.255.224.0 혹은 /19 입니다. n = 3의 값이므로 테이블은 8 (= 23)개의 엔트리로 작성이 됩니다. 서브넷 1을 위한 엔트리는 모두 0으로 지정한 서브넷입니다. 테이블의 나머지 엔트리는 표 19에 보이는 것처럼 서브넷 비트를 연속적으로 증가 시켜서 작성하면 됩니다. 서브넷을 위해 사용된 호스트 비트들은 밑줄이 그어져 있습니다.
표 19    이진 서브넷 구성 방법 (네트워크 ID 192.168.0.0인 경우)
서브넷 이진 표현 서브넷 네트워크 ID
1 11000000.10101000.00000000.
00000000
192.168.0.0/19
2 11000000.10101000.00100000.
00000000
192.168.32.0/19
3 11000000.10101000.01000000.
00000000
192.168.64.0/19
4 11000000.10101000.01100000.
00000000
192.168.96.0/19
5 11000000.10101000.10000000.
00000000
192.168.128.0/19
6 11000000.10101000.10100000.
00000000
192.168.160.0/19
7 11000000.10101000.11000000.
00000000
192.168.192.0/19
8 11000000.10101000.11100000.
00000000
192.168.224.0/19
10진 서브넷 구성 절차
  1. 서브넷을 위해 선택된 호스트 비트의 개수를 n 이라 하고, 2n 엔트리를 가진 3 컬럼의 테이블을 작성합니다. 첫번째 컬럼은 서브넷 번호를 나타내고, 두 번째는 32비트 서브넷 네트워크 ID에 대한 10진수 표시입니다. 마지막 세 번째 컬럼은 서브넷 네트워크 ID의 점으로 구분한 10진수 표기된 결과를 나타냅니다,
  2. 서브넷으로 구성되는 네트워크 ID (w.x.y.z)를 점으로 구분한 10진수 표기에서 N(32비트 네트워크 ID에 대한 10진 표기)로 변경합니다.
    N = w*16777216 + x*65536 + y*256 + z
  3. 3. 남은 호스트 비트 개수 h를 이용하여 증가치 I를 구합니다.
    I = 2h
  4. 첫번째 테이블 엔트리에는 서브넷 네트워크 ID의 10진 표기인 N과 새로운 서브넷 마스크와 함께 w.x.y.z 형태의 서브넷 네트워크 ID가 위치합니다.
  5. 다음 테이블 엔트리에는 그 전 엔트리의 10진 값에 증가치 I를 더합니다.
  6. 서브넷 네트워크 ID 10진 갑을 점으로 구분한 표기(w.x.y.z) 형태로 변경합니다. 변경 시 아래와 같은 공식을 이용합니다. (s는 서브넷 네트워크 ID 10진 값을 나타냅니다.)
    W = INT(s/16777216)
    X = INT((s mod(16777216))/65536)
    Y = INT((s mod(65536))/256)
    Z = s mod(256)
  7. 테이블을 완성할 때 까지 5, 6과정을 반복합니다.
예로서, 네트워크 ID가 192.168.0.0이고 3비트 서브넷을 구성하는 경우를 생각해봅시다. n = 3이 되고 8개의 엔트리를 가진 테이블을 만듭니다. 서브넷 1 엔트리는 모든 서브넷 값이 0입니다. 192.168.0.0에 대한 10진 표기인 N값은 3232235520 (192*16777216 + 168*65536 계산에 의한 결과)입니다. 13개의 호스트 비트가 남아있으므로 증가치 값인 I 는 213 = 8192 입니다. 테이블의 남은 표 20에 보이듯이 엔트리들은 8190로 연속적으로 증가 시키면 됩니다.
표 20    10진 서브넷 구성 방법(네트워크 ID 192.168.0.0인 경우)
서브넷 10진 값 서브넷 네트워크 ID
1 3232235520 192.168.0.0/19
2 3232243712 192.168.32.0/19
3 3232251904 192.168.64.0/19
4 3232260096 192.168.96.0/19
5 3232268288 192.168.128.0/19
6 3232276480 192.168.160.0/19
7 3232284672 192.168.192.0/19
8 3232292864 192.168.224.0/19
모두 0이거나 1인 서브넷
RFC 950은 원칙적으로 모든 서브넷을 위해 사용되는 모든 비트가 다 0으로 설정되거나(모두 0인 서브넷) 1로 설정되는(모두 1인 서브넷) 것을 금지합니다. 모두 0인 서브넷은 초기 라우팅 프로토콜에서 문제를 일으키고 모두 1인 서브넷은 모든 서브넷 직접 브로드캐스트 주소(all-subnets directed broadcast address )라는 특별한 브로드캐스트 주소와 충돌을 일으킵니다.
하지만, RFC 1812는 현재 모두 0, 모두 1 서브넷을 CIDR (Classless Interdomain Routing ) 호환 환경에서 허용하고 있습니다. CIDR-호환 환경은 모두 0인 서브넷과 문제를 일으키지 않는 새로운 라우팅 프로토콜을 사용하며 모두 1인 서브넷과 충돌하는 모든 서브넷 직접 브로드캐스트를 사용하지 않습니다.
모두 0 혹은 1인 서브넷을 사용하기 이전에 우선 호스트와 라우터가 이것을 허용하는지 확인하기 바랍니다. Windows NT는 모두 0 혹은 1인 서브넷을 허용하고 있습니다.
절차 3: 각 서브넷 네트워크 ID를 위한 IP 주소 열거
열거된 서브넷 네트워크 ID를 이용하여 새로운 서브넷 네트워크 ID를 위해 IP 주소에 대한 목록을 작성해 주어야 합니다. 각 IP 주소를 모두 목록으로 작성하는 작업은 귀찮은 작업일 될 것입니다. 그 대신, 각 서브넷 네트워크 ID에 대하여 IP 주소의 범위를 지정하여 IP주소를 나타낼 수 있습니다. 이러한 방법에는 크게 두 가지 방법이 있습니다.
  • 2진수-각 서브넷 네트워크 ID에 대하여 시작과 마지막 IP 주소를 적어주고 점으로 구분한 10진수 표기법으로 변환합니다.
  • 10진수-각 서브넷 네트워크 ID에 대한 시작과 마지막 IP 주소에 적합한 증가치를 더합니다. 그 값을 점으로 구분한 10진수 표기법으로 변환합니다.
각 방법은 동일한 결과(각 서브넷 네트워크 ID에 대한 IP 주소 범위)를 보입니다.
2진 방법 절차
  1. 서브넷을 위해 선택된 호스트 비트의 수를 n 이라 하고 3개의 컬럼을 가지는 2n 엔트리 테이블을 작성합니다. 혹은, 앞에서 서브넷 네트워크 ID를 위해 사용한 테이블에 두 개의 컬럼을 추가하여 사용해도 됩니다. 첫번째 컬럼은 서브넷 번호(1부터 시작)이고 두 번째 컬럼은 서브넷 네트워크 ID에 대하여 시작과 마지막 IP 주소의 범위를 2진수 형태로 보여줍니다.세 번째 컬럼은 서브넷 네트워크 ID에 대한 IP 주소 범위를 점으로 구분한 10진수 형태로 보여줍니다.
  2. 각각의 2진 표기에서 시작 IP 주소는 끝 비트만을 제외하고 모든 호스트 비트를 0으로 설정합니다. 마지막 IP 주소는 끝 비트만을 제외하고 모든 호스트 비트를 1로 설정합니다.
  3. 2진 값을 점으로 구분한 10진 표기법으로 변경합니다.
  4. 테이블을 완성할 때까지 2, 3 절차를 반복합니다.
네트워크 ID 192.168.0.0에서 3비트 서브넷인 경우 IP 주소의 범위는 표 21에 보이는 것과 같습니다. 서브넷을 위해 사용된 비트는 밑줄이 그어져 있습니다.
표 21   IP 주소에 대한 2진 열거
서브넷 2진 표시 IP 주소의 범위
1 11000000.10101000.00000000.
00000001-11000000.10101000.00011111.
11111110
192.168.0.1 - 192.168.31.254
2 11000000.10101000.00100000.
00000001-11000000.10101000.00111111.
11111110
192.168.32.1 - 192.168.63.254
3 11000000.10101000.01000000.
00000001 - 11000000.10101000.01011111.
11111110
192.168.64.1 - 192.168.95.254
4 11000000.10101000.01100000.
00000001 -11000000.10101000.01111111.
11111110
192.168.96.1 - 192.168.127.254
5 11000000.10101000.10000000.
00000001 - 11000000.10101000.10011111.
11111110
192.168.128.1 - 192.168.159.254
6 11000000.10101000.10100000.
00000001 - 11000000.10101000.10111111.
11111110
192.168.160.1 - 192.168.191.254
7 11000000.10101000.11000000.
00000001 -11000000.10101000.11011111.
11111110
192.168.192.1 - 192.168.223.254
8 11000000.10101000.11100000.
00000001 - 11000000.10101000.11111111.
11111110
192.168.224.1 - 192.168.255.254