42seoul/net what

Netmask란 무엇인가?

codingmonsters 2021. 3. 2. 01:11

1. 넷마스크(Netmask, 네트워크 마스크)

 

요즘은 넷마스크라는 용어 대신 서브넷마스크 용어를 많이 사용하지만 정리해 보겠다. 네트워크마스크를 넷마스크라고 하기도 한다.

 

넷마스크 = 네트워크 마스크라고 말하기도 한다. network masksubnet mask를 구분하지 않는다.... 너무 옛날 방식이기 때문

CIDR(Classless Inter-Domain Routing : 클래스 없는 도메인간 라우팅 기법) 이 생긴 이후 network를 쪼개면서 subnet mask가 생겼기 때문에 netmask는 잘 언급되고 있지 않다. 엄연히 말하면 nwtmask와 subnetamsk가 같은 의미라고 생각하면 편하겠다.

 

 

  • 네트워크 주소 부분의 비트를 1로 치환한 것이 넷마스크이다.
  • IP주소와 넷마스크를 AND연산을 하면 네트워크 주소를 얻을 수 있다.
  • 사용중인 IP주소를 보면 IP주소로부터 네트워크 주소를 알아낼 있다.

 

134.45.72.2 라는 IP 있다면, 옥탯의 숫자를 통해 B클래스 IP주소라는 것을 있다. 

 

  1. 134.45.72.2라는 IP를 8비트 2진수로 표현하면.   10000110 . 00101101 . 01111000 . 00000010 표현가능하다.
  2. B클래스 임으로 넷마스크를 255.255.0.0 이다.(11111111 . 11111111 . 00000000 . 00000000)
  3. 넷마스크와 &계산을 하면, 10000110 . 00101101 . 00000000 . 00000000 이 되며
  4. 네트워크 주소는 10진수로 바꾸면 34 . 45 . 0 . 0이 되는 것을 알 수 있다.

 

 

 

2. 서브넷 마스크(subnet mask)

2.1 서브넷마스크란?

 

서브넷 마스크란 IP주소에서 네트워크 아이디와 호스트 아이디를 구별하기 위한 구분자 역할을 하는 마스크입니다.

 

여기서 마스크란 우리가 얼굴에 쓰는 "마스크"와 같은 의미인데, 마스크를 씀으로써 얼굴이 바뀌어 보이듯

네트워크에서 혹은 어떤 프로그래밍에서 사용하는 "마스크"라는 용어는 어떠한 값을 도출해 내기 위한 "필터"개념으로 생각하시면 됩니다.

 

다시 본론으로 돌아와서 우리가 흔히쓰는 IP주소에는 서브넷 마스크라는게 따라옵니다.

서브넷 마스크를 씀으로써 네트워크 아디이와 호스트 아이디를 구별 짓게 하는 겁니다.

 

이러한 작업을 "서브네팅"한다고 말합니다.

 

 

예를들어,

 

PC의 IP가 192 . 168 . 0 . 1이라고 하고, 서브넷 마스크가 255 . 255  . 255 . 0이라고 가정 했을때

PC IP의 네트워크 아이디는 192 . 168 . 0 호스트 아디이는 1 이 됩니다.

 

 

서브넷 마스크는 255 . 255 . 255 . 0만 존재하지는 않습니다. 255 . 0 . 0 . 0도 서브넷마스크가 될 수 있으며

 

255 . 255 . 0 . 0.     |       255 . 255 . 238 . 0     |     255 . 255 . 224 . 0 등 여러가지가 존재합니다.

 

 

 

서브넷 마스크에는 규칙이 존재하는데 

 

255 . 255 . 255 . 0 이라는 서브넷 마스크를 . (dot)단위로 나눈 숫자 4부분을 옥텟이라고 합니다.

 

10진수로 표현되어 있는 4개의 옥텟을 2진수로 바꾸었을 때

 

xxxxxxxx . xxxxxxxx . xxxxxxxx . xxxxxxxx

11111111 . 11111111 . 11111111 . 00000000

 

128 / 64 / 32 / 16 / 8 / 4 / 2 / 1

 

 

우리가 netwhat에서 시험을 볼때 '1 . 0 . 0 . 1 / 24' 라고 표현되는 경우가 있는데  '/24'의 의미는 서브넷 마스크를 2진수로 표현했을 때 1의 개수를 말합니다.

 

 

서브넷마스크를 2진수로 표현할 때, '중간에 0이 나오면 뒤로는 무조건 전부 0이어야 합니다' 이라는 규칙이 있습니다.

 

만약, 255 . 255 . 260 . 0 이라는 서브넷 마스크를 2진수로 살펴보면

 

11111111 . 11111111 . 10100000 . 00000000

 

3번째 옥텟을 살펴보면 중간에 0이 하나 있기 때문에 255 . 255 . 160 . 0은 서브넷 마스크가 될 수 없습니다.

 

그렇기 때문에 서브넷 마스크 각 4개의 옥텟에 들어가는 숫자에는 들어갈 수 있는 숫자가 정해져 있습니다.

 

서브넷 마스크 네트워크 개수 1개의 네트워크 수용 가능 IP 개수
0 1 256
128 2 128
192 4 64
224 8 32
240 16 16
248 32 8
252 64 4
254 128 2
255 256 1

 

위의 숫자들은 각 옥텟의 1의 개수를 하나씩 줄이면 나오는 숫자들이다.

 10000000 . 00000000 . 00000000 . 0000000

110000000 . 00000000 . 00000000 . 0000000

.....

 

 

2.1  기본 서브넷마스크(Default Subnet Mask)

우리가 IP를 클래스오 나누는 이유는 결국 서브넷마스크를 사용하여 나누는 것과 마찬가지이다.

 

예를들어 C클래스를 사용한다면 C클래스 네트워크를 쪼개지 않고 그대로 하나의 네트워크에 할당할 수 있는 2^8 - 2 개의 호스트 ID를 사용하겠다는 것이며 이때는 255 . 255 . 255 . 0이 기본 서브넷 마스크가 된다. 위에서 계산에서 B클래스의 서브넷마스크를 바로 적용한 이유도 이러한 이유다. 

즉, "어떤 서브넷 마스크를 사용할까"를 생각하지 않아도 기본적으로 적용하는 서브넷 마스크가 정해져 있는 것이다.

이걸 "기본 서브넷 마스크"라고 말할 수 있으며, 기본 서브넷 마스크로 쪼개진 네트워크 주소를 서브넷 네트워크라고 한다.

 

IP 클래스별 기본 서브넷 마스크가 우리가 클래스별 IP표와 같다고 생각하면 된다.

 

 

2.2 서브넷팅

서브넷팅이란 (subneting) 서브넷 마스크를 알기 위해 서브네팅 개념을 원래 먼저 정리해야한다.

 

서브네팅이란 네트워크 관리자가 네트워크 성능을 향상시키위해, 네트워크를 효율적으로 분배하는 것을 의미한다.

네트워크워를 효율적으로 분배한다는 것은 네트워크 영역과 호스트 영역을 분할 하는 것 입니다.

 

그러면 왜 적절하게 분배해야하는 것일 까요?

 

브로드캐스트 도메인은 네트워크 환경에서 패킷전송을 느리게 하고 성능저하를 발생시킵니다. 왜냐하면 많은 네트워크 장비에 전송을 해야하기 때문이죠

따라서 네트워크를 쪼개서 통신성능을 보장해야 하며, 최대 2^32만큼의 표현가능한 수로 적절히 나눠야 합니다. 

이 것을 전문용어로 서브네팅이라고 하며, 반대는 슈퍼네팅이라고 합니다. 

 

서브넷팅은 다음 포스트에서 좀 더 자세히 알아보도록 하겠습니다.