NetworkInterface
개체가 실제 NIC인지, NIC의 소프트웨어/에뮬레이션인지 여부를 어떻게 식별 할 수 있습니까?NetworkInterface 객체가 실제 NIC인지 여부를 식별하는 방법
이론적으로 이것이 실제 인터페이스인지 여부를 알려주는 NetworkInterface#isVirtual
및 NetworkInterface#getParent
과 같은 메서드가 있다는 것을 알고 있습니다.
하지만이 방법을 사용하면 분명히 나에게 맞는 답변을 줄 수 없으며 127.0.0.1
은 루프백 소프트웨어 인터페이스입니다.
내가 누락 된 항목이 있습니까?
코드 :
Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();
for (NetworkInterface netIf : Collections.list(nets)) {
System.out.printf("Display name: %s\n", netIf.getDisplayName());
System.out.printf("Name: %s\n", netIf.getName());
System.out.printf("Up? %s\n", netIf.isUp());
System.out.printf("Loopback? %s\n", netIf.isLoopback());
System.out.printf("PointToPoint? %s\n", netIf.isPointToPoint());
System.out.printf("Supports multicast? %s\n", netIf.supportsMulticast());
System.out.printf("Virtual? %s\n", netIf.isVirtual());
System.out.printf("Hardware address: %s\n", Arrays.toString(netIf.getHardwareAddress()));
System.out.printf("MTU: %s\n", netIf.getMTU());
System.out.printf("Parent: %s\n", netIf.getParent());
System.out.println("InetAddress:");
Enumeration<InetAddress> inetAddresses = netIf.getInetAddresses();
int count = 1;
for(InetAddress inetAddress : Collections.list(inetAddresses)){
System.out.println("\tInetAddress #" + count);
printInetAddressInfo(inetAddress, "\t\t");
count++;
}
System.out.println("SubInterfaces:");
displaySubInterfaces(netIf);
netIf = null;
System.out.printf("\n");
}
결과 :
Display name: Software Loopback Interface 1
Name: lo
Up? true
Loopback? true
PointToPoint? false
Supports multicast? true
Virtual? false
Hardware address: null
MTU: -1
Parent: null
InetAddress:
InetAddress #1
inetAddress: /127.0.0.1
InetAddress #2
inetAddress: /0:0:0:0:0:0:0:1
SubInterfaces:
감사합니다. 그렇다면 주어진 인터페이스가 물리적 NIC인지 여부를 식별 할 수있는 API가 있습니까? – hagrawal
AFAIK, no. 비록 isLoopback()과 isVirtual()을 함께 사용할 수는 있지만. (하나의 문제는 운영 체제 자체가 NIC가 진정으로 물리적 인 지 (예 : 가상화 된 플랫폼인지) 모르겠다는 것입니다.하지만 NIC가 "물리적"인지 알아야하는 이유는 무엇입니까? –
테스트 환경이 있습니다. 서버 (리눅스 박스)에서, 그것은 2 개의 FQDN을 사용하여 도달 할 수 있습니다 -'abc-sit.xyz.ca'와'abc-sit2.xyz '라고합시다.ca'라고 말하면서, 그 시스템이 2 개의 NIC를 가지고 있는지 아니면 하나만 가지고 있는지, 다른 하나는 단순히 소프트웨어 인터페이스인지를 알고 싶었습니다. – hagrawal