计算机网络——DNS协议

目录

前言

前篇

引言

IP地址与域名

DNS协议的工作流程

DNS服务器节点之间是如何维护上下级关系的

前言

本博客是博主用于复习计算机网络的博客,如果疏忽出现错误,还望各位指正。

这篇博客是在B站掌芝士zzs这个UP主的视频的总结,讲的非常好。

可以先去看一篇视频,再来参考这篇笔记(或者说直接偷走)。

一条视频讲清楚什么是DNS协议-域名是怎么转换为IP地址的_哔哩哔哩_bilibili

前篇

  1. 计算机网络------MAC地址和IP地址-CSDN博客
  2. 计算机网络------交换机和路由器-CSDN博客
  3. 计算机网络------网络地址转换(NAT)技术-CSDN博客
  4. 计算机网络------TCP和UDP协议-CSDN博客
  5. 计算机网络------DHCP协议-CSDN博客
  6. 计算机网络------ARP协议-CSDN博客

引言

大家每天都在使用浏览器浏览网页,访问一个网站最重要的一部分就是输入这个网站的域名,或者发送邮件时跟在@和后面的域名。域名到底是什么?它与IP地址到底是什么关系?今天我们就一起来了解一下DNS协议以及其工作原理。

IP地址与域名

我们都知道在TCP/IP协议中,IP地址才是每台计算机或者服务器的唯一标识。

那为什么我们访问网站不直接使用IP地址来访问,而是使用域名来访问呢?

其实直接使用IP地址也是可以的。比如我们知道百度的IP地址是180.101.50.242,把这个IP输入到浏览器的地址栏,照样可以成功访问百度。

这样看起来貌似域名IP地址都是可以工作的那域名和IP地址到底是什么关系呢?

举一个例子,我们平时用手机进行通信,每台手机都拥有一个11位的号码,作为手机的唯一标识,移动公司也是通过手机号码进行关联通信的。

同时我们的手机中保存了很多联系人的电话号码,但当我们拨打电话时,不会每次都输入11位号码再拨打电话,而是会为其起一个名称被关联起来。

对于用户来说,记住名称比较容易,而记住电话号码就比较困难了。

但是对于移动公司来说,数字更容易识别与处理。

在网络世界中也是这样的,IP地址就好比电话号码,域名就好比电话号码对应的名称。

用户不需要记住网站的IP地址,而只需要记住其域名就可以正常访问。方便记忆访问。

在网络世界中仍然是以IP地址作为主机的唯一标识。

用户输入域名需要先查询到其对应的IP地址,这个查询的协议就是DNS协议。

DNS协议的工作流程

当你在浏览器中输入一串网址并按下回车键。

首先浏览器会去解析这段网址,从中取出域名,然后组建一包DNS查询报文,并发送到主机的上一级DNS服务器。

在开启DHCP的情况下,DNS服务器是会通过DHCP协议自动获取的,用户也可以手动配置。

这里大家只需要知道这一帧DNS查询报文会发送到其上一级的DNS服务器。

DNS服务器收到这一帧查询报文后会在自己缓存的DNS池中查找这个域名的记录,试图找到其对应的IP地址。

如果找不到会再向其更上一级的DS服务器进行查找。

上级有可能会再向更上一级查找。

总之最终DNS服务器会返回一个结果,要不就是查询成功,返回的是其对应的IP地址。要不就是查询失败。

浏览器拿到查询到的IP地址后会使用此IP地址构建HTTP协议。

数据包通过HTTP协议最终获取到需要显示的网页。

为了提高效率,浏览器并不是每次都需要查询域名对应的IP地址的。

浏览器会缓存查询到的域名IP并在一定时间内直接使用,其结果只有超过一定的时间后才会再次进行查询。

DNS服务器节点之间是如何维护上下级关系的

在全球的互联网中拥有数以亿计的域名,并且他们维护在大量的域名服务器中,并且每天都在新增大量的域名。

比如原在美国上线了一个网站,在中国的一台计算机能在很短的时间内就成功解析到其域名,并成功访问到其内容。

可想而知这些域名如何有序的维护也是一个难题。

我们下面来看一下这个问题。

首先是域名本身的结构,比如www.mail.zhangzhishi.com这个域名,我们可以按照点的位置来给它划分一定的等级。

比如com是最顶级的域,表示的是公司。

zhangzhishi是com的子域,表示的是公司名。

mail是涨知识的子域,表示的是邮箱。

www是没有的子域是大家常用的前缀,表示的是万维网。

按照这个规则,我们可以扩展出来几个zhangzhishi的子域。比如work game。

同理com底下也有很多子域,比如baidu、QQ等。

有了这个层次结构,我们就可以来关联其所在的服务器了。

比如com域是一台DNS服务器,zhangzhishi也可以是一台DNS服务器。

为了便于表达,我们先认为每个子域都是一台DNS服务器。

实际上有可能多个域都位于同一台DNS服务器中。

那么顶层的域就只需要知道自己子域的IP地址就可以了。

比如说到一个mail.zhangzhishi.com域名的查询请求,首先导航到它的最顶层的com域服务器。

com域服务器中没有这个域名,它只需要把请求转到下一级子域服务器,也就是zhangzhishi服务器。

zhangzhishi域服务器把查询请求转到mail子域服务器,就可以顺利的查询到这个域名的IP地址了。

同理,所有com子域为baidu查询请求,只需要导航到baidu子域服务器就可以了。

当然com域也不是最顶层域,它属于根域的一个子域。

直属根域的子域还有edu、org、net、cn等等很多。

而我们的计算机想要查询到所有的域名,只需要通过上一级DS服务器直接连接到根域就OK了。

目前全球有13个根域服务器,一个为主根服务器在美国,其余12个为辅根服务器,其中9台在美国。欧洲有两台,分别位于英国和瑞典,亚洲有一台位于日本。

相关推荐
妮妮喔妮1 小时前
HTTP中常见的Content-Type
网络·网络协议·http
数通Dinner2 小时前
异步Websocket构建聊天室
运维·网络·websocket·网络协议·信息与通信
WooaiJava4 小时前
多个参数用websocket 向io 服务器发送变量,一次发一个,并接收响应
网络·websocket·网络协议
DemonAvenger4 小时前
Go网络编程基础:网络模型与协议栈概述
网络协议·架构·go
2501_916007474 小时前
iOS 接口频繁请求导致流量激增?抓包分析定位与修复全流程
websocket·网络协议·tcp/ip·http·网络安全·https·udp
Net_Walke5 小时前
【网络协议】WebSocket简介
网络·websocket·网络协议
2501_916013745 小时前
用Fiddler中文版抓包工具掌控微服务架构中的接口调试:联合Postman与Charles的高效实践
websocket·网络协议·tcp/ip·http·网络安全·https·udp
00后程序员张7 小时前
调试 WebView 接口时间戳签名问题:一次精细化排查和修复过程
websocket·网络协议·tcp/ip·http·网络安全·https·udp
小锋学长生活大爆炸7 小时前
【知识】RPC和gRPC
服务器·网络协议·rpc
小高不会迪斯科7 小时前
MIT 6.824学习心得(2) 浅谈多线程和RPC
网络·网络协议·rpc