본문 바로가기

Ryu's Tech

Subnetting [서브네팅],


간단하게 먼저 컴퓨터의 IP를 수동으로 설정할 때에 쓰이는 것이 IP 주소, 서브넷주소, 게이트웨이 주소 이렇게 세가지를 입력하여야 제대로 IP를 받고 인터넷을 사용할 수 있습니다.

그렇다면 IP주소만 받아야 쓸 수 있는 줄 알았는데 서브넷 주소는 무엇일까요?
이는 네트워크를 구분하는 방법이라고 생각하시면 됩니다.
하나의 예를 들면

5.5.100.254 와 5.5.100.100 에 대하여 한번 보겠습니다. 두 IP의 서브넷은 255.255.255.0 으로 같은 서브넷을 가지고 있습니다.
그렇다면 두 주소는 같은 네트워크에 속해 있는 걸까요?


5.5.100.254 -> 00001001 . 00000101 . 01100100 . 11111110
5.5.100.100 -> 00001001 . 00000101 . 01100100 . 01100100

위 두 아이피에 서브넷을 붙여 보겠습니다.

5.5.100.254    -> 00001001 . 00000101 . 01100100 . 11111110
255.255.255.0 -> 11111111 . 11111111 . 11111111 . 00000000

5.5.100.100    -> 00001001 . 00000101 . 01100100 . 01100100
255.255.255.0 -> 11111111 . 11111111 . 11111111 . 00000000

이를 xor 연산을 하게 되면 같은 네트워크만이 남는데 xor에 대해 잘 모르시는 분들은 그냥 이렇게 생각하시면 됩니다.
서브넷 주소가 0인 부분을 무시하고 서브넷 주소가 1인 부분만 보면 5.5.100 으로 똑같습니다.
그러므로 두 아이피는 같은 네트워크에 속해 있다고 할 수 있습니다.




서브네팅에 대해 알아보겠습니다.


이를 사용하는 이유는 예를들어 Class C의 주소를 사용하면 256개의 호스트만을 가지는 하나의 네트워크 만을 가질 수 있습니다.


11111111.11111111.11111111.00000000 -> 255.255.255.0 (1Network / 256Host)
11111111.11111111.11111111.10000000 -> 255.255.255.128 (2Network / 128Host)
11111111.11111111.11111111.11000000 -> 255.255.255.192 (4Network / 64Host)
11111111.11111111.11111111.11100000 -> 255.255.255.224 (8Network / 32Host)
11111111.11111111.11111111.11110000 -> 255.255.255.240 (16Network / 16Host)
11111111.11111111.11111111.11111000 -> 255.255.255.248 (32Network / 8Host)
11111111.11111111.11111111.11111100 -> 255.255.255.252 (64Network / 4Host)
11111111.11111111.11111111.11111110 -> 255.255.255.254 (128Network / 2Host)
11111111.11111111.11111111.11111111 -> 255.255.255.255 (256Network / 1Host)

위와 같이 서브넷을 사용하면 네트워크의 수와 호스트의 수를 여러가지로 나눌 수 있습니다.

211.110.20.0 / 255.255.255.0 Network를 4개의 Network로 Subneting 하여라.
위의 문제를 풀어 볼까요?

4개의 네트워크로 나누라고 하였으니 2비트를 네트워크로 설정하면 되겠군요
11111111.11111111.11111111.11000000 -> 255.255.255.192 (4Network / 64Host)
이를 사용하면 되겠네요.

0000 0000 ~ 0011 1111 =>   0 ~ 63
0100 0000 ~ 0111 1111 =>  64 ~ 127
1000 0000 ~ 1011 1111 => 128 ~ 191
1100 0000 ~ 1111 1111 => 192 ~ 255

그렇다면 이런식으로 나누어 지겠군요.
서브넷은 당연히 11111111.11111111.11111111.11000000 이므로 255.255.255.192 가 되겠구요

각 네트워크에서 사용할 수 있는 호스트 주소는 아래와 같습니다.
211.110.20.0 ~ 63
211.110.20.64 ~ 127
211.110.20.128 ~ 191
211.110.20.192 ~ 255

이렇게 하면 총 64개의 호스트를 사용할 수 있다고 하지만 사실은 -2를 해주어야 합니다.
그 이유는 첫 주소는 네트워크 주소, 마지막 주소는 Broadcasting 주소로 빠져야 하기 때문입니다.
Host ID -> all 0 -> network address
Host ID -> all 1 -> broadcast address

그러므로 문제에서 잘 파악하셔야 할것이 어떠한 문제에서 8개의 호스트로 나누라고 하였을때...
11111111.11111111.11111111.11111000 -> 255.255.255.248 (32Network / 8Host)
이 서브넷을 사용하시면 틀린 것입니다. 이유는 8-2 = 6 이므로, 실제 사용가능한 호스트는 6이므로
11111111.11111111.11111111.11110000 -> 255.255.255.240 (16Network / 16Host)
이 서브넷을 사용하셔야 합니다.



IP Subnet zero


11111111.11111111.00000000.00000000 : 255.255.0.0 (1/65536)
11111111.11111111.10000000.00000000 : 255.255.128.0 (2/32768)
11111111.11111111.11000000.00000000 : 255.255.192.0 (4/16384)
11111111.11111111.11100000.00000000 : 255.255.224.0 (8/8192)
11111111.11111111.11110000.00000000 : 255.255.240.0 (16/4096)
11111111.11111111.11111000.00000000 : 255.255.248.0 (32/2048)
11111111.11111111.11111100.00000000 : 255.255.252.0 (64/1024)
11111111.11111111.11111110.00000000 : 255.255.254.0 (128/512)
11111111.11111111.11111111.00000000 : 255.255.255.0 (256/256)
11111111.11111111.11111111.10000000 : 255.255.255.128 (512/128)
11111111.11111111.11111111.11000000 : 255.255.255.192 (1024/64)
11111111.11111111.11111111.11100000 : 255.255.255.224 (2048/32)
11111111.11111111.11111111.11110000 : 255.255.255.240 (4096/16)
11111111.11111111.11111111.11111000 : 255.255.255.248 (8192/8)
11111111.11111111.11111111.11111100 : 255.255.255.252 (16384/4)
11111111.11111111.11111111.11111110 : 255.255.255.254 (32768/2)
11111111.11111111.11111111.11111111 : 255.255.255.255 (65536/1)

위의 나열된 IP들을 보시면 첫번째 IP address의 경우 첫번째 서브넷은 class B의 network address를 가지고 있고 마지막 주소는 class B의 broadcast address를 가지고 있습니다. 그래서 이를 원래는 사용하지 않기로 하였으나 IP 주소의 고갈로 인해 ip subnet-zero를 사용하게 된 것입니다. ip subnet zero가 쓰이기 전에는 서브넷 갯수는 (2^n)-2 였던것이죠