首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查网络接口ip版本ios

检查网络接口ip版本ios
EN

Stack Overflow用户
提问于 2017-02-10 13:07:28
回答 1查看 2.9K关注 0票数 9

我试图了解我的主动网络接口ip版本是什么- IPv4或IPv6。我正在使用下一个指令http://www.brianjcoleman.com/tutorial-how-to-test-your-app-for-ipv6-compatibility/来测试我的应用程序的IPv6兼容性。

我检查了这里所有可用的资源(例如快速获取设备的IP地址如何编程获取iphone的ip地址艾普?美联社是什么?),这有助于获得可用接口的列表。当我的iPhone连接到IPv4 WiFi网络时,下一个列表是:

代码语言:javascript
复制
"awdl0/ipv6" = "fe80::14ce:f9ff:fe2a:44df";
"en0/ipv4" = "192.168.1.190";
"en0/ipv6" = "fdba:ae3c:c993::19cd:be51:e41b:632e";
"lo0/ipv4" = "127.0.0.1";
"lo0/ipv6" = "fe80::1";
"pdp_ip0/ipv4" = "100.83.148.33";
"utun0/ipv6" = "fe80::e94e:c3b6:ff73:1ded";

当它连接到IPv6 WiFi网络时,下一个列表是:

代码语言:javascript
复制
"awdl0/ipv6" = "fe80::14ce:f9ff:fe2a:44df";
"en0/ipv4" = "169.254.127.94";
"en0/ipv6" = "2001:2::aab1:7dd5:c5dc:16dd:b678";
"lo0/ipv4" = "127.0.0.1";
"lo0/ipv6" = "fe80::1";
"pdp_ip0/ipv4" = "100.83.148.33";
"utun0/ipv6" = "fe80::e94e:c3b6:ff73:1ded";

在这两种情况下,我都有en0/ ip 4和en0/ip 6,所以我不清楚如何以编程方式决定我的网络的ip版本到底是什么。

任何帮助都是非常感谢的。提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-10 14:28:53

首先,也是最重要的一点是,您几乎总是“在”IPv4和IPv6网络(除非其中一个已被禁用)。无法接收DHCP地址并不意味着您不在“网络上”。这仅仅意味着没有DHCP服务器与您交谈(没有DHCP服务器的网络是完全合法的)。事实上,没有其他人在这个网络上和你在一起并不意味着你也不在网络上。你可以一个人在网络上。你就是。

有学问,但对了解发生了什么很重要。你通常的意思是“我在这个网络上有一个‘公开’的可路由地址吗?”而大多数人真正的意思是“我的‘初级’网络是什么?”这是一个完全不同的问题,而且往往很难回答。(这特别困难,因为您的“主”网络可能会因您试图到达的地址不同而有所不同。)

但对于你可能想要回答的实际问题,那就是“我是否有一个指定的、可能是可路由的IPv4 4/6地址?”要做到这一点,你必须看看你的地址,看看它分配给了什么。我喜欢的列表是维基百科的保留IP地址。综上所述,我们可以考虑上面的每个地址。

IPv4网络

代码语言:javascript
复制
"awdl0/ipv6" = "fe80::14ce:f9ff:fe2a:44df"; # fe80 => Link local (not routable)
"en0/ipv4" = "192.168.1.190"; # 192.168 => Private network (but *probably* NAT)
"en0/ipv6" = "fdba:ae3c:c993::19cd:be51:e41b:632e"; # fdba => Unique local address (not routable)
"lo0/ipv4" = "127.0.0.1"; # 127 => Host loopback (not routable)
"lo0/ipv6" = "fe80::1"; # fe80 => Host loopback (not routable) 
"pdp_ip0/ipv4" = "100.83.148.33"; # 100.83 => Service provider (not useful to you)
"utun0/ipv6" = "fe80::e94e:c3b6:ff73:1ded"; # fe80 => Host loopback (not routable)

IPv6网络

代码语言:javascript
复制
"awdl0/ipv6" = "fe80::14ce:f9ff:fe2a:44df"; # Loopback
"en0/ipv4" = "169.254.127.94"; # Link local (not routable)
"en0/ipv6" = "2001:2::aab1:7dd5:c5dc:16dd:b678"; # 2001 => "Teredo tunnel" (IPv6 routable over IPv4)
"lo0/ipv4" = "127.0.0.1"; # loopback
"lo0/ipv6" = "fe80::1"; # loopback
"pdp_ip0/ipv4" = "100.83.148.33"; # Service provider
"utun0/ipv6" = "fe80::e94e:c3b6:ff73:1ded"; # loopback

特别是,您通常希望查看en0 ( iPhone上的第一个以太网接口是WiFi)。在第一种情况下你可以看到:

代码语言:javascript
复制
"en0/ipv4" = "192.168.1.190"; # 192.168 => Private network (but *probably* NAT)
"en0/ipv6" = "fdba:ae3c:c993::19cd:be51:e41b:632e"; # fdba => Unique local address (not routable)

第二种情况是:

代码语言:javascript
复制
"en0/ipv4" = "169.254.127.94"; # Link local (not routable)
"en0/ipv6" = "2001:2::aab1:7dd5:c5dc:16dd:b678"; # 2001 => "Teredo tunnel" (IPv6 routable over IPv4)

所以你才知道哪一个是可选的。你得检查一下它在什么范围内。(对于这个问题:“为什么它不能直接说‘你在互联网上?’,答案的一个主要部分是,规范没有定义”互联网“。互联网只是一个恰好很大的特定网络。而且,你看到的大多数IPv4地址无论如何都是私有的,技术上不在”互联网上“。网卡不知道是否有一个NAT可以连接从私人网络到公共网络的某个地方。)

顺便说一下,当我说“不可路由”时,这并不意味着它不是你的主要地址。例如,您可以拥有一个基于链接本地地址的整个网络(我已经做了很多次了)。但是这些地址不会路由(也就是说,它们不会被转发到当前的网络段),所以对于大多数常见的用途来说,可以考虑它们“不是真正的地址”。类似地,我构建的“网络”完全是基于主机地址的,但是由于它们不能通过当前的机器,所以它们通常不是人们所说的“网络”的意思。

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

https://stackoverflow.com/questions/42160174

复制
相关文章

相似问题

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