为了好玩,我想更好地理解IPv6地址中的构建块或元素 .
根据我的理解,以下是基础知识:
-
IPv6地址长度为128位(写为8个块,每个块有16位)
-
每个块编码为0到0xffff之间的十六进制数字 . 可以省略前导零 .
-
可以附加IPv4 doted-quad地址,它将占用IPv6地址的低32位 . 1:2:3:4:5:6:200.201.202.203 . (IPv4的规则与预期一致 . )
-
IPv4表示只能出现在最后 .
-
可以使用双冒号语法来表示带有零的一个或多个块 . 1:2 :: 7:8相当于1:2:0:0:0:0:7:8 .
-
每个IPv6地址中只能有一个双冒号,否则它在语法上是错误的 .
-
双冒号可能出现在ip6的开头,中间或末尾,但不在IPv4点分四地址内 .
以上几点都是正确的吗?
请不要告诉我阅读RFC . 关于这个问题有几个,实际上没有一个简单的例子来描述各种编码机制 . 我相信很多人会欣赏带有示例的简单列表 .
Online testing tool 最近的在线帮助工具是http://www.dominicsayers.com/source/beta/is_email/test/,但这些消息令人困惑,实际上并没有用简单的英语说出什么是对错,为什么 . 它实际上也是为电子邮件构建的,当然可能包含IPv6地址,因此它并不完全理想 .
3 回答
一般来说,是的,你的观点是正确的 .
你确定你读过RFC吗? RFC 3513, section 2.2正是你所要求的 . 它有帮助,但指出这一点,因为它可能对未来的人阅读这个问题非常有帮助 .
显然这是一个错字:
1:2::6:7
表示1:2:0:0:0:0:6:7
.我之前没有听过这个:
但我做了一个测试程序,似乎证实了这一点 .
否则我觉得你说的一切都还可以 .
testipv6.c
带有区域ID的IPv6地址具有唯一的表示法,尽管它不是特定于地址本身的 . 在具有多个启用IPv6的接口的系统中,必须以某种方式消除链接本地地址的歧义 . 它使用“%”表示法完成 .
FE80 :: AA%eth0是指通过eth0接口可到达的链路本地地址 . 它可以是某些平台的接口索引,FE80 :: AA%10