카테고리 없음

IP 주소, 서브넷 그리고 CIDR

tally 2024. 10. 13. 19:03

개요

요즘 인프라와 네트워크에도 관심을 가지게 되면서 기본적인 네트워크 개념들도 다시 공부하고 있는데요, 애플리케이션 개발을 넘어서 시스템 전반을 이해하는게 중요하다는 생각이 들었기 때문입니다.

이번 포스팅에서는 IP 주소의 기본 개념부터 서브넷팅과 CIDR까지 네트워크의 기초 개념을 정리해보겠습니다.

 

 

IP 주소

IP 주소는 네트워크 상에서 장치를 구분하고 통신하기 위해 사용되는 고유한 번호로 인터넷은 IPv4와 IPv6라는 두 가지 IP 주소 체계를 사용하고 있습니다.

 

IPv4

IPv4는 32비트로 8비트씩 4개의 옥텟으로 나누어 표현하고, 총 42억 개(2^32)의 주소를 제공할 수 있습니다.

예를 들어, 192.168.1.1처럼 숫자 4개가 '.'으로 구분된 형식입니다. 

 

IPv6

IPv6는 128비트로 2^128개의 주소를 제공하는데요, 기존 32비트의 IPv4 주소(약 42억 개의 주소)가 고갈되는 문제를 해결하기 위해 등장하였고, 16진수로 구성된 여덟 개의 필드를 콜론(:)으로 구분해 사용합니다.

(예: 2001:0db8:85a3:0000:0000:8a2e:0370:7334)

이미지 출처: https://minjiwoo.kr/465

 

참고로 IPv4는 인터넷 디바이스의 증가로 2011년에 사실상 전부 고갈(할당)된 상태라고 하는데요,
뒤에서 설명하겠지만, 그럼에도 불구하고 여전히 많은 네트워크가 IPv4를 사용하고 있는 이유는 사설 IP 주소를 하나의 공인 IP로 변환해 사용하는 NAT(Network Address Translation)기술 덕분입니다.

 

 

공인 IP와 사설 IP

인터넷에 연결된 모든 장치는 고유한 IP 주소를 가져야 합니다. 그리고 이러한 IP 주소는 공인 IP와 사설 IP로 구분됩니다.

 

공인 IP는 인터넷에서 고유하게 사용되는 IP 주소로, 외부에서 접근할 수 있는 반면, 사설 IP는 내부 네트워크에서만 사용되는 IP 주소로 하나의 네트워크안에서 유일하고 일반적으로 가정이나 회사에서 공유기를 통해 각 기기에 부여되는 주소입니다.

https://inpa.tistory.com/entry/WEB-🌐-IP-기초-사설IP-공인IP-NAT-개념-정말-쉽게-정리

 

 

사설 IP는 지정된 대역의 아이피만 사용이 가능한데요, 다음의 표와 같습니다.

RFC 1918 사설 IP 주소 범위 아이피 주소 개수 서브넷 마스크
24bit-block 10.0.0.0 ~ 10.255.255.255 16,777,216 10.0.0.0/8
20bit-block 172.16.0.0 ~ 172.31.255.255 104,857 172.16.0.0/12
16bit-block 192.168.0.0 ~ 192.168.255.255 65,536 192.168.0.0/16

 

공유기 환경에서는 하나의 공인 IP가 공유기까지 할당되고, 내부 네트워크에서 각 기기에는 사설 IP가 할당됩니다. 이처럼 사설 아이피 덕분에 공인 아이피의 부족 문제를 해결하고 있습니다. 그러나, 사설 아이피는 인터넷과 연결된 외부 네트워크에는 직접 접근할 수 없는데요,

 

어떻게 사설 아이피를 가지는 호스트는 외부와 통신하는 걸까요 ?

그리고, 동일한 사설 아이피를 가진다면 외부 인터넷은 어떻게 각 디바이스들을 특정하는걸까요?

 

 

NAT (Network Address Translation)

그건 바로, 사설 아이피를 공인 아이피로 변환하는 기술인 NAT라는 기술을 통해 외부 네트워크와 통신할 수 있게 만들어 줍니다.



사설 아이피 주소는 외부 네트워크와 통신할 수 없기 때문에 NAT을 사용해 패킷이 공인망으로 나갈때 사설 아이피를 공인 아이피로 변환하고, 패킷이 다시 사설망으로 들어올 때는 공인 아이피를 사설 아이피로 변환하는 역할을 합니다.

 

 

NAT의 주요 종류 중 하나인 PAT(Port Address Translation)를 예로 들어보겠습니다.

이미지 출처: https://gunjoon.tistory.com/37

  1. A 호스트가 외부망의 웹서버로 요청을 보냅니다
  2. 라우터의 NAT 정책에 의해 라우터의 공인 아이피인 10.10.10.10으로 변환되어 외부망으로 나갑니다
  3. 외부망의 웹서버가 요청을 처리하고 다시 공인 아이피(10.10.10.10)으로 응답을 보냅니다
  4. 라우터는 목적지의 아이피와 포트를 보고 A 호스트에게 응답을 전달합니다

이러한 방식으로 동작이 이루어지면서 사실 아이피로 공인 아이피의 부족 문제를 해결하면서 외부망과의 통신도 가능하게 하는 것이 NAT입니다.

 

 

IP 주소 체계와 클래스

IPv4 주소는 네트워크와 호스트 주소로 나뉩니다. 예를 들어 192.168.0.1에서 192.168.0은 네트워크 주소, 1은 호스트 주소입니다. 네트워크 주소는 특정 네트워크를 지칭하고, 호스트 주소는 그 안의 장치를 구분합니다.

 

IP 클래스 분류

이러한 네트워크 영역과 호스트 영역을 나누는 기준으로 클래스라는 개념이 초기에 등장하였는데요,

각 클래스는 네트워크 규모에 따라 A, B, C, D, E의 5가지 클래스로 나뉘는데, 이 중 주로 A, B, C 클래스가 사용됩니다.

이미지 출처: https://velog.io/@3436rngus/IP-배경지식과-서브네팅-계산법

 

 

A 클래스는 네트워크 주소를 나타내는 부분이 1개의 옥텟, 즉 호스트 주소를 나타내는 부분이 3개의 옥텟이기 때문에 128(2^7)개의 네트워크와 한 네트워크당 16,777,216(2^24)개의 호스트 주소를 가질 수 있습니다.

 

B 클래스는 네트워크 주소 부분이 2개의 옥텟, 즉 호스트 주소를 나타내는 부분이 2개의 옥텟이기 때문에 16,384(2^14)개의 네트워크와 한 네트워크당 65,536(2^16)개의 호스트 주소를 가질 수 있습니다.

 

C 클래스는 네트워크 주소 부분이 3개의 옥텟, 즉 호스트 주소를 나타내는 부분이 1개의 옥텟이기 때문에 2,097,152(2^21)개의 네트워크와 한 네트워크당 256(2^8)개의 호스트 주소를 가질 수 있습니다.

 

이러한 A, B, C클래스는 맨 앞 옥텟의 주소만 보고 구분할 수 있는데요,

앞 옥텟의 주소가 0~126(127은 자신을 의미하는 루프백이라 예외)이면 A클래스, 128~191이면 B클래스, 192~223까지면 C클래스를 나타냅니다.

이미지 출처: https://catsbi.oopy.io/f565e8c1-34c6-4b61-be61-e1ab04fc51fb

 

과거에는 모든 네트워크의 크기가 고정되어 있었기 때문에, 큰 네트워크 대역을 필요로 하는 조직은 여러 개의 네트워크를 확보해야 했습니다. 또한, 연속된 네트워크를 할당받기 어려웠고, 작은 네트워크를 필요로 하는 조직은 과도한 IP 주소를 할당받아 IP 자원이 낭비되는 문제도 있었습니다.

이러한 문제를 해결하기 위해 클래스 기반(Classful) 네트워크 분할 방식이 도입되었고, 이를 통해 네트워크 자원을 절약할 수 있었습니다.

 

하지만 시간이 지나면서 인터넷 사용이 증가하면서 아이피 주소 부족과 낭비 문제가 발생하게 되었고, 이에 따라 더 유연한 방식이 필요해지면서 현재는 클래스 기반(Classful) 네트워크 분할 방식 대신, 클래스리스(Classless) 네트워크 방식을 사용하고 있습니다.

 

 

CIDR

CIDR은 기존의 클래스 기반 네트워크에서 발생한 IP 주소 낭비 문제를 해결하기 위해 등장한 방식으로 과거에는 네트워크 클래스에 따라 고정된 크기의 IP 대역을 할당받았지만, 실제로 사용되지 않는 IP가 많아져 IP 자원이 낭비되는 문제가 발생했습니다.

이를 해결하기 위해 클래스리스 방식인 CIDR이 도입되게 되었습니다.

 

서브넷 마스크와 CIDR 표기법

서브넷 마스크는 네트워크와 호스트 부분을 구분하는 데 사용되는데요, CIDR 표기법에서 IP 주소 뒤에 슬래시(/)와 숫자를 붙여 네트워크 비트 수를 나타냅니다.

예를 들어 192.168.1.0/24에서 /24는 앞의 24비트가 네트워크 주소를 의미하고, 나머지 8비트가 호스트 주소로 사용됨을 의미합니다.

 

CIDR 계산 예시 1: 192.168.1.0/24

  • 192.168.1.0/24는 총 256개의 IP 주소를 제공하며, 이 중 254개는 호스트로 사용할 수 있음
  • 나머지 2개는 네트워크와 브로드캐스트 주소로 예약되어 있음

 

CIDR 계산 예시 2: 143.7.65.203/23

  • /23은 앞의 23비트가 네트워크 주소를 의미하기 때문에 총 512개의 IP 주소를 제공하며 이 중 510개가 호스트로 사용할 수 있음
  • 나머지 2개는 네트워크와 브로드캐스트 주소로 예약되어 있음

이처럼 CIDR은 네트워크의 크기를 세밀하게 조정할 수 있어, IP 자원을 보다 효율적으로 활용할 수 있게 됩니다.

 

 

서브넷팅

서브넷팅은 하나의 네트워크를 더 작은 서브 네트워크로 나누는 과정으로, 이를 통해 네트워크 자원을 보다 효율적으로 관리할 수 있으며, 네트워크 트래픽 분산 및 보안 강화에도 유리합니다.

그리고 서브넷팅에서 중요한 개념은 서브넷 마스크인데요, 서브넷 마스크는 IP 주소를 네트워크와 호스트 부분으로 나누는 데 사용됩니다.

 

회사에서 192.168.1.0/24 대역을 할당받았다고 가정해보겠습니다.

이때, 서브넷팅을 통해 여러 부서에 이 IP 대역을 나누어 각 부서별로 네트워크를 나눌 수 있습니다.

  • 영업팀: 192.168.1.0/26 (64개의 IP 주소)
  • 개발팀: 192.168.1.64/26 (64개의 IP 주소)
  • 마케팅팀: 192.168.1.128/26 (64개의 IP 주소)
  • 관리팀: 192.168.1.192/26 (64개의 IP 주소)

이렇게 서브넷팅을 하면, 부서 간 네트워크 트래픽을 분리하고 각 부서에 맞는 네트워크 크기를 유연하게 할당할 수 있습니다.

 

 

 

다음에 정리할 키워드

  • DHCP
  • PAT
  • VLSM
  • 포트포워딩

 

 

참고