补全:数某类记录

补全 count_type:数应答里某个类型有几条。 用 dig 查一个域名会打出一段应答,本节把它的 answer 段整理成每行「名字 TTL 类型 值」(; 开头是注释)。answers(文本) 解析成(名字,TTL,类型,值)的列表,

开始练习 →

补全:取某名字的 TTL

补全 ttl_of:交回某个名字那条记录的 TTL,找不到交回 -1。 用 dig 查一个域名会打出一段应答,本节把它的 answer 段整理成每行「名字 TTL 类型 值」(; 开头是注释)。answers(文本) 解析成(名字,TTL,

开始练习 →

DNS 缓存是什么

头一次跑出去问,之后用缓存 同一个域名第二次访问往往不用再完整查一遍,靠的是【0】。 贯穿本节的 TTL 缓存:query(cache, 名字, ip, now, ttl) 查一次——缓存里有且没过期(now-存入时刻 < ttl)就

开始练习 →

TTL 是什么意思

头一次跑出去问,之后用缓存 每条 DNS 记录都带一个 TTL,它管的是【0】。 贯穿本节的 TTL 缓存:query(cache, 名字, ip, now, ttl) 查一次——缓存里有且没过期(now-存入时刻 < ttl)就交回

开始练习 →

第三次查是命中还是未命中

某名字 TTL 是 60。第 0 秒查一次、第 70 秒再查一次,第 70 秒这次是命中还是未命中? 贯穿本节的 TTL 缓存:query(cache, 名字, ip, now, ttl) 查一次——缓存里有且没过期(now-存入时刻 &l

开始练习 →

一串查询命中几次

下面一串查询里(同名 TTL 60,时刻见代码),命中几次? 贯穿本节的 TTL 缓存:query(cache, 名字, ip, now, ttl) 查一次——缓存里有且没过期(now-存入时刻 < ttl)就交回 hit,否则把它记

开始练习 →

补全:查一次缓存

补全 query:缓存里有且没过期(now-存入 < ttl)交回 hit,否则回填并交回 miss。 贯穿本节的 TTL 缓存:query(cache, 名字, ip, now, ttl) 查一次——缓存里有且没过期(now-存入时

开始练习 →

补全:数命中次数

补全 hits:按顺序查一串事件,数命中几次。 贯穿本节的 TTL 缓存:query(cache, 名字, ip, now, ttl) 查一次——缓存里有且没过期(now-存入时刻 < ttl)就交回 hit,否则把它记进缓存(回填)

开始练习 →

补全:判断过期

补全 expired:一条记录存入时刻 born、寿命 ttl,到 now 是否已过期。 贯穿本节的 TTL 缓存:query(cache, 名字, ip, now, ttl) 查一次——缓存里有且没过期(now-存入时刻 < ttl

开始练习 →

补全:数发出去几次

补全 lookups:一串带缓存的查询里,真正向外发出去的解析次数(未命中数)。 贯穿本节的 TTL 缓存:query(cache, 名字, ip, now, ttl) 查一次——缓存里有且没过期(now-存入时刻 < ttl)就交回

开始练习 →