와이파이 탭을 켜면 확인할 수 있는 서브넷마스크! 이것의 정체는 무엇일까.
서브넷이란 대규모 네트워크 내의 작은 네트워크를 말한다. (sub network!)
서브넷을 이용하면 네트워크 라우팅이 훨씬 더 효율적으로 된다. 서브넷을 통해 네트워크 트래픽은 불필요한 라우터를 통과하지 않고 더 짧은 거리를 이동하여 대상에 도달할 수 있다.
바로 옆마을에 있는 앨리스에게 편지를 보낼 때, 수백 킬로미터 이상 떨어진 우체국을 거쳐 보내는 것보다는 앨리스에게 직접 보내는 것이 훨씬 빠르다는 것을 생각해보자.
인터넷에 연결되는 모든 장치에는 인터넷 프로토콜(IP) 주소가 할당된다. 이를 통해 데이터가 올바른 장치에 도달할 수 있음.
4개의 십진수 형식으로 표시되는 IPv4와 6개로 표현되는 IPv6가 있음.
내 IP 주소를 살펴보자.
192.168.219.102
요렇게 생겼는데...
이 첫부분과 두번째 부분이 어떤 영역에 해당하느냐는 네트워크 클래스에 따라 변경된다.
네트워크는 A에서 E까지 레이블이 지정된 여러 클래스로 구분된다. 클래스가 높아질 수록 더 많은 장치를 연결할 수 있다. D-E는 일반적으로 사용되지 않는다
IP 주소의 첫번째 옥텟(8비트)를 확인하면 된다.
네트워크는 IP 주소의 일부이다.
예륻 들어 아래와 같은 IP 주소와 서브넷 마스크가 있다고 했을때,
IP 주소: 192.168.1.101
서브넷 마스크: 255.255.255.0
이진수로 변환하면
IP 주소: 11000000.10101000.00000001.01100101
서브넷 마스크: 11111111.11111111.11111111.00000000
이걸 AND 연산하면 네트워크 주소가 된다.
// 이진수
11000000.10101000.00000001.00000000
// 십진수 변환
192.168.1.0
따라서 네트워크 주소는 192.168.1.0 이 된다.
위 예시를 보듯이 IP 주소가 구성되는 방식을 통해 인터넷 라우터는 데이터를 라우팅할 올바른 네트워크를 비교적 간단하게 찾을 수 있음. 하지만 클래스 A 네트워크에는 수백만 개의 연결된 장치가 있을 수 있음. 서브넷을 이용하면 IP 주소를 장치 범위 내에서 사용하도록 좁혀준다.
서브넷은 네트워크 내에서 내부적으로만 사용되며, 라우터는 서브넷 마스크를 사용하여 데이터 패킷을 올바른 위치로 라우팅 해준다.
IP 패킷의 주소가 IP 주소 192.0.2.15라고 가정해보자. 네트워크 주소는 192.0.2.0/24 가 된다. 네트워크 라우터는 패킷을 192.0.2 라고 표시된 네트워크의 호스트로 전달한다.
패킷이 해당 네트워크에 도착하면 네트워크 내의 라우터가 라우팅 테이블을 참조해, 255.255.255.0 라는 서브넷 마스크를 사용하여 이진법을 계산한다. 장치 주소 15를 확인하고, 패킷이 이동해야 하는 서브넷을 계산한다. 패킷을 해당 서브넷에서 패킷을 전달하는 라우터 또는 스위치로 전달하고 패킷이 192.0.2.2.15에 도착한다.
결국, 서브넷은 IP 주소를 두 부분으로 나누는 역할을 한다. IP 주소 만으로는 패킷이 어느 네트워크에 속해 있는지 명확하게 알 수 없다. 전화를 걸었을 때 또 한번 부서 번호를 입력해야 해당 부서에 정확히 연결되는 것과 같은 시나리오를 상상하면 된다.
IP NAT은 원래 제한된 수의 인터넷 IPv4 주소 문제를 해결하기 위해 개발됨. 여러 디바이스에서 인터넷에 액세스해야 하지만 하나의 IPv4 인터넷 주소만 ISP(인터넷 서비스 공급자)에 의해 할당되는 경우 NAT가 필요.
NAT 지원 라우터의 역할은 내부 비공개 IPv4 주소와 할당된 공용 IPv4 주소 간에 변환하는 것. 그러므로 개인 네트워크의 모든 디바이스는 동일한 공용 IPv4 주소를 공유할 수 있다.
말이 너무 어려운데 결국 포인트는 하나의 공인 IP 주소를 여러 개의 사설 IP 주소와 공유할 수 있도록 하는 것을 말한다.
위는 구현 예시.
다음과 같은 상황에서 사용할 수 있다.
가정에서 인터넷 공유를 할 때, 회사 네트워크를 설치할 때, 데이터 센터, VPN 연결, 로드 밸런싱 (NAT을 사용하여 들어오는 요청을 여러 대의 서버에 분배할 수 있다고 함).... 등등
사용하는 목적을 구체적으로 알아보면
안된다. 서브넷은 1과 0이 연속적으로 표현되어야 함. 255.0.255.0을 이진수로 바꾸면 11111111.00000000.11111111.00000000이 되므로 서브넷 마스크의 표현으로 적합하지 않다.
https://www.cloudflare.com/ko-kr/learning/network-layer/what-is-a-subnet/
https://learn.microsoft.com/ko-kr/azure/rtos/netx-duo/netx-duo-nat/chapter1
라우터나 공유기의 주소