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

发布于:2024-02-26 ⋅ 阅读:(66) ⋅ 点赞:(0)

目录

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 总结