1. Linux中查询某个域名的ipv6地址:
nslookup -query=AAAA betax.cc
2. Windows中查询某个域名的ipv6地址:
nslookup -q=AAAA betax.cc
3. Java/Groovy中根据域名获取IPv6的实现:
[1]调用getAll会获取所有的地址:
for (InetAddress i : InetAddress.getAllByName("betax.cc")) {
println i
}
[2]最终会调用Native方法:
[3]该Native方法的源码在: src/windows/native/java/net/Inet6AddressImpl.c#Java_java_net_Inet6AddressImpl_lookupAllHostAddr
[4]该方法中调用了系统函数getaddrinfo - Linux:
http://man7.org/linux/man-pages/man3/getaddrinfo.3.html
Windows:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms738520(v=vs.85).aspx
该函数会返回所有的IP地址, 然后根据是否preferIPv6 or preferIPv4 来决定返回顺序.
4. Windows 或者 linux 如果想正确解析出IPv6的地址
你本地必须拥有一个IPv6地址, windows添加IPv6地址可以用这个 - http://blog.csdn.net/ssergsw/article/details/9125813
5. 一个抓包结果:
dns是一个应用层协议, 底层实现是用的UDP
扫描二维码关注公众号,回复:
11570728 查看本文章
ipv4的记录:
ipv6记录:
Ref:
[1]Java网络相关配置:https://docs.oracle.com/javase/1.5.0/docs/guide/net/properties.html