서브넷 마스크와 게이트웨이

Snoop So·2023년 8월 28일
0


와이파이 탭을 켜면 확인할 수 있는 서브넷마스크! 이것의 정체는 무엇일까.

서브넷

서브넷이란 대규모 네트워크 내의 작은 네트워크를 말한다. (sub network!)
서브넷을 이용하면 네트워크 라우팅이 훨씬 더 효율적으로 된다. 서브넷을 통해 네트워크 트래픽은 불필요한 라우터를 통과하지 않고 더 짧은 거리를 이동하여 대상에 도달할 수 있다.

바로 옆마을에 있는 앨리스에게 편지를 보낼 때, 수백 킬로미터 이상 떨어진 우체국을 거쳐 보내는 것보다는 앨리스에게 직접 보내는 것이 훨씬 빠르다는 것을 생각해보자.

IP 주소

인터넷에 연결되는 모든 장치에는 인터넷 프로토콜(IP) 주소가 할당된다. 이를 통해 데이터가 올바른 장치에 도달할 수 있음.

IP 주소의 각기 다른 부분의 의미

4개의 십진수 형식으로 표시되는 IPv4와 6개로 표현되는 IPv6가 있음.

내 IP 주소를 살펴보자.

192.168.219.102

요렇게 생겼는데...

  1. 첫부분: 주소가 속한 네트워크
  2. 두번째: 해당 네트워크 내의 장치를 지정

이 첫부분과 두번째 부분이 어떤 영역에 해당하느냐는 네트워크 클래스에 따라 변경된다.

네트워크는 A에서 E까지 레이블이 지정된 여러 클래스로 구분된다. 클래스가 높아질 수록 더 많은 장치를 연결할 수 있다. D-E는 일반적으로 사용되지 않는다

  1. 클래스 A 네트워크: 위 예시에서 192 가 네트워크, 나머지는 장치가 됨
  2. 클래스 B 네트워크: 위 예시에서 192.168 이 네트워크, 나머지는 장치가 됨
  3. 클래스 C 네트워크: 위 예시에서 192.168.219 가 네트워크, 나머지는 장치가 됨

그럼 내 인터넷은 어떤 클래스에 속하는지 확인하려면?

IP 주소의 첫번째 옥텟(8비트)를 확인하면 된다.

  • 클래스 A: 0-127
  • 클래스 B: 128-191
  • 클래스 C: 192-223
  • 클래스 D: 224-239 (멀티캐스트용)
  • 클래스 E: 240-255 (실험용, 일반적으로는 사용되지 않음)

IP 주소 vs 네트워크 주소

네트워크는 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 주소 만으로는 패킷이 어느 네트워크에 속해 있는지 명확하게 알 수 없다. 전화를 걸었을 때 또 한번 부서 번호를 입력해야 해당 부서에 정확히 연결되는 것과 같은 시나리오를 상상하면 된다.

NAT(Nextwork Address Translation)

IP NAT은 원래 제한된 수의 인터넷 IPv4 주소 문제를 해결하기 위해 개발됨. 여러 디바이스에서 인터넷에 액세스해야 하지만 하나의 IPv4 인터넷 주소만 ISP(인터넷 서비스 공급자)에 의해 할당되는 경우 NAT가 필요.

NAT 지원 라우터의 역할은 내부 비공개 IPv4 주소와 할당된 공용 IPv4 주소 간에 변환하는 것. 그러므로 개인 네트워크의 모든 디바이스는 동일한 공용 IPv4 주소를 공유할 수 있다.

말이 너무 어려운데 결국 포인트는 하나의 공인 IP 주소를 여러 개의 사설 IP 주소와 공유할 수 있도록 하는 것을 말한다.

위는 구현 예시.

다음과 같은 상황에서 사용할 수 있다.

가정에서 인터넷 공유를 할 때, 회사 네트워크를 설치할 때, 데이터 센터, VPN 연결, 로드 밸런싱 (NAT을 사용하여 들어오는 요청을 여러 대의 서버에 분배할 수 있다고 함).... 등등

사용하는 목적을 구체적으로 알아보면

  1. IP 주소의 보존: IPv4는 한정된 자원이라서 효율적으로 사용해야 함
  2. 네트워크 구성의 유연성: NAT을 사용하면 내부 네트워크 IP 구성을 자유롭게 변경 가능. 외부 공개 IP 가 변화하지 않으니까..
  3. 로드 밸런싱: 위에서 언급
  4. 포트 포워딩 및 어플리케이션 지원: 일부 애플리케이션은 특정 포트에서만 작동됨
  5. VPN 및 원격 접속 지원
  6. 멀티테넌시와 서비스 분리: 큰 규모의 네트워크에서는 여러 부서나 고객이 동일한 네트워크 인프라를 공유할 수 있음

서브넷 마스크의 표현 방식

  1. Decimal Dot 표기법
    가장 많이 씀. 4개의 8비트 옥텟을 사용. 이진수로 표현할 수도 있음
    위에서 봤던 예시가 모두 해당함
  2. CIDR(Classless Inter-Domian Routing) 표기법
    서브넷 마스크를 슬래시와 숫자로 표현하는 것
    숫자는 네트워크 부분에 사용된 연속된 1 비트의 수를 나타냄

255.0.255.0 같은 꼴의 서브넷 마스크도 가능할까?

안된다. 서브넷은 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

게이트웨이

라우터나 공유기의 주소

0개의 댓글

관련 채용 정보