DNS 协议
计算机网络虽然理论部分在实际应用基本不会用到,在实际开发中,我们往往掌握一些库和工程性的框架和API就可以了。但是,在面试当中,我们还是需要了解一些基础的网络知识,比如 DNS 协议。
域名
DNS 协议(Domain Name System Protocol,域名系统协议)
域名的含义
我们知道,在网络当中,区分每个地址的唯一标识就是IP地址。但是 IPv4 和 IPv6 都是一堆难以记忆,没有什么规律的数字。所以,人们就想到一种更容易记忆的地址,就是域名。域名就是人们可以记忆的名字,比如 www.baidu.com。
域名的层级结构
域名的层级结构是通过点号来表示的,比如 www.baidu.com。
- 顶级域名(TLD):比如 com,net,org,edu,mil,gov,arpa,info,biz,name,pro,aero,coop,museum。
- 二级域名(SLD):比如 baidu,google,taobao,sina,sohu,jd,wiki,sogou,ifeng,yahoo,amazon,tmall。
- 三级域名(TLD):比如 www,mail,blog,news,shop,wiki,doc,download,video。
DNS
DNS 服务器
DNS 服务器是域名解析服务的提供者,它负责把域名转换成 IP 地址。当我们输入一个域名,比如 www.baidu.com,DNS 服务器会把域名解析成 IP 地址,比如 192.168.3.11。
DNS 协议
DNS 协议是基于 TCP/IP 协议族的,它运行在 UDP 端口 53 上。 这里注意,DNS 协议是基于 UDP 协议的
DNS 解析的过程
比如我们要查看 www.baidu.com
的 IP 地址,那么 DNS 解析的过程如下:
-
本地浏览器或应用发送解析请求给本地 DNS 服务器(解析器)。
-
DNS 服务器查询缓存,如果有缓存记录,则直接返回 IP 地址。
-
如果本地 DNS 服务器没有缓存记录,则向 DNS 根服务器发出请求。
-
通过根域名服务器查询到com服务器地址,得到
com
-
通过com域名服务器查询到baidu服务器地址,得到
baidu
-
通过baidu域名服务器查询到www服务器地址,得到
www.baidu.com
的IP地址。 -
本地 DNS 服务器把 IP 地址返回给本地浏览器或应用。
多播和任播
任播 (Anycast)
任播是一种网络通信方式,允许一个发送者将数据包发送给一组接收者中的任意一个,通常是距离最近或响应最快的接收者。任播常用于内容分发网络(CDN)、DNS服务等需要快速响应的应用场景。
特点:
- 数据包被路由到距离发送者最近的接收者,或根据其他优化策略选择接收者。
- 使用相同的IP地址分配给多个节点,网络路由协议决定数据包的最佳传输路径。
- 提高了服务的可用性和响应速度,减少了延迟。
多播 (Multicast)
多播是一种网络通信方式,允许一个发送者将数据包发送给多个接收者,但不是所有的网络节点都接收数据包。它的目的是提高网络效率,减少带宽消耗。多播通常用于视频会议、直播、在线游戏等需要将相同的数据发送给多个接收者的应用场景。
特点:
- 数据包只在需要的网络节点之间传输,减少了不必要的带宽使用。 使用特定的多播地址范围(IPv4中为224.0.0.0到239.255.255.255)。
- 需要网络设备(如路由器)支持多播协议(如IGMP,PIM)。
总结一下,多播是将数据发送给多个接收者,而任播是将数据发送给多个潜在接收者中的一个。两者都旨在提高网络效率,但应用场景和实现方式有所不同。
常见的神秘代码
-
127.0.0.1
:localhost,它是一个特殊的 IP 地址,它表示本机,用于本地计算机的网络通信。 -
255.255.255.255
:broadcast,它是一个特殊的 IP 地址,它表示整个网络,用于网络广播。 -
0.0.0.0
:any,它是一个特殊的 IP 地址,它表示任何 IP 地址,用于网络地址转换。 -
8.8.8.8
:Google Public DNS,它是一个公共 DNS 服务器,用于域名解析。另外的8.8.4.4
也是另外一个谷歌提供的公共 DNS 服务器。 -
114.114.114.114
: 国内移动、电信和联通通用的DNS,手机和电脑端都可以使用,干净无广告,解析成功率相对来说更高,国内用户使用的比较多,而且速度相对快、稳定,是国内用户上网常用的DNS。