이것이 가능합니까? 어떻게하면 ipv4를 ipv6 주소로 변환 할 수 있습니까?IPv4에서 IPv6로 주소를 변환하는 방법
여기에서 몇 가지 예 :
0.0.0.0 -> ::
127.0.0.1 -> ::1
내가 자바 솔루션을 찾고 있어요.
감사합니다.
이것이 가능합니까? 어떻게하면 ipv4를 ipv6 주소로 변환 할 수 있습니까?IPv4에서 IPv6로 주소를 변환하는 방법
여기에서 몇 가지 예 :
0.0.0.0 -> ::
127.0.0.1 -> ::1
내가 자바 솔루션을 찾고 있어요.
감사합니다.
의미있는 IPv4와 IPv6 간의 매핑이 없습니다. 0.0.0.0과 127.0.0.1과 같은 것들은 스펙에서 특별한 경우이므로 동등한 의미를 갖는다. 그러나 IPv4 주소가 주어지면 특정 IPv6 주소가 무엇인지 알 수 없습니다. DNS 검색을 사용하여 주어진 IP 주소가 IPv4 주소 이외에 IPv6 주소로 해석되는 호스트로 해석되는지 확인하지만 DNS 서버는 특정 컴퓨터를 지원하도록 구성되어야합니다.
IPv4 주소에는 IPv6 주소 앞에 96 개의 0 비트가 붙는 경우가있었습니다. 예 : 192.168.10.13 -> ::C0A8:0A0D
. 내가 아는 바에 따르면이 기능은 더 이상 사용되지 않으며 더 이상 사용할 수있는 직접 변환이 없습니다.
나는 IPv4 매핑 된 IPv6 주소가 여전히 사용되지 않는 것으로 생각합니다. 이 구성표의 예제는 :: ffff : c0a8 : 0a0d입니다. 그 안에 0이있는 것을 IPv4 호환 IPv6 주소라고합니다. –
하이브리드 이중 스택 IPv6/IPv4 구현은 일반적으로 특수 클래스의 주소 인 IPv4 매핑 주소를 지원합니다. 더는 아래의 링크를 확인을 위해 : 매핑 된 IPv6 로의 IPv4의 변환
http://en.wikipedia.org/wiki/IPv6#IPv4-mapped_IPv6_addresses
을, 다음을 사용할 수 있습니다
String ip = "127.0.0.1";
String[] octets = ip.split("\\.");
byte[] octetBytes = new byte[4];
for (int i = 0; i < 4; ++i) {
octetBytes[i] = (byte) Integer.parseInt(octets[i]);
}
byte ipv4asIpV6addr[] = new byte[16];
ipv4asIpV6addr[10] = (byte)0xff;
ipv4asIpV6addr[11] = (byte)0xff;
ipv4asIpV6addr[12] = octetBytes[0];
ipv4asIpV6addr[13] = octetBytes[1];
ipv4asIpV6addr[14] = octetBytes[2];
ipv4asIpV6addr[15] = octetBytes[3];
는 또한
this
의 IPv6에서 IPv4 호환 확인합니다.
IPv4 전용 어드레스 예 192.168.99.1
1 단계는>
분할 첫번째 옥텟 (192)에 의해 16 IE (16 진수는베이스 (16) 이후) : 12 회 = 16분의 192 0 위에 남아와 정확히 - 진수에서 12 C 로 표현되는 0 - 헥스는, 당신이 그것을 짐작 (영) HEX 0 따라서 192>
단계 C0인 두번째 옥텟 (168)와 516,
반복 스텝 1, IE : 10, = 160 6 * 때문에 8 = 10 16분의 168가 남아 - HEX 10 인 - HEX 8 따라서 8 인 HEX에서 168 A8
3 단계>
반복 규칙 입니다!세번째 옥텟 (99) IE : 3으로 16분의 99 = 6 회 통해 좌측 - HEX 3 4 단계 3 따라서 HEX 99 63
이다>
- HEX 6 6 인마지막 옥텟 IE : 1/16 = 0 번 1 이상 왼쪽으로 - HEX 1 HEX에 따라서 1 1 따라서 01
는 IPv4입니다 - HEX에, 그래이 0 가 0 주소 IPv6 주소 부분에 표시되는 192.168.99.1은 C0A8 : 6301이됩니다. 당신은 소문자를 사용하고 추가해야하지만 올바른 코드가 그래서 모든 누락은, IPv6의 바이트 :
:: c0a8 :
: 당신은 지금 언제나 사용할 구문을 사용할 수 있습니다 6301
또는 : 192.168.99.1
는 그래서 결국에 IPv6 주소는 이전 주소 이전 :: 문자와 이전 주소가 될 수 있습니다.
이중 스택 시스템에서는 실제로 IPv4에서 IPv6 로의 매핑이 :: ffff : XXXX : XXXX 공간에 있습니다. 이것은 일반적으로 ":: ffff : 192.168.1.1"로 표시됩니다. 따라서 IPv6 주소 공간에 IPv4 주소의 의미있는 표현이 있습니다. –
@DoktorJ, 나는 이것이 문제라고 생각하지 않는다. 요청이 적절한 IP6 주소에 대한 것이지 IP6 스택의 IP4 주소를 참조하는 방법이 아니라고 생각합니다. – Yishai
@DoktorJ하지만 라우팅 기능이 없으면이 매핑이 도움이되지 않습니다. – glglgl