如何计算链路本地ipv6地址?

时间:2013-05-26 20:07:20

标签: network-programming ipv6

因此,有几个网站会为您计算您的链接本地ipv6地址,例如右here

尽管如此,它并没有给出如何计算这个地址以及输入参数是什么有用的。那么,如果知道ipv4地址,子网掩码和网关地址,那么计算链路本地ipv6地址的过程(或算法)是什么?我正在使用使用ISATAP网络隧道的SCTP套接字进行项目,并使用LL ipv6地址构建ISATAP地址。

2 个答案:

答案 0 :(得分:3)

Appendix A of RFC 4291描述了从MAC地址计算修改后的EUI-64的方法。一旦你有了修改后的EUI-64,你只需将它放在地址的低64位,并将 fe80 :: 放在前64位。

基本上你翻转MAC地址的第7位,打包前24位(包括翻转位),然后是fffe,然后是MAC地址的低24位,总共64位。

话虽如此,您的问题是如何从IPv4地址和子网掩码中获取链接本地地址。那,你做不到。 IPv4地址和子网掩码(如果确实有一个 - IPv6不要求IPv4在同一接口上运行)与IPv6地址无关,并且这两者之间没有任何关联。 IPv4网关地址(再次,如果有的话)甚至更不相关。

答案 1 :(得分:2)

链接本地地址可以基于每RFC 4862的MAC地址,也可以根据RFC 4941随机生成。

通常,这应限于全局范围,但有些系统会将此隐私扩展实现扩展到链接本地范围。 Follow this question on serverfault for discussion of the topic