com.googlecode.java-ipv6
java-ipv6
0.17
public static void main(String[] args) {
String t = "15ba:db5::/64";
IPv6Network network = IPv6Network.fromString(t);
System.out.println(network.getFirst().toLongString());
System.out.println(network.getLast().toLongString());
15ba:0db5:0000:0000:0000:0000:0000:0000
15ba:0db5:0000:0000:ffff:ffff:ffff:ffff
由于互联网的快速发展与普及,原有的IPV4地址已不能满足网络用户的需求,虽然NAT可以缓解IPV4地址的耗尽,但NAT破坏了网络环境的开放、透明以及端到端的特性,因此IPV6地址协议应运而生。IPV6协议使用128位地址替代32位的IPV4地址,这样大约可以产生340万亿亿亿亿(3.4*1038)个可用的地址。此数目可以满足公共IP地址需求。本文作为IPV6入门,主要介绍IPV6...
IPv6地址总长度为128比特,通常分为8组,每组为4个十六进制数的形式,每组十六进制数间用冒号分隔。例如:FC00:0000:130F:0000:0000:09C0:876A:130B,这是IPv6地址的首选格式。为了书写方便,IPv6还提供了压缩格式,以上述IPv6地址为例,具体压缩规则为:一个IPv6地址可以分为如下两部分:接口标识可通过三种方法生成:手工配置、系统通过软件自动生成或IEEE EUI-64规范生成。其中,EUI-64规范自动生成最为常用。IPv6地址中的64位接口标识符(Interfa
今天继续介绍IPv6,本文主要介绍IPv6中各地址的计算方式,主要包括——如何由MAC地址计算IPv6 LLA地址,如何计算被请求节点组播地址,如何计算组播MAC地址。
一、由MAC地址生成IPv6地址
在IPv6协议中,可以手工配置LLA地址,也可以根据EUI-64,利用本地网卡的MAC地址计算IPv6的LLA地址。所谓EUI,即Extend Unique ID,因为网卡MAC地址的唯一性,因此这样计算处的LLA地址也是唯一的。(注:在这里有的同学可能会问,如果链路的PPP链路,没有MAC地址怎么办,在华
笔记-TCP/IP IPv4/IPv6地址比较IP地址转换函数转换实例IP地址比较原理比较大小
IP地址转换函数
在比较IP地址之前需要将其转换为网络字节序的二进制整数,常用的IP地址转换函数是 inet_pton(),其支持IPv4和IPv6.
windows下:
#include <WS2tcpip.h>
linux下:
#include <arpa/inet.h>
引入依赖: compile group: 'com.googlecode.java-ipv6', name: 'java-ipv6', version: '0.17'
通过2个ipv6地址,起止段,来计算ipv6前缀位数
import com.googlecode.ipv6.IPv6Address;
import com.googlecode.ipv6.IPv6Network;
public class TEST {
public static void main(String[] args..
由于网上已经有针对IPv4的ip的转换,但是关于IPv6的比较少,在一系列针扎之后还是找到了IPv6的处理方法,因此贴出来给需要的人一点帮助,有问题可以留言一起探讨
1.引入java-ipv6 包
<dependency>
<groupId>com.googlecode.java-ipv6</groupId>
<artifactId>java-ipv6</artifactId>
<version>0.17<
在项目过程中经常会遇到IP地址范围段的配置,可能会涉及判断IP在不在范围内、两个IP地址段是否冲突(有交叉)之类的判断。IPv4地址大小的比较在网上可以找到很多相关的文章,由于IPv4地址是16位的,可以通过手动转化成无符号整型(或长整型)进行大小比较。而IPv6是128位的,除了转化成数字后范围过大外,IPv6还有很多种缩写的方法,会给大小的比较带来问题。
这时可以通过引入 io.netty.util.NetUtil类,用简单的代码完成IPv6大小的比较。NetUtil的createByteArrayF