【计算机网络】 ARP协议和DNS协议

发布于:2025-06-03 ⋅ 阅读:(30) ⋅ 点赞:(0)

【计算机网络】ARP协议和DNS协议(知识点详细)

一、ARP协议(地址解析协议)
1. 协议功能
  • 核心作用:将IP地址映射为MAC地址(解决“已知IP,求MAC”的问题)。
  • 应用场景
    • 局域网内主机通信(如ping命令前需先通过ARP获取目标MAC)。
    • 路由器转发数据时,需将目标IP解析为下一跳设备的MAC地址。
2. ARP报文结构
字段 长度(字节) 说明
硬件类型 2 标识硬件接口类型(如以太网为1)。
协议类型 2 标识上层协议(如IP为0x0800)。
硬件地址长度 1 MAC地址长度(以太网为6)。
协议地址长度 1 IP地址长度(IPv4为4)。
操作码 2 1=请求,2=响应,3=反向ARP请求,4=反向ARP响应。
发送方MAC 6 发送方硬件地址(源MAC)。
发送方IP 4 发送方协议地址(源IP)。
目标MAC 6 目标硬件地址(初始为全0,响应时填充目标MAC)。
目标IP 4 目标协议地址(待解析的IP)。
3. 工作流程
(1)正向ARP(已知IP,求MAC)
  1. 主机A广播ARP请求

    • 主机A需要向主机B(IP:192.168.1.2)发送数据,先检查本地ARP缓存(arp -a),若没有B的MAC地址,则发送广播ARP请求(目标MAC为FF-FF-FF-FF-FF-FF)。
    • 报文内容:“谁是192.168.1.2?请告诉我的MAC是00-0C-29-XX-XX-XX”。
  2. 主机B单播响应

    • 主机B收到广播后,解析出目标IP是自己,将A的IP-MAC映射存入缓存,并向A发送单播ARP响应,包含自己的MAC地址。
  3. 主机A更新缓存

    • 主机A收到响应后,将B的IP-MAC存入本地ARP缓存(默认有效期几分钟),后续通信直接使用该MAC地址。
(2)免费ARP(Gratuitous ARP)
  • 场景:主机更新MAC地址时(如更换网卡),主动发送ARP响应报文,强制更新局域网内其他主机的ARP缓存。
  • 作用:防止旧MAC地址导致通信失败,或用于检测IP冲突(发送ARP请求后若收到响应,说明IP已被占用)。
4. ARP缓存管理
  • 查看缓存
    # Windows
    arp -a  
    # Linux/macOS
    arp -n 
    
  • 清除缓存
    arp -d 192.168.1.2  # 删除指定IP的缓存
    
5. ARP欺骗与防范
  • 原理:攻击者伪造ARP报文,将目标IP对应的MAC地址指向自己,截获通信数据(如中间人攻击)。
  • 防范措施
    • 静态绑定IP-MAC(arp -s 192.168.1.2 00-0C-29-XX-XX-XX)。
    • 使用ARP防火墙(如360安全卫士的局域网防护)。
    • 启用交换机端口安全功能,限制MAC地址学习数量。
二、DNS协议(域名系统)
1. 协议功能
  • 核心作用:将域名(如www.csdn.net)解析为IP地址(解决“人类可读地址→机器可读地址”的问题)。
  • 应用场景
    • 浏览器访问网站时,需先通过DNS获取服务器IP。
    • 邮件系统通过DNS解析邮件服务器地址(MX记录)。
2. DNS层次结构

在这里插入图片描述

  • 根域名服务器:全球仅13组(A~M),存储顶级域名服务器(TLD)的地址(如.com.cn)。
  • 顶级域名服务器:负责特定顶级域名(如.com)的解析,存储权威域名服务器地址。
  • 权威域名服务器:负责具体域名(如csdn.net)的解析,存储域名对应的IP地址。
3. DNS解析流程
(1)递归解析(客户端→本地DNS服务器)
  1. 客户端发送查询:浏览器向本地DNS服务器(如路由器默认地址192.168.1.1)发送DNS查询报文,请求解析www.csdn.net
  2. 本地DNS服务器递归查询
    • 若本地缓存无结果,本地DNS服务器向根域名服务器发送查询,根服务器返回.net顶级域名服务器地址。
    • 本地DNS服务器再向.net顶级域名服务器查询,得到csdn.net权威服务器地址。
    • 最后向权威服务器查询,得到www.csdn.net的IP地址(如115.236.157.156),并缓存结果。
  3. 返回解析结果:本地DNS服务器将IP返回给客户端。
(2)迭代解析(本地DNS服务器→根→顶级→权威)
  • 递归解析由本地DNS服务器“代劳”,而迭代解析中客户端需依次向根、顶级、权威服务器发送查询(实际中递归+迭代结合使用)。
4. DNS报文结构
字段 长度(字节) 说明
标识 2 唯一标识查询,用于匹配响应报文。
标志 2 包含查询类型(递归/迭代)、响应码(如0=成功,3=域名不存在)。
问题数 2 查询的域名数量(通常为1)。
回答数 2 响应中资源记录数量。
问题字段 可变 包含待解析的域名(如www.csdn.net)和协议类型(IPv4/IPv6)。
资源记录 可变 解析结果(如A记录:域名→IPv4地址,AAAA记录:域名→IPv6地址)。
5. 常见DNS记录类型
记录类型 作用 示例
A 域名→IPv4地址映射 csdn.net A 115.236.157.156
AAAA 域名→IPv6地址映射 csdn.net AAAA 240e:xx:xx:xx::1
MX 邮件交换记录,指定邮件服务器 csdn.net MX 10 mail.csdn.net
CNAME 别名记录,将一个域名指向另一个域名(用于CDN等场景) cdn.csdn.net CNAME www.csdn.net
TXT 文本记录(用于SPF反垃圾邮件、DNSSEC验证等) _spf.csdn.net TXT "v=spf1 ip4:192.168.1.0/24 -all"
6. DNS优化与问题
  • DNS缓存
    • 本地DNS服务器和客户端均会缓存解析结果,减少重复查询(TTL字段控制缓存时间)。
    • 清除本地DNS缓存:
      # Windows
      ipconfig /flushdns  
      # macOS/Linux
      sudo systemd-resolve --flush-caches 
      
  • DNS污染与劫持
    • 攻击者篡改DNS响应,将域名指向恶意IP(如访问www.bank.com被劫持到钓鱼网站)。
    • 解决方案:使用加密DNS(如DoH/DoT)、更换公共DNS服务器(如Google 8.8.8.8、阿里云223.5.5.5)。
  • DNSSEC
    • 基于数字签名的DNS安全扩展,防止DNS欺骗(验证解析结果的真实性)。
三、ARP vs DNS 对比总结
维度 ARP协议 DNS协议
层 次 网络层与数据链路层之间 应用层
协议类型 无传输层协议(直接封装在以太网帧中) 基于UDP/TCP(默认UDP 53端口)
解析目标 IP→MAC地址 域名→IP地址
作用范围 局域网内 全球互联网
报文类型 广播/单播 单播
四、实战工具与抓包分析
  1. ARP抓包

    • 使用Wireshark过滤arp,捕获ARP请求/响应报文,观察MAC地址解析过程。
    • 关键字段:Opcode为1是请求,2是响应;Sender MACTarget MAC字段。
  2. DNS抓包

    • 过滤port 53,观察DNS查询(Query)和响应(Answer)报文。
    • 关键字段:Flags中的QR(0=查询,1=响应)、AA(是否为权威响应);Resource Record中的IP地址。
  3. 命令行工具

    • nslookup:手动查询DNS记录(如nslookup www.csdn.net)。
    • dig:更强大的DNS查询工具(如dig @8.8.8.8 www.csdn.net +trace跟踪解析路径)。
五、总结
  • ARP协议是局域网通信的基础,解决IP到MAC的映射,依赖广播机制和缓存管理,但存在欺骗风险。
  • DNS协议是互联网的“地址簿”,通过分层解析和缓存机制实现高效域名解析,是所有网络应用的前提。
  • 两者分别在“链路层寻址”和“应用层寻址”中扮演核心角色,共同支撑了现代计算机网络的通信基础。

参考资料

  • RFC 826(ARP协议规范)
  • RFC 1034/1035(DNS协议规范)
  • 《TCP/IP详解 卷1:协议》

(本文代码示例和抓包分析可结合实际环境操作,建议使用Wireshark进行实战练习。)


网站公告

今日签到

点亮在社区的每一天
去签到