问题标签 [link-local]
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.
networking - 自动 IP 地址范围
我正在通过 RFC3927 说明以下声明 -
“169.254/16 前缀中的前 256 个和最后 256 个地址保留供将来使用,并且不得由使用此动态配置机制的主机选择”。
更远:
“当主机希望配置 IPv4 链路本地地址时,它会使用伪随机数生成器选择一个地址,该地址在 169.254.1.0 到 169.254.254.255(含)范围内均匀分布。”
那么保留了哪些具体的范围或地址呢?
ip-address - 如何将链路本地 IPv6 地址转换为相应的全球单播地址?
据我了解,IPv4 广播的替代品是 IPv6 多播到ff02::1
. 在我的 linux 机器上,向该组发送 UDP 多播会导致其他连接的主机接收到带有链接本地发送者地址的数据包,fe80::5a38:a519:8ff4:1f1f
尽管发送接口具有全局单播地址。客户端如何从数据包中编码的链路本地地址解析发送方的全局单播地址?
apache - 如何在 CentOS7 上访问本地链接网站?而在 Windows 中,它只适用于浏览器中的 [fe80::x:x:x]
我在 CentOS 和 Listen 80 上运行 apache。我可以使用 127.0.0.1 访问该网站。
我尝试了几种使用 ipv6 链接本地地址访问网站的方法:
- [fe80::x:x:x] 不起作用
- [fe80::x:x:x%eth0] 不起作用
- [fe80::x:x:x%eth0]:80 不起作用
- [fe80::x:x:x%25eth0]:80 不起作用
- http://[fe80::x:x:x%eth0]:80 不起作用....
像上面这样的更多方法,没有办法。
有什么帮助吗?
顺便说一句,我在 Windows 10 上尝试了 apache 和 ipv6。它适用于 [fe80::x:x:x] 访问该网站..太棒了!
java - 在 Java 中将 MacAddress 转换为 IPv6 本地链接
我需要将 Mac 地址转换为IPv6 Link
本地地址。这link-local IPv6
是从NIC’s
mac地址推断出来的。转换过程如下所示。
取mac地址:例如
52:74:f2:b1:a8:7f
将 ff:fe 扔到中间:
52:74:f2:ff:fe:b1:a8:7f
重新格式化为 IPv6 表示法
5274:f2ff:feb1:a87f
将第一个八位字节从十六进制转换为二进制:
52 -> 01010010
反转索引 6 处的位(从 0 开始计数):
01010010 -> 01010000
将八位字节转换回十六进制:
01010000 -> 50
用新计算的一个替换第一个八位字节:
5074:f2ff:feb1:a87f
添加链接本地前缀:
fe80::5074:f2ff:feb1:a87f
这似乎是许多特定的字符串操作和数字系统之间的转换。我一直在寻找 Java 中的实用程序类,它可以帮助我以更有效的方式做同样的事情。我看到Java有方法InetAddress
来确定有问题的地址是否是本地链接。
python - Python UDP 与本地链接地址通信(以太网端口到以太网端口)
我需要有关 python 中套接字的帮助。设备 (D) 通过以太网电缆直接连接到插入 Raspberry Pi 的 USB 转以太网适配器 (eth1)。ifconfig
运行sudo tcpdump -i eth1
显示 D 正在 IP 地址 169.254.129.33 下进行通信。当我在 Python 中运行以下代码时,我没有收到来自 D 的回复,尽管据说发送的消息会触发响应。
似乎 Python 要么没有msg
通过适配器发送到 D,要么 D 的 IP 地址不是我认为的那个。
如何告诉 python 专门使用 USB-to-Ethernet 适配器进行 UDP 通信?当连接到 Pi 而不是路由器时,如何获得 D 的正确 IP 地址?
PS:希望,格式没问题,我的英语也不错。
java - java.net.BindException:无法在 LinkLocal 重新绑定上分配请求的地址(绑定失败)
我正在使用 UDP 在 Java 中编写一个网络框架原型,以处理使用它的设备可能没有永久和/或可靠连接的时刻以及它应该如何处理它。我必须能够将它与“普通”IPv4 和 IPv6 地址以及 IPv6 LinkLocal 地址一起使用。
由于这个概念,有时设备会失去连接,我必须关闭绑定到特定 IP/端口对的所有 DatagramSocket,这样我才能释放资源,一旦设备获得新连接,我需要“重新绑定”套接字以给定的地址。
当我使用“普通”IPv4 和 IPv6 地址进行测试时,代码没有问题,但是一旦我开始使用 IPv6 LinkLocal 地址,当我尝试将 DatagramSocket 重新绑定到任何 LinkLocal 地址时,就会出现此异常:
由于此代码适用于非 LinkLocal 地址,我认为它也适用于 LinkLocal 地址。
这是我用来将 DatagramSocket 绑定到 IP/端口对的代码:
this.ip 和 this.port 由另一个线程更新,该线程检测到可用地址和连接状态(有/无连接)的变化。当检测到连接丢失时,我使用此代码关闭正在使用的 DatagramSocket (this.ds)
任何建议表示赞赏
TL;DR:使用 DatagramSockets 绑定到对应于 IPv6 LinkLocal 地址的 IP/端口对,关闭该 DatagramSocket 并将其重新绑定到相同的 IPv6 LinkLocal 地址会导致异常,即使相同的代码适用于我可以测试的任何其他情况“正常” IPv4 和 IPv6 地址
docker - 主机和通过桥接网络连接的两个容器之间的 Docker 网络
我有两个 docker 容器(A 和 B),它们在主机上运行并通过网桥连接到它。根据软件设计,我需要在A中的一个接口上运行zeroconf协议(point-point),比如说eth1。eth1 再次通过网桥从主机派生。主机上连接到 A 中 eth1 的接口是 VLAN 接口,比如说 eth0.3001。现在,我在 A 中的 eth1 上启动点对点协议,协议为其分配一个链路本地 IP 地址。
容器 B 也有一个接口,假设 eth2 连接到主机上的 eth0.3001。我也想在 eth2(容器 B)上使用在 eth1(在容器 A 中)派生的链接本地 IP。这是因为,容器 B 需要将 IP 数据包发送到与主机相连的对等方。请看下图。
[点对点网络][1][1]:https://i.stack.imgur.com/tFd8D.png
实现这一目标的最干净的方法是什么?我可以将容器A中派生的IP地址绑定到容器B中的接口吗?或者我应该只是将容器 A 中的协议移动到 B,以便根本不需要 A 上的接口?请建议。提前致谢。
networking - 使用原始套接字编程的 LLMNR 和 DNS 数据包
我正在使用 Python 学习原始套接字程序。我已经编写了发送和接收 TCP、UDP 和 ICMP 数据包的程序。为了完全理解这些协议,我想使用 python raw socket progr 实现我自己的 LLMNR 和 DNS 查询程序,而不使用任何第三方库。我曾尝试在互联网上搜索,但找不到 DNS 或 LLMNR 查询程序的纯 python 实现。
如果你们优秀的人可以帮助我提供任何关于 python 原始套接字编程的资源、代码示例或任何好的材料,那就太好了。
提前致谢。
dhcp - 在获得 APIPA/LINK-LOCAL ADDR 后,是否可以停止 DHCP 客户端发送“发现”消息?
我目前正在研究 DHCP 和 LINK-LOCAL。以下来自https://docs.microsoft.com/en-us/windows-server/troubleshoot/how-to-use-automatic-tcpip-addressing-without-a-dh 示例 1:没有以前的 IP 地址和没有 DHCP服务器 当基于 Windows 的计算机(配置为 DHCP)初始化时,它会广播三个或更多“发现”消息。如果在广播多个发现消息后 DHCP 服务器没有响应,则 Windows 计算机会为自己分配一个 B 类 (APIPA) 地址。然后,Windows 计算机将向计算机用户显示一条错误消息(前提是它过去从未从 DHCP 服务器分配过 IP 地址)。
然后,Windows 计算机将每三分钟发送一次 Discover 消息,以尝试与 DHCP 服务器建立通信。
我的问题是:对于最后一句话:计算机获得APIPA后,如何停止计算机发送Discover msg?