ip-address关于IPV6地址合法性的监测

IPV6地址校验

  • 关于项目需求,需要给用户增加一个网络配置的页面,不过老大说IPV6近来会普遍支持,所以我来研究了
  • ipv6百度百科
  • ipv6表示方法
    • IPv6的地址长度为128位,是IPv4地址长度的4倍。于是IPv4点分十进制格式不再适用,采用十六进制表示。IPv6有3种表示方法。
    • 冒分十六进制表示法
        格式为X:X:X:X:X:X:X:X,其中每个X表示地址中的16b,以十六进制表示,例如:
        ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
        这种表示法中,每个X的前导0是可以省略的,例如:
        2001:0DB8:0000:0023:0008:0800:200C:417A→ 2001:DB8:0:23:8:800:200C:417A
    • 0位压缩表示法
        在某些情况下,一个IPv6地址中间可能包含很长的一段0,可以把连续的一段0压缩为“::”。但为保证地址解析的唯一性,地址中”::”只能出现一次,例如:
        FF01:0:0:0:0:0:0:1101 → FF01::1101
        0:0:0:0:0:0:0:1 → ::1
        0:0:0:0:0:0:0:0 → ::
    • 、内嵌IPv4地址表示法
        为了实现IPv4-IPv6互通,IPv4地址会嵌入IPv6地址中,此时地址常表示为:X:X:X:X:X:X:d.d.d.d,前96b采用冒分十六进制表示,而最后32b地址则使用IPv4的点分十进制表示,例如::192.168.0.1与::FFFF:192.168.0.1就是两个典型的例子,注意在前96b中,压缩0位的方法依旧适用

校验IPV6

  • 使用正则表达式也是校验IPV6的好方法,比不过毕竟其表示方法有很多,没有办法同时兼容
  • 所以我在网上找了很长时间,也试过自己编写正则校验,不过不太理想
  • 很巧找到了这个,和大家分享一下
    ip-address
var Address6 = require('ip-address').Address6;
 
var address = new Address6('2001:0:ce49:7601:e866:efff:62c3:fffe');
 
address.isValid(); // true  
 
var teredo = address.inspectTeredo();
 
teredo.client4;    // '157.60.0.1'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值