잘못된 내용이 있다면 덧글로 알려주시면 감사하겠습니다!
아래 글과 이어지는 내용입니다.
[네트워크] 서브네팅 이해하기 (1) IPv4와 클래스, 주소의 고갈
이전 글의 결론으로,
효율적인 IPv4 주소 할당을 위하여
서브넷 마스크를 클래스가 지정해주는 대신, 필요에 따라 원하는 값의 서브넷 마스크를 적용할 수 있도록 바뀌었다는 것을 알았다.
이를 다시 정리하자면,
클래스 주소 지정 방식 대신, 클래스 없는 주소 지정 방식에 CIDR를 사용한 서브네팅을 도입하게 된 것이다.
CIDR은 뭐고 서브네팅은 뭔데..? 좀 더 정확히 알아보도록 하자.
서브네팅 : 클래스 단위보다 더 효율적으로 나누기
서브넷(Subnet)
서브넷은 하나의 네트워크를 분할하여 나눈, 부분 네트워크를 일컫는 말이다.
하나의 네트워크가 가진 IP 주소 대역을 나누어서 만들어진 부분 집합인 작은 네트워크들을 말한다.
서브네팅(Subnetting)
이처럼 네트워크를 서브넷으로 분할하는 것을 서브네팅(Subnetting)이라고 한다.
IP 주소에서 네트워크 영역과 호스트 영역을 쪼개는 작업을 해주는 것이다.
만약 필요한 크기만큼 네트워크를 분할하면, 클래스 주소 지정 방식 보다 효율적으로 주소를 나눌 수 있다.
하나의 네트워크를 더 작게 쪼갬으로써, 브로드캐스트 사이즈를 줄여 성능을 향상시킬 수 있다.
클래스 방식에서도 하나의 IP 주소 대역을 네트워크로 두고, 여러 개의 호스트 주소를 만들기 때문에 서브네팅이 아닌가? 라는 생각이 들었다.
하지만 기술의 등장 맥락에 따라, 보통 "필요에 따라 원하는 만큼" 네트워크를 분할하는 기술이라는 의미에서 서브네팅이라는 단어를 많이 쓰는 듯하다. 요지는 더 유연하게 네트워크를 분할할 수 있게 되었다는 것이다.
근데 이제 CIDR을 곁들인..
클래스 없는 주소 지정은 네트워크 주소의 길이가 가변적이다.
가변길이 서브넷 마스크(VLSM, Variable Length Subnet Masks)를 사용한다는 뜻이다.
가변적이라 길이를 찾기 힘들다. 이 문제를 CIDR로 해결한다.
CIDR (Classless Inter-Domain Routing)
IP 주소 블록의 크기(네트워크 주소의 길이)를 지정하는 데 사용되는 표기법이다.
full name을 보아도 클래스 없는 주소 지정에 사용함을 알 수 있다.
(aws 공식 사이트에서는 이를 "인터넷상의 데이터 라우팅 효율성을 향상시키는 IP 주소 할당 방법"이라 설명한다.)
서브넷 마스크가 IP 주소와 유사한 형태로 이를 표기했다면,
CIDR은 10진 표기법을 사용하며 "/24"와 같이 슬래쉬와 길이값으로 네트워크 주소 길이를 보다 간소화하여 표기한다.
CIDR는 네트워크 주소의 길이를 표시해줌으로써 유연하게 서브네팅할 수 있도록 돕는다.
AWS에서도 CIDR 블록을 사용하여 VPC를 생성한다고 한다.
이 때 CIDR 블록이란, 동일한 네트워크 접두사와 비트 수를 공유하는 IP 주소 모음이다.
* '접두사'란?
포스팅에서는 용어 설명을 줄이기 위해 이를 생략하고 '네트워크 주소'라는 말로 통일했는데,
IP 주소에서 네트워크 주소에 해당하는 prefix 부분을 뜻한다.
서브네팅 예시
아래와 같은 IP 주소 대역이 주어진 네트워크가 있다고 하자.
주어진 네트워크 대역은 과거 클래스 분류 방식으로 형성된 것이므로, 당연히 기본 서브넷 마스크도 클래스에 의해 정의된다.
CIDR 서브네팅은 이를 무시하고 주소 공간을 할당하는 것이다.
그래서 아래 네트워크 주소의 길이는 24이고, 호스트의 주소는 256개이다.
10111001.01111011.01111011.xxxxxxxx (185.123.123.xxx/24)
이 네트워크를, 호스트를 128개씩 가지는 두 개의 네트워크(=서브넷)로 분할해보면 아래와 같이 될 것이다.
10111001.01111011.01111011.1xxxxxxx (185.123.123.129/25 ~ 185.123.123.255/25)
10111001.01111011.01111011.0xxxxxxx (185.123.123.0/25 ~ 185.123.123.128/25)
서브넷 마스크: 255.255.255.128
이 때, x로 표시하지 않은 부분은 모두 네트워크의 주소에 해당한다.
서브네팅을 하면서 각 서브넷의 네트워크의 주소 길이가 25로 바뀐 것을 확인할 수 있다.
나눠진 서브넷에 따라,
185.123.123.129/25 부터 185.123.123.255/25 까지가 같은 CIDR 블록이고,
185.123.123.0/25 부터 ~ 185.123.123.128/25 까지가 같은 CIDR 블록이다.
4개의 네트워크로 분할해보면 아래와 같이 될 것이다.
10111001.01111011.01111011.11xxxxxx (185.123.123.192/26 ~ 185.123.123.255/26)
10111001.01111011.01111011.10xxxxxx (185.123.123.128/26 ~ 185.123.123.191/26)
10111001.01111011.01111011.01xxxxxx (185.123.123.64/26 ~ 185.123.123.127/26)
10111001.01111011.01111011.00xxxxxx (185.123.123.0/26 ~ 185.123.123.63/26)
서브넷 마스크: 255.255.255.192
이처럼 가변 길이 서브넷 마스크를 사용하여, 네트워크 주소의 길이가 가변적인 주소 지정을 할 수 있음을 알 수 있다.
단, 네트워크 주소, 브로드 캐스트 주소는 사용할 수 없다
하지만 분할한 서브넷에서 첫번째 IP 주소, 마지막 IP 주소는 호스트 주소로 할당할 수 없음을 잊지말자.
예를 들어 185.123.123.129/25 부터 185.123.123.255/25 까지인 CIDR 블록에서
185.123.123.129는 네트워크 주소값,
185.123.123.255는 브로드캐스트 주소값이기 때문이다.
AWS에서도 네트워크 주소, 브로드 캐스트 주소로는 EC2 인스턴스를 할당할 수 없다!
이걸 왜 알아야할까?
1. 서비스 운영을 위한 서버 환경 구축 시 적절한 규모의 네트워크를 이용할 줄 알기 위하여
2. 네트워크 상 이슈는 서비스에 심각한 영향을 끼칠 수 있으므로, 안정적인 서비스 운영을 위하여
- AWS와 같은 클라우드에 대하여 인프라에 대한 이해를 바탕으로 사용해야 하므로
- 또, 적절한 규모의 네트워크에서 환경을 구축하고 사용할 수 있도록
등등..
참고 자료
'공부 > CS' 카테고리의 다른 글
[네트워크] 서브네팅 이해하기 (1) IPv4와 클래스, 주소의 고갈 (0) | 2023.05.27 |
---|---|
[네트워크] Unicast, Broadcast, Multicast - 네트워크 전송 방식 (0) | 2023.05.14 |
[네트워크] 소켓의 실체? (1) | 2023.05.14 |