首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从安卓上的IPv4地址合成IPv4映射的IPv6地址?

从安卓上的IPv4地址合成IPv4映射的IPv6地址?
EN

Stack Overflow用户
提问于 2017-08-08 23:15:05
回答 1查看 1.2K关注 0票数 2

我试图从安卓中的IPv6地址合成一个IPv4地址(无论是在本机代码中还是在Java本身中),就像RFC-7050中记录的那样,以便在NAT64后面使用。

在iOS中工作时,这个选项可以通过调用getaddrinfo来使用,但是,Android的getaddrinfo实现似乎只会合成主机名的IPv6,而不是IPv4地址。

在iOS上,而在NAT64后面,下面的代码将在变量res的地址列表中生成一个合成的IPv6地址。然而,在安卓上,相同的本地代码将生成一个IPv4地址,除非我将主机名而不是IPv4地址传递给getaddrinfo

代码语言:javascript
复制
struct addrinfo *res;
getaddrinfo("x.x.x.x", "80", NULL, &res);

编辑

我知道Android实现了CLAT/464 CLAT,但这并不能覆盖所有设备和网络。一个主要的例子是NAT64网络,它位于IPv4专用网络之后。 示例: -> IPv4 Only -> NAT64 Network -> Client 客户端将在RFC-4193下拥有一个本地的RFC-4193地址(我相信),但只能通过它的NAT64网关访问互联网,这意味着NAT64在将地址发送到上游之前必须翻译地址。 ,所以我需要一种为合成的IPv6地址生成前缀的方法 理想情况下,我们需要合成一个IPv6地址才能到达IPv4端点。

EN

回答 1

Stack Overflow用户

发布于 2017-08-09 05:50:48

这可能是你的答案,也可能不是你的答案:

你不需要合成Android上的地址。它有464 just,可以在IPv4网络上模拟一个NAT64堆栈,所以您的应用程序只需使用IPv4,安卓就可以处理幕后的映射。

iOS和Android的区别在于,Android在堆栈中实现了IPv4仿真。苹果公司决定,他们希望保持IP堆栈的干净,并为开发人员提供工具(如getaddrinfo),以便自己完成映射。不同的设计决策。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45579355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档