独立开发者系列(26)——域名与解析

 域名(英语:Domain Name),又称网域,是由一串用点分隔的名字组成的互联网上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。
由于IP地址不方便记忆并且不能显示地址组织的名称和性质,人们设计出了域名,并通过域名系统(DNS,Domain Name System)来将域名和IP地址相互映射,使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串

  先简单梳理下域名访问的原理——你电脑,检查本地的hosts文件,看下有没有对应的域名在上面,如果有,直接向对应的服务器IP发送域名,就可以拿到响应结果。这也是最快最高效率访问服务器。所以当网站访问慢,确定是你DNS的问题的时候,使用hosts指向是可以加快访问速度的。如果装有phpstudy 可以直接修改host。

如果本地host文件没找到,则会启用DNS服务器来解析,我们浏览器输入的网址信息,(解释下DNS服务器 互联网上用于将域名解析为IP地址的服务器的IP地址。当你在浏览器中输入一个网址时,DNS服务器会将这个域名转换为相应的IP地址,以便你的计算机能够连接到托管该网站的服务器。)默认情况下,服务器设置的DNS服务器如下:大陆境内的,之前是8.8.8.8

有些网址访问很慢,与对应的DNS返回关系很大。

域名的绑定配置:

登录域名商,解析对应的开头指向IP,会提示完成DNS解析指向。

A解析记录,常用的域名指向IP记录

Cname解析 解析到一个URL,访问对应域名,不是指向一个IP而是跳转到解析的域名里面,特别适合一些大型的博客独立网址是二级域名,我们再申请一个域名跳转到该二级域名里面,变相的实现了我们网址的访问。

MX解析  邮件服务器的解析,用的比较少

TXT解析,用于存储任意文本信息。TXT记录通常用于存储与域名相关的文本信息,如验证域名所有权、SPF(Sender Policy Framework,发件人策略框架)记录、DKIM(DomainKeys Identified Mail,域名键标识邮件)密钥等

其他类型的解析方式,我们用的很少。除非特别大型,一般不会涉及到。

整个解析过程如下:

用户输入域名:用户在浏览器或应用中输入要访问的域名,比如 www.example.com。

本地域名解析器查询:首先,操作系统会检查本地的 DNS 缓存(本地解析器缓存)。如果之前已经查询过相同的域名,可能会直接返回缓存中的结果,否则会继续向下执行。

向递归DNS服务器发出请求:如果本地缓存没有对应的记录,本地域名解析器会向配置的递归 DNS 服务器(通常由 ISP 或网络提供商提供)发出请求。这个请求是一个迭代查询,本地解析器不会直接去查询目标域名的权威服务器,而是请求递归服务器代为查询。

递归DNS服务器查询:递归 DNS 服务器会首先查询它自己的缓存,如果有目标域名的记录,则直接返回给本地解析器。如果没有,递归服务器会执行以下操作:

查询根域名服务器:如果递归服务器之前没有缓存过该域名的信息,它会向根域名服务器发送请求,询问它知道哪些顶级域名服务器(比如 .com、.net 等)的 IP 地址。

查询顶级域名服务器:根域名服务器返回顶级域名服务器的 IP 地址给递归服务器,然后递归服务器向顶级域名服务器发送请求,询问它知道哪些次级域名服务器(例如 example.com 的权威服务器)的 IP 地址。

查询权威域名服务器:顶级域名服务器返回次级域名服务器的 IP 地址给递归服务器,然后递归服务器再向次级域名服务器发送请求,获取域名的具体解析记录,比如 www.example.com 的 IP 地址。

获取域名解析记录:权威域名服务器收到请求后,会查询并返回该域名的解析记录给递归 DNS 服务器。这些记录可能包括 A 记录(IPv4 地址)、AAAA 记录(IPv6 地址)、CNAME 记录(指向另一个域名)、MX 记录(邮件服务器)、TXT 记录(文本记录)等。

递归DNS服务器返回结果:递归 DNS 服务器收到来自权威服务器的响应后,会将域名解析的结果返回给本地域名解析器。

本地域名解析器返回结果:最后,本地域名解析器将收到的解析结果返回给用户的应用程序(比如浏览器),并将解析结果缓存以便下次查询时可以直接返回,加快响应速度。


  本地电脑——DNS服务器——DNS服务器解析——IP
  域名的各种解析操作(A  cname )

相关推荐

  1. ESP32网络开发实例-mDNS域名

    2024-07-16 12:08:04       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 12:08:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 12:08:04       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 12:08:04       58 阅读
  4. Python语言-面向对象

    2024-07-16 12:08:04       69 阅读

热门阅读

  1. Uniapp中image的@load不触发问题

    2024-07-16 12:08:04       25 阅读
  2. unity局部坐标和世界坐标角度介绍

    2024-07-16 12:08:04       27 阅读
  3. windows下使用#include <nlohmann/json.hpp>

    2024-07-16 12:08:04       19 阅读
  4. C# winform 打印Excel

    2024-07-16 12:08:04       21 阅读
  5. Linux容器篇-kubernetes监控和日志管理

    2024-07-16 12:08:04       23 阅读
  6. PG参数深入了解

    2024-07-16 12:08:04       21 阅读
  7. AI安全入门-人工智能数据与模型安全

    2024-07-16 12:08:04       23 阅读
  8. 容器安全最佳实践和工具

    2024-07-16 12:08:04       26 阅读