×
Crocus
공부한 내용을 정리하는 블로그로 시작한
Crocus는 2014년 1월 14일 부터 시작하여
현재 월 6만명, 총 1,485,639명의 방문자 수를 기록하고 있습니다.
Donation
이제 많은 사용자들이 이용하는 만큼
더 다양한 서비스 개발/제공을 위해 후원금을 모금하고자 합니다.
후원을 해주시는 분들은 Donators 명단에 성명, 후원금을 기입해드리며
Crocus 블로그가 아닌 다른 곳에 정리해둔 저만의 내용을 공유해 드리고자 합니다.
Account
예금주 : 고관우
신한은행 : 110-334-866541
카카오뱅크 : 3333-01-7888060

👉 후원 페이지 바로가기 Donators
익명 : 5000원(Crocus응원합니다.)
busyhuman: 5000원(유용한 지식 감사합니다.)
익명 : 5000원(알고리즘 학습러)

서브넷 마스크(Subnet Mask)


서브넷 마스크 관찰하는 사이트 :: http://www.subnet-calculator.com/

서브넷 마스크는 IP 주소 체계의 Network ID와 Host ID를 서브넷 마스크를 통해 변경하여서 '네트워크 영역을 분리 또는 합체'시키는 것이다.


그리고 네트워크를 분리하는걸 서브넷팅(Subnetting)이라고 하며, 합치는걸 슈퍼넷팅(Supernetting)이라고 한다.


서브넷팅은 서브넷 마스크를 이용하여 Host ID를 Network ID로 변환하게 되고, 

슈퍼넷팅은 서브넷 마스크를 이용하여 Network ID를 Host ID로 변환한다.


즉, ip주소가 xxx.xxx.xxx.xxx로만이 끝이 아닌 서브넷 마스크를 씌었을 때 어떤 네트워크 영역에 존재하는지 알아내기 위해 쓰이는 것이고 클래스 구분이랑은 무관하다.


서브넷 마스크의 형태는 IP주소와 똑같이 32bit의 2진수로 되어 있으며, 8bit(1byte)마다 '.(dot)'으로 구분하고 있다. 

즉, IP와 똑같은 xxx.xxx.xxx.xxx의 모습을 가지고 있다. 


그러나 형태가 똑같다고 하여서 역할을 혼동하면 안되고, 

형태가 똑같은 이유는 IP주소와 서브넷 마스크를 AND 연산하기 위해서다. 



각 클래스마다 Network ID로 사용되는 옥탯에 255가 있다는 점을 확인할 수 있다.


이때 IP주소의 클래스를 구분할 때 서브넷 마스크로 계산하는 것은 잘못된 방식이다. 


서브넷이 등장한 이유 IP의 부족현상을 해결하기 위함인데 먼저 탄생한 IP의 주소체계를 서브넷을 통해 구분하시면 안된다.


IPv4 주소체계가 이렇게 복잡한 이유는 처음 IPv4를 연구할 때에는 지금처럼 인터넷 사용 기기가 많아질 거라고 예측하지 못하였기 때문이다.


그리고 IP주소 뒤에 /24 같은 것들이 붙어있는데 이는 Prefix(접두어)로 서브넷 마스크의 bit를 의미한다. 


옥탯의 8bit가 모두 1일 경우 10진수로 255가 되기에 /24는 왼쪽부터 나열된 1bit의 수가 24개라는 뜻이다.


따라서 192.168.0.3/24는 IP주소가 192.168.0.3 이며, 서브넷 마스크가 255.255.255.0이라는 의미가 된다.


지금은 어려워도 계속해서 진행해보자. 아래에서 또 다른 예제를 이용하여 이해를 해 볼 것이다.



서브넷팅의 특징


2진수로 표현하였을 때 Network ID 부분은 1이 연속적으로 있어야 하며, Host ID 부분은 0이 연속적으로 있어야 한다.

즉, 중간에 1이나 0이 섞이면서 나열될 수 없다. 이로 인해 서브넷 마스크는 Network ID를 확장하면서 1bit씩 확보하게 되면 네트워크 할당 가능 수가 2배수로 증가하지만 반대로 호스트 할당가능 수가 2배수로 줄어들게 된다


예를 들어 11111111.11111111.1111111.00000000(255.255.255.0)에서 네 번째 옥탯에 1bit를 확보하면 

11111111.11111111.11111111.10000000(255.255.255.128)이 된다.


서브넷팅을 통해 Network ID가 확장되므로 인해 할당할 수 있는 네트워크의 수가 늘어난다.


하지만 네트워크가 분리되므로 인하여 서로가 통신하기 위해서는 라우터를 통해서만 가능하게 된다. 

물론 각 네트워크에 속해 있는 호스트들은 같은 영역에 존재하기에 라우터까지 거치지 않고도 통신할 수 있다. 



서브넷팅 계산 방법


194.139.10.123/25

/25는 서브넷 마스크가 25bit라는 의미로 255.255.255.128이 된다.

이때 호스트에 IP를 할당할 수 있는 범위가 [0~127], [128~255]가 되고, 

네트워크는 [194.139.10.0], [194.139.10.128]이기에 2개로 나누어지게 된다.


결국 194.139.10.7/25가 속한 네트워크는 194.139.10.0/25 대역에 속하게 되며, 

다른 서브넷팅 된 네트워크와는 라우터를 통하여서만 통신할 수 있다.


이때 실제로 194.139.10.123이 194.139.10.0의 네트워크인지 194.139.10.128의 네트워크영역인지 확인하기 위해 & 연산을 해보자.


위의 ip 주소인 194.139.10.123을 서브넷 마스크 255.255.255.128에 &연산을 하면 194.139.10.0이 나온다.

따라서 이 ip 주소는 194.139.10.0의 네트워크 주소에 포함된다.



194.139.10.123/26

/26은 서브넷 마스크가 26bit이기에 255.255.255.192가 된다.

따라서 호스트에 할당 가능한 IP의 범위는 [0~63], [64~127], [128~191], [192~255]로 가능하며(256 - 192를 하면 범위가 나온다.)


네트워크는 [194.139.10.0], [194.139.10.64], [194.139.10.128], [194.139.10.192] 총 4개로 나누어지게 된다. 

따라서 194.139.10.123이 속한 네트워크는 194.168.10.64/26에 속하게 되며, 

서브넷팅 된 3개의 다른 네트워크와는 라우터를 통하여서만 통신할 수 있다.


이때도 194.139.10.123 & 255.255.255.192를 하면 194.168.10.64가 나타난다.


이때 각 네트워크를 구분할 때 각 범위의 가장 첫 번째 IP를 사용하고 있다는 것이다. 

이를 Network Address 라고 부르며, 사용할 수 없는 IP주소이다. 

또 가장 마지막 IP주소는 Broadcast address이기에 사용하실 수 없다.

따라서 각 네트워크의 IP 범위에서 가장 첫 번째 주소와 가장 마지막 주소 두 개는 호스트에 할당할 수 없다. 

이는 기본 서브넷 마스크(Default Subnet Mask)를 사용하여 서브넷팅을 시키지 않은 모든 네트워크에서도 동일하게 적용된다.



* 기본 게이트웨이 찾기 

항상 디폴트 게이트웨이는 Host Id가 1인 값이다.


이 ip주소의 기본 게이트웨이를 알기 위해서는 ip주소의 클래스를 알아야한다.

194는 1100 0010이니 C Class임을 알 수 있다.


따라서 앞에서 3번째까지가 모두 Network Id가 되고 뒤에 1옥텟만 Host Id이기에 194.168.10.1이 된다.


즉, 

130.168.51.111/20이면

서브넷 마스크는 255.255.240.0이되고

네트워크 아이디가 130.168.48.0이 되고

기본 게이트웨이는 130.168.48.1이고


130.168.51.111/16이면 

서브넷 마스크는 255.255.0.0이되고 

네트워크 아이디가 130.168.0.0이면 

기본 게이트웨이는130.168.0.1이다.


출처 : http://korean-daeddo.blogspot.com를 통해 제작하였습니다.




적응해보기


문제를 통해 전반적인 내용을 이해해보자.


192.168.51.111/20 이라는 IP가 존재한다. 이때 이 IP를 분석해보자.


1. 우선 /20을 봤으니 서브넷 마스크를 구할 수 있다. 왼쪽에서 1을 20개 넣어보자.

11111111.11111111.11110000.00000000

255.255.240.0이 서브넷 마스크가 된다.


2. 서브넷 마스크를 구했으니 Network ID를 구해보자.

192.168.51.111 & 255.255.240.0 = 192.168.48.0이 Network ID가 된다.


3. 이제 우리는 기본 게이트웨이를 알기 위해 IP의 클래스를 알아보자.

192 = 11000000이니 C클래스임을 알 수 있다.

따라서 3번째 옥텟까지 Network ID, 4번째 옥텟만 Host ID이므로 기본 게이트웨이는 호스트 값이 1이면 되기에 192.168.48.1이 된다.


4. 만약 192.168.63.255와 같은 네트워크에 존재하는지 알아보기 위해서는 서브넷 마스크를 이용해보자.

192.168.63.255 & 255.255.240.0 = 192.168.48.0 즉, 같은 네트워크 ID를 가진다는 것은 같은 네트워크에 존재한다는 것이다.

마찬가지로 192.168.60.211도 같은 네트워크에 속해있다.

192.168.60.211 & 255.255.240.0 = 192.168.48.0


5. 하지만 192.168.63.255로 IP를 할당 할 순 없다.

11111111.11111111.11110000.00000000에서 서브넷 마스크가 20개까지이고 나머지 12개가 호스트ID에 관여하는데

192.168.63.255를 보면 11000000.10101000.00111111.11111111이므로 안된다. 

그 이유는 호스트 ID가 0으로만 이루어져있거나 1로만 이루어져있다면 IP를 할당 할 수 없게 되어있다.


6. 192.168.48.1(HostMin) 과 192.168.63.254(HostMax) 사이에 포함되어 있으면 같은 네트워크에 있는 상태이다.

즉, 
나머지 비트 기준 00000...001 부터 11111...110 까지Host로 사용한다.
나머지 비트 기준 00000...000자기 자신이 속한 네트워크를 나타내며,
나머지 비트 기준 111111...111네트워크의 브로드캐스트를 의미한다.

그러므로 192.168.63.255로 IP를 할당할 수 없다. 해당 IP는 브로드캐스트용이므로 IP할당 불가하다.

7. 할당받을 수 있는 최대 호스트 수는 2^12 -2인 4094개이다.