DNS 解析流程

news/2024/5/19 15:44:25/文章来源:https://blog.csdn.net/hejingdong123/article/details/126903230

一、背景

最近,在S3协议项目中调研通过DNS域名解析处理流量负载均衡问题。原来对dns也有一些粗浅的了解,知道通过DNS可以将域名转换为IP地址,也可以做负载均衡。但是DNS的解析流程以及缓存等机制,只是一知半解。正好,趁着这个机会系统的学习一下。

二、DNS解析流程图

DNS解析流程图

  1. 浏览器(谷歌,火狐,IE等)有自己的DNS缓存机制。当通过浏览器访问网站时,浏览器会优先查询自己的DNS缓存是否有缓存相关网站地址。如果DNS缓存命中,则直接根据缓存的IP地址访问目标网站,可以大大缩短DNS解析域名时间,提升访问速度。(谷歌浏览器DNS缓存TTL,默认60s)如果没有命中,则进入下一步;
  2. 查询操作系统的hosts文件。hosts文件是最初的接入互联网的方式(比域名先出现,算是域名的前辈吧),记录了IP地址和域名的映射关系。当访问的域名被记录到hosts文件后,会直接访问该域名在hosts文件中对应IP地址。访问没有记录到hosts文件中的域名时,则进入下一步;
  3. 查询操作系统DNS客户端。开启DNS客户端服务后,所有域名服务器返回的“域名–IP的映射关系对” 都会被DNS客户端保存到内存。应用需要进行DNS解析时,如果命中,则将结果返回给应用;如果没有命中则进入下一步。(如果需要DNS客户端缓存服务,需要开启DNS客户端;本步骤以前都不涉及网络通信,可以提高访问效率)
  4. 查询本地域名服务器。本地域名服务器是作为应用(访问者)的代理人,去查询域名地址的。应用只需要告诉本地域名服务器,“我需要xxx域名对应的IP,你把结果给我就行,我不关心你是怎么查询的”,即对于应用来说,本地域名服务器提供域名递归查询服务。本地域名服务器解析域名顺序位:从本地缓存开始查,如果没有命中,则依次从根域名服务器,二级域名服务器,三域名服务器查询,直到成功解析域名地址,即本地域名服务器干的是迭代查询的事情。
  5. 根域名服务器。最高层次的域名服务器,本地域名服务器解析不了的域名就会向其求助。包括国家顶级域名(cn、us、uk)和通用顶级域名(com、edu、gov、int、mil、net、org)
  6. 二级域名服务器。负责管理在该顶级域名服务器下注册的二级域名。
  7. 三级域名服务器。负责管理在该二级域名服务器下注册的三级域名。

三、windows DNS客户端

在windows 2000以前,没有DNS客户端服务,在浏览器和hosts没有命中的情况下,直接去本地DNS服务器解析域名了。从windows 2000开始,有DNS客户端服务,缓存了域名和地址映射关系,进一步加速了DNS解析。

3.1 修改windows DNS缓存时间

1.打开注册表(Regedit.exe);
2.依次展开以下目录:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
3.修改 “MaxCacheTtl ”字段的值(笔者电脑windows 7,该字段默认值为:10800)。

3.2 DNS 列表管理

DNS 列表查询命令:

# 显示本机dns, 生存时间, 80-8000都有
ipconfig /displaydns 

清除DNS缓存命令:

# 刷新windows dns缓存
ipconfig /flushdns

3.3 DNS 服务

windows DNS服务名称是Dnscache,在任务管理器中可以查看到该服务。如果想关闭DNS客户端缓存,则打开任务管理器,停止该服务即可。DNS服务停止后,只是取消DNS缓存机制,依然可以正常访问网站(通过本地域名服务器解析域名)。

四、linux DNS 客户端

Linux系统需要安装Systemd-Resolved,DNSMasq 或 Nscd 等缓存服务,否则没有操作系统级 DNS 缓存。不同的Linux发型版本,使用的缓存服务不同。不同的DNS服务,清除DNS缓存的方法也不一样。清除DNS缓存命令如下:
Systemd-Resolved( Ubuntu发行版自带该应用):

sudo systemd-resolve --flush-caches

Dnsmasq:

sudo service dnsmasq restart
或者
sudo systemctl restart dnsmasq.service

NSCD(Rethat发行版首先应用):

$ sudo systemctl restart nscd.service
或者
$ sudo service nscd restart

日拱一卒无有尽,功不唐捐终入海,与君共勉之!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_9370.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows安装nginx并设置开机自启动

在macOS和linux中使用nginx我早已经轻车熟路。突然切到windows的环境中,我反而不会用了。 之前写了《windows使用nginx探索笔记》内容比较冗长,所以本文尽量精简一下。 环境 操作系统:windows 2008R2 Datacenter 已经安装的软件&#xff1…

C语言中malloc(),free(),calloc(),realloc()

申请内存malloc()在申请内存时不会对内存进行初始化赋值 在申请内存后,没有对内存进行初始化的话,这段内存中就存储着系统随机值。 int n 5; int* p (int*)malloc(n * sizeof(int));malloc(size):size就是你想开辟的内存的字节大小。我们通常想要用这段…

SpringCloud基础6——分布式事务,Seata

用于复习快速回顾。 目录 1.分布式事务问题 1.1.本地事务,ACID原则 1.2.分布式事务 1.3.演示分布式事务问题 2.理论基础 2.1.CAP定理 2.1.1.一致性,数据同步 2.1.2.可用性,节点正常访问 2.1.3.分区容错 2.1.4.矛盾 2.2.BASE理论 …

vulnhub-xxe lab: 1

ifconfig nmap 192.168.61.0/24 找到192.168.61.145 目录扫描(御剑) 192.168.61.145/xxe 192.168.61.145/admin.php 无法访问,但是robots.txt里面写的应该不会是无效网站,所以可能是被拒绝访问了 抓xxe的包 可以发现是用xml写的…

[ web基础篇 ] Burp Suite 爆破 Basic 认证密码

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

层次选择器

层次选择器 后代选择器简介后代选择器可以选择作为某元素后代的元素(包括儿子,孙子,重孙子) 两个元素之间的层次间隔可以是无限的示例<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><title>Title</t…

怎么把握住股票每天的最佳交易时机?

每个股民都希望自己能够在每天的股价最高点卖出&#xff0c;然后在最低点再买回来&#xff1b;但是怎么去判断最好的交易时机呢&#xff0c;很多人会想很多方法去识别判断最佳交易点&#xff0c;今天给大家分享一种方法&#xff1b;我一直在思考股票交易的底层逻辑是啥&#xf…

如何在基础镜像中安装指定python版本

背景 由于规范要求要使用指定的镜像版本,但是由于该镜像中的python与我使用的版本有差异,怕引起一些不必要的兼容问题,所以我需要自己按基础镜像基础上安装对应版本的python。 Dockerfile 直接上最终dockerfile,为什么这样写,后面说到。 FROM centos:7 # 指定工作目录 WOR…

【2022中国高校计算机大赛 微信大数据挑战赛】Top 1-6 方案总结

前段时间参加了 2022中国高校计算机大赛 微信大数据挑战赛&#xff0c;比赛链接&#xff1a;https://algo.weixin.qq.com/。 由于时间原因精力有限&#xff0c;我们队伍的方案做的比较简陋&#xff1a; 【初赛&#xff1a;rank-18&#xff0c;复赛&#xff1a;rank-40&#xff…

网课查题接口 搜题公众号对接题库教程 (附赠题库接口)

网课查题接口 搜题公众号对接题库教程 &#xff08;附赠题库接口&#xff09; 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查…

bm19bm7

为什么不定义如果两点相等呢 等于的话峰值统一取右 以右来比较 波峰就行 不一定是最大的 在这里插入代码片 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可** * param nums…

微信小程序转为App并上架应用市场

先说说背景吧&#xff0c;笔者开发了一款微信工具类小程序&#xff0c;刚开始&#xff0c;小程序的日访问量和用户数都还可以&#xff0c;但后面慢慢的发现&#xff0c;受限于微信小程序平台规则&#xff0c;很难对用户进行更深入的运营&#xff0c;用户流失问题也将逐渐凸显出…

‘std::thread‘ has not been declared

出现这个问题的原因就是 目前MinGW GCC64还不支持std::thread 这是我的gcc版本 PS D:\MyCode> gcc --version gcc.exe (x86_64-win32-seh-rev0, Built by MinGW-W64 project) 8.1.0 Copyright © 2018 Free Software Foundation, Inc. This is free software; see the s…

七、RequestResponse

Request&Response 第一章 Request 1. 目标 了解Request的概念了解Request的组成部分掌握Request获取请求行的信息掌握Request获取请求头的信息掌握Request获取请求参数掌握解决请求参数乱码掌握Request域对象掌握请求转发 2. 内容 2.1 Request概述 2.1.1 Request的概…

Part16:Pandas的分层索引MultiIndex怎么用?【详解】

Pandas的分层索引Multilndex 1为什么要学习分层索引Multilndex? 1、分层索引:在一个轴向上拥有多个索引层级&#xff0c;可以表达更高维度数据的形式; 2、方便的进行数据筛选&#xff0c;如果有序则性能更好; 3、groupby等操作的结果&#xff0c;如果是多KEY&#xff0c;结…

元宇宙产业委常务副主任委员甘华鸣:关于术语“元宇宙”以及相关问题

【央链知播-编者按&#xff1a;元宇宙产业委常务副主任委员甘华鸣就全国科学技术名词审定委员会元宇宙及核心术语概念研讨会提出的一个观点&#xff0c;发表自己的看法&#xff0c;写了《关于术语“元宇宙”以及相关问题》一文&#xff0c;现转发供元宇宙产业和学术界思考】 以…

老鼠出迷宫

老鼠出迷宫 现有一个图形如下&#xff1a; 要求老鼠在左边第一个位置&#xff0c;走到绿色标的出口橙色为边界不能走。 表盘可以看做是一个[8][7]大小的二维数组&#xff0c;可以用1表示边界&#xff0c;0表示可以走 int [][] arrMap new int[8][7];得到一个数组&#xff1…

Python——基础语法(模块、包、文件读写等操作)

一、模块 概述&#xff1a;一个模块就是一个扩展名为.py的文件&#xff0c;可以包含多个函数、类、语句&#xff1b;使用模块可以提高代码的可维护性、可重用性&#xff0c;避免函数名和变量名冲突&#xff0c;方便其他程序和脚本的导入和使用。 二、模块的自定义 创建一个新…

基于ssm的社区医院儿童预防接种管理系统设计与实现-计算机毕业设计源码+LW文档

开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&…

且看五年开发码农,如何备战仨月硬刚字节面试官,轻松拿offer

写在前面 前不久跟几个哥们儿在一起吃喝玩闹&#xff0c;因为都是程序员出身&#xff0c;多少还是会谈谈各自公司的状况&#xff0c;其中一位朋友就是面临着跳槽换工作的情况。虽然做了好几年开发&#xff0c;但还是有很大压力&#xff0c;不光因为此次是想进字节跳动&#xf…