当前位置: 首页 > news >正文

《TCP/IP详解 卷一》第4章 地址解析协议ARP

目录

4.1 引言

4.2 一个例子

4.3 ARP缓存

4.4 ARP帧格式

4.5 ARP例子

4.6 ARP缓存超时

4.7 代理ARP

4.8 免费ARP和地址冲突检测

4.9 ARP命令

4.10 使用ARP设置嵌入式设备IPv4地址

4.11 与ARP相关攻击

4.12 总结


4.1 引言

地址解析:

        IPv4:ARP(仅用于广播网络)。

        IPv6:NDP邻居发现协议。

NDP有两个报文:

        邻居发现请求报文:NS

        邻居发现应答报文:NA

NDP属于ICMPv6一部分。

PC收到包的目的MAC不是自己则丢弃。

而交换机端口不具有MAC地址。交换机的端口检查收到包目的MAC,而是查找MAC地址表,获得转发端口。

路由查找:

        如果查找到的路由表网关,则继续转发。

        如果查找到的路由表网关为空,说明已抵达终点,不转发。

如果主机发现收到的ARP中请求的IP地址与自己的IP地址不匹配,将丢弃ARP请求。

如过IP地址匹配,则将ARP请求报文的源IP地址和源MAC地址映射添加到本地ARP缓存中。

4.2 一个例子

PPP链路不使用ARP,因为不涉及MAC地址,不需要地址解析。

4.3 ARP缓存

老化时间:默认20分钟。

ARP条目中Flags:

        C(Complete,已完成):表示该ARP条目已完成地址解析过程,存储在ARP缓存中。

        M(Permanent,永久):表示该ARP条目是永久性,通常是手动添加的。

        P(Published,已发布): 表示该条目已被广播到其他设备。

4.4 ARP帧格式

ARP请求:目的以太网地址ff:ff:ff:ff:ff:ff (广播)

硬件类型:值为1,表示以太网。

协议类型:值为0x800,表示IPv4。

硬件大小:值为6,表示地址长度。

协议大小: 值为4,表示协议地址长度。

Op操作有:

        ARP请求 ARP应答

        RARP请求 RARP应答

4.5 ARP例子

4.6 ARP缓存超时

大部分实现中complete ARP条目默认为20分钟,非complete ARP条目默认3分钟。

complete ARP:通过动态学习得到ARP条目。

4.7 代理ARP

如果目标主机位于不同子网时,ARP请求会失败。此时可使用代理ARP。

网关配置代理ARP后:

        网关收到ARP请求后,如果本地ARP缓存有目标主机IP地址映射,会伪装成目标主机响应ARP请求,并将自己MAC地址作为目标主机MAC地址返回给源主机。

        源主机想与目标主机通信时,先将数据发送到网关MAC地址,网关在转发到目标主机。

可隐藏真实主机,也存在安全隐患。ARP代理不常见,尽量避免使用。

使能方法:echo 1 > /proc/sys/net/ipv4/conf/*/proxy_arp

4.8 免费ARP和地址冲突检测

免费ARP:ARP请求寻找自己地址。

使用场景:接口启动时,且被配置为上行。

可知:发送方协议地址和目的协议地址相同。

免费ARP作用:

        1. 检测是否IPv4地址冲突(只能检测,无法解决)

        2. 如果改变硬件地址,发送该帧,使其他主机更新ARP条目。

ACD(Address Conflict Detection,地址冲突检测)

IPv4 ACD类似免费ARP,包括:

        ARP探测报文:与免费ARP区别是,发送发协议地址为0,这样对方不会缓存该ARP。

        ARP通告报文:表明正使用该地址,让对方更新ARP。

IPv6 ACD地址冲突检测步骤:

        地址配置:当IPv6接口启动时,使用SLAAC、DHCPv6等地址配置方式获取IPv6地址。

        地址检查:接口获取到IPv6地址后,它会发送多播Neighbor Solicitation(NS)消息,询问该IPv6地址是否已被其他节点使用。

        地址确认:如果该IPv6地址已被某节点使用,它会发送多播的Neighbor Advertisement(NA)消息作为响应,告知其他节点该IPv6地址已被使用。

        地址处理:如果没有收到其他节点响应,那么该接口可继续使用该IPv6地址。

4.9 ARP命令

显示ARP条目:

        arp -a

        arp -n

添加ARP条目:

        arp -s

删除ARP条目:

        arp -d

4.10 使用ARP设置嵌入式设备IPv4地址

设置IPv4地址方式:

        DHCP

        ARP(不常见):手动设置一个ARP映射,然后向该IP发送分组。 对方收到该IP分组后,设置IP

4.11 与ARP相关攻击

使用代理ARP假扮真实主机,应答。

/proc/sys/net/ipv4/conf/eth0/arp_filter:

        作用:用于控制 ARP 报文过滤,比如:

                若ARP请求接口,与发送应答接口不一致,则应答抑制。

                如果接收的ARP请求目标IP不在本地子网上,不会响应ARP请求。

4.12 总结

http://www.lryc.cn/news/305657.html

相关文章:

  • 如何在pgAdmin中用替换的值更新jsonb列?
  • 冯诺依曼体系结构 计算机组成的金字塔
  • AWS安全组是什么?有什么用?
  • SSM项目集成Spring Security 4.X版本 之 加入DWZ,J-UI框架实现登录和主页菜单显示
  • 【MySQL】如何理解MySQL的锁(图文并茂,一网打尽)
  • 【设计模式】01-装饰器模式Decorator
  • 【Python笔记-设计模式】原型模式
  • 启动node服务报错Error: listen EACCES: permission denied 0.0.0.0:5000
  • onlyoffice api开发
  • 设计模式-工厂方法模式(C++)
  • ThreeJS 几何体顶点position、法向量normal及uv坐标 | UV映射 - 法向量 - 包围盒
  • 基于SpringBoot的家教管理系统
  • 简单mock server模拟用户请求给小程序提供数据
  • 【MATLAB】 EWT信号分解+FFT傅里叶频谱变换组合算法
  • MATLAB中,如何捕获和处理异常?如何在MATLAB中自定义错误消息?在MATLAB中,error函数和warning函数有什么区别?
  • 【算法与数据结构】127、LeetCode单词接龙
  • CAN——创建一个数据库DBC文件
  • (十三)【Jmeter】线程(Threads(Users))之tearDown 线程组
  • MySQL数据库基础(十三):关系型数据库三范式介绍
  • 掌控互联网脉络:深入解析边界网关协议(BGP)的力量与挑战
  • Vue2页面转化为Vue3
  • 【课程作业】提取图中苹果的面积、周长和最小外接矩形的python、matlab和c++代码
  • 解决easyExcel模板填充时转义字符\{xxx\}失效
  • 在项目中使用CancelToken选择性取消Axios请求
  • [c++] 记录一次引用使用不当导致的 bug
  • 能不能节约百分之九十的算力来训练模型
  • LeetCode206: 反转链表.
  • 高级统计方法 第1次作业
  • spinalhdl,vivado,fpga
  • Tomcat线程池原理(下篇:工作原理)