补全:先查缓存,没有再广播

(每道题开头都有同一段:to_int 把点分十进制变成 32 位整数,to_str 变回去,mask(前缀长度) 给出掩码的整数——高位连续的 1,低位 0。) (这一节还多了四个函数:network 网络地址、broadcast 广播地址

开始练习 →

补全:帧头写谁

(每道题开头都有同一段:to_int 把点分十进制变成 32 位整数,to_str 变回去,mask(前缀长度) 给出掩码的整数——高位连续的 1,低位 0。) (这一节还多了四个函数:network 网络地址、broadcast 广播地址

开始练习 →

为什么要 IPv6

IPv4 用得好好的,为什么还要 IPv6?最直接的原因是【0】。

开始练习 →

IPv6 怎么写

一个 IPv6 地址长这样:2001:db8::1。它的写法规则是【0】。

开始练习 →

把 :: 展开

expand 把缩写的 IPv6 展开成八组、每组四位: def expand(addr): if "::" in addr: head, tail = addr.split("::&q

开始练习 →

多了多少

IPv6 有 2 的 128 次方个地址。看这个数有几位、是 IPv4 总数的多少倍: v4 = 2 ** 32 v6 = 2 ** 128 print(str(len(str(v6))) + "/" + str(v6

开始练习 →

补全:展开

补全 expand(addr):按 :: 切成两边,中间补零组凑够八组,每组 zfill(4)。

开始练习 →

补全:缩写

compress 把展开的地址缩回去:每组去前导零,最长的一串(至少两组)全零缩成 ::。补全「找最长零串」那一段。

开始练习 →

补全:前 64 位是哪个网

IPv6 常用 /64:前四组是网络、后四组是接口。补全 net64(addr):展开后取前四组。

开始练习 →

补全:认出 IPv6 的特殊地址

补全 kind6(addr):::1 交回「回环」,fe80 开头交回「链路本地」,2001:0db8 开头交回「文档」,其余交回「全球」。先 expand 再判。

开始练习 →