C#中的IPv6到IPv4交互转换

Vin*_*B R 5 c# asp.net applet ipv4 ipv6

我有一个IPv4格式的IP列表,我从我以前的Web服务器收到的HttpRequest对象中收集了这些IP.我有一个java applet,它以Ipv6格式提供IP地址(java applet返回一堆数据和IP地址).我需要检查applet返回的IP是否与列表中的任何项匹配.

如何互换IPv6和IPv4格式?

我的Web应用程序基于ASP.Net C#构建

编辑

这是我面临的问题.Java applet从客户端返回一堆IP,我假设它取决于客户机具有的网卡数量.

与此同时,我从ASP.Net HTTPRequest对象获取IP地址.我需要找出哪些IP实际用于连接到我的网站并执行一些任务.

问题是有时我只从IPv6格式的javaapplet中获取一个IP,因为我从HTTPRequest对象获得的IP是IPv4格式,因此比较失败.

小智 4

您正在谈论 IPv4-IPv6 映射或 IPv4 地址嵌入。

IPv4 地址嵌入用于在 IPv4 地址和 IPv6 地址之间创建关系,以帮助从 IPv4 过渡到 IPv6。其中一种是兼容 IPv4 的 IPv6 地址,用于同时兼容 IPv4 和 IPv6 的设备;它以 96 个零位开始。另一种是IPv4映射地址,用于将不兼容IPv6的IPv4设备映射到IPv6地址空间;它以 80 个 0 开头,后面跟着 16 个 1。

..

这两种地址之间的区别很微妙,但很重要。前 80 位始终为零,因此当看到这一点时,您就知道它是某种嵌入的 IPv4 地址。IPv4 兼容的 IPv6 地址仅用于实际支持 IPv6 的设备;IPv4 兼容地址是对其传统 IPv6 地址的补充。相反,如果在最初的80之后的16位中看到“FFFF”,则这表示其IPv4地址已被映射到IPv6格式的传统IPv4设备。它不是支持 IPv6 的设备。

因此,最重要的是,除非它们映射在一起,否则您将无法进行相互转换。你需要一名翻译