什么是DNS?为什么选择UDP?详细的DNS解析过程?

article/2025/7/28 16:43:01

DNS

  • DNS
    • 1、DNS是什么?
    • 2、因特网的域名结构
    • 3、缓存(Cache)
    • 4、 DNS请求实例

DNS

1、DNS是什么?

DNS ( Domain Name Systme)简单理解就是解析器、域名服务器的组合,比如大家访问知乎,会输入http://www.zhihu.com,事实上网站域名只是一个IP 地址,人们是很难记住各式各样的IP地址的,所以就需要DNS服务器了,DNS就像手机通讯录一样,存放着各亲朋好友的手机号。为什么要存储到通讯录里?因为你不可能记得一百个人的手机号码,但是通过名字你可以快速定位某位朋友的手机号码。DNS就是存储了各种IP地址,然后让你通过域名定位到IP地址来进行连接通信的。

  • DNS domain name system 主要作用就是将主机域名转换为ip地址
  • 所有DNS请求和回答报文使用的UDP数据报经过端口53发送
  • DNS是应用层协议,client端(一般指浏览器)构建DNS查询请求,依次被传输层,网络层,数据链路层等封装传送到达DNS服务器端,最终client端接收到DNS响应消息

在这里插入图片描述
为什么选择UDP?

UDP(User Datagram Protocol)这样的无连接的,尽最大能力交付的不可靠数据连接,而不是使用TCP(Transmission Control Protocol 传输控制协议)这样的面向连接的可靠数据连接。

一次UDP名字服务器交换可以短到两个包:一个查询包、一个响应包。一次TCP交换则至少包含9个包:三次握手初始化TCP会话、一个查询包、一个响应包以及四次分手的包交换。

考虑到效率原因,TCP连接的开销大得,故采用UDP作为DNS的运输层协议,这也将导致只有13个根域名服务器的结果。

2、因特网的域名结构

因特网的域名结构:

  • 1、 因特网采用了层次树状结构的命名方法。

  • 2、 任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。

  • 3、 域名的结构由标号序列组成,各标号之间用点隔开:

在这里插入图片描述
域名服务器:

  • 1、一个服务器所负责管辖的(或有权限的)范围叫做区(zone)。

  • 2、 各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。

  • 3、每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。

  • 4、DNS 服务器的管辖范围不是以“域”为单位,而是以“区”为单位。

域名只是逻辑概念,并不代表计算机所在的物理地点。据2006年12月统计,现在顶级域名TLD(Top Level Domain)已有265个,分为三大类:

    (1)国家顶级域名nTLD:采用ISO3166的规定。如:cn代表中国,us代表美国,uk代表英国,等等。国家域名又常记为ccTLD(cc表示国家代码contry-code)。(2)通用顶级域名gTLD:最常见的通用顶级域名有7个,即:com(公司企业),net(网络服务机构),org(非营利组织),int(国际组织),gov(美国的政府部门),mil(美国的军事部门)。(3)基础结构域名(infrastructure domain):这种顶级域名只有一个,即arpa,用于反向域名解析,因此称为反向域名。

在这里插入图片描述
域名服务器有以下四种类型:

  • 1、根域名服务器
    • 1、 根域名服务器是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和 IP 地址。

    • 2、 不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析只要自己无法解析,就首先求助于根域名服务器。

    • 3、 在因特网上共有13个不同 IP 地址的根域名服务器,它们的名字是用一个英文字母命名,从a 一直到 m(前13 个字母)

    • 4、 根域名服务器并不直接把域名直接转换成 IP 地址。

    • 5、 在使用迭代查询时,根域名服务器把下一步应当找的顶级域名服务器的 IP 地址告诉本地域名服务器。

  • 2、顶级域名服务器
    • 1、这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。
    • 2、 当收到 DNS 查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的 IP 地址)
  • 3、 权限域名服务器
  • 4、本地域名服务器

在这里插入图片描述

3、缓存(Cache)

DNS缓存:每次你访问网站,DNS会保存你访问过的网站的域名服务器(即DNS) 信息,它存储在你的本机电脑上,目的就是为了帮助你下次在浏览器以最短的路径、更快的速度找到所需的DNS信息,解析你的网站!

缓存具体分类:

  • 1) 浏览器缓存

当用户通过浏览器访问某域名时,浏览器首先会在自己的缓存中查找是否有该域名对应的IP地址(若曾经访问过该域名且没有清空缓存便存在);

  • 2) 系统缓存

当浏览器缓存中无域名对应IP则会自动检查用户计算机系统Hosts文件DNS缓存是否有该域名对应IP;

  • 3) 路由器缓存

当浏览器及系统缓存中均无域名对应IP则进入路由器缓存中检查,以上三步均为客服端的DNS缓存;

  • 4) ISP(互联网服务提供商)DNS缓存

当在用户客服端查找不到域名对应IP地址,则将进入ISP DNS缓存中进行查询。比如你用的是电信的网络,则会进入电信的DNS缓存服务器中进行查找;

4、 DNS请求实例

  • 1、 浏览器会首先搜索浏览器自身的DNS缓存(缓存时间比较短,大概只有1分钟,且只能容纳1000条缓存),看自身的缓存中是否有www . qq .com 对应的条目,而且没有过期,如果有且没有过期则解析到此结束。
  • 2、如果浏览器自身的缓存里面没有找到对应的条目,那么浏览器会尝试读取hosts文件(位于C:\Windows\System32\drivers\etc),看看这里面有没有该域名对应的IP地址,如果有则解析成功。
  • 3、如果在hosts文件中也没有找到对应的条目,浏览器就会发起一个DNS的系统调用,就会向本地配置的首选DNS(53号端口UDP协议)服务器发起域名解析请求。(本地域名服务器)
  • 4、主机向本地域名服务器解析的过程采用递归(也就是运营商的DNS服务器必须得提供给我们该域名的IP地址),而本地域名服务器向其它域名服务器解析可以使用递归和迭代两种方式。
  • 迭代:
1、本地域名服务器向根域名服务器发请求2、返回给本地域名服务器我们要向哪个顶级域名服务器去找3、顶级域名服务器向权限域名服务器发请求4、返回给本地域名服务器IP地址。5、返回给Windows系统内核,最后返回给浏览器。
  • 递归:
1、本地域名服务器向根域名服务器发请求2、之后根域名服务器向顶级域名服务器去找3、顶级域名服务器返回给根域名服务器。4、根域名服务器返回给本地域名服务器5、返回给Windows系统内核,最后返回给浏览器。

在这里插入图片描述
这里补充说明,一旦递归服务器拿到解析记录以后,就会在本地进行缓存,如果下次客户端再请求本地的递归域名服务器相同域名的时候,就不会再这样一层一层查了,因为本地服务器里面已经有缓存了,这个时候就直接把www . qq .com的A记录返回给客户端就可以了。

DNS资源记录

在这里插入图片描述
记录一条域名信息映射关系,称之为资源记录(RR)。

当我们查询域名http://www.zdns.cn的时候,查询结果得到的资源记录结构体中有如下数据:

  • 1、TTL,就是生存周期,是递归服务器会在缓存中保存该资源记录的时长。

  • 2、网络/协议类型,它的代表的标识是IN,IN就是internet,目前DNS系统主要支持的协议是IN。

  • 3、type,就是资源记录类型,一般的网站都是都是A记录(IPv4的主机地址)。

  • 4、rdata是资源记录数据,就是域名关联的信息数据。


http://chatgpt.dhexx.cn/article/8V6pnI4y.shtml

相关文章

怎么选最快dns服务器,dns设置(dns设置哪个最好最快)

dns设置(dns设置哪个最好最快)我们知道影响上网速度的因素有很多,硬件、软件等都是高速上网的基础,每个人都希望自家的网速越来快,在相同的硬件、带宽固定的情况下,如何来择优选择上网参数中的DNS服务器呢? DNS服务是网…

如何查找最近最快的dns服务器,如何可以选择适合自己的最快的DNS服务器?

应邀回答本行业问题。 使用三大运营商的宽带网络,默认的DNS就是最快的DNS。访问DNS的快慢,和DNS服务器的响应速度,以及往返时延有关。 我们访问一个DNS的时延,是DNS服务器的响应时延,加上终端到服务器的往返时延&#…

DNS 域名解析

介绍域名 网域名称(英语:Domain Name,简称:Domain),简称域名、网域。 域名是互联网上某一台计算机或计算机组的名称。 域名可以说是一个 IP 地址的代称,目的是为了便于记忆。例如&#xff0c…

DNS 服务器选择

DNS 服务器选择 重要的事情写到前面,因为现在是快餐文化,快餐阅读,没有人愿意静下心研究和和阅读了。 本文主要介绍了一些DNS的测试速度,不介意直接拿去使用,如需使用还需要自己测试才行,就算我们找到了最…

怎么选最快dns服务器,如何选择适合自己的最快的DNS服务器?-

DNS在平时上网扮演着重要的角色,如果不注意DNS的话,可能会导致网速慢、弹出广告、网址打不开等一系列问题。那么有哪些比较好的DNS服务器呢?参考下图。 默认情况下,我们使用运营商分配的DNS,也可以使用公共DNS&#xf…

设置正确的DNS

上网或下载软件慢问题,除去少数设备陈旧、感染病毒、网卡硬件故障和网卡驱动错误方面的因素,绝大部分原因是由于部分上网电脑或家用无线路由器设置了错误的DNS造成的,正确的方法是应该在电脑或路由器上使用本地互联网营运商(以下简…

将字符串转换为数字(a_to_i)

大部分人看到这样的题目,觉得很简单,很多人就会写出如下程序: int My_atoi(const char* str) { int val 0; while(*str ! \0) { val val * 10 *str - 0; str; } return val; } 这个程序是没有问题的…

java 如何将数值型字符转换为数字_Java 如何将字符串转换为数字 专家详解

在编程中我们经常需要进行各种数据类型之间的转换操作,下面将为您介绍如何将字符串转换为数字。首先我们需要了解各种数据类型的表示,String在java中为字符串类型,int在java中为整数类型,大小在-2147483648到2147483647 之间,long为长整形,可以表示的数值大小比int大很多…

C++中将字符串转换为数字

C中将字符串转换为数字 法一&#xff1a; int t s[len - 1]-0;//减去一个 0 是 将最后一位字母转换成数字例如&#xff1a;这个判断基偶性就是为了防止越界所以将数组转换为数组传入&#xff0c;再将最后一位字母转换位数字判断其基偶性 #include<iostream> using n…

C语言将字符串转换为数字

最近做了一些需要使用字符串形势获取数字的程序&#xff0c;这里就牵扯到了字符串类型和数字类型的转换问题&#xff0c;以下是C语言中&#xff0c;字符串类型转换为数字类型的方法。 1.问题描述 数字既能以字符串形式储存&#xff0c;也能以数值形式储存&#xff0c;把数字储…

C/C++编程笔记:如何将字符串转换为数字,数字转换为字符串?

通常&#xff0c;或更具体地说&#xff0c;在竞争性编程中&#xff0c;有许多情况需要将数字转换为字符串或将字符串转换为数字。但是缺乏某些必不可少的工具的知识使我们不得不这样做。本文介绍了一些实现此任务的方法。 将字符串转换为数字 方法1&#xff1a;使用stringstr…

32程序员面试被拒,嫌弃太老,“大龄程序员”将何去何从

随着互联网的高速发展变革&#xff0c;大龄恐惧症越来越多地在技术圈被人讨论。很多程序员在工作5-10年以后&#xff0c;都会开始思考5年、10年甚至更久以后的自己&#xff0c;会是怎样一种生活工作状态&#xff0c;以及是否会被时代抛弃。 随着前段时间一位32的程序员被拒面试…

大龄程序员的未来在何方,该何去何从?

大龄程序员的界定 老早网上有人说&#xff0c;软件开发干不过30岁&#xff0c;后来又有人说干不过35岁&#xff0c;后来又有人说干不过40岁&#xff0c;后来又有人说干不过45岁……各种说法很多&#xff0c;这里我采取通俗的说法&#xff0c;认为过了30岁的程序员算是大龄程序…

大龄程序员书单

本职专业序列 24小时365天不间断服务: 服务器基础设施核心技术&#xff08;运维基础&#xff09; 云原生基础架构&#xff1a;构建和管理现代可扩展基础架构的模式及实践 企业迁云实践 生产微服务&#xff08;推荐&#xff09; 可伸缩服务架构&#xff1a;框架与中…

大龄程序员

要是写代码写到三十岁没升到管理怎么办啊&#xff1f; 我每天还在写代码&#xff0c;与人讨论技术实现细节&#xff0c;35 岁那年&#xff0c;我写的 Moco 拿了 Oracle 的 Duke 选择奖。 思维误区 我还没开始工作的时候&#xff0c;有人就在说&#xff1a;程序员能做到 30 岁…

35岁的程序员真的到头了么?国外的大龄程序员在干什么?

在Quora有个帖子&#xff1a; 我今年35岁了&#xff0c;是不是太老了&#xff0c;没法加入Google, Facebook, Microsoft 或者 Apple了&#xff1f; 下面的回复让人叹为观止&#xff0c;我摘录几个&#xff1a; 萨特南辛格 Google软件工程师 (2017–present) 不&#xff0c;…

大龄程序员的一次考研之旅

现在程序员的世界越来越卷&#xff0c;如果想拿到一个不错的offer&#xff0c;势必再聊完技术之外&#xff0c;HR也会关注你的学历&#xff0c;是否211&#xff1f;985 &#xff1f;也许有人说&#xff0c;只要技术好就能拿到offer&#xff0c;云云。是的&#xff0c;技术能力确…

35岁大龄程序员职业转型规划

35岁大龄程序员职业转型规划 I. 引言 在当今快速发展的IT行业&#xff0c;程序员这个职业变得越来越重要。但是&#xff0c;对于35岁以上的程序员来说&#xff0c;面临的职业困境也越来越严峻。他们不仅面临着技术的迭代更新&#xff0c;而且还面临着市场的竞争和年轻程序员的…

大龄程序员找工作,为什么这么难?能力与年龄不匹配

背景 今年的金三银四快结束了&#xff0c;公司还在招人&#xff0c;可筛选的人才真是越来越少&#xff0c;于是在简历筛选时&#xff0c;将学历和年龄都适当的放松了。正因为如此&#xff0c;面试了不少大龄的程序员。 网络上一直有讨论大龄程序员找工作困境的话题&#xff0…

35岁以后的大龄程序员,正处于怎样一种状态?

前言 随着互联网的高速发展变革&#xff0c;大龄恐惧症越来越多地在技术圈被人讨论。很多程序员在工作5-10年以后&#xff0c;都会开始思考5年、10年甚至更久以后的自己&#xff0c;会是怎样一种生活工作状态&#xff0c;以及是否会被时代抛弃。 特别是全民创业的这几年&…