서브넷 마스크 정체가 뭐야?
1. ARP 동작과정과 서브넷마스크
ARP(Address Resolution Protocol)는 네트워크에서 IP 주소를 물리적 네트워크 주소(MAC 주소)로 변환하는 데 사용됩니다.
이때 목적지 IP 주소가 내부망 IP 주소이면 해당 IP 주소를 가지고 있는 컴퓨터를 찾기 위해서 ARP 패킷을 브로드 캐스트 전송을 하고,
목적지 IP 주소가 외부망 IP 주소이면 게이트 웨이트의 MAC 주소를 찾기 위해서 ARP 패킷을 브로드 캐스트로 전송합니다.
따라서 목적지 IP 주소가 외부망 IP 주소인지 현재 네트워크 망안에 들어있는 내부망 IP 주소인지 구별하는것이 필요하고
구별할때 쓰이는것이 현재 나의 IP 주소와 서브넷 마스크 입니다.
2. 서브넷 마스크 이해 (네트워크 설계자 관점)
서브넷은 결국 IP 주소의 가용범위를 뜻하게 됩니다.
그림상에 보이는것 처럼 C 클래스 네트워크로 사용중인 256개의 IP 주소로 구성된 네트워크망이 있다고 할때
Subnetting 과정을 통해서 128개 묶음 128개 묶음으로 나눠서 네트워크 망을 관리할 수 있고
이때 몇개의 묶음으로 구성된 네트워크망이냐를 서브넷 마스크, 서브넷 마스크 비트를 통해서 나타내게 됩니다.
네트워크 망을 설계하는 관리자 입장에서는 이렇게 서브넷 마스크를 통해서 각각의 네트워크 망들을 구성하고 관리하게 됩니다.
하지만 리눅스를 다루는 서버엔지니어 및 개발자들 관점에서는 이런 네트워크 관리자 관점에서의 이해도 보다는
클라이언트(노트북, PC, 모바일, 서버 등) 관점에서의 이해도가 더 실용적입니다.
위에서 ARP 통신을 할때 목적지 IP 주소가 외부망 IP 주소냐 내부망 IP 주소냐를 판단하는 기준으로서의 서브넷마스크를 이해한다면
더욱 실용적인 개념이해가 될수있습니다. 뿐만아니라 현재 내가 사용하고 있는 IP 주소와 서브넷 마스크 값을 통해서
현재 내가 사용중인 네트워크망은 몇개의 IP 주소로 구성이 되어있는지 네트워크 주소와 브로드 캐스크 주소가 무엇인지를 확인할때에도 서브넷 마스크가 쓰이게 됩니다.
3. IPv4 주소와 사설망 이해
IPv4 주소는 32비트로 구성되며, 8비트씩 4부분으로 나누어져 있습니다. 각 부분은 0부터 255까지의 숫자로 표현됩니다. 예를 들어, `192.168.1.1`과 같은 형식입니다. 32 bit 로 표현가능한 모든 고유 IP 주소 약 42억개의 주소를 마치 현실세계 주소 (서울시 강남구 역삼로7길 16) 처럼 고유한 주소로 쓰이며 모든 호스트(노트북, 모바일, PC 등) 1개당 1개의 IP 주소를 활용해서 사용하게 하는것이 최초의 목적이 었습니다.
그리고 A,B,C 와같은 클래스 개념으로 몇개의 묶음으로 네트워크 IP 주소를 배정할지를 결정할 수 있도록 합니다.
예를 들어서 IP 주소가 적게 필요하다면 C 클래스로 254개의 묶음을 제공해줄 수 있고 이를 회사나 가정집 등에서 사용할 수 있습니다.
더많은 IP 주소가 필요하다면 예를들어 B 클래스로 65,534개 묶음의 IP 주소를 제공해 줄 수 있습니다.
하지만 이렇게 클래스 단위로 제공하게 되는 고유 IP 주소는 총 42억개 정도로 한정되어 있습니다.
많은 개수이지만 전세계의 모바일, PC, 서버, IoT 기기 등 수많은 호스트들에 모두 1개씩 할당해주기에는 한계가 있습니다.
따라서 하나의 고유 IP 주소를 공유해서 나눠서 사용할 수 있도록 로컬 네트워크 망 내부에서 사용가능한 private network 사설망 개념을 도입합니다. 아래 처럼 특정 IP 주소 범주를 특수한 목적 즉, 사설망 용도로 사용하도록 약속하고 RFC 1918 표준이 구성되었습니다.
4. IP 주소, 서브넷 계산기
IP 주소, 서브넷 계산기 링크:
https://jodies.de/ipcalc?host=192.168.0.2&mask1=24&mask2=
서브넷 계산기는 IP 주소와 서브넷 마스크를 입력하여 네트워크의 범위를 계산하는 도구입니다. 이를 통해 다음과 같은 정보를 얻을 수 있습니다
- 네트워크 주소
- 브로드캐스트 주소
- 사용 가능한 호스트 주소의 범위
- 서브넷의 크기(호스트 수)
예를 들어 위와 같이 현재 나의 IP 주소가 192.168.0.2 이고 서브넷 마스크가 255.255.255.0 일때,
첫주소인 네트워크 주소는 192.168.0.0 이고 마지막 주소인 브로드 캐스트 주소는 192.168.0.255 입니다.
그리고 현재 네트워크 망의 사용가능한 첫주소와 마지막주소는 192.168.0.1 ~ 192.168.0.254 이고 그 개수는 254개가 됩니다.
5. 서브넷 마스크 문제풀이 (리눅스 마스터 자격증 문제)
서브넷마스크는 32bit 숫자값을 뜻하고
255.255.255.192 는 각각 8bit씩 .단위로 짤라서
11111111.11111111.11111111.11000000
위와같이 확인할 수 있고 결국 1로 채워진 범위는 현재 네트워크 망에서의 기준이되고
마지막에 보이는 0 들이 현재 네트워크 망안에서 구별하는 IP주소 경우의수를 뜻합니다.
0의개수가 6개이고 6 bit 로 구분할수있는 경우의수는 2^6 인 64가지가 됩니다.
그런데 우리가 2진수로 변경하고 판단하는게 불편한방식이기때문에
10진수 상태의 일반적인 숫자를 그냥 빼는식으로 알아내는게 빠릅니다.
그러니까 2진수 비트로 전환하지말고 그냥 . 단위로 자르고
맨마지막 8비트 총 256 경우의수 빼기 192을 하면 64 로 계산되어 64개라는
현재 네트워크망의 범위 개수를 알아낼 수 있습니다.
만약 255.255.255.0 이었다면 맨마지막 8비트 총 256 경우의수 빼기 0 을해서
현재 네트워크 망에서는 최대 256개 IP 주소를 사용할 수 있다고 계산할 수 있습니다.
(다만 첫주소와 마지막주소는 네트워크주소, 브로드캐스트 용도로 사용될 수있어서
실제 노트북, PC, 모바일 등이 할당받아 사용가능한건 254개 정도 될 수 있습니다.)
만약 255.255.0.0 이었다면 . 단위로 구분하여
마지막 두덩어리 8비트 두덩어리가 있어서 256 x 256 로 구분가능한 총 65536 경우의수가 되고
현재 네트워크망에서 최대 65536개 IP 주소를 사용할 수 있다고 계산할 수 있습니다.
아래 서브넷 마스크 문제를 풀어볼때
현재 서브넷마스크는 255.255.255.192 이고
현재 네트워크망에서 사용가능한 IP 개수는 64개 (256-192) 입니다.
그리고 현재 사용중인 IP 주소가 192.168.5.66 이기 때문에
192.168.5.66 가 어느 범위의 64개 묶음에 포함되는지를 판단해야합니다.
예를들어서 192.168.5.0 ~ 192.168.5.255 까지의 총 256개의 범위에서
범위1: 192.168.5.0 ~ 192.168.5.63
범위2: 192.168.5.64 ~ 192.168.5.127
범위3: 192.168.5.128 ~ 192.168.5.191
범위4: 192.168.5.192 ~ 192.168.5.255
어느범위 안에 들어가는지를 봐야하고 "범위2"에 해당된다는것을 알수 있습니다.
결국 지금 네트워크망은 192.168.5.64 ~ 192.168.5.127 사이의 IP 주소들을 있는 네트워크 망입니다.
객관식 보기중에서 192.168.5.128 과 192.168.5.129 는 범위에 벗어나있어서 제외하고
192.168.5.127은 마지막주소라서 브로드캐스트 용도 주소이기 때문에 제외합니다.
그러면 마지막으로 남은게 192.168.5.126 이라서 게이트웨이 주소로 추정할 수 있습니다.
다만 이것은 객관식 소거법으로 알아낸것이기 때문에 완벽하게 게이트 웨이 주소를 추출해내는
방법은 아닙니다. 192.168.5.64(첫주소, 네트워크주소) 와 192.168.5.66(본인 주소) 그리고
192.168.5.127(브로드 캐스트 주소) 을 제외한 나머지 IP 주소중에서 게이트웨이 주소가 얼마든지 지정 될 수 있습니다.
하지만 보통의 경우에는 네트워크 주소와 브로드캐스트 주소를 제외하고 첫주소 또는 마지막 주소를
게이트웨이 주소로 쓰는경우가 많긴합니다.
위와 같은 내용의 대한 리얼리눅스 추천강의는 네트워크 완전정복입니다.
https://reallinux.co.kr/course/se_network