问题标签 [ipv6]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - HttpContext IP问题
我在使用时遇到问题HttpContext.Current.Request.UserHostAddress
,有时返回“192.168.0.17”(IPv4),有时返回“fe80::99be:a05d:7938:1c30%8”(IPv6),从同一台计算机和导航器调用。
我该怎么做才能始终返回 IPv4?
c++ - getaddrinfo() 仅返回 ::1 作为 IPV6 地址,
我正在使用 getaddrinfo() 为我的本地计算机返回所有分配的 IP 地址(IPv4 和 IPv6)。我看到在 XP 上, getaddrinfo() 只返回 ::1
(我在 2 台 XP 机器上安装了 IPV6 堆栈并配置了 IPV6 地址并 ping 了两个对等方。它们工作正常。我检查了 Ipconfig 一切正常。)
ipv6 - 如何确定两个 IPv6 地址之间的相等性?
我有一个应用程序,允许管理员指定有效的 IP 地址,可以从中发出 Web 服务请求。我只需获取配置的 IP 地址并将它们与传入的请求进行比较。比较两个 IPv4 地址是微不足道的,我认为比较两个 IPv6 地址也是如此。
然而,当我注意到 IPv6 地址有点复杂时,我的网络无知开始显现。我注意到的一个问题是,如果我查看机器上的 IP 地址(正在查看 VMWare 控制台显示的 IP 地址)与来自 Web 请求的 IP 地址(HttpContext.Current.Request.UserHostAddress
在 .NET 中),我注意到其中一个以%10 和 %11 中的另一个:
- ipconfig 显示:fe80:8179:5576:c6d0:8b16%11
- UserHostAddress 显示:fe80::8179:5576:c6d0:8b16%10
唯一的区别是 %10 和 %11 - 什么给出?
我还看到 IPv6 地址以“/”结尾,后跟 2 位数字。在进行比较时,我是否应该忽略这最后 3 位数字(如果它们存在)?如果是这样,我需要寻找哪些有效的替代结局?
- - - - - - 编辑 - - - - - - -
这是我根据提供的答案的解决方案...
我只是存储一个“清理过的”IP 地址并将其与“清理过的”IP 地址进行比较。在此处使用 .NET 是我清理 IP 地址的方式。从性能的角度来看不是最好的,但它确实有效。我宁愿只做一个比较,GetAddressBytes()
但我正在使用 aDictionary
并且我决定反对创建自己的ByteComparer
.
regex - 如何将 IPv6 地址与 Perl 正则表达式匹配?
所以我需要匹配一个可能有也可能没有掩码的 ipv6 地址。不幸的是,我不能只使用库来解析字符串。
掩码位很简单,在这种情况下:
困难的部分是 ipv6 地址的不同格式。它需要匹配 ::beef、beef::、beef::beef 等。
更新:我快到了..
在这种情况下,我仅限于使用 perl 的正则表达式。
c# - IIS Request.UserHostAddress 返回 IPV6 (::1),即使禁用了 IPV6
在我的网卡的属性部分,在 windows server 2008 上,我禁用了 IPV6,只启用了 IPV4。
但是在 ASP.NET 中,Request.UserHostAddress 返回 '::1',一个 IPV6 地址。
有谁知道如何恢复到 IPV4?
.net - WCF IPv6 端点
我正在研究在用于 EPoS 终端的 Windows 应用程序中使用 Peer 2 Peer 和 WCF 的可能性。
该应用程序将位于本地网络中的多台 PC 上;每台 PC 只会有一个应用程序实例。
我目前的想法是我的应用程序启动并加入对等网格,在加入网格时,它会定期喊出一条“心跳”消息,其中包含其终端 ID 和 IPv6 地址。
加入网格的任何其他终端都会接收这些心跳并在网络中维护自己的终端列表。
应用程序内的操作将需要访问网络上的特定终端。因此,该应用程序将终端 id 解析为一个 IP 地址,并可以生成一个 Uri 以通过 net.tcp 访问该服务
我已经使用链接本地地址发布了服务端点
设置端点的字符串将是,例如:
“net.tcp://[fe80::250:56ff:fec0:8%4]:5555/GSS-POS/PrintingService”
但是,当我尝试访问此服务时,我收到一条错误消息,指出主机无法访问。
TCP 错误代码 10065:尝试对无法访问的主机进行套接字操作 fe80::290:5ff:fe01:6303%4:5555
我意识到这取决于我对 IPv6 寻址的有限了解。我应该为我的端点使用什么地址(我正在使用链接本地 IPv6 地址)?还是我的整体概念有缺陷?
TIA,
西蒙
ipv6 - IPv6 多播地址:组 ID 字段实际上是 112 位还是 32 位?
我试图了解选择 IPv6 多播地址组 ID 的规则,而 RFC 似乎有些不一致。例如,在RFC 2373第 2.7 节中显示了该图:
...但是在第 2.7.2 节中它显示了这一点:
所以我的问题是,组 ID 字段的高 80 位是否可用?如果它们可用,是否仅在某些情况下(例如,当使用非以太网网络技术时?)如果我在以太网 LAN 上多播时设置这些位,我应该会遇到什么问题?
c++ - 使用 C++ 对 ipv6 地址进行比较操作
由于 IPV6 地址有 16 个字节,并且它们不是在 c++ 中存储它的数据类型,我想存储 IPV6 地址,并与 IPv6 地址进行一些比较,请告诉我该怎么做
c++ - 没有第三方 ipv6 隧道的 Windows Peer to Peer Global_Group
我一直在尝试开发一个使用 Micosoft 的点对点组库的点对点应用程序。基于我在 msdn 上创建群聊应用程序acrticle 的工作。这适用于本地组,如果我安装了第三方隧道适配器(例如 gogo6 客户端),也适用于全局组。然而,从我读过的几件事来看,我似乎应该能够通过 Windows 内置的 Teredo 隧道适配器来完成工作。
我已经尝试了各种方法,现在可以在没有运行 gogo6 隧道的情况下访问仅限 ipv6 的站点(例如 ipv6.google.com),但我似乎无法通过这种方法在我的全局组中找到任何其他对等方。
我在 Windows 防火墙中为应用程序添加了允许流量(包括边缘遍历)的规则,并且还为传入和传出流量打开了以下端口。
- tcp 3587
- UDP 3540, 1900
从我读过的样本来看,它似乎应该可以正常工作,但事实并非如此。我确实读过要在应用程序中使用 teredo,您必须特别启用它。我发现这样做的唯一方法是打开套接字时,但是组 api 会为您完成所有这些,所以我不知道如何控制它。
python - 强制 python mechanize/urllib2 只使用 A 请求?
这是一个相关的问题,但我不知道如何将答案应用于 mechanize/urllib2: how to force python httplib library to use only A requests
基本上,给出这个简单的代码:
这导致wireshark说以下内容:
那是5秒的延迟!
我的系统中的任何地方都没有启用 IPv6(gentoo 用 编译USE=-ipv6
)所以我认为 python 没有任何理由尝试 IPv6 查找。
上面引用的问题建议明确设置AF_INET
听起来不错的套接字类型。我不知道如何强制 urllib 或 mechanize 使用我创建的任何套接字。
编辑:我知道 AAAA 查询是问题,因为其他应用程序也有延迟,一旦我在禁用 ipv6 的情况下重新编译,问题就消失了……除了在 python 中仍然执行 AAAA 请求。