티스토리 뷰
서브넷팅이 뭘까!
서브넷팅(Subnetting) 이란 ?
한 개의 네트워크를 서브넷 마스크를 이용해 여러 개의 서브넷 네트워크로 분할
왜 한개의 네트워크를 여러개로 나눌까?
극단적으로 A클래스를 일반 가정집에 부여 한다면 16,777,214개 되는 호스트를 낭비 할 것이다.이러한 문제로 인하여 효율적으로 사용할 수 있도록 한 방법이 서브넷팅이다~!!!
- 서브넷 마스크를 사용하여 Host를 Network로 변환한다.
- 네트워크 주소부분의 비트를 연장하고 그 나머지 부분이 호스트의 식별자가 된다.
- 각 네트워크에 속해 있는 Host 들은 같은 영역에 존재하기에 라우터까지 거치지 않고도 통신할 수 있습니다.
- 서브넷 마스크는 255와 0으로 이루어져있다.
- 255는 네트워크 부분이며 0은 호스트 부분이 된다
- 호스트 부분에서 IP를 쪼개는 개념이다
서브넷팅 계산법
📌 참고사항
💡 Host ID를 Network ID로 변화하기 위해 한 Bit씩 가져올 때마다 네트워크 크기는 2배로 증가하고 호스트 수는 2로 나누어지게 됩니다.
💡 2진수로 표현하였을 때 Network ID 부분은 1이 연속적으로 있어야 하며, Host ID 부분은 0이 연속적으로 있어야 한다.
즉, 중간에 1이나 0이 섞이면서 나열될 수 없다.
💡 호스트 네트워크로 사용할 수 없는 두가지!!!!
- Network Address : 가장 첫번째 IP주소이며, 각 네트워크를 구분할 때 사용하고 있음.
- Broadcast Address : 가장 마지막 IP주소이며, 네트워크에 있는 클라이언트 모두에게 데이터를 보내기 위함.
- 예를 들면, IP 네트워크 주소가 192.168.1.0 이면 브로드캐스트 주소는 192.168.1.255 임.
하지만 네트워크가 분리되므로 인하여 서로가 통신하기 위해서는 라우터를 통해서만 가능하게 된다.
물론 각 네트워크에 속해 있는 호스트들은 같은 영역에 존재하기에 라우터까지 거치지 않고도 통신할 수 있다.
계산 예제
192.168.100.12/25 를 풀어보자
/25는 서브넷 마스크가 25bit라는 의미로 255.255.255.128이 된다.
더 쉽게 말해서 서브넷마스크를 2진수로 표현했을 때 /25는 1의 개수가 25개 -> 11111111.11111111.11111111.10000000
정석(?)
네트워크 개수 = 2^(Prefix - default Prefix)
실 호스트 개수 구하는 방법 {(256/ 네트워크 구간의 개수) * 클래스에 따른 {A클래스 - (256^2), B클래스 - (256), C클래스- (1) 곱해준다} -2 } ,
더 쉬운 방법으로는 야매?인데
만약 /25일때 서브넷마스크를 2진수로 바꿔 8비트로 표현했을 때 32비트 중 25비트를 채우고 7비트가 남는다. 0은 Host 이기 때문에 2^7=128 - 2 = 126
만약 /19일때 32비트 중 16비트를 채우고 3비트가 남는다 32-19 = 2^13 -2
위의 예제는 정석(?)대로 구해보겠다.
네트워크 구간의 개수는 2^(25-24) = 2 개
네트워크 구분 되는 호스트 수= 128개
실 호스트 개수 = (256/2)*1 - 2 = 126 개
여기서 2를 빼주는 이유는 Network Address와 Broadcast Address 을 빼준 것
이때 호스트에 IP를 할당할 수 있는 범위가 [0~127], [128~255]가 되고,
네트워크는 [192.168.100.0], [192.168.100.128]이기에 2개로 나누어지게 된다.
결국 192.168.100.12/25가 속한 네트워크는 [192.168.100.0] 대역에 속하게 되며, 다른 서브넷팅 된 네트워크와는 라우터를 통하여서만 통신할 수 있다.
/25 일때 네트워크 수는 a클래스인 경우 2^(25-8) =131,072
서브넷팅은 하나의 네트워크를 분할해서 쓴다면, 그 개념과는 반대로 슈퍼넷팅이라는 것이 있다.
슈퍼넷팅(Supernetting)이란?
여러개의 작은 Network를 하나의 커다란 Network로 바꾸는 작업 (여러 Route를 하나의 Route로 요약)
(메모리,CPU 자원 낭비를 막을 수 있는 효과~)
서브넷 마스크를 사용하여 Network를 Host로 변환한다.
바로 문제로 알아보자
다음 문제는 그림을 참조해서 포함하고 있는 Network 대역대를 위한 가장 적당한 축약방법을 고르라고 한다
10.0.0.0 / 10.0.1.0 / 10.0.2.0 / 10.0.3.0 는 현재 서로 다른 네트워크 대역대이다.
모두 포함하려면 보기에서
10.0.0.0 ~ 10.0.3.255 네트워크 대역대를 고르면 되겠다.
맞는 진 모르겠지만 필자 풀이
네트워크 개수 = 4
호스트 개수 =256/4 = 64 =2^6
Prefix - default Prefix = 6
22 -16 = 6
B 정답유추
검토해보자
A. 10.0.0.0 /21 -> 10.0.0.0 ~ 10.0.7.255
B. 10.0.0.0 /22 -> 10.0.0.0 ~ 10.0.3.255
C. 10.0.0.0 /23 -> 10.0.0.0 ~ 10.0.1.255
D. 10.0.0.0 /24 -> 10.0.0.0 ~ 10.0.0.255
10.0.0.0 ~ 10.0.3.255 를 고르면 문제의 해당 대역대를 포함하는 슈퍼넷팅을 한 것이다
'인프라 > Network' 카테고리의 다른 글
[Network] TCP 3Way Handshake & 4Way Handshake 란? (0) | 2022.01.07 |
---|---|
[Network] IPv4 패킷 구조와 삽질 (0) | 2022.01.06 |
[Network] 라우팅 프로토콜 - RIP,OSPF (0) | 2022.01.05 |
[Network] TCP/IP 모델 간단정리 (0) | 2022.01.05 |
[Network] 다항 코드 (0) | 2022.01.04 |
- Total
- Today
- Yesterday
- 회고록
- .NET
- 계층
- osi7계층
- 프로그래머스
- 개발
- tcp
- SpringBoot
- Spring Boot
- 초보
- lambda
- 3Way Handshake
- aws
- dto
- java
- rds
- spring
- 자바
- 네트워크
- s3
- 알고리즘
- 스위치
- ec2
- 프로토콜
- 라우터
- 회고
- 삽질
- Docker
- 개발자
- 라우팅
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |