我正在使用这些.NET Framework类来获取我机器的 IP 地址。
Dns.GetHostAddresses(Dns.GetHostName())
Run Code Online (Sandbox Code Playgroud)
我有一个 VirtualBox 适配器,它同时具有 IPv4 和 IPv6 地址。使用 .NET 代码,我将 IPv6 地址作为fe80::71a3:2b00:ddd3:753f%16
注意到末尾的 %16 了吗?
但是,如果我使用相同的查询WMI,我得到的地址为'fe80::71a3:2b00:ddd3:753f'
那么,%16 有什么特殊意义吗?
编辑:
我只是对此有更多的观察。它们与斯蒂芬詹宁斯在他的回答中所说的非常吻合。
我安装了 Vmware 以查看它发出的 IPv6 地址。地址是:fe80::3dd0:7f8e:57b7:34d5%19
fe80::b059:65f4:e877:c40%20
显然,% 之后的数字不是某种十六进制表示。我使用 Wmi 检查了网络适配器的所有可用属性,发现这些数字与每个网络适配器的 InterfaceIndex 属性完全相同。根据MSDN,它唯一标识每个网络适配器,这个属性是在 Vista 中引入的。
仍然让我感到困惑的是,为什么 IPAddress 类允许您以该格式创建 IP 地址,除非它有效。斯蒂芬提供了答案。数字是范围 ID。IPAddress 有一个接受地址和范围 ID 的构造函数。
哦,所有这三个网络适配器都是本地链接。通过 ipconfig 确认
凉爽的。那很有趣!!
在我的 Mac 上,每个 IPv6 地址都包含特定计算机(不是我的路由器)的 MAC 地址。诸如ipv6-test.com 之类的网站不仅显示它,而且还告诉我它属于 Apple 计算机。
这感觉就像一个超级 cookie,也可能适用于其他操作系统。如何避免暴露我的 MAC 地址?
背景:MAC 地址并不明显。喜欢2001:0db8:1:2:60:8ff:fe52:f9d8:
0060:08ff:fe52:f9d8。ff:fe从中间剥离零件。如果这些字节不存在,那么就没有 MAC 地址。0x00(00000000) 变成0x02(00000010)。60:8ff:fe52:f9d8转换回 MAC 地址02:60:08:52:f9:d8。注意:自 macOS 10.12 Sierra 起,据 Ars Technica 称,Apple 采用了一种新方法来生成不基于 MAC 地址的稳定地址, Windows 显然已经这样做了多年。
我知道 IPv6 是未来,因为只有 40 亿个 IPv4 地址,但在家庭网络上,你不会有 40 亿用户。那么,是否有任何其他好处可以使家庭网络上的 IPv6 比使用 IPv4 更好?
我可以通过命令 ping 我的 Ubuntu 框:(其中 c2h2ttt 列在 /etc/hosts 中)
c2h2@c2h2crawler:~/ttt$ ping6 -I eth1 c2h2ttt
PING c2h2ttt(c2h2ttt) from fe80::21b:21ff:fe22:e865 eth1: 56 data bytes
64 bytes from c2h2ttt: icmp_seq=1 ttl=64 time=10.3 ms
64 bytes from c2h2ttt: icmp_seq=2 ttl=64 time=2.06 ms
64 bytes from c2h2ttt: icmp_seq=3 ttl=64 time=1.33 ms
Run Code Online (Sandbox Code Playgroud)
当我尝试时,ssh -6 c2h2ttt它显示:
c2h2@c2h2crawler:~/ttt$ ssh -6 c2h2ttt
ssh: connect to host c2h2ttt port 22: Invalid argument
Run Code Online (Sandbox Code Playgroud)
正确的命令是什么?
在服务器端 /etc/ssh/sshd_config 有:
ListenAddress ::
ListenAddress 0.0.0.0
Run Code Online (Sandbox Code Playgroud)
我能够通过端口 22 上的 ipv4 ssh 到 c2h2ttt。并且netstat …
ARP 被 NDP(邻居发现协议)取代。但我不知道这样做的确切原因。
谁能用简单的术语解释一下?
我有一台 Linux 服务器,我想通过一个命令行找到主要的 IPv6 地址。
到目前为止我的命令:
$ ip addr show dev eth0 | sed -e's/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d'
Run Code Online (Sandbox Code Playgroud)
这表现了:
2001:410:0:39:221:28ff:fe46:eef4
fe80::221:28ff:fe46:eef4
Run Code Online (Sandbox Code Playgroud)
但我只想要一次出现,以便输出显示:
2001:410:0:39:221:28ff:fe46:eef4
Run Code Online (Sandbox Code Playgroud) 我的 Java 浏览器插件不再工作。当我打开一个包含 Java 元素的页面时,Java 无法连接到服务器。
经过调查,我发现Java试图使用IPv6,而我的网络不支持IPv6,所以Java总是无法连接。
我尝试在 Google 上查找,发现我应该使用 运行 Java -Djava.net.preferIPv4Stack=true,但是如何将其传递给浏览器?
我使用 Google Chrome 和 Java 7 update 5。
我尝试了几种方法,但它们似乎使 curl 令人困惑。
root@testt:~# curl localhost:8080
<h1>Hello world!</h1>
<p>Boom Bam Splat</p>
root@testt:~# curl ::1:8080
curl: (3) IPv6 numerical address used in URL without brackets
root@testt:~# curl [::1]:8080
curl: (3) [globbing] bad range specification in column 2
Run Code Online (Sandbox Code Playgroud)