네트워크 체계 CIDR (사이더)에 대해서 JAVA 코드로 구현해야하는 요구사항이 생겼다.
https://kim-dragon.tistory.com/9
[네트워크] CIDR이란?(사이더 란?)
오늘은 CIDR에 대해서 설명해보도록 하겠습니다. 네트워크 설계를 하면서 가장 많이 접하게 될 개념이 CIDR입니다. 사이더라고 부릅니다. CIDR의 full name은 Classless Inter-Domain Routing 으로 클래스 없는
kim-dragon.tistory.com
해당 글에 CIDR 개념에 대해 잘 정리되어있다.
이를 자바 코드로 구현할 필요는 없이 !! gradle 라이브러리 추가하면된다.
개발을 하다 보면 IP 처리를 위한 여러 가지 작업을 할 때가 있습니다. 그럴 경우 사용 가능한
CIDR 주소체계에 대한 계산을 해주는 유틸 클래스가 있어 소개해 보려 합니다.
해당 CIDR의 시작 IP, 끝IP, Broadcast IP, Network IP,IP 포함 여부등을 확인할 수 있습니다.
SubnetUtils
// https://mvnrepository.com/artifact/commons-net/commons-net
implementation group: 'commons-net', name: 'commons-net', version: '3.6'
SubnetTest.java
|
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
|
package subnet;
import org.apache.commons.net.util.SubnetUtils;
public class SubnetTest {
public static void main(String[] args) {
SubnetUtils subnetUtils = new SubnetUtils("120.131.5.130/26");
subnetUtils.setInclusiveHostCount(true); //network,broadcast ip 포함, false:불포함
System.out.println("넷마스크:" + subnetUtils.getInfo().getNetmask());
System.out.println("네트워크 IP:" + subnetUtils.getInfo().getNetworkAddress());
System.out.println("브로드캐스트 IP:" + subnetUtils.getInfo().getBroadcastAddress());
System.out.println("시작 IP:" + subnetUtils.getInfo().getLowAddress());
System.out.println("끝 IP:" + subnetUtils.getInfo().getHighAddress());
System.out.println("120.131.5.130 해당 대역의 포함여부: " + subnetUtils.getInfo().isInRange("120.131.5.130"));
System.out.println("120.131.5.234 해당 대역의 포함여부: " + subnetUtils.getInfo().isInRange("120.131.5.234"));
String[] allAddresses = subnetUtils.getInfo().getAllAddresses();
System.out.println("===사용가능한 IP 리스트 시작===");
for (String allAddress : allAddresses) {
System.out.println(allAddress);
}
}
}
|
cs |
subnetUtils.setInclusiveHostCount(true) 라인의 true, false 옵션에 따라 network, boardcast IP 포함 여부를 결정할 수 있습니다.
OUTPUT
넷마스크:255.255.255.192
네트워크 IP:120.131.5.128
브로드캐스트 IP:120.131.5.191
시작 IP:120.131.5.128
끝 IP:120.131.5.191
120.131.5.130 해당 대역의 포함여부: true
120.131.5.234 해당 대역의 포함여부: false
===사용가능한 IP 리스트 시작===
120.131.5.128
120.131.5.129
120.131.5.130
120.131.5.131
120.131.5.132
120.131.5.133
120.131.5.134
120.131.5.135
120.131.5.136
120.131.5.137
120.131.5.138
...
'SpringBoot' 카테고리의 다른 글
| [JSON]JAVA에서 JSON 파싱하는 방법 (0) | 2023.03.02 |
|---|---|
| [Lombok] Using Lombok UtilityClass (0) | 2023.03.02 |
| [Pinpoint] Pinpoint APM 적용하기 (0) | 2022.08.24 |
| [Spring Boot] Thymeleaf Layout Dialect (0) | 2022.07.24 |
| 스프링 부트(Spring Boot) 게시판 만들기 (0) | 2020.06.20 |
댓글