【计算机网络】DNS/ICMP协议/ping指令

DNS 系统

DNS 系统诞生的背景

TCP/IP 中使用 IP 地址和端口号来确定网络上唯一的一台主机的一个程序. 但是 IP 地址不方便记忆. 于是人们发明了一种叫域名 的东西, 是一个字符串, 并且使用 hosts 文件 来描述域名和 IP 地址的关系。最初, 通过互连网信息中心 (SRI-NIC) 来管理这个 hosts 文件的.如果一个新计算机要接入网络, 或者某个计算机 IP 变更, 都需要到信息中心申请变更 hosts 文件.其他计算机也需要定期下载更新版本的 hosts 文件才能正确上网.这样就太麻烦了, 于是产生了DNS系统: 一个组织的系统管理机构, 维护系统内的每个主机的 IP 和域名的对应关系。至今, 我们的计算机上仍然保留了 hosts 文件(Linux 系统下在 /etc/hosts). 在域名解析的过程中仍然会优先查找 hosts 文件的内容.

域名简介

DNS 是一个**全球分布式数据库,**域名按层级组织,从右向左读(根 → 顶级域 → 二级域 → 子域):

复制代码
www.google.com.
 ↑      ↑     ↑   ↑
子域  二级域 顶级域 根(省略)
层级 示例 说明
根域 .(点) 全球 13 组根服务器(实际上有上百台物理机器),所有 DNS 查询的起点
顶级域(TLD) .com.org.cn.uk 通用 TLD(如 .com)和国家 TLD(如 .cn)
二级域 googlebaidu 域名所有者可自由注册的部分
子域 wwwmail 二级域持有者自行划分

DNS 查询简介

以你在浏览器 url 输入框输入 www.baidu.com 为例:

  1. 用户电脑递归解析器 (通常是 ISP 提供的 DNS 服务器,如 202.96.128.86 或公共 DNS 如 8.8.8.8)发出请求:"www.baidu.com 的 IP 是多少?"

  2. 递归解析器 从根服务器开始查:

    • 问根服务器:www.baidu.com 在哪?

      根不直接回答,但告诉你:去找 .com TLD 服务器,它的地址是 X.X.X.X。

    • .com TLD 服务器:www.baidu.com 在哪?

      .com 告诉你:去找 baidu.com 的权威服务器,它的地址是 Y.Y.Y.Y。

    • baidu.com 权威服务器:www.baidu.com 的 IP 是什么?

      权威服务器给出最终答案:www.baidu.com = 1.2.3.4

  3. 递归解析器把结果 1.2.3.4 返回给用户电脑。

  4. 用户电脑的浏览器用这个 IP 地址访问百度服务器。

ICMP 协议

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

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

ICMP的报文格式 (选学)

字段 长度 说明
类型 1 字节 消息类型(如 8=请求,0=应答,3=不可达,11=超时)
代码 1 字节 同一类型下的细分(如"网络不可达"vs"主机不可达")
校验和 2 字节 覆盖整个 ICMP 报文的校验
数据部分 可变 不同消息类型携带不同内容

ICMP 没有端口号

这是很多初学者容易搞混的点。端口号(如 80、443)是 TCP/UDP 的概念,而 ICMP 位于网络层,不需要端口号 。它通过 类型(Type)代码(Code) 来区分不同的消息。

ping 指令

ICMP和 ping 指令 是网络故障排查中最常用的一对搭档。简单来说:ICMP 是协议,ping 是使用这个协议的工具。ping 本质上就是发送 ICMP Echo 请求(Type=8),并等待 Echo 应答(Type=0)。

ping 输出示例(以 Linux/Windows 为例)

复制代码
$ ping www.baidu.com
PING www.baidu.com (14.215.177.38) 56(84) bytes of data.
64 bytes from 14.215.177.38: icmp_seq=1 ttl=52 time=12.3 ms
64 bytes from 14.215.177.38: icmp_seq=2 ttl=52 time=12.1 ms
64 bytes from 14.215.177.38: icmp_seq=3 ttl=52 time=12.4 ms
^C
--- www.baidu.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 12.1/12.2/12.4/0.1 ms

输出字段含义

字段 含义
icmp_seq 请求序号,用于检查丢包
ttl 生存时间(每跳减1),用于估算经过了多少路由器
time 往返时间(RTT,Round-Trip Time),单位毫秒
0% packet loss 丢包率,0% 表示网络稳定
rtt min/avg/max/mdev 最小/平均/最大/标准差(抖动)
相关推荐
花间相见1 小时前
【全栈开发03】—— curl 常用参数详解与 HTTP 请求实战
网络·网络协议·http
S1998_1997111609•X2 小时前
哈希树函数洪水泛滥污染孪生镜像导致生物量子信息泄露以钩子而爬虫植入ssd探测
爬虫·网络协议·缓存·哈希算法·开闭原则
xlq223222 小时前
52.TcpSocket
linux·服务器·网络
QH139292318802 小时前
罗德与施瓦茨 FSW26 FSW43 FSW50高端信号分析仪
网络·功能测试·单元测试·集成测试·模块测试
白山云北诗2 小时前
零成本/低成本!个人站长DDoS防护实战方案
网络·安全·ddos
jimy12 小时前
Oracle的always free账户,提高网络使用率的保活脚本
服务器·网络·oracle
一渊之隔2 小时前
uniapp蓝牙搜索连接展示蓝牙设备包含信号显示
前端·网络·uni-app·bluetooth
xhbh6662 小时前
Windows网络转发如何配置?netsh命令完整指南
服务器·网络·windows·ip·端口流量转发·路由端口转发·ip隐藏
志栋智能2 小时前
超自动化巡检:敏捷运维体系中的重要一环
运维·服务器·网络·云原生·容器·kubernetes·自动化