서브넷팅(Subneting)이란 무엇일까?
먼저, 네트워크상에서 데이터가 어떻게, 어떠한 방식으로 오고가는지를 알아야한다.
가장먼저 유니캐스트(Unicast)방식이 있다.
<▲사진 01>
유니캐스트란,
1:1로 데이터를 전달하는 가장 이반적인 방법이다.
출발지주소(Source Address)와 도착지주소(Destination Address)를 명시하여 해당하는 장비만이 데이터를 처리하는 방법이다.
장점으로는 Host to Host 전달을 기반으로 함으로, 네트워크 부하가 없다.
하지만, 단점으로 동일한 정보를 많은 호스트에 전달할 때에는 비 효율적인 방법이다.
다음으로 브로드캐스트(Broadcast)방식이 있다.
브로드캐스트방식은 단일 Host가 Segment에 모든 호스트를 대상으로 데이터를 전달 시 사용된다.
목적지 주소를 각 주소에 예약된 Broadcast Address를 입력하여 전달한다.
그러면, 모든 Host는 이 메시지를 수신한다.
장점으로, 동일한 정보를 한번에 모든 Host에게 전달할 수 있지만,
많은 Broadcast는 Host의 성능 저하를 가져온다.(네트워크 과부하)
마지막으로, 멀티캐스트(Multicast)방식이 있다.
멀티캐스트방식은 단일 Host가 예약된 주소(Multicast Address)로 데이터를 보낸다.
목적지 주소를 각 주소에 예약된 Multicast Address를 입력하여 전달하기 때문에,
동일한 정보를 한번에 여러 호스트에게 전달하는 장점과, 네트워크 부하가 걸리지 않는 장점을 모두 가지고 있다.
(Unicast장점 + Broadcast 장점)
여기까지 Subneting을 알기위한 사전지식이라고 하자.
서브넷팅(Subneting)이란, 브로드캐스트 도메인(Broadcast Domain)에 많은 호스트가 연결된 경우 호스트에 발생한 Broadcast traffic이 모든 호스트에 전달되어 많은 Broadcast Traffic이 발생하여 하나의 Broadcast Domain에서는 보안이 취약하기 때문에 Firewall이나 ACL과 같은 정책을 구현하기 위해서는 Network Segment를 나누는 것이 효율적이다.
말로 설명하면 이해하기가 힘드므로, 그림을 보자
다음과 같이 218.128.30.0의 네트워크가 있다.
여기서 218은 클래스C에 해당되므로 218.128.32.0/24의 네트워크를 갖는다.
그렇다면 218.128.32.0/24의 네트워크안에서 하나의 호스트에서 브로드캐스트를 보내게되면,
218.128.32.0/24 네트워크 안에 모든 호스트들이 브로드캐스트 패킷을 받게 된다.
그러면 굳이 받지 않아도 되는 호스트들은 필요없는 패킷을 받게 되므로, 네트워크성능이 저하된다.
그렇기 때문에 같은 네트워크상 안에서 다시한번 묶음으로 나누는것이 서브넷팅이다.
서브넷팅을 하게되면 IP의 낭비를 줄일수 있을 뿐더러, 보안이 강화되는 역할도 한다.
ex) 하나의 네트워크를 4개로 쪼개면 네트워크 이름도 4개, 브로드캐스트 주소도 4개
Subnet을 나누기 위한 작업
먼저 호스트의 수를 파악한 후, 어떻게 서브넷을 나눌것인지 판단한 후, 서브넷팅한다.
ex) 어떤 기업에서 10.0.0.0/8을 할당받았을 때, 8개의 부서별로 네트워크를 나누어라.
1) 네트워크 이름과, 서브넷 마스크를 이진수로 표시하고 NetID와 HostID범위를 확인한다.
10.0.0.0 => 00001010 . 00000000 . 00000000 . 00000000
255.0.0.0 => 11111111 . 00000000 . 00000000 . 00000000
2) 주어진 조건에 맞춰서 서브넷 마스크를 변경한다. (할당된 네트워크는 변하지 않으므로 NetID는 변하지 않는다.) 8개의 부서로 나눠야되므로, 8을 2진수로 표현하려면 3자리가 필요하다.(2^3 = 8)
(subnet mask를 3bit늘림)
11111111 . 11100000 . 00000000 . 00000000 => 255.224.0.0
3) 변경된 서브넷 마스크를 네트워크 이름에 적용시키고 변경된 네트워크가 가지는 모든 수를 구한다.
(늘린 3bit의 경우의 수를 모두 구함 => 000, 001, 010, 011, 100, 101, 110, 111 => 총 8개)
11111111 . 11100000 . 00000000 . 00000000 = > 255.224.0.0
00001010. 00000000 . 00000000 . 00000000 => 10.0.0.0
00001010 . 00100000 . 00000000 . 00000000 => 10.32.0.0
00001010. 01000000 . 00000000 . 00000000 => 10.64.0.0
00001010. 01100000 . 00000000 . 00000000 => 10.96.0.0
00001010. 10000000 . 00000000 . 00000000 => 10.128.0.0
00001010. 10100000 . 00000000 . 00000000 => 10.160.0.0
00001010. 11000000 . 00000000 . 00000000 => 10.192.0.0
00001010. 11100000 . 00000000 . 00000000 => 10.224.0.0
=> 총 8개의 네트워크가 만들어진다.
=> 8개의 네트워크가 만들어졌으므로, 8개의 네트워크이름, 브로드캐스트 주소가 만들어 진다.
이렇게되면, 8개의 네트워크가 만들어 졌으므로, 10.0.0.0/11 네트워크안에서는 각각의 네트워크(8개)안에서만 브로드캐스트가 이루어집니다.
ex) 10.0.0.0주소에서 브로드캐스팅을 하게되면 10.0.0.1~10.31.255.254까지만 패킷을 전달 받습니다.
-> 10.0.0.0(네트워크이름), 10.31.255.255(브로드캐스트 주소)