본문 바로가기
Back-end/Linux

[리눅스마스터2] ip와 서브넷마스크

by somlang_bba 2023. 2. 27.
728x90

리눅스 마스터2 문제를 풀다보면 네트워크 관련 지식을 많이 요하는 것 같다.

 

그 중 기본이라 할 수 있는 ip와 서브넷마스크에 대해서 정리하려 한다.

 

우리가 인터넷에 접속하여 사용하는 ip는 보통 isp(인터넷 서비스 공급자) 업체에서 공인ip를 받아 사용하는 사설ip이다.

 

isp -> 공유기(라우터) -> 내 pc

 

이런 형태로 ip주소가 뿌려진다고 보면 될 것 같다. 그래서 서로 다른 네트워크상에 있다면 ip주소가 같은 경우도 발생할 수 있다. 사용중인 pc의 ip 주소를 보면 대부분 아래 3개의 주소대역에 속해 있을 것이다. (지금 글을 쓰고 있는 필자의 ip 주소는 클래스 B 내에 속해 있다.)

 

기본적으로 클래스별 IP 대역은 다음과 같다.

  • 클래스 A: 10.0.0.0 ~ 10.255.255.255
  • 클래스 B: 172.16.0.0 ~ 172.31.255.255
  • 클래스 C: 192.168.0.0 ~ 192.168.255.255
  • 클래스 D: 224.0.0.0 ~ 239.255.255.255
  • 클래스 E: 240.0.0.0 ~ 255.255.255.255

 

그냥 무작정 외우면 힘드니 계산식을 짜보자

  1. IP에 입력하는 범위가 256개가 존재한다 (0 ~ 255)
  2. 256부터 2씩 나눈다.
  3. 256 / 2 = 128 - 1 = 127 (Class A : 0 ~ 127)
  4. 128 / 2 = 64 + 127 = 191 (Class B : 128 ~ 191)
  5. 64 / 2 = 32 + 191 = 223 (Class C : 192 ~ 223)
  6. 남은 32는 반(16)씩 나누어서 D Class와 E Class가 가진다.

 

그 중 클래스별 특정 구간의 대역은 사설IP로 사용된다.

  • 클래스 A: 10.0.0.0~10.255.255.255
  • 클래스 B: 172.16.0.0~172.31.255.255
  • 클래스 C: 192.168.0.0~192.168.255.255

 

그런데, 최근에 들어서는 이렇게 클래스를 이용하여 ip주소 대역을 할당하는 표기법 대신

CIDR(Classless inter-Domain Routing, 사이다)표기법을 이용하여 표기하는 추세이다.

 

aws 등을 사용해보면 접근권한 설정시에 "0.0.0.0/0" 이런식으로 / 뒤에 숫자가 있는 것을 봤었는데 이것이 바로 사이다 표기법이었다.

 

클래스를 사용해서 표기하던 ip 주소를 대체하며 조금 더 직관적으로 ip의 네트워크 영역과 호스트 영역을 보여주는 표기법이다.

 

우선, CIDR가 나오게 된 배경부터 살펴보면 기존의 클래스 별로 나눈 ip는 호스트 수를 유연하게 나누기 어려웠다. 왜냐하면 각 클래스 별로 디폴트 서브넷마스크가 설정되어 있기 때문이다.

 

  • 클래스 A: 255.0.0.0
  • 클래스 B: 255.255.0.0
  • 클래스 C: 255.255.255.0
728x90

이렇게 정해져 있는 서브넷 마스크를 이용하면 클래스 A는 2^24 - 2개의 주소를 사용할 수 있다. (첫번째의 네트워크 주소와 마지막 브로드캐스트 주소는 호스트로 사용할 수 없음) 클래스 B는 2^16 - 2 개, 클래스 C는 2^8 - 2개로 호스트 주소가 정해진다. 즉, 한개의 네트워크가 가진 호스트 주소가 필요 이상으로 많아 낭비되는 경우가 있었다.

 

이를 해결하기 위해 정해져있는 서브넷 마스크가 아닌 커스텀 서브넷 마스크를 쓰게 되면서 사용되는 표기법이 CIDR 표기법이다.

 

CIDR 표기법은 서브넷 마스크를 직접 설정하고 설정한 서브넷 마스크를 2진법으로 표기했을 때 1의 갯수를 / 뒤에 써주는 방식이다. 예를들어 서브넷 마스크를

 

11111111.00000000.00000000.00000000

 

와 같이 설정하였다면(클래스 표기법으로 A클래스와 같음: 255.0.0.0)

 

x.x.x.x/8

 

이런식으로 표기해주는 것이다.

728x90