ipv6子網號全為零?0萌寵特工隊02022-01-01 20:05:52

假如某個IPv6地址全部為0,表示如下:

00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 11

顯然,這樣表示太冗長、太麻煩了,合法的IPv6地址表示採用16進製表示法,每4位用一個16進位制數字來代替,而每4個十六進位制數字被歸為1組,一共8組。

來看一下windows下的IPv6地址:

這裡的2001:da8:215:3c01::83bb就是一個合法的IPv6地址。

IPv6地址表示

此時我們觀察上個IPv6地址:

2001:da8:215:3c01::83bb

這裡只出現了5組數字,那麼是地址分配出了問題嗎?答案是否定的,這裡涉及到了IPv6地址的省略表示。

IPv6規定了兩條簡化的地址表示規則:

如果某一組的字首為0,可以被省略:

eg:

2001:0da8:0215:3c01:0001:02fa:00ad:83bb將所有的字首0省略,可以表示為:

2001:da8:215:3c01:1:2fa:ad:83bb

如果某一組全部為0,那麼可以省略:

eg:

2001:9da8:6215:3c01:0000:12fa:efad:83bb將為0的組省略,可以表示為:

2001:9da8:6215:3c01::12fa:efad:83bb

– (特殊的)連續的幾組都為0,那麼包含的冒號也可以省略:

eg:

2001:9da8:6215:0000:0000:0000:efad:83bb將0和中間的冒號省略,可以表示為:

2001:9da8:6215::efad:83bb

這裡需要注意幾種特殊情況:

每組字尾的0不可省略:

eg:

2001:9da8:6215:3c01:1000:12fa:efad:83bb這裡的第五組假如省略了字尾的0就變成了:

2001:9da8:6215:3c01:1:12fa:efad:83bb地址的值被改變,顯然是不可行的

非連續的0分組不能同時省略:

eg:

2001:0000:0000:3c01:0000:0000:0000:83bb假如把5個全是0的組都省略,就變成:

2001::3c01::83bb這裡會有歧義,因為不確定第一個::中間和第二個::中間分別有幾個0組。