这个名字解析到哪
按两张表,www.example.com 会解析到哪个 IP?(注意顺序)
贯穿本节的两张表:本机 HOSTS(一张名字→IP 的小表)和兜底的 DNS。解析顺序是先查 hosts、命中就用它,否则再问 DNS。lookup 交回最终 IP,source_of 交回是谁答的(hosts/dns/无)。
HOSTS = {
"localhost": "127.0.0.1",
"db.internal": "10.0.0.5",
"www.example.com": "127.0.0.55",
}
DNS = {
"www.example.com": "93.184.216.34",
"shop.com": "10.0.0.9",
"db.internal": "203.0.113.9",
}
def lookup(name):
# 解析顺序:先查本机 hosts,命中就用它,否则再问 DNS
if name in HOSTS:
return HOSTS[name]
if name in DNS:
return DNS[name]
return "无"
def source_of(name):
if name in HOSTS:
return "hosts"
if name in DNS:
return "dns"
return "无"
def overridden():
# hosts 把 DNS 的答案盖掉了的名字(两边都有、且不一样)
return sorted(n for n in HOSTS if n in DNS and HOSTS[n] != DNS[n])
print(lookup("www.example.com"))
全部评论