인터넷 주소의 블록을 나누거나 합치는 개념인 서브 네팅과 슈퍼 네팅에 대해 알아보도록 하자.
아래 링크는 네트워크 주소와 관련한 이전 글이니 참고하기 바란다.
[Network] - [Network] Network Layer 와 인터넷 주소 (클래스형, 비클 래스형)
Subnetting
서브 네팅이란 할당 받은 주소 블록을 더 작은 블록으로 나누는 개념이다, 보안/관리 차원에서 나누거나 일부 주소를 다른 조직에 대여하는데 이용하기도 한다.
서브넷 마스크에서 255는 네트워크 부분은 0은 호스트 부분을 나타낸다 할 수 있다.
255로 된 부분은 무시하시고 0(호스트)으로 된 부분에서 IP를 나눠 쓰는 혹은 IP를 쪼개는 개념이다.
클래스형 서브 네팅
서브 네팅도 subnetid와 subnetwork 주소를 갖는다 : 2^m 개의 서브 네트워크로 나누어지며 이때에 subnetid는 m비트만큼 길다.
예시 문제를 보면서 이해해 보도록 하자.
Class B 인 141.14.0.0/16을 할당받은 경우 주소 영역이 너무 커서 4개의 sub network로 분리하려고 합니다.
Class B의 network mask 가 255.255.0.0 (16bit를 netid로 사용)
즉, 네트워크 범위가 141.14.0.0 ~ 141.14.255.255 사용 가능
만약 각 subnetwork 가 2^14 개의 호스트에게 주소를 할당할 수 있다고 하면
netid = 16bit
hostid = 16bit
hostid 중 2bit를 netid에 주면 2^14개의 호스트에게 주소 할당이 된다 (16-2 =14bit)
∴ netid = 18bit / hostid = 14bit
8bit.8bit.8bit.8bit
세 번째 8bit 부분에서 앞의 2bit가 netid로 속하게 돼서 결국 가능한 범위는
0000 0000 = 0
0100 0000 = 2^6 = 64
1000 0000 = 2^7 = 128
1100 0000 = 2^7 + 2^6 = 192
[141.14.0.0/18] [141.14.64.0/18] [141.14.128.0/18] [141.14.192.0/18]
비 클래스형 서브 네팅
클래스형 주소 방식에서 서브 네팅과 슈퍼 네팅은 주소 고갈 문제를 해결하지 못했다
∴ 단기적인 해결책으로 비 클래스형 라우팅, CIDR (Classless Interdomain Routing) 기법이 제시되었다. 오늘날은 클래스형 주소 지정 방식은 더 이상 사용되지 않는다
각 기관에 2^1, 2^2,... 2^32 개의 주소를 갖는 블록을 지정 가능하게 함
2단계 주소 지정
Prefix : 네트워크를 지정하고 클래스형 서브 네팅에서 netid와 같은 기능, 프리픽스 길이는 0 에서 32까지 가능함. (클래스형에서는 8,16,24만 가능함)
Suffix : 호스트를 정의하고 클래스형 서브네팅에서 hostid와 같은 기능
비클 래스형 주소 지정 방식에서는 주소 값만으로는 prefix 길이를 알 수 없다. 클래스형의 경우 맨 앞의 8비트 수의 구성으로 알 수 있었음 (0, 10,110)
∴ 비클래스형 주소지정 방식에는 Prefix의 길이를 별도 표기해야 함
prefix의 길이가 n 일 때, 블록(host)에 속하는 주소의 개수는 2^ (32-n)
블록에 속하는 첫 번째 주소 값 = 네트워크 주소: (임의의 주소) AND (네트워크 마스크)
블록에 속하는 마지막 주소 값 = 네트워크 주소: (임의의 주소) OR ( NOT 네트워크 마스크)
Example)
블록에 속한 주소 값이 110.23.120.14/20이다.
이 블록에 속하는 주소의 개수와 첫 번째 주소, 마지막 주소를 구해라
1) 주소의 개수 2^(32-20) = 2^12 = 4096개
2) 1번째 주소
Decimal | Binary | |
임의의 주소 | 110.23.120.14 | 0110 1110. 0001 0111.0111 1000.0000 1110 |
네트워크 마스크 | 255.255.240.0 | 1111 1111. 1111 1111. 1111 0000. 0000 0000 |
AND 연산 | 110.23.112.0 | 0110 1110. 0001 0111. 0111 0000. 0000 0000 |
3) 마지막 주소
Decimal | Binary | |
임의의 주소 | 110.23.120.14 | 0110 1110. 0001 0111.0111 1000.0000 1110 |
NOT 네트워크 마스크 | 0.0.15.255 | 0000 0000. 0000 0000. 0000 1111. 1111 1111 |
OR 연산 | 110.23.127.255 | 0110 1110. 0001 0111. 0111 1111. 1111 1111 |
블록 할당의 제약조건
1) 요구하는 주소의 개수 N은 2의 거듭제곱이어야 한다.
2) 블록에 속하는 주소의 개수로부터 프리픽스의 길이를 알 수 있음 : 주소의 개수 N = 2^ (32-n)
n = prefix 길이
3) 블록에 속하는 주소는 연속되어야 하며, 다른 블록에 할당되지 않은 상태여야 함
4) 블록의 시작 주소 값(네트워크 주소)은 블록에 속하는 주소의 개수로 나누어질 수 있어야 함.
서브 네팅 하는 법
1) 각 서브 네트워크에 속하는 주소의 개수는 2의 거듭제곱
2) n = prefix 길이 , N = 할당받은 주소의 개수
3) (n sub) = n + log2(N/N sub) 서브네트워크 프리픽스 길이와 주소 개수
N = 전체 네트워크에 할당된 주소의 개수
N sub = subnetwork에 할당된 주소의 개수
4) 서브 네트워크의 시작 주소는 해당 서브 네트워크에 속하는 주소의 개수로 나누어질 수 있어야 함
Example 1) 130.34.12.64/26 블록이 기관에게 할당되었다. 이 기관은 동일한 개수의 호스트를 갖는 4개의 서브 네트워크를 구성하여라
1) 전체 네트워크에 할당된 주소의 개수 N = 2^(32-26) = 2 ^ 6 = 64개
2) 주소 범위 : 130.34.12.64/26 ~ 130.34.12.(64+64 - 1=127)/26
3) 64 /4개 subnet = 각 subnet 당 16개씩 주소를 가지면 됨 = N sub
4) 각 subnet의 Prefix의 길이 : n1 = n2 = n3 = n4 = n + log2(N/N sub) = 26 +log2(64/16) = 28
n = prefix = 26
Answer 1) [130.34.12.64/28] [130.34.12.80/28] [130.34.12.96/28] [130.34.12.112/28]
Example 2) 14.24.74.0/24 블록이 기관에게 할당되었다. 이 기관은 120개, 60개, 10개의 주소를 갖는 3개의 서브 네트워크를 구성하여라
1) 전체 네트워크에 할당된 주소의 개수 N = 2^(32-24) = 2 ^ 8 = 256개
2) 주소 범위 : 14.24.74.0/24 ~ 14.24.74.(0+256 - 1=255)/24
3) 256개를 128개, 64개, 16개로 나눔
4) 각 subnet의 Prefix의 길이
- 첫 번째 subnet 주소 개수 N1 = 128개
- n1 = 첫번째 subnet의 prefix 길이 = n + log2(N/N sub1) = 24 + log2 (256 / 128) = 24 +1 = 25
- 주소 범위 : 14.24.74.0/25 ~ 14.24.74.127/25
- 두 번째 subnet 주소 개수 N2 = 64개
- n2 = 두번째 subnet의 prefix 길이 = n + log2(N/N sub2) = 24 + log2 (256 / 64) = 24 +2 = 26
- 주소 범위 : 14.24.74.128/26 ~ 14.24.74.191/26
- 3번째 subnet 주소 개수 N1 = 128개
- n3 = 3번째 subnet 의 prefix 길이 = n + log2(N/N sub3) = 24 + log2 (256 / 16) = 24 +4 = 28
- 주소 범위 : 14.24.74.192/28 ~ 14.24.74.207/28
Answer 2) [14.24.74.0/25] [14.24.74.128/26] [14.24.74.192/28]
프리픽스 결합 Prefix Aggregation
여러 개의 작은 프리픽스를 모아서 하나의 큰 프리픽스를 구성하는 개념 , supernetting과 동일한 개념으로 subnetting과 반대되는 개념
결합하려는 큰 prefix에 포함되는 모든 주소 영역이 있어야 통합 가능함.
Supernetting
여러 주소 영역을 할당받아서 하나의 주소 영역으로 통합하는 개념으로 서브 네팅과 슈퍼 네팅은 반대 개념이다.
네트워크 주소들이 슈퍼 네트워크 주소에 포함되는 모든 주소 영역에 있어야 통합이 가능하다.
2^m 개의 네트워크 주소를 모아서 1개의 슈퍼 네트워크를 구성하며 이때 supernetid는 m 비트만큼 짧아진다. 즉, netid 가 짧아진다.
예시문제
1. [200.3.0.0/24] [200.3.1.0/24] [200.3.2.0/24] [200.3.3.0/24]의 Class C 주소 4개를 슈퍼네팅하여 얻을 수 있는 네트워크 주소는 무엇인가?
0 > binary = 0000 0000
1 > binary = 0000 0001
2 > binary = 0000 0010
3 > binary = 0000 0011
8bit 중에서 마지막 2자리를 제외하고 모두 다 같은 값이다 (0000 00)
즉 2^0 자리와 2^1 자리만 차이가 있으므로 2^2 ~2^7 자리까지 통합이 가능하고 차이가 나는 자릿수를 hostId로 보내버린다.
즉, Class C는
24bit (netid) + 8bit(hostid)로 구성되어 있는데 24bit 중 2 bit를 hostid로 보내면 > 22bit (netid) + 10bit (hostid)가 된다.
따라서 200.3.0.0/22의 supernet 주소로 통합이 가능하다.
2. [220.3.1.0/24] [220.3.2.0/24] [220.3.3.0/24] [220.3.4.0/24]의 Class C 주소 4개를 슈퍼네팅하여 얻을 수 있는 네트워크 주소는 무엇인가?
1 > binary = 0000 0001
2 > binary = 0000 0010
3 > binary = 0000 0011
4 > binary = 0000 0100
자리 수 가 마지막 4 때문에 2^2 자리로 넘어가기 때문에 슈퍼 네팅이 불가능하다.
간편하게 서브 네팅 계산기도 있으니 아래 링크를 참조하길 바란다
www.subnet-calculator.com/subnet.php?net_class=C
'Network' 카테고리의 다른 글
[Network] SSH (0) | 2021.04.06 |
---|---|
[Network] 특수주소 (0) | 2021.04.04 |
[Network] Network Layer 와 인터넷 주소 (클래스형, 비클래스형) (0) | 2021.04.03 |
[Network] 메세지 전송방식 : 유니캐스트, 멀티캐스트, 브로드 캐스트 (0) | 2021.01.25 |
[Network] OSI 7 Layer 개념 overview (0) | 2021.01.14 |