Linux 学习笔记(五十二):网络探路者——DNS 域名解析与 ICMP 诊断协议
核心结论TL;DRDNS将域名翻译为 IP。解析顺序浏览器缓存 - hosts 文件 - 本地 DNS - 根服务器 - 顶级域 - 权威域。ICMP网络层协议用于报告差错和网络探测ping、traceroute。面试大坑ping命令没有端口它直接工作在 IP 层基于 ICMP 协议。traceroute利用 IP 报文中TTL生存时间递减机制配合 ICMP 超时报文实现路径追踪。一、 DNS 域名解析系统在浏览器输入网址后系统需要获取对应的 IP 地址。解析过程是一个逐级问路的过程先查本地缓存浏览器缓存、系统 hosts 文件。请求本地 DNS 服务器运营商提供。本地 DNS 若没有缓存则向根域名服务器发起请求。根服务器指引去找顶级域名服务器如.com顶级域再指引去找权威域名服务器如baidu.com最终返回 IP 地址。二、 ICMP 协议网络层的哨兵IP 协议只负责尽力而为地发送丢包了也不知道。ICMPInternet Control Message Protocol是为了辅助 IP 而生的主要用来传递差错报文和探测网络状态。三、 面试避坑ping 的端口是什么ping命令常常被误认为有端口号。实际上ping工作在网络层直接封装在 IP 报文里用的是ICMP 协议。而端口是传输层TCP/UDP的概念。所以ping 根本没有端口四、 实战网络排查命令# 查看详细 DNS 解析结果 dig www.baidu.com # 追踪网络路由路径 traceroute -n baidu.comdig可以看到域名的 CNAME 别名和最终的 A 记录IP。traceroute利用 TTL 机制每次把 TTL 设为 1、2、3…… 故意让路由器超时并返回 ICMP 报文从而清晰画出数据包从你机器到目标主机所经过的“地图”。这对于排查网络在哪一跳卡住非常有用。自我实战操作cd ~/linux_study/network_test实战 1使用dig追踪 DNS 解析bash# 安装 dig 工具 sudo apt install dnsutils -y # 查询百度域名的解析详情 dig www.baidu.com看点找到ANSWER SECTION你会看到www.baidu.com可能先解析成了一个别名CNAME最终解析成了两个真实的 IP 地址。这比ping给出的信息详细得多。实战 2使用traceroute追踪网络路径# 安装 traceroute sudo apt install traceroute -y # 追踪到百度的路由-n 表示不解析域名只看IP traceroute -n baidu.com看点屏幕上会一行行跳出 1、2、3…… 代表数据包经过的每一个路由器 IP。如果某行是* * *说明那个路由器为了安全关闭了 ICMP 响应。