Programming/Computer Science

(network) 서브넷 마스크 개념 정리 및 문제 풀이

Jan92 2024. 9. 8. 00:43
반응형

서브넷 마스크(+ 서브넷팅) 개념 정리 및 문제 풀이

해당 포스팅은 네트워크 영역에서 헷갈릴 수 있는 부분인 '서브넷 마스크'에 대한 개념적 이해를 돕기 위해 정리한 내용입니다.

서브넷 마스크 문제는 정보처리기사, 리눅스 마스터 등 자격증 시험에도 출제되는 개념이기 때문에 한번 잘 이해해 두면 도움이 될 것이라고 생각합니다.

(아래 내용은 IPv4 주소 체계 및 IP 주소 클래스에 대한 기본적인 이해가 우선적으로 필요합니다.)

 


1. IP 주소의 '네트워크 영역'과 '호스트 영역'

ip 주소 네트워크 영역, 호스트 영역

 

네트워크 영역

IP 주소는 '네트워크 영역'과 '호스트 영역'으로 나눠서 볼 수 있는데요.

'네트워크 영역'의 경우 IP 주소 앞부분에 위치하며, 특정 네트워크를 식별하는 데 사용됩니다.

네트워크 영역은 동일한 네트워크에 있는 모든 장치들에 대해 동일하게 유지된다는 특징이 있습니다.

 

예를 들어 IP 주소가 '192.168.1.10'이고 네트워크 영역이 '192.168.1'로 정의된다면, 해당 주소에 속한 네트워크의 모든 장비는 '192.168.1'로 시작하는 IP 주소를 가지게 되는 것입니다.

 

이러한 네트워크 영역의 크기를 결정하는 것이 바로 '서브넷 마스크(subnet mask)'인데요.

서브넷 마스크에 대해서는 아래 내용을 통해 조금 더 자세하게 살펴보도록 하겠습니다.

 

 

호스트 영역

이어서 '호스트 영역'입니다. 호스트 영역은 네트워크 내에서 특정 장치(컴퓨터, 라우터, 프린트 등)를 식별하는 데 사용됩니다.

동일한 네트워크에 속한 장치의 경우 네트워크 영역을 공유하지만, 식별을 위한 호스트 영역은 고유해야 한다는 특징이 있습니다.

 

예를 들어서 '192.168.1'이라는 네트워크 영역에 속한 장치의 호스트 영역은 '0 ~ 255'까지의 값을 가질 수 있으며, 각각의 장치(호스트)는 '192.168.1.4', '192.168.1.5' 등 고유한 IP 주소를 가지게 되는 것입니다.

 

 


2. 서브넷 마스크(Subnet Mask)와 서브넷팅(Subnetting)

서브넷 마스크와 서브넷팅

서브넷 마스크

'서브넷 마스크(Subnet Mask)'는 IPv4 주소처럼 32비트 길이의 이진수로 구성되며, IP 주소에서 네트워크 영역과 호스트 영역을 구분하는 데 사용되는데요.

(네트워크의 크기와 네트워크 내에서 사용할 수 있는 호스트의 수를 결정합니다.)

 

네트워크 영역을 나타내는 비트는 '1' 호스트 영역을 나타내는 비트는 '0'으로 설정되며, 어디까지가 네트워크 부분인지 구분하기 위해 반드시 '1'이라는 비트 값이 연속되어야 합니다.

 

예를 들어 '255.255.255.0'이라는 서브넷 마스크를 이진수로 바꿔보면 '11111111.11111111.11111111.00000000' 다음과 같이 앞에서부터 네트워크를 나타내는 '1' 비트 값이 연속되는 것을 확인할 수 있습니다.

 

 

서브넷팅

'서브넷팅(Subnetting)'은 하나의 큰 네트워크를 여러 개의 작은 서브넷(Subnet)으로 나누는 과정입니다.

이를 통해 네트워크 관리의 효율성을 높일 수 있으며, 필요 이상으로 큰 네트워크를 구성하지 않게 해 주기 때문에 IP 주소 자원의 낭비를 줄일 수 있습니다.

 

예를 들어 약 200개의 IP 주소가 필요한 회사에 '255.255.0.0'의 서브넷 마스크가 적용되는 B 클래스(2^16 -2 = 65,534개의 호스트 사용 가능)의 IP를 할당한다면, 사용될 약 200개의 IP 주소를 제외한 나머지 6만 5천여 개의 주소는 사용되지 않고 낭비되는 것인데요.

때문에 필요에 맞는 '255.255.255.0'의 서브넷 마스크가 적용되는 C 클래스(2^24 -2 => 252개)의 IP를 할당함으로써 IP 주소 자원의 낭비를 줄일 수 있습니다.

 

 


클래스풀과 클래스리스(+ CIDR 표기법)

IP 주소 체계에는 '클래스풀(Classful) IP 주소 체계'와 '클래스리스(Classless) IP 주소 체계'가 있는데요.

 

클래스풀 IP 주소 체계

클래스풀(classful) IP 주소 체계

먼저 '클래스풀(Classful)'의 경우 A, B, C, D, E라는 고정된 주소 클래스 기반의 IP 주소 체계를 말합니다.

각 클래스는 고정된 서브넷 마스크로 인해 네트워크 영역과 호스트 영역의 크기가 지정되어 있기 때문에, 위에서 살펴본 예시처럼 IP 주소가 낭비 발생할 수 있다는 문제가 있습니다.

 

* 네트워크 영역에서 '0.x.x.x' 범위는 특수 용도로 예약되어 있으며, '127.x.x.x' 범위는 루프백 주소로 예약되어 있기 때문에 사용할 수 없습니다.

* 호스트 영역에서 네트워크 주소와 브로드캐스트 주소 2개는 사용할 수 없습니다.

 

 

 

클래스리스 IP 주소 체계

C 클래스 대역 기준 서브넷 마스크에 따른 네트워크 수 및 호스트 수

'클래스리스, CIDR(Classless Inter-Domain Routing)'의 경우 클래스가 존재하지 않는 도메인 간 라우팅 기법을 의미하며, 클래스풀(Classful) IP 주소에서 발생하는 IP 주소 낭비를 해결하기 위해 만들어졌습니다.

 

기존의 클래스풀 주소 체계에서는 각 클래스에 대해 지정된 서브넷 마스크가 있었는데요.

(A Class: 255.0.0.0 / B Class: 255.255.0.0 / C Class: 255.255.255.0)

클래스리스 주소 체계에서는 32비트의 서브넷 마스크를 1비트 단위로 네트워크 영역과 호스트 영역으로 수분할 수 있도록 하여 호스트 주소를 더 유연하게 할당할 수 있게 되었습니다.

 

 

 

CIDR 표기법

CIDR 표기법

위 내용에서 서브넷 마스크는 32비트의 값 중에 '연속된 1 비트 값'을 통해 네트워크 영역을 나타낸다고 했는데요.

CIDR 표기법은 IP 주소 뒤에 '슬래시(slash, /)' 기호를 쓰고 그 뒤에 서브넷 마스크의 연속된 1의 비트 수로 서브넷 마스크를 표현하는 방식입니다.

 

 


서브넷 마스크 관련 문제

1. IP 주소 및 서브넷 마스크가 '192.168.3.194/26'과 같을 때 네트워크 주소 및 브로드캐스트 주소, 해당 서브넷에서 사용 가능한 호스트 주소 범위는?

 

네트워크 주소: 192.168.3.192

브로드캐스트 주소: 192.168.3.255

사용 가능한 호스트 주소 범위: 192.168.3.193 ~ 192.168.3.254

 

 

먼저 '/26'을 서브넷 마스크로 표현하면 '255.255.255.192'가 되고, 이진수로 표현하면 '11111111.11111111.11111111.11000000'입니다.

네트워크 주소의 경우 IP 주소와 서브넷 마스크의 AND 연산으로 계산하게 되는데요.

 

# (IP 주소 - 192.168.3.194)
11000000. 10101000. 00000011. 11000010

# (서브넷 마스크 - 255.255.255.192)
11111111. 11111111. 11111111. 11000000

# (네트워크 주소 - AND 연산 결과)
11000000. 10101000. 00000011. 11000000

(비트 AND 연산의 경우 대응되는 비트가 모두 1일 경우 1을 반환합니다.)

 

AND 연산의 결과를 10진수로 변환하면 네트워크 주소는 '192.168.3.192'가 됩니다.

 

 

# (네트워크 주소 - AND 연산 결과)
11000000. 10101000. 00000011. 11000000

# (브로드캐스트 주소 - 네트워크의 호스트 부분을 모두 1로 설정)
11000000. 10101000. 00000011. 11111111

 

이어서 브로드 캐스트 주소의 경우 네트워크 주소의 호스트 부분을 모두 1로 설정한 주소인데요.

브로드캐스트 주소를 10진수로 변환하면 '192.168.3.255'가 됩니다.

 

 

사용 가능한 호스트 주소의 경우 '/26' 서브넷에서는 총 64(2^6)의 IP 주소를 가질 수 있으며, 여기서 첫 번째 IP 주소는 네트워크 주소로 사용되고 마지막 IP 주소는 브로드캐스트 주소로 예약되어 있기 때문에 사용 가능한 호스트의 주소는 '192.168.3.193 ~ 192.168.3.254'까지, 총 62개의 호스트를 사용할 수 있습니다.

(네트워크 주소: 특정 네트워크를 식별하는 데 사용되는 IP 주소로 호스트 부분에 해당하는 비트를 모두 0으로 설정하여 네트워크 주소를 계산)

(브로드캐스트 주소: 네트워크 내의 모든 호스트에게 데이터를 전달할 때 사용되는 특별한 IP 주소)

 

***

실제로 문제를 풀 때는 십진수, 이진수 변환하는 과정이 번거롭기 때문에 반대로 서브넷에서 가질 수 있는 IP 개수를 먼저 파악하고(여기서는 64개), 서브넷의 범위를 나눈 다음(0~63, 64~127, 128~191, 192~255), 문제의 IP(.194)가 어느 서브넷 범위에 속하는지 확인(192~255)하고 해당 서브넷의 첫 번째 주소는 네트워크 주소(192), 마지막 주소는 브로드캐스트 주소(255)로 판단할 수도 있습니다.

 

 

 

 

2. C 클래스 네트워크 대역에서 서브넷 마스크 값을 '255.255.255.192'로 설정했을 때 네트워크 수(서브넷 개수)와 사용할 수 있는 호스트 수는?

 

네트워크 수(서브넷 개수): 4개

호스트 수: 248개(각 서브넷은 62개씩 사용 가능)

 

C 클래스의 기본 서브넷 마스크는 24비트이지만, 문제에서는 26비트를 네트워크로 사용하고 있습니다.

따라서 추가된 2비트를 서브넷 마스크로 사용할 수 있기 때문에 서브넷을 만들 수 있는 개수는 '2^2 = 4개'입니다.

 

'/26' 서브넷에서는 총 64(2^6) 개의 IP 주소를 가질 수 있으며, 네트워크 주소와 브로드캐스트 주소를 제외하면 사용할 수 있는 호스트의 수는 총 62개 입니다.

따라서 각 서브넷에서 사용할 수 있는 호스트 주소는 62개이고, 4개의 서브넷이 있기 때문에 사용할 수 있는 총 호스트 주소는 '62 * 4 = 248개'가 됩니다.

 

 

 

 

< 참고 자료 >

https://zzang9ha.tistory.com/413

https://louis-j.tistory.com/entry/Subnet-mask-%EC%84%9C%EB%B8%8C%EB%84%B7-%EC%84%9C%EB%B8%8C%EB%84%B7%EB%A7%88%EC%8A%A4%ED%81%AC-%EC%84%9C%EB%B8%8C%EB%84%B7%ED%8C%85%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C

반응형