DNS协议解析

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: DNS协议解析

TCP/IP中使用的是IP地址和端口号来确定网络上某一台主机上的某一个程序,不免有人有疑问,为什么不用域名来直接进行通信呢?


  • 因为IP地址是固定长度的,IPv4是32位,IPv6是128位,而域名是变长的,不便于计算机处理。
  • IP地址对于用户来说不方便记忆,但域名便于用户使用,例如www.baidu.com这是百度的域名。


总结:IP地址是面向主机的,而域名则是面向用户的。DNS(域名系统)是因特网使用的命名系统,用于解决IP地址和域名的映射关系


ps:域名和IP的对应关系保存在一个叫hosts文件中。最初,通过互联网信息中心来管理这个文件,如果有一个新的计算机想接入网络,或者某个计算IP变更都需要到信息中心申请变更hosts文件。其他计算机也需要定期更新,才能上网。但是这样太麻烦了,就出现了DNS系统。


  • 一个组织的系统管理机构, 维护系统内的每个主机的IP和主机名的对应关系
  • 如果新计算机接入网络,将这个信息注册到数据库中
  • 用户输入域名的时候,会自动查询DNS服务器,由DNS服务器检索数据库,得到对应的IP。在域名解析的过程中仍然会优先查找hosts文件的内容。


DNS域名结构



域名系统必须要保持唯一性。命名:


  • 每一个域名(本文只讨论英文域名)都是一个标号序列(labels),用字母(A-Z,a-z,大小写等价)、数字(0-9)和连接符(-)组成
  • 标号序列总长度不能超过255个字符,它由点号分割成一个个的标号(label)
  • 每个标号应该在63个字符之内,每个标号都可以看成一个层次的域名。
  • 级别最低的域名写在左边,级别最高的域名写在右边。


域名服务主要是基于UDP实现的,服务器的端口号为53。


image.png

其中顶级域名分为:国家顶级域名、通用顶级域名、反向域名。


image.png


DNS域名服务器



域名是分层结构,域名服务器也是对应的层级结构。


有了域名结构,还需要有一个东西去解析域名,域名需要由遍及全世界的域名服务器去解析,域名服务器实际上就是装有域名系统的主机。


由高向低进行层次划分,可分为以下几大类:


image.png


注:一个域名服务器所负责的范围,或者说有管理权限的范围,就称为区。


我们需要注意的是:


  • 每个层的域名上都有自己的域名服务器,最顶层的是根域名服务器;
  • 每一级域名服务器都知道下级域名服务器的IP地址
  • 为了容灾, 每一级至少设置两个或以上的域名服务器


DNS域名解析过程



域名解析总体可分为一下过程:


  • 输入域名后, 先查找自己主机对应的域名服务器,域名服务器先查找自己的数据库中的数据.
  • 如果没有, 就向上级域名服务器进行查找, 依次类推
  • 最多回溯到根域名服务器, 肯定能找到这个域名的IP地址
  • 域名服务器自身也会进行一些缓存, 把曾经访问过的域名和对应的IP地址缓存起来, 可以加速查找过程


具体过程:


  • 主机先向本地域名服务器进行递归查询
  • 本地域名服务器采用迭代查询,向一个根域名服务器进行查询
  • 根域名服务器告诉本地域名服务器,下一次应该查询的顶级域名服务器的IP地址
  • 本地域名服务器向顶级域名服务器进行查询
  • 顶级域名服务器告诉本地域名服务器,下一步查询权限服务器的IP地址
  • 本地域名服务器向权限服务器进行查询
  • 权限服务器告诉本地域名服务器所查询的主机的IP地址
  • 本地域名服务器最后把查询结果告诉主机


拓展:递归查询和迭代查询


  • 递归查询:本机向本地域名服务器发出一次查询请求,就静待最终的结果。如果本地域名服务器无法解析,自己会以DNS客户机的身份向其它域名服务器查询,直到得到最终的IP地址告诉本机
  • 迭代查询:本地域名服务器向根域名服务器查询,根域名服务器告诉它下一步到哪里去查询,然后它再去查,每次它都是以客户机的身份去各个服务器查询。


通俗地说


  • 递归就是把一件事情交给别人,如果事情没有办完,哪怕已经办了很多,都不要把结果告诉我,我要的是你的最终结果,而不是中间结果;如果你没办完,请你找别人办完。
  • 迭代则是我交给你一件事,你能办多少就告诉我你办了多少,然后剩下的事情就由我来办。


在浏览器中输入url地址 ->> 显示主页的过程


简单来讲,分为域名输入、DNS解析、TCP连接、发送HTTP请求、响应HTTP请求,解析渲染、断开连接。


主要经历以下流程:


  • 浏览器解析输入:地址栏会根据用户输入,做出如下判断:输入的是非 URL 结构的字符串,则会用浏览器默认的搜索引擎搜索该字符串;输入的是 URL 结构字符串,则会构建完整的 URL 结构,浏览器进程会将完整的 URL 通过进程间通信,即 IPC,发送给网络进程
  • DNS解析:在网络进程接收到 URL 后,并不是马上对指定 URL 进行请求。首先进行DNS 解析域名得到对应的 IP,然后通过 ARP 解析 IP 得到对应的 MAC地址。DNS解析域名(寻址)的过程:
  • 浏览器缓存:询问浏览器 DNS 缓存
  • 本地系统缓存:询问本地操作系统 DNS 缓存(即查找本地 hosts 文件)
  • 路由器缓存:查询路由器的DNS缓存
  • ISP DNS 缓存:询问 ISP(Internet Service Provider)互联网服务提供商(例如电信、移动)的 DNS 服务器
  • 询问根服务器,这个过程可以进行递归和迭代两种查找的方式,两者都是先询问顶级域名服务器查找(DNS服务器先问根域名服务器.com域名服务器的IP地址,然后再问.com域名服务器,依次类推)
  • 浏览器向服务器发起tcp连接:解析出IP地址后,根据IP地址和默认端口,和服务器三次握手建立TCP连接。
  • 发送HTTP请求:浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求。cookie会随着请求发给服务器。
  • 服务器处理请求并返回HTTP报文:服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器
  • 浏览器解析渲染页面:显示html文本内容
  • 释放TCP连接:连接结束


(1)现代浏览器在与服务器建立了一个 TCP 连接后是否会在一个 HTTP 请求完成后断开?什么情况下会断开?

  • 在 HTTP/1.0 中,一个服务器在发送完一个HTTP 响应后,会断开 TCP 链接。但是这样每次请求都会重新建立和断开 TCP 连接,代价过大。
  • HTTP/1.1 就把 Connection:keep-alive 头写进标准,并且默认开启持久连接(长连接),默认情况下建立 TCP 连接不会断开,只有在请求报头中声明 Connection: close 才会在请求完成后关闭连接。


(2)一个 TCP 连接可以对应几个 HTTP 请求?

  • 如果维持连接,一个 TCP 连接是可以发送多个 HTTP 请求的。可以理解为复用。


(3)一个 TCP 连接中 HTTP 请求发送可以一起发送么(比如一起发三个请求,再三个响应一起接收)?

  • HTTP/1.1 存在一个问题,单个 TCP 连接在同一时刻只能处理一个请求,意思是说:两个请求的生命周期不能重叠,任意两个 HTTP 请求从开始到结束的时间在同一个 TCP 连接里不能重叠。虽然 HTTP/1.1 规范中规定了 Pipelining 来试图解决这个问题,但是这个功能在浏览器中默认是关闭的。但是,一些代理服务器不能正确的处理 HTTP Pipelining。正确的流水线实现是复杂的。
  • HTTP2 提供了 Multiplexing 多路传输特性,可以在一个 TCP 连接中同时完成多个 HTTP 请求。多个 HTTP 请求可以在同一个 TCP 连接中并行进行。


(4)为什么有的时候刷新页面不需要重新建立 SSL 连接?

  • TCP 连接有的时候会被浏览器和服务端维持一段时间。TCP 不需要重新建立,SSL 自然也会用之前的。
相关文章
|
3月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
180 3
|
14天前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
62 1
|
2月前
|
监控 网络协议 网络性能优化
网络通信的核心选择:TCP与UDP协议深度解析
在网络通信领域,TCP(传输控制协议)和UDP(用户数据报协议)是两种基础且截然不同的传输层协议。它们各自的特点和适用场景对于网络工程师和开发者来说至关重要。本文将深入探讨TCP和UDP的核心区别,并分析它们在实际应用中的选择依据。
63 3
|
19天前
|
传感器
Modbus协议深入解析
Modbus协议是由Modicon公司(现施耐德电气)于1979年发明的串行通信协议,主要用于工业自动化系统中的PLC通信。本文深入解析了Modbus协议的主从模式、数据类型(线圈、离散输入、保持寄存器、输入寄存器)、帧结构和通信过程,并介绍了其应用场景和重要性。
18 0
|
2月前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
123 3
|
2月前
|
域名解析 缓存 网络协议
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
|
3月前
|
监控 网络协议 安全
DNS服务器故障不容小觑,从应急视角谈DNS架构
DNS服务器故障不容小觑,从应急视角谈DNS架构
74 4
|
2月前
|
负载均衡 网络协议 算法
OSPF与其他IGP协议的比较:全面解析与应用场景
OSPF与其他IGP协议的比较:全面解析与应用场景
55 0
|
3月前
|
域名解析 网络协议
非阿里云注册域名如何在云解析DNS设置解析?
非阿里云注册域名如何在云解析DNS设置解析?
|
3月前
|
域名解析 弹性计算
内网域?名解析记录是否会覆盖公网域名解析记录?
内网域?名解析记录是否会覆盖公网域名解析记录?

相关产品

  • 云解析DNS