• DNS解析流程


    简单接触

    DNS服务器里存着一张表
    表中放着域名和IP地址,域名和IP地址以映射关系保存,即一对一。
    而浏览器访问某个域名,实际上是访问域名对应的ip地址
    所以浏览器需要知道域名对应的ip地址
    如何知道?
    向知道的人查询,也就是向dns服务器查询

    第一阶段递归查询

    递归:客户端只发一次请求,要求对方给出最终结果。

    1. 以客户端浏览器访问 www.rootkit.org 域名为例,首先,它会去检查当前浏览器缓存是否有对应IP,如果有,就直接响应,如果没有,就继续往下找
    2. 接着,操作系统会去检查自己的host文件,如果从中没找到对应关系,会再到系统dns缓存中查,如果缓存中有,就直接返回该域名所对应的ip
    3. 如果缓存中没有,则会向我们事先设置好的dns服务器 [ 一般有两个, 主 & 备 ] 去请求,即所谓的递归查询,dns服务器首先会到自身解析数据库中去查

    第二阶段迭代查询

    迭代:客户端发出一次请求,对方如果没有授权回答,它就会返回一个能解答这个查询的其它名称服务器列表,客户端会再向返回的列表中发出请求,直到找到最终负责所查域名的名称服务器,从它得到最终结果。

    1. 如果dns服务器在自己的解析库中也没找到,它就会自动帮我们向根服务器发送询问请求
    2. 此时,根看到要请求的是org的后缀(.org),就会把org所在的dns服务器告诉我们的dns
    3. 然后,我们的dns服务器就会去请求org所在的dns服务器
    4. 当请求到达org dns服务器时,org一看域名是在rootkit这个域下的,就会把rootkit.org所在的dns服务器告诉我们的dns服务器
    5. 再然后,我们的dns服务器就会去请求rootkit.org这个域名的dns服务器
    6. rootkit.org这个域的dns服务器一看是要访问www就直接找到了www对应的A记录的ip,并把它丢给我们的dns,上面逐个询问的过程,即 迭代查询
    7. 最后,我们的dns再把最终解析到的这个ip丢给我们的客户端,然后客户端就直接拿着去访问了

    总结

    参考

    https://klionsec.github.io/2017/12/11/Dns-tips/

  • 相关阅读:
    类模板和函数模板
    vector用法
    the swap trick用于锐减过剩容量
    SIGHUP信号
    linux页表机制
    linux中sigsuspend和pause的区别
    最长回文串:LeetCode:Longest Palindromic Substring
    Implement strStr()
    ffmpeg知多少~~~
    下面可能会更新很多。。。
  • 原文地址:https://www.cnblogs.com/Rain99-/p/12897307.html
Copyright © 2020-2023  润新知