1.什么是DNS

DNS 是"域名系统"的缩写,是互联网中基于应用层的分布式数据库协议,用于将人类易记的域名(如 baidu.com) 解析为计算机可识别的 IP 地址(如 203.0.113.10),同时支持反向解析(IP→域名)。

域名简介

主域名是用来识别主机名称和主机所属的组织机构的⼀种分层结构的名称。

www.baidu.com
  • com: 一级域名. 表示这是⼀个企业域名. 同级的还有 "net"(网络提供商), "org"(非盈利组织) 等.
  • baidu: 二级域名, 公司名.
  • www: 只是⼀种习惯用法. 之前人们在使用域名时, 往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这
  • 样的格式, 来表示主机支持的协议

2.域名解析的流程

DNS 解析采用 “递归查询 + 迭代查询” 结合 的方式,核心流程如下(以www.baidu.com 为例):

步骤

操作细节

查询类型

1. 本地缓存查询

先检查本地 DNS 缓存(操作系统缓存 + 浏览器缓存,如 Chrome 缓存 1 分钟),若存在已解析的 IP 直接返回,结束流程。

-

2. 本地 DNS 服务器查询

若本地缓存未命中,向 本地 DNS 服务器(通常由运营商 / 公司提供,如 114.114.114.114)发起查询。本地 DNS 服务器会先查自身缓存,命中则返回。

递归查询(本地 DNS 向用户承诺 “查到底”)

3. 根域名服务器查询

本地 DNS 缓存未命中,向根域名服务器(全球共 13 组,如 . 根域)发起查询,根服务器不存储具体域名 IP,仅返回对应顶级域服务器(如 .com)的地址。

迭代查询(根服务器仅返回下一步查询地址,本地 DNS 需继续查询)

4. 顶级域服务器查询

本地 DNS 向 .com 顶级域服务器查询,顶级域服务器返回对应 二级域服务器(如 baidu.com)的地址。

迭代查询

5. 权威域名服务器查询

本地 DNS 向 baidu.com 权威服务器(百度自己的 DNS 服务器)查询,权威服务器存储该域名的最终 IP 记录(如 180.101.49.11),返回给本地 DNS。

迭代查询

6. 结果返回与缓存

本地 DNS 收到 IP 后,缓存该记录(缓存时间由 TTL 控制,通常 5 分钟~24 小时),再将 IP 返回给用户设备,用户设备通过 IP 与目标服务器建立连接。

-

浏览器输入url后会发送什么

1.对url进行解析,解析出协议、域名(或者是ip)、端口、路径与查询参数

2.如果解析url后只得到域名(没有ip),就进行DNS域名解析得到ip

3.浏览器与服务端建立连接(三次握手)

4.浏览器发送HTTP请求

5.服务端响应HTTP请求

6.浏览器接受响应

7.关闭连接(四次挥手)

3.什么是ICMP

⼀个新搭建好的网络, 往往需要先进行⼀个简单的测试, 来验证网络是否畅通; 但是IP协议并不提供可靠传输.。如果丢包了, IP协议并不能通知传输层是否丢包以及丢包的原因。

ICMP 是“互联网控制消息协议”的缩写,属于网络层辅助协议,基于 IP 协议传输(不封装在 TCP/UDP 中),用于在 IP 网络中传递控制消息(如网络状态查询)和 差错报告(如目标不可达),帮助诊断网络故障。

ICMP报文格式

  

ICMP分为两类,一是用于通知出错原因,二是用于诊断查询

  

4.ICMP的作用

  • 确认IP包是否成功到达目标地址.
  • 通知在发送过程中IP包被丢弃的原因.
  • ICMP也是基于IP协议工作的,但是它并不是传输层的功能, 因此人们仍然把它归结为网络层协议;
  • ICMP只能搭配IPv4使用. 如果是IPv6的情况下, 需要使用ICMPv6

5.ICMP的具体过程

查询类(如 ping):

客户端发送 Echo Request(类型 8)→ 服务器接收后返回 Echo Reply(类型 0)→ 客户端计算 RTT;

差错类(如端口不可达):源设备发送的数据包失败(如端口未开放)→ 目标设备 / 路由器发送 ICMP 差错报文(类型 3 + 代码 3)→ 源设备得知失败原因。

ping命令

  

  • 注意, 此处 ping 的是域名, 而不是url! ⼀个域名可以通过DNS解析成IP地址.
  • ping命令不光能验证网络的连通性, 同时也会统计响应时间和TTL(IP包中的Time To Live, 生存周期).
  • ping命令会先发送⼀个 ICMP Echo Request给对端;
  • 对端接收到之后, 会返回⼀个ICMP Echo Reply

traceroute命令

基于ICMP协议实现, 能够打印出可执行程序主机, ⼀直到目标主机之前经历多少路由器

  

telnet是23端口, ssh是22端口, 那么ping是什么端口?

ping命令基于ICMP, 是在网络层. 而端口号, 是传输层的内容. 在ICMP中根本就不关注端口号这样的信息。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐