Classless Addressing
class를 완전히 없애버린 주소이다.
전체의 절반 class A, 나머지의 절반 class B, C.. 와 같이 구분되는 classfull과는 달리 classless는 size 간의 관계가 없다.
classfull에서 netid, hostid라고 사용했던 것을 각각 classless에서는 prefix, suffix라고 칭한다.
prefix의 길이는 1~32까지이다.
example
인터넷이 한 block만 있고, 이 한 block에 40억개의 주소가 있다면, prefix는 0, suffix는 32이다.
인터넷이 총 40억개로 나누어지고 각 block마다 하나의 주소를 가지고 있다면 prefix는 32, suffix는 0이다.
32bit의 크기는 고정이므로 prefix가 n이라고 한다면 n이 커질수록 suffix는 32-n으로 작아지고, 반대로 suffix가 커질수록 prefix가 작아진다.
Slash notation
classless는 class가 없기 때문에 주소 뒤에 prefix length를 함께 써주는 slash notation이 필요하다.
prefix length가 있어야 block을 정의할 수 있다.
example
classless주소 230.8.24.56 이 있을 때, prefix length가 있어야 block을 정의할 수 있다.
prefix length가 16이라면 앞에서 16bit까지 고정이고, 나머지는 0
prefix length가 20이라면 20bit 까지 고정이므로 [230.8.0001]1000.0 으로 230.8.16.0이다.
이러한 방식으로 나머지 prefix length도 고정하는 범위에 해당한다.
example
classless주소 12.23.24.78/8 의 경우 prefix length가 8이므로, network mask는 8bit까지가 1인 255.0.0.0 이고, suffix length는 24이다.
classless 주소 130.11.232.156/16 의 경우 prefix length가 16으로 network mask는 16bit까지 1인 255.255.0.0, suffix length는 16이다.
classless 주소 167.199.170.82/27 의 경우 prefix length가 27로 network mask는 27bit까지 1인 255.255.255.224, suffix length는 5이다.
example
block의 한 주소가 167.199.170.82/27 일 때, 네트워크 주소와, 첫 번째, 마지막 주소를 찾아보자.
prefix length가 27이므로 다음과 같이 27bit까지 network mask를 1로 하여 다음과 같이 구한다.
결과는 167.199.170.61/27 이 network address이자 첫 번째 주소이다.
마지막 주소를 구하는 방법은 first address에서 suffix 부분을 모두 1로 한 mask를 or연산하는 방법으로 다음과 같다.
따라서 결과는 167.199.170.95/27 이 마지막 주소이다.
example
block의 한 주소가 17.63.110.114/24 인 경우 주소의 개수는 2^(32-24) = 256이고,
prefix length가 24이므로다 다음과 같이 첫 번째 주소는 17.63.110.0/24 이다.
마지막 주소는 suffix부분을 모두 1로 or연산하여 다음과 같이 17.63.110.255/24 이다.
example
block의 한 주소가 110.23.120.14/20 이므로 prefix length가 20 즉 network mask는 255.255.240.0,
주소의 개수는 2^(32-20) = 4096이다.
시작 주소는 다음과 같이 network mask와 and 연산하여 110.23.112.0/20 이다.
마지막 주소는 다음과 같이 suffix 부분을 1로 or 연산하여 110.23.127.255/20 이다.
example
ISP라는 인터넷 회사가 1000개의 인터넷 주소가 필요한 상황이다.
1000가 필요하므로 2^10인 1024의 주소를 할당한다.
prefix length는 고정되는 bit들이므로 32-10 = 22이다.
시작 주소로 선택된 것이 18.14.12.0으로 18.14.12.0/22 ~ 18.14.15.255/22까지 총 1024개 주소를 사용할 수 있다.
classfull addressing을 slash notation으로 표현하면 위 그림과 같다.
example
어떤 기관이 class A 의 73.0.0.0 을 과거에 할당하고, 반납하지 않으면 classless에서 73.0.0.0/8 로 표현된다.
classless의 subnet은 classfull와 동일한 매커니즘이다.
example
130.34.12.64/26 block을 4개의 subnetwork로 바꾸려고 하는 상황이다.
network address 130.34.12.64에서 4개의 subnet을 위해서는 추가로 2bit를 더 할당해야하므로 prefix length는 28이 된다.
130.34.12.01 000000/28
130.34.12.01 010000/28
130.34.12.01 100000/28
130.34.12.01 110000/28
의 네 가지이므로 각각 십진수로 표현하면,
130.34.12.64/28
130.34.12.80/28
130.34.12.96/28
130.34.12.112/28
위와 같은 4가지 subnet으로 나뉜다.
suffix의 시작 부분의 bit를 이용해서 subnet을 나눈다. 4개의 subnet이 필요한 경우 2bit를 사용했으므로 8개의 subnet이 필요하면 suffix에서 3bit이 필요하다.
example
156.34.13.25/25 주소가 속한 네트워크를 4개의 subnet으로 구성해보자.
prefix length가 25이므로 network address는 156.34.13.0/25 이고 network mask는 255.255.255.128 이다.
4개의 subnet을 위해 2bit가 추가로 필요하므로
156.34.13.0 00 00000/27 156.34.13.0/27
156.34.13.0 01 00000/27 156.34.13.32/27
156.34.13.0 10 00000/27 156.34.13.64/27
156.34.13.0 11 00000/27 156.34.13.96/27
이와 같이 subnet이 나누어진다.
example
87.105.43.95/23 주소가 속한 네트워크를 8개의 subnet으로 구성해보자.
prefix length가 23이므로 network address는 87.105.00101010.00000000/23 즉 87.105.42.0/23 으로 network mask 는 255.255.254.0 이다.
8개의 subnet을 위해 3bit가 추가로 필요하므로
87.105.0010101 0.00 000000/26 87.105.42.0/26
87.105.0010101 0.01 000000/26 87.105.42.64/26
87.105.0010101 0.10 000000/26 87.105.42.128/26
87.105.0010101 0.11 000000/26 87.105.42.192/26
87.105.0010101 1.00 000000/26 87.105.43.0/26
87.105.0010101 1.01 000000/26 87.105.43.64/26
87.105.0010101 1.10 000000/26 87.105.43.128/26
87.105.0010101 1.11 000000/26 87.105.43.192/26
이와 같이 subnet이 나누어진다.
example
주어진 주소 14.24.74.0/24 의 네트워크에 3개의 subnet을 만드는데 각 subnet의 크기가 다르다.
각각 120, 60, 10 개의 다른 크기의 주소를 가진 subnet으로 분리하는 방법을 알아보자.
120개의 주소를 얻기 위해서는 128 = 2^7 이므로 7bit가 suffix bit로 필요하다.
60개의 주소는 64 = 2^6 이므로 6bit가 suffix bit로 필요하다.
10개의 주소는 16 = 2^4 이므로 4bit가 suffix bit로 필요하다.
14.24.74.0 0000000 14.24.74.0/25
14.24.74.0 1111111 14.24.74.127/25
suffix bit가 7개 필요하므로 뒷자리 7bit로 subnet address를 구분한다. prefix length는 32-7 = 25
14.24.74.10 000000 14.24.74.128/26
14.24.74.10 111111 14.24.74.191/26
suffix bit가 6개 필요하므로 뒷자리 6bit로 subnet address를 구분한다.
prefix length는 32-6 = 26
14.24.74.1100 0000 14.24.74.192/28
14.24.74.1100 1111 14.24.74.207/28
suffix bit가 4개 필요하므로 뒷자리 4bit로 subnet address를 구분한다.
prefix length는 32-4 = 28
이를 그림으로 표현하면 다음과 같다.
이번에는 반대로 10, 60, 120 순으로 subnet을 분리해보자.
14.24.74.0000 0000
14.24.74.0000 1111
suffix bit가 4개 필요하므로 뒷자리 4bit로 subnet address를 구분한다.
14.24.74.00 010000
14.24.74.00 111111
10개의 주소를 할당한 후 위 주소의 범위로는 64개의 주소가 나오지 않는다. prefix가 고정된 상태로는 나오지 않아 prefix를 다음과 같이 변경해준 범위에서 주소를 할당해야한다.
14.24.74.01 000000 14.24.74.64/26
14.24.74.01 111111 14.24.74.127/26
prefix bit가 변경되어 25,26 bit가 00에서 01로 변경되어 고정된 주소로 할당해야 subnet에 64개의 주소를 할당할 수 있다.
14.24.74.1 0000000/25
14.24.74.1 1111111/25
suffix bit 7개를 온전히 이용하여 128개의 주소를 할당할 수 있다.
위와 같은 문제들이 주소의 개수가 작은 subnet부터 만들시 생길 수 있기 때문에, 되도록 작은 것 부터 만들지 않는다.
example
기관의 주소가 70.12.100.128/26 이고, subblock 3개를 각각 32, 16, 16개로 subnet을 분리한다고 하자.
70.12.100.100 00000 70.12.100.128/27
70.12.100.100 11111 70.12.100.159/27
32개의 주소가 필요하므로 suffix bit가 5개 필요하다.
prefix length는 32-5 = 27
70.12.100.1010 0000 70.12.100.160/28
70.12.100.1010 1111 70.12.100.175/28
16개의 주소가 필요하므로 suffix bit가 4개 필요하다.
prefix 27bit가 1로 올라가고,
prefix length는 32-4 = 28
70.12.100.1011 0000 70.12.100.176/28
70.12.100.1011 1111 70.12.100.191/28
prefix의 28bit가 1로 올라가고,
16개의 주소가 필요하므로 suffix bit가 4개 필요하다.
prefix length는 32-4 = 28
위 예제를 그림으로 표현하면 다음과 같다.
example
해당 예제는 subnet안에 subnet을 구분하는 예제이다.
- 첫 번째 subnet group안에는 64개의 subnet이 있고, 이 64개의 subnet은 256개의 주소가 필요하다.
- 두 번째 subnet group안에는 128개의 subnet이 있고, 이 128개의 subnet은 128개의 주소가 필요하다.
- 세 번째 subnet group안에는 128개의 subnet이 있고, 이 128개의 subnet은 64개의 주소가 필요하다.
190.100.0.0/16
❑ First Group: 64X256 addresses. → 2^6 * 2^8 = 2^14
❑ Second Group: 128X128 addresses. → 2^7 * 2^7 = 2^14
❑ Third Group: 128X64 addresses. → 2^7 * 2^6 = 2^13
190.100.00 000000.00000000 190.100.0.0/18
190.100.00 111111.11111111 190.100.63.255/18
첫 번째 group은 14개의 suffix bit가 필요하다.
190.100.01 000000.00000000 190.100.64.0/18
190.100.01 111111.11111111 190.100.127.255/18
두 번째 group은 14개의 suffix bit가 필요하다.
190.100.100 00000.00000000 190.100.128.0/19
190.100.100 11111.11111111 190.100.159.255/19
세 번째 group은 13개의 suffix bit가 필요하다.
그림으로 보면 다음과 같다.
다음으로 첫 번째 subnet group을 subnet으로 분리하자.
190.100.00000000.00000000
190.100.00000001.
190.100.00000010.
...
190.100.00111111.0000000
까지 64개의 subnet으로 구분한다.
두 번째 subnet group을 subnet으로 분리하자.
190.100.01 000000.0 0000000/25 190.100.64.0/25
190.100.01 000000.1 0000000/25 190.100.64.128/25
190.100.01 000001.0 0000000/25 190.100.65.0/25
...
190.100.01 111111.1 0000000/25 190.180.127.128/25
subnet group의 prefix 18bit에서
128개의 subnet으로 분리하기 위해 7bit가 추가로 필요하므로, subnet의 prefix는 25bit이다.
세 번째 subnet group을 subnet으로 분리하면, subnet group의 prefix 19bit에 128개의 subnet으로 분리하기 위해 7bit가 추가로 필요하므로 각 subnet의 prefix는 26bit이다.
그림으로 보면 다음과 같다.
위와같이 주소를 subnet을 group으로 분류하고
각각의 subnet group을 subnet으로 분리한다.