DNS解析过程

DNS解析

  1. 浏览器缓存: 浏览器缓存DNS记录一段时间。有趣的是,操作系统不会告诉浏览器每个DNS记录的生存时间,因此浏览器将它们缓存一段固定的时间(因浏览器而异,2到30分钟)。
  2. 操作系统缓存: 如果浏览器缓存不包含所需的记录,则浏览器进行系统调用(Windows中的gethostbyname)查看hosts文件。操作系统有自己的缓存。
  3. 路由器缓存: 请求继续到您的路由器,路由器通常有自己的DNS缓存。
  4. ISP DNS缓存(Internet Service Provider,即因特网服务提供商): 检查的下一个位置是缓存ISP的DNS服务器, 即电信、移动等。
  5. 递归查询和迭代查询 - 您的ISP的DNS服务器开始递归搜索,从根名称服务器,通过.com顶级域名服务器,到baidu的名称服务器。通常,DNS服务器将在缓存中具有.com名称服务器的名称,因此不需要命中根名称服务器。
    在这里插入图片描述
    扩展注意:
  • 所有DNS请求和回答报文使用的UDP数据报经过端口53发送
  • DNS主要基于UDP(User Datagram Protocol)无连接运输层协议,而不是使用TCP(Transmission Control Protocol 传输控制协议)可靠数据连接。因为 一次UDP查询可以短到两个包:一个查询包、一个响应包。一次TCP交换则至少包含9个包:三次握手初始化TCP会话、一个查询包、一个响应包以及四次分手的包交换。 考虑到效率原因,故采用UDP作为DNS的运输层协议。
  • 为什么DNS查询只返回13个根域名服务器?
    12 Header + 5 Question section + 31 Resource record + 15 * n (Other resource record) + 16n (A record in additional section) =512(早期DNS查询结果是一个512字节的UDP数据包)
    15的组成:第一个 Resource record 要是全场度,nameserver name需要20bytes. 加上前面 root label 之类的信息后是 root-label: 1 byte + ttl: 4 bytes + class: 2 bytes + type: 2 bytes + rdlength: 2 bytes + 20 = 31 bytes.之后的 resource record 的 nameserver name 可以被压缩(DNS compression),只需要4bytes. 需要:11 + 4 = 15bytes.
    16的组成:Additional section 类似情况,ttl: 4 bytes + class: 2 bytes + type: 2 bytes + rdlength: 2 bytes + address: 4 bytes = 14 bytes. 外加被压缩的 nameserver name 2 bytes. = 16 bytes
    最后512bytes 的分配为:
    12 + 5 + 31 + 31
    n = 512n = 14.96
    当初设计的时候,安排了13个,空出了以后字节空间给以后的 feature 使用。
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值