网络协议之DNS

写在前面

DNS,全称domain name system,域名系统,在网络世界中异常重要的存在。本文来一起了解下。

1:正文

因为IP地址过于晦涩,难记,所以就有了域名,而域名无法直接访问服务器,所以在使用时有需要转换为IP地址,所以就有了DNS。DNS是一种树形的结构,如下图:

从上往下分别是:

复制代码
根DNS服务器:职责是返回顶级域DNS服务器的IP地址
顶级域DNS服务器:职责是返回权威DNS服务器的IP地址
权威DNS服务器:职责是返回域名对应的IP地址,即底层的真正干活的劳动人民

对于我们来说了解DNS的大致工作流程就足够了,所以接下来就看下这部分内容。作为扩展也来看下作为其具体应用的负载均衡部分内容。

1.1:DNS的工作流程

为了提高性能,一般都会使用DNS缓存服务器,所以就有了以下的流程。

假定我们要访问www.dahuyou.com

复制代码
0:请求本地DNS缓存,本地DNS缓存从hosts中获取
1:客户端发送请求给本地DNS(本地DNS一般在ISP,即网络服务商的某个机房中)
2:一般在本地DNS服务器中会缓存一份数据,如果有则直接返回,如果没有则请求根DNS服务器
3:根DNS服务器收到请求后,发现是.com的,则会返回.com对应的顶级域名DNS服务器
4:本地DNS拿到了顶级域名DNS服务器(负责管理二级域名)的地址之后,则继续请求之,顶级域名DNS服务器发现二级域名是dahuyou.com,则将对应的权威DNS服务器地址返回
5:本地DNS拿到了权威DNS服务器地址后,就请求之,权威DNS返回IP给本地DNS,本地DNS给客户端,这样客户端就拿到可用的IP地址了

完整过程如下图:

过程还是蛮复杂的,所以这里缓存还是比较重要的。

1.2:负载均衡

1.2.1:内部负载均衡

这里的内部不是一个应用内部,而是一个系统的内部(一个机房),比如A服务需要访问B服务,这时候A服务基于域名方式访问B服务,可以配置解析出多个B服务的IP地址,这次返回这个IP地址给客户端,下次返回那个IP地址给客户端,就实现负载均衡了。

1.2.2:全局负载均衡

全局负载均衡是,将系统部署在多个城市,或者是多个运营商中,这里以多个城市为例,北京的用户就近访问北京的服务器,而上海上的用户则就近访问上海的服务器。

写在后面

参考文章列表

相关推荐
为何创造硅基生物17 小时前
ESP32S3的RGB屏幕漂移问题
网络
好运的阿财17 小时前
process 工具与子agent管理机制详解
网络·人工智能·python·程序人生·ai编程
周杰伦fans17 小时前
C# required 关键字详解
开发语言·网络·c#
洛水水17 小时前
深入理解网络编程核心:Reactor、IOCP 与异步 IO 模型详解
网络·iocp
favour_you___18 小时前
epoll惊群问题与解决
服务器·网络·tcp/ip·epoll
北方的流星18 小时前
华三网络设备的路由重定向配置
运维·网络·华三
.select.18 小时前
TCP 3
服务器·网络·tcp/ip
阿捏利18 小时前
详解网络协议(十六)UDP协议
网络·网络协议·udp
芯智工坊18 小时前
第13章 Mosquitto监控与日志管理
前端·网络·人工智能·mqtt·开源
派大星酷18 小时前
Cookie、Session、Token、JWT 原理 + 流程 + 区别 + 实战
java·网络