네린이 네트워크 성장기

서브넷 마스크(Subnet Mask) 본문

네트워크 기초

서브넷 마스크(Subnet Mask)

네네성 2025. 2. 17. 18:39

서브넷 마스크(Subnet Mask)란?

일단 말 그대로 서브, 즉 메인이 아닌 어떤 가공을 통한 

네트워크를 만들기 위해서 씌우는 마스크라고 생각하면 된다.

네트워크를 여러 개의 작은 네트워크(서브넷)으로 나누는 데 사용된다.

 

서브넷 마스크에도 기본이 있는데

A 클래스의 서브넷 마스크는 255.0.0.0

B 클래스의 서브넷 마스크는 255.255.0.0

 C 클래스의 서브넷 마스크는  255.255.255.0

이 된다. 즉 네트워크 부분은 이진수 1로 나타내고 

호스트 부분은 0으로 나타낸 것이다.

 

 

서브넷팅(Subnetting)

간단히 IP주소를 효율적으로 나누어 사용하기 위한 방법이다.

 

예를들어 C 클래스 IP인 192.168.10.0/25 가 있다고 하자.

여기서 /25는 프리픽스라고 하며 32개의 비트중 25개가 

네트워크 주소임을 나타낸다.

그럼 서브넷 마스크가 255.255.255.1000 0000 이란 것이다.

뒤에 부분까지 이진수로 바꿔 써보면 255.255.255.128이 된다.

 

 

자 그럼 여기서 간단한 문제를 하나 풀어보겠다.

 

B 클래스를 6개의 네트워크로 구분하여 사용하고 싶을 때,

가장 적절한 서브넷 마스크의 값은 무엇인가?

 

우선 B 클래스의 기본 서브넷 마스크는 255.255.0.0이다.

다음은 3번째 옥텟이다.

0 0 0 0 0 0 0 0

 

첫번째 비트에서 0 또는 1이 올 수 있고

또 다음 비트에서 0 또는 1이 올 수 있다.

두번째 비트까지 총 4개의 경우의 수가 있는 것이다.

하지만 문제에서 6개의 네트워크로 구분하고 싶다고 했으니

다음 비트까지 사용해야한다.

1 1 1 0 0 0 0 0

 

그렇다면 이렇게 될 것이고 최종적으로 255.255.224.0이 된다.

 


 

다른 한 문제를 더 풀어보겠다.

C 클래스의 네트워크를 서브넷으로 나누어 각 서브넷에 4~5대의 

PC를 접속해야 할 떼 서브넷 마스크 값으로 올바른 것은?

 

이 말은 각 네트워크에 4~5개의 호스트 부분을 할당해야 한다는 것이다.

 

C 클래스의 기본 서브넷 마스크는 255.255.255.0이다.

문제를 푼다면 4번째 옥텟은 다음과 같아야 한다.

1 1 1 1 1 0 0 0

 

그렇다면 최종적으로 255.255.255.248이 된다.

 


 

진짜 마지막으로 한 문제를 더 풀어보겠다.

IP주소 203.10.24.27이란 호스트의 서브넷 마스크는 255.255.255.240이다.

이때 이 네트워크의 호스트 범위와 브로드캐스트 주소는 어떻게 되는가?

 

먼저 C 클래스이고 서브넷 마스크의 마지막 옥텟을

이진수로 바꿔보면 다음과 같이 된다.

1 1 1 1 0 0 0 0

 

그렇다면 각 네트워크에 16개의 호스트 부분을 할당했다는 것을 알 수 있다.

(네트워크 주소와 브로드캐스트 주소를 빼면 14개긴 함)

 

그렇다면 다음과 같이 나눌 수 있다.

203.10.24.0 ~ 203.10.24.15

203.10.24.16 ~ 203.10.24.31

203.10.24.32 ~ 203.10.24.47

:

203.10.24.239 ~ 203.10.24.255

 

그럼 문제에서 IP는 203.10.24.27이기 때문에

네트워크 주소는 맨 앞 203.10.24.16이고

호스트 범위는 203.10.24.17 ~ 203.10.24.30

브로드캐스트는 203.10.24.31이 된다.


 

 

처음 서브넷마스크 계산하는걸 접했을 때는 

많이 헷갈리고 어려웠지만 여러 문제를 풀어보고

정보처리기사에도 나오고 네트워크 관리사에서도

적당히 풀어봐서 익숙해진 것 같다.

 

그리고 이진수 <-> 십진수 변환을 빠르게 하는 방법이 있다.

어디 유튜브인가 보고 배운적이 있는데

아직도 그 방법을 사용하고 있다.

 

 

이진수 <-> 십진수 변환

음 우선 각 자리별로 생각하면 된다.

이진수 1 1 1 0 0 0 0 0
자리별 값 128 64 32 16 8 4 2 1

 

오른쪽부터 1, 2, 4, 8 ... 이렇게 배치하는 것이다.

(256, 512, ... 더 가도 된다. 근데 255까지만 알면 되니깐)

 

위의 표를 보면 이진수 값이 1인 것만 더해주면 된다.

128 + 64 + 32 = 224가 된다. 이런식이다.

이진수 1 1 1 1 1 0 0 0이 있다면 248이 되는 것이다.

 

 

반대로 십진수에서 이진수를 바꾸려면 자리별 값을 왼쪽에서 부터 더해주면 된다.

한마디로 자리별 값을 더해서 십진수 값을 만들면 된다.

자리별 값 128 64 32 16 8 4 2 1

 

예를들어 십진수 210이라고 하면 

128 + 64 + 16 + 2 = 210 인데 각 더한 값이 이진수 1이라고 생각하면 된다

그러면 1 1 0 1 0 0 1 0 이 된다. 이렇게 간단하게 할 수 있다.

 

 

 

학부생때는 2로 나누고 나머지 어쩌구 저쩌구

막 했던거 같은데 지금은 이 방법이 더 편한 것 같다.

 

 

근데 솔직히 컴퓨터나 스마트폰 있으면 변환기 쓰면 됨

 

'네트워크 기초' 카테고리의 다른 글

브리지 ID와 Path Cost  (0) 2025.02.19
스패닝 트리 알고리즘  (0) 2025.02.19
IP  (0) 2025.02.17
영역(domain)  (0) 2025.02.08
TCP/IP  (0) 2025.02.08