[네트워크] 서브넷 마스크와 CIDR

Robert.Yang·2023년 5월 14일
1

Network

목록 보기
19/59
post-thumbnail

이 포스트는 널널한 개발자님 강의를 참조하여 작성한 포스트입니다.

서브넷 마스크와 CIDR

서브넷 마스크

우리가 네트워크 정보를 확인하고 싶을 때 window OS인 경우 ipconfig를 cmd에 입력하고 linux계열은 ifconfig를 터미널에 입력한다.

ip주소는 크게 2개의 파트로 나눠진다. 24bit의 N/W ID와 8bit의 Host ID로 나눠진다. 그런데 서브넷 마스크는 뭐하는 놈이냐면 서브넷 마스크를 기준으로 N/W ID와 Host ID를 잘라낸다.

예를 들어 192.168.0.10을 2진수로 표현하면 아래와 같다.

1100 0000 1010 1000 0000 0000 0000 1010

여기서 255.255.255.0으로 서브넷 마스크를 설정하여 해당 서브넷 마스크와 IP주소를 AND 연산을 하면 192.168.0.0이 되는데 즉, 주소라는 것에서 서브넷 마스크 값을 가지고 bit단위로 AND연산을 해서 패킷이라는것이 오면 이 패킷의 IP주소와 서브넷 마스크와 AND하여 N/W ID가 일치한다면 우리 N/W그룹으로 유입되는거구나라고 판단을 한다. 즉, AND연산을 해서 잘라내는것 즉, Host ID를 0으로 clear하는 것을 Mask 연산이라고 한다. 이 Mask 연산을 해서 해당 그룹과 N/W ID가 같다면 해당 패킷은 우리 그룹으로 유입되는거라고 한단을 한다. 그래서 이런식으로 하다보니까 짜를 때 N/W ID를 꼭 24bit로 해야하는지 의문점이 생겼다. 8bit만 N/W ID로 할 수 있고 16bit만 N/W ID로 할 수 있고 24bit만 N/W ID로 할 수 있다. 이때 8bit만 N/W ID로 하는 방식을 A Class방식이락 하고 16bit는 B Class, 24bit는 C Class라고 했었다. 그래서 IP주소에대가 어떤 클래스라는 개념을 도입해서 등급을 정해두었는데 그 때는 이제 이걸 잘라내기 위한 방법론으로 서브넷 마스크를 사용하게 되었는데 뭔가 같다 다르다를 mask 연산을 해가지고 결과비교하는 방식으로 했었었다. 이게 컴퓨터 구조적 특징때문에 조금 더 효율적으로 할려고 mask 연산을 했었는데 요즘은 세상이 바뀌고 컴퓨터 성능이 좋다보니 이 방법론이 불편해졌고 지금은 이 class 개념을 사용하지 않는다. 그래서 서브넷 마스크라는 개념도 조금 달라졌다.

CIDR(Classless Inter-Domain Routing)

이제 뭐가 등장하냐면 classless라는 개념이 등장한다. 즉, class 개념없이 애기해보자는 것이다. 즉, 예전에는 IP주소를 쓰고 그 다음에 서브넷마스크(255.255.255.0)라고 쓰는데 요즘은 IP주소/(N/W ID로 설정할 bit)라고 쓴다. 이제좀 비교해봐야 할께 예전에는 192.168.0.10, 255.255.255.0 이렇게 2줄로 표기한 것을 192.168.0.10/24로 1줄로 깔끔하게 표현이 가능하다. 그 다음에 192.168.0.10/24로 했을 때 /의 뒤 숫자를 기준으로 값을 잘라내는것은 동일하나 옛날에는 mask연산으로 그 결과비교를 AND연산을 했지만 지금은 그냥 /의 숫자 bit만큼 비교해서 관계연산(==)을 한다. 그래서 해당 그룹을 찾아낼 수 있다. 이 방식을 CIDR라고 한다. 이런 표기 방식은 AWS같은 클라우드를 공부할때 많이 보인다.

서브넷팅

그리고 서브넷 마스크에서 C class라는 개념을 적용해서 구형방식으로 N/W ID를 24bit로 했다가 N/W ID를 조금 더 늘리고 싶을 때 즉, 이미 짤려진 N/W를 또 짜르고 싶을 때 그럴때 짜르는 것을 서브넷팅이라고 하는데 서브넷 마스크할때 N/W ID를 2bit 늘리면 host ID는 6bit가 될 것이고 서브넷 마스크는 255.255.255.192가 될것이다. 이렇게 해서 C class 네트워크에서 또 짜르고 싶을 때 서브넷팅이라고 한다.

profile
모든 것을 즐길 줄 아는 개발자, 양성빈입니다.

0개의 댓글