logo
PostsInvestingHomebarArticlesAbout

네트워크 기초 / 2. 서브넷마스크(Subnetmask)

2020.07.11 / 10min

이전 글 복습하기

  • 네트워크 : 두 대 이상의 컴퓨터가 논리적 또는 물리적으로 연결되어 통신이 가능한 상태(PAN, LAN, MAN, WAN).
  • IP 주소 : 네트워킹이 가능한 장비를 식별하는 주소.
  • IPv4, IPv6
  • A, B, C 클래스 : 네트워크 영역과 호스트 영역을 구분한 기준
    • A : 0.0.0.0 ~ 127.255.255.255
    • B : 128.0.0.0 ~ 191.255.255.255
    • C : 192.0.0.0 ~ 223.255.255.255
  • 네트워크 주소 : 호스트 부분이 모두 0인 경우
  • 브로드캐스트 주소 : 호스트 부분이 모두 1인 경우

TOC

Subnetmask(서브넷마스크)

이전 글 내용을 떠올려보면 IP의 부족이 발생하여 IPv6가 나왔다. 그러나 그전에 서브넷마스크라는 것이 먼저 나왔으며, 제한적인 자원을 낭비 없이 아껴쓰기 위한 방법 중 하나로 지금도 많이 사용되고 있다.

서브넷마스크는 기본적으로 1과 0으로 구성되어 있으며, IP 크기와 동일하게 32자리 2진수로 표현된다. 크기가 똑같은 이유는 IP주소와 서브넷 마스크를 AND 연산하기 위해서다.

서브넷마스크는 IP와 크기는 같으나 표현에 있어서 차이가 있다. 서브넷마스크는 1이 연속으로 나와야 한다. 예를 들어 1101와 같은 표현은 없다. 무조건 0이 나오기 시작하면 그 뒤는 0이라고 생각하면 된다.

우리가 흔히 알고 있는 공유기로 예를 들어보자.

IP 주소에서 192.168.0.1/24라고 되어있다. 이는 C 클래스이며 기본 서브넷 마스크는 255.255.255.0이다. 우리가 아는 A, B, C 클래스에는 각각의 기본 서브넷 마스크가 존재하여 네트워크 영역과 호스트 영역으로 나뉜다. 결국 각각의 클래스가 가지고 있는 기본 서브넷마스크으로 인해서 네트워크 영역과 호스트 영역이 정해지는 것이다.

기본 서브넷 마스크 : 별개의 서브넷마스크를 생성하지 않아도 기본적으로 적용되어 있는 서브넷마스크

255.255.255.0을 이진수로 표현하면, 1111 1111. 1111 1111. 1111 1111. 0000 0000이다. 위에서 언급했듯이 한 번 0이 나오기 시작하면 뒤로는 다 0인 것을 확인할 수 있다. 또한 앞에서부터 1의 개수를 세면 24이다. 이에 위에서 /24로 표현이 되었다.

논리 AND 연산 방법

논리 AND 연산은 1 AND 1 = 1, 1 AND 0 = 0, 0 AND 1 = 0, 0 AND 0 = 0 이다.

  • (IP 주소)
    1100 0000. 1010 1000. 0000 0000. 0000 0001 = 192.168.0.1

  • (C 클래스 기본 서브넷마스크)
    1111 1111. 1111 1111. 1111 1111. 0000 0000 = 255.255.255.0

  • (네트워크 주소)
    1100 0000. 1010 1000. 0000 0000. 0000 0000 = 192.168.0.0


SubnetNetwork(서브넷네트워크)

별개의 서브넷마스크를 생성하지 않아도 기본적으로 적용되어 있는게 기본 서브넷마스크이고, 기본 서브넷마스크로 쪼개진 네트워크 주소를 서브넷 네트워크라고 한다.

새로운 예제로 서브넷마스크를 이해해보자.

  • (IP 주소)
    1001 0110. 1001 0110. 0110 0100. 0000 0001=150.150.100.1

  • (C 클래스 기본 서브넷마스크)
    1111 1111. 1111 1111. 1111 1111. 0000 0000 =255.255.255.0

  • (네트워크 주소)
    1001 0110. 1001 0110. 0110 0100. 0000 0000 =150.150.100.0

위에서 봤던 예제와는 뭔가가 다르다고 느꼈다면 이미 클래스, 서브넷마스크에 대한 이해가 완벽한 것이다.

150.150.100.1은 분명 B 클래스인데, 서브넷 마스크가 C 클래스이다. 150.150.100.1의 기본 서브넷마스크인 255.255.0.0를 사용하지 않고 C 클래스 255.255.255.0를 사용한다는 것은 B 클래스 주소를 마치 C 클래스 주소처럼 사용하겠다는 것을 의미한다.

다시 말해 B 클래스의 기본 서브넷마스크에 의해서 150.150 까지가 네트워크 영역이고 나머지 3,4번째 옥탯은 호스트 영역이다. C 클래스 기본 서브넷마스크인 255.255.255.0를 씌우면서 150.150.100까지 네트워크 영역이 되고 4번째 옥탯만 호스트 IP를 배정할 수 있게 만든 것이다.

즉 네트워크 영역을 늘리고 호스트 영역을 줄이겠다는 뜻을 내포하고 있다는 것을 눈치채야 한다. 이렇게 하나의 주소에 서브넷 마스크를 씌워서 자신에게 맞는 네트워크를 만드는 것을 서브네팅이라고 한다.

참고. 서브넷마스크로 나뉘어진 서브넷네트워크간 통신은 라우터를 통해서 통신이 되어야 한다. 다른 말로 서브넷네트워크는 하나의 독립적인 네트워크이다.

문제

1100 1001. 1101 1110. 0000 0101. 0000 0000 = 201.222.5.0(IP 주소)

1111 1111. 1111 1111. 1111 1111. 1111 1000 = 255.255.255.248(서브넷마스크)

1111 1111. 1111 1111. 1111 1111. = (C 클래스가 가질 수 있는 네트워크 영역)

위와 같이 서브넷마스크를 적용했을 때, 서브넷네트워크의 개수는?

정답
  • 사용자가 지정한 네트워크영역(4옥텟 기준) : 11111
  • 사용자가 지정한 호스트영역(4옥텟 기준) : 000

사용자가 지정한 호스트 영역은 000으로 2^3 = 8이 나오게 되는 것이다. 그런데 이전 글(IP)에서 언급되었듯이 네트워크 주소와 브로드캐스트 주소는 빼주어야 한다. 그러므로 답은 8개가 아닌 6개이다.

진정한 의미에 서브넷마스크는 A 클래스, B 클래스, C 클래스의 기본 서브넷마스크에서 가질 수 있는 네트워크영역과 호스트영역을 더 쪼개서 더 효율적으로 서브네팅하는 것이다.


Subnetting(서브네팅)

네트워크 관리자가 네트워크 성능을 향상하기 위해, 자원을 효율적으로 분배하는 것을 서브네팅이라고 한다.

여기서 말하는 자원을 효율적으로 분배한다는 것은 네트워크 영역과 호스트 영역을 분할하는 것으로 생각하면 된다.

네트워크 측면에서는 너무 큰 브로드캐스트 도메인은 네트워크 환경에서 패킷 전송을 느리게 하고 성능 저하를 발생시킨다. 이에 네트워크를 쪼개서 통신 성능을 보장하는 것이다. 또한 IP는 32자리 2진수로 표현할 수 있는데 이 말은 2의 32승만큼의 표현만 가능하다는 뜻이다. 그래서 등장한 것이 서브넷마스크라는 녀석이다. 서브넷 마스크는 필요한 네트워크 주소만 호스트 IP로 할당할 수 있게 만들어 네트워크 낭비를 방지한다.

서브네팅의 반댓말인 슈퍼네팅도 있다.

슈퍼넷팅(Supernetting) : 네트워크를 합쳐 네트워크를 확장하는 것

서브네팅(Subnetting) : 네트워크 성능 보장을 위해서, 자원을 효율적으로 분배하기 위해 네트워크 영역과 호스트 영역을 쪼개는 것


One more thing

하나의 IP는 네트워크 부분 + 호스트 부분으로 구성되어있다. 하나의 네트워크 즉 하나의 브로드캐스트 도메인에 있는 IP끼리 통신하기 위해선 네트워크 영역이 같아야 하며, 호스트 IP는 달라야 한다. 호스트 IP가 다르지 않다면 IP는 충돌 나게 된다. 그렇다면 네트워크 영역이 다르다고 해서 통신할 수 없을까? 아니다. 네트워크 영역이 달라도 라우터나 게이트웨이와 같은 통신장비를 통해 통신할 수 있다. 다만 라우터와 네트워크 장비 없이 통신할 수 있는 영역을 우리는 브로드캐스트 도메인이라고 하며 하나의 네트워크는 같은 네트워크 영역을 가지는 반면, 호스트 IP는 자신의 노드를 식별할 수 있도록 자신 이외의 호스트 IP와는 달라야 한다.


더 읽을거리

주제이동
IP읽어보기
SubnetMask읽어보기
Types of IP읽어보기
OSI 7 계층과 TCP/IP 계층읽어보기
TCP와 UDP읽어보기
DHCP & DNS읽어보기
HTTP3읽어보기

Reference


avatar
snyungSoftware Engineer(from. 2018)
social-mailsocial-githubsocial-facebooksocial-book