2. [WIP]dns是不是真的有这些层级
Last updated
Was this helpful?
Last updated
Was this helpful?
这一部分比较好玩的是DNS解析, 目的是把 bilibili.com 翻译成 IP 地址后填充到包里去, 采用的过程是:
看看浏览器缓存
看看电脑缓存
DNS请求发起
这个我不看了, 我实在找不到在哪
如果浏览器缓存没有命中, 那么就会像操作系统申请查询, 操作系统也是先查询电脑上的DNS缓存记录, 不同操作系统负责这个功能的模块不一样, 针对 OSX 10.13 而言, Mac上负责处理DNS/DNS缓存的是一个名为 mDNSResponder 的程序, 我们把这些缓存dump出来
打开 控制台 / Console
打开命令行, 输入命令: sudo killall -INFO mDNSResponder
这条命令会dump当前mDNSResponder 的缓存信息 / etc-hosts
下写死的域名信息, dump出来的信息就可以在控制台中看到 , 像上面那样
cat /etc/resolve.conf
设置 → 网络 → 高级 → DNS
如果没有命中, 代表我们不知道IP是多少, 这种情况下我们就要发DNS查询请求了, 那么向谁搜索呢? 以上两种途径报告了你的DNS请求会发送到哪里. 值得注意的是: 这个东西, 全都是在当前的无线网下, 你的DNS查询会发送到这里. 因为我现在在公司里, 所以以上两个 nameserver 都是公司搞出的 dns 域名解析服务器. 如果你现在切换成手机热点, dns服务器就不再是上面这个了
上面那个domain指的是搜索域, 这是什么意思呢? 这个概念有点像K8s里面的 DNS 服务, 回忆一下在K8s里, 你如果调Service, 需要有 DNS 帮你把 Service的域名, 解析成 pod ip. 举个例子 xiaohan.default 会解析成 10.1.1.1, 同样的如果你们在同一个namespace下你都不用写那个 default. 你直接查 xiaohan 就会自动帮你补齐成 xiaohan.default. 同样的, 在我们这里, 搜索域是 360buy.local. 如果你直接查 http://xiaohan/ , 发出的DNS请求是查 xiaohan.360buy.local 的ip是多少. 请看下面的抓包结果, 请求发到了上面的那个 nameserver里, 并且域名信息被自动补全了