개발박사가 되고싶은 척척학사

[네트워크] 서브넷마스크 (서브넷마스크 구하기, IP 클래스) 본문

Network

[네트워크] 서브넷마스크 (서브넷마스크 구하기, IP 클래스)

척척학사 2024. 1. 8. 00:38

 

서브넷마스크가 무엇인지 설명하기에 앞서, IP주소의 클래스가 무엇인지 간단히 설명해보려고 한다. 

IP 클래스

IP주소를 보다 계획적으로 사용하기 위해 IP를 일정 단위로 분류한 개념이다. 전체 클래스는 A, B, C, D, E의 5개 클래스로 구분되며, 이때 IP의 클래스에 따라 IP 주소의 구조가 결정된다. 

 

IP주소는 Network ID와 Host ID로 구성되어있는데, 각 클래스마다 네트워크 ID와 호스트 ID 영역의 길이가 다르다. 

  • Network ID : IP 주소에서 고정된 주소 값을 가지는 첫 번째 영역으로, 네트워크의 주소를 나타냄 
  • Host ID : 네트워크 ID 영역을 제외한 나머지 영역으로, 단말장치의 주소를 나타낸다. 

서브넷마스크란?

네트워크에 연결된 단말들은 IP 주소를 기준으로 서로 동일한 네트워크인지, 다른 네트워크인지 구분할 수 있다. 동일한 네트워크로 묶여 서로 통신할 수도 있지만, 서로 다른 네트워크에 소속되어 통신을 할 수 없는 경우도 있다. 

IP주소에서 위에서 언급한 Network ID가 동일한 경우가 동일한 네트워크로 묶인 경우이다. 

 

전체 IP 주소를 일정 단위의 그룹으로 나누고, IP가 동일한 그룹에 속해있다면 단말장치들끼리 서로 동일한 네트워크에 속한다고 할 수 있다. 그와 반대로, 다른 그룹에 속해있다면 서로 다른 네트워크에 속해있는 것이다. 이 때, 전체 IP를 단위 그룹으로 나뉘도록 필터링하여 네트워크를 구분할 수 있도록하는 것이 서브넷 마스크다. 쉽게 말해, IP주소에서 Network ID와 Host ID를 구분해주는 역할을 하는 것이다. 

 

단말장치에 할당 가능한 전체 IP가 10.0.0.0~10.3.255.255라고 가정할 때, 해당 IP 주소 대역은 아래와 같이 서브넷 마스크를 통해서 총 4개의 그룹으로 (네트워크 A, B, C, D) 나뉘게 되며, IP가 같은 그룹에 속한 단말들은 같은 네트워크에 속해있는 것이다. 

 


서브넷마스크 구하기 

서브넷마스크를 구하기 위해서는 AND 연산이 사용되는데, 한 가지 예를 들어 IP 주소 '121.188.177.233' 에 적용하여 24bit 영역 부분만 필터링 해보도록 하자. 우선 IP 주소에서 필터링하고 싶은 24bit 영역은 AND연산을 통해 그대로 동일한 결과 값이 출력되도록, 24bit 영역에는 2진수 1을, 나머지 8bit 영역에는 '0'으로 값을 주면 된다.  그럼 필터링을 위한 IP 주소 '11111111.11111111.11111111.00000000' 이 생성 된다. 

이제 2진수의 AND 연산을 위해 IP 주소도 2진수로 변환하고, 필터링을 위한 IP 주소  '11111111.11111111.11111111.00000000'와 AND 연산을 해준다. 연산 결과를 10진수로 다시 변환해주면 121.188.177.0 이라는 결과를 얻을 수 있다. 

 

이 결과로, 121.188.177 까지가 Network ID라는 것을 알 수 있으며, 

필터링을 위한 IP 주소  '11111111.11111111.11111111.00000000' 를 10진수로 변환하여 255.255.255.0이라는 결과가 나오게 되는데 이것이 바로 서브넷 마스크이다. 

 


위에서 전체 클래스는 A, B, C, D, E의 5개 클래스로 구분되며, 이때 IP의 클래스에 따라 IP 주소의 구조가 결정된다고 설명했다. 그럼 이번엔 각 클래스마다 어떤 형태의 네트워크 ID, 호스트 ID를 가지게 되는지 알아보려고 한다.

 

A 클래스

A 클래스는 IP 주소 중 전반부 8bit를 네트워크 ID 영역으로 정의하고, 후반부 24bit를 호스트 ID 영역으로 구분하며, 최상위 첫 번째 비트는 반드시 '0'을 공통된 값으로 가진다. 

 

따라서, 이론적으로는 A클래스에서 0.0.0.0 ~ 127.255.255.255까지의 주소 값을 가질 수 있다. 하지만 네트워크ID 0번, 10번, 127번대역의 IP주소는 특별한 목적으로 사용처가 예약되어있기 때문에 실제로 이러한 IP 주소 전체를 사용하지는 못한다. 그래서 실제 클래스A의 사용 가능한 네트워크ID는 128개가 아닌 총 125개가 된다.

 

B 클래스 

B 클래스는 IP 주소 중 전반부 16bit를 네트워크 ID 영역으로 정의하고, 후반부 16bit를 호스트 ID 영역으로 구분하며, 최상위 첫 번째, 두 번째 비트는 '10'의 공통된 값으로 가진다. 

 

즉, 클래스 B의 네트워크 ID는 첫 번째 8bit 값이 128에서 191까지의 범위로 64개, 두 번째 8bit 값이 0에서 255까지의 범위로 256개를 설정할 수 있으며, 전체 호스트ID는 0.0부터 255.255 까지의 단말장치 주소 값을 가질 수 있다. 이론적으로 클래스 B는 앞의 네트워크 ID와 호스트 ID를 합쳐서 128.0.0.0부터 191.255.255.255까지의 IP주소를 사용할 수 있는 것이다.  

그러나 A 클래스와 마찬가지로, 예약되어있는 네트워크 주소가 있는데  169.254 , 172.16 ~172.31 의 네트워크ID를 가진 IP주소는 사용할 수 없다. 

 

C 클래스 

B 클래스는 IP 주소 중 전반부 24bit를 네트워크 ID 영역으로 정의하고, 후반부 8bit를 호스트 ID 영역으로 구분하며, 최상위 3비트는 '110'의 공통된 값으로 가진다. 

 

따라서, 네트워크ID 구간을 10진수로 변환하면 192.0.0부터 223.255.255까지 표현이 가능하다. 호스트ID는 8bit 구간을 10진수로 변환한 0부터 255까지의 단말장치 주소 값을 가질 수 있다. 즉, 이론적으로 클래스C는 앞의 네트워크ID와 호스트ID를 합쳐서 192.0.0.0 부터223.255.255.255까지의 IP주소를 사용할 수 있는 것이다. 그러나 클래스 A, B와 마찬가지로 특수 목적으로 사용처가 예약되어 있는 네트워크 ID가 있는데, 네트워크 ID가 192.0.2, 192.88.99, 192.168.0 ~ 192.168.255, 198.18.0 ~ 198.19.255인 IP주소는 사용할 수 없다.

 

D 클래스

클래스 D는 최상위 네 개의 비트가 1110 을 공통 값으로 가지는 IP주소 범위다. 이렇게 되면 사용 가능한 IP주소 범위는 10진수로 변환하면 224.0.0.0 부터 239.255. 255.255 까지다.

 

하지만 클래스 D의 IP 주소는 멀티캐스트 IP주소로 이미 예약되어 있기 때문에 클래스 D의 IP 주소를 단말장치에 할당하여 사용할 수는 없다. 그래서 클래스 D 부터는 네트워크ID와 호스트ID로 영역을 구분하지 않는다. 어차피 단말장치에 할당하기 위한 주소가 없기 때문이다.

 

E 클래스 

 클래스 E는 IP 주소의 최상위 4개 비트가 1111의 고정 값을 갖는다. 이걸 10진수로 변환하면 240.0.0.0 ~ 255.255.255.255 까지이며, 하지만 클래스E의 IP주소는 연구 및 특수 목적으로 이미 예약되어 있어 클래스 D와 마찬가지로 단말 장치에 할당하여 사용할 수 없다. 

 

 

 

본 포스팅은 도서 <개념이 보이는 네트워크 기초>를 공부하며 정리한 내용입니다.