标签: ipv6

redis存储128位数字

我想使用 redis 有效搜索 IPv6 子网范围

我想到将 IPv6 数字地址存储在 redis 中并按范围搜索它们。这些是128 位 int,例如:

import ipaddress
int(ipaddress.ip_address(u'113f:a:2:3:4:1::77'))

> 22923991422715307029586104612626104439L
Run Code Online (Sandbox Code Playgroud)

并按范围查询:

ZRANGEBYSCORE numerics <subnet-S-start> <subnet-S-end>
Run Code Online (Sandbox Code Playgroud)

然而,redis 排序集最多可以容纳 2^53 的分数,因此我所有的大整数都被修剪,并且我失去了精度。

有没有办法在redis中保存如此大的数字而不损失精度?

您有更好的建议吗?谢谢

ipv6 subnet int128 redis

1
推荐指数
1
解决办法
1281
查看次数

使用 Inet 类型 Postgres 10.4 时,Ipv6 地址存储方式不同

我尝试在 Postgres (10.4) 的 inet 列中插入 ipv6 地址 '2001:db8:3333:4444:5555:6666:1.2.3.4' 。它存储为 2001:db8:3333:4444:5555:6666:102:304 为什么 IP 存储方式不同?存储的 IP 是否代表插入的相同 IP?这是 Postgres 更高版本中已解决的已知错误吗?问候萨米尔

postgresql ipv6

1
推荐指数
1
解决办法
200
查看次数

UDP 客户端/服务器:混合 IPv4 和 IPv6?

假设您有一个游戏服务器(仅 UDP),在同时具有 IPv4 和 IPv6 地址的服务器上运行。服务器启动,调用 getaddrinfo() 循环访问可用地址,假设它获取 IPv6 地址。因此它在 IPv6 上创建套接字并等待来自客户端的数据包。

客户端尝试连接,但这次它使用用户输入的 IPv4 地址。它创建一个 IPv4 套接字,并尝试连接到服务器。差异实际上重要吗?或者 IPv4 套接字和 IPv6 套接字之间的差异是否仅限于本地计算机?

同样,如果客户端已经创建了一个可供使用的 IPv6 套接字(因为 getaddrinfo() 表示它是有效的),然后它调用 getaddrinfo() 来查找服务器的地址,那么如果它只获得 IPv4 结果怎么办?我知道我可以告诉 getaddrinfo() 仅提供 IPv6 结果,但如果服务器没有 IPv6 地址怎么办?UDP 客户端是否应该关闭并重新创建其套接字以匹配服务器地址格式?或者我能保证得到我要求的地址格式吗?

(我欢迎任何能够回答这些问题的文档参考。我已经研究了几个小时,但尚未找到这些问题的明确答案。)

sockets udp client-server ipv6

1
推荐指数
1
解决办法
1785
查看次数

IPv6观点

我正在研究p2p应用程序,所有这些NAT-PMP和UPNP NAT遍历场景都是如此令人不愉快.关于什么时候IPv6将被普遍使用的任何想法?

p2p nat ipv6

0
推荐指数
1
解决办法
624
查看次数

IPv6 IP地址的大小为128位而不是256位的原因?

我正和一位朋友讨论IPv6的一些内部问题.

众所周知,IPv6 IP地址的大小为128位(对于IPv4,它是32位).

他问我这个大小设置为128位的原因是什么 - 256位会产生更"全面"的尺寸,这两种尺寸应该足够大,以避免将来缺少任何IP地址.

我认为它必须在像路由器这样的嵌入式设备上做到这一点,你必须更加小心内存要求,128是两个中最小的功率,这样你将来肯定不会用完这么大的IP地址.

但我不得不承认不知道一个明确的答案.

那么,网络向导,选择128位作为IPv6地址大小而不是256位的原因是什么?

network-protocols ipv6

0
推荐指数
1
解决办法
1771
查看次数

IPv6等效于ETH_P_ARP

要确定IPv4网关是否处于活动状态,可以使用以ETH_P_ARP作为协议的原始数据包套接字,如下所示:

int fd = socket (PF_PACKET, SOCK_RAW, ETH_P_ARP);
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个等效的ETH_P_ARP的IPv6,用于沿类似的线路ping IPv6网关.以编程方式实现此目的的其他选项有哪些?

谢谢!

network-programming ipv6

0
推荐指数
1
解决办法
218
查看次数

获取IPv6标头的确切大小,包括扩展标头

如果IPv4有问题并且我想从std :: istream中提取IP和ICMP头,首先我得到最初的20个字节,然后检查IPv4头中提供的头长度是否大于20个字节以便提取任何选项.下一个字节是ICMP数据包.使用IPv4标头内携带的标头长度值,我可以看到IP标头的预期大小.

但是如何获得IPv6标头的确切大小?IPv6标头内部有一个有效负载值,包括标头扩展的大小以及更高级别的数据,如ICMP.我需要知道IPv6头的大小,包括头扩展但没有更高级别的数据,以便知道ICMPv6头在std :: istream中的起始位置.

谢谢!

networking ipv4 ipv6 istream icmp

0
推荐指数
1
解决办法
2399
查看次数

在PHP中进行IPv6检查的最佳方法是什么?

现在我正在使用strcmp,但这并不是最佳选择.

那么,最好的方法是什么?

php ip ipv6

0
推荐指数
1
解决办法
108
查看次数

如果2个I​​Pv6-地址相等,如何检查PHP?

我想检查IP是否列入白名单,但是IPv6-地址可以有不同的表示形式:

例如2001:0DB8:0:0:1::12001:0db8:0000:0000:0001:0000:0000:0001

因此,字符串比较不起作用。我怎么知道两个地址相等?

php ipv6

0
推荐指数
1
解决办法
169
查看次数

可以双重用于存储和安全检索128位IPv6吗?

我们知道double可以从存储数量±4.94065645841246544e-324±1.79769313486231570e+308.我们可以存储像IPv6这样的128位值double并按原样检索吗?例如,要存储IPv4,我们可以使用32位整数并将它们存储为8位分区.我们可以通过使用位屏蔽来检索它们.

在任何语言AFAIK中都没有标准容器来存储128位.我知道double可以安全地存储64位而没有任何精度错误,但有任何黑客攻击吗?

c++ double ipv6

0
推荐指数
1
解决办法
166
查看次数