【计算机网络】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)
二级域 google、baidu 域名所有者可自由注册的部分
子域 www、mail 二级域持有者自行划分

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 最小/平均/最大/标准差(抖动)
相关推荐
ITxiaobing20237 分钟前
AppsFlyer Protect360 判假之后:如何系统排查 IP 维度
网络·网络协议·tcp/ip
byte轻骑兵18 分钟前
【HIDS】规范精讲[2]:一枚 Report 的诞生——HID 服务端特征全解剖
网络协议·人机交互·低功耗蓝牙·蓝牙协议·hogp
艾莉丝努力练剑26 分钟前
【AI大模型接入SDK】ChatServer 路由规则绑定
网络·c++·人工智能·学习·ai·架构
qq_4017004133 分钟前
TCP 长连接、心跳包与断线自动重连设计:工业级通信的“不死鸟”架构
网络·qt·tcp/ip
zincsweet1 小时前
Linux网络编程入门(二):从 UDP 回显服务器到多人聊天室,三个项目的渐进式实践
linux·服务器·网络
艾莉丝努力练剑1 小时前
【AI大模型接入SDK】Trae生成代码介绍
网络·c++·人工智能·学习·架构
Eloudy1 小时前
IB Specification Vol 1 Chapter 3 体系结构与 rdma-core-2410mlnx54 实现关联分析
网络·gpu·rdma
坐看风云变幻1 小时前
《系统架构师成长之路》第 3 期|计算机网络:TCP 三次握手与可靠传输
tcp/ip·计算机网络·系统架构
syagain_zsx1 小时前
BRpc 搭建简单 rpc 服务器
服务器·c++·网络协议·rpc·protobuf·库
Funlang1 小时前
HTTP 服务端,能写业务了
网络·网络协议·http