1. 网络层

1.1. ARP协议

1.1.1. 前言

「网工小白必备」全网最详细的网络基础之ARP协议_java「网工小白必备」全网最详细的网络基础之ARP协议_java_02

1.1.2. ARP的基本概念

Address Resolution Protocol,地址解析协议

通过对方的IP地址去解析对方的MAC地址

1.1.3. ARP的报文

ARP报文格式


「网工小白必备」全网最详细的网络基础之ARP协议_java_03

硬件类型:标识硬件地址的类型,值为1表示以太网地址

协议类型:表示要映射的协议地址类相关。0x0080表示IP地址类型

硬件地址长度和协议地址长度,对于以太网上的IP地址的ARP请求或应答来说,他们的值分别为6和4

操作类型(op):1表示ARP请求,2表示ARP应答,3表示RARP请求,4表示进行RARP应答

发送方的硬件地址:发送方设备的硬件地址

发送方的协议地址:发送方设备IP地址

目标硬件地址:接收方设备硬件地址

目标协议地址:接收方设备IP地址

ARP请求报文

「网工小白必备」全网最详细的网络基础之ARP协议_java_04

ARP应答报文

「网工小白必备」全网最详细的网络基础之ARP协议_java_05

1.1.4. ARP的工作过程

假设主机A和C在同一个网段,主机A要向主机C发送信息,具体的地址解析过程如下:

主机A首先查看自己的ARP表,确定其中是否包含有主机C对应的ARP表项。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机C

如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机C的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机C)会对该请求进行处理

主机C比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址

主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去

「网工小白必备」全网最详细的网络基础之ARP协议_java_06


「网工小白必备」全网最详细的网络基础之ARP协议_java_07


「网工小白必备」全网最详细的网络基础之ARP协议_java_08


1.1.5. ARP表

设备通过ARP解析到目的MAC地址后,将会在自己的ARP表中增加IP地址到MAC地址的映射表项,以用户后续到同一目的地报文的转发

「网工小白必备」全网最详细的网络基础之ARP协议_java_09


「网工小白必备」全网最详细的网络基础之ARP协议_java_10


当然我还有很多整理好的资料文档和视频文件,【点这里】 获得更多资料文档 往期教学视频,主要也是想给新手小白少走点弯路。


动态ARP表

动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的报文更新,可以被静态ARP表项覆盖。

当到达老化时间、接口down时会删除相应的动态ARP表项

静态ARP表

静态ARP表项通过手工配置和维护,不会被老化,不会被动态ARP表覆盖

配置静态ARP表项可以增加通信的安全性。静态ARP表项可以限制和指定IP地址的设备通信时只使用指定的MAC地址,此时攻击报文无法修改此表项的IP地址和MAC地址的映射关系,从而保护了本设备和指定设备之间的正常通信

ARP表的更新和老化

ARP表的更新条件

在实际环境中,只有同时满足两个条件时,设备的ARP表项才会更新

1. 设备收到来自某IP的ARP请求包或免费ARP包

2. 设备的现有ARP表项中已经存在该IP对应的ARP表项

ARP表的老化时间

不同的系统对ARP表项的老化时间设定不太一样,在Windows2000/xp环境中,ARP表项的老化时间是2分钟;大部分Cisco交换机中,该值为5分钟,华为的设备一般是20分钟。

ARP表老化时间定时器

满足以下任一条件时,设备的ARP表项的老化时间定时器会充值

1. 设备响应的ARP表项更新时

2. 设备调用ARP表项转发数据后

1.1.6. 免费ARP

免费ARP的概念

免费ARP指主机发送ARP查找自己的IP地址,通常发生在系统引导期间进行接口配置时,与标准ARP的区别就是免费ARP将目的IP地址封装为自己的IP地址,即向网络中请求自己的MAC地址

免费ARP的作用

检测地址冲突

正常情况下发送免费ARP请求不会收到ARP应答,如果收到一个ARP应答,则说明网络中存在与本机相同的IP地址的主机,发生了地址冲突

更新其他主机高速缓存中旧的硬件地址

如果发送免费ARP的主机正好改变了硬件地址,如更换了接口卡

其他主机接收到这个ARP请求的时候,发现自己的ARP高速缓存表中存在对应的IP地址,但是MAC地址不匹配,那么就需要利用接收到的ARP请求来更新本地的ARP高速缓存表项

网关利用免费ARP防止ARP攻击

有些网关设备在一定的时间间隔内向网络主动发送免费的ARP报文,让网络内的其他主机更新ARP表项中的网关MAC地址信息,以达到防止或缓解ARP攻击的效果

利用免费ARP进行ARP攻击

ARP协议并不只在发送了ARP请求才接收ARP应答,计算机只要收到ARP应答数据包,就会使用应答包中的IP和MAC地址对本地的ARP缓存进行更新

主机可以虚构免费ARP应答,将ARP的源MAC设置为错误的MAC地址,并把这个虚假的免费ARP应答发送到网络中,那么所有接收到这个免费ARP应答的主机都会更新本地ARP表项中相应IP地址对应的MAC地址

更新成功后,这些主机的数据报文就会被转发到错误的MAC地址,从而实现了ARP欺骗

「网工小白必备」全网最详细的网络基础之ARP协议_java_11

1.1.7. 代理ARP

代理ARP的概念

代理ARP(Proxy)就是通过使用一个主机(通常为Router),来作为指定的设备使用自己的MAC地址来对另一台设备的ARP请求作出应答

通俗来说就是由中间设备来代替其他主机响应arp请求


「网工小白必备」全网最详细的网络基础之ARP协议_java_12

为什么需要代理ARP

先要了解,路由器的重要功能之一就是把局域网的广播报限制在该网段内,阻止其扩散,否则会造成广播风暴

ARP请求是广播报,他询问的对象如果在同一个局域网内,就会收到ARP应答。如果询问对象不在一个局域网内如何处理?路由器就提供了代理ARP为这个问题提供了解决方案

代理ARP的工作机制

「网工小白必备」全网最详细的网络基础之ARP协议_java_13

两台主机A和B处于同一网段但不同的广播段(不在同一物理网络)时,主机A发送ARP请求主机B的MAC地址时,因为路由器不转发广播报的原因,ARP请求只能达到路由器。

如果路由器使用了ARP代理功能,并知道主机B属于它连接的网络,那么路由器就用自己接口MAC地址代替主机B的MAC地址来对主机A进行ARP应答。主机A接收ARP应答,但并不知道代理ARP的存在

代理ARP的优缺点

优点

代理ARP能在不影响路由表的情况下添加一个新的Router,使子网对该主机变得透明化。

一般代理ARP应该使用在主机没有配置默认网关或没有任何路由策略得网络上

缺点

从工作过程可以看到,这其实是一种ARP欺骗

通过两个物理网络之间的路由器的代理ARP功能其实互相隐藏了物理网络,这导致无法对网络拓扑进行网络概括

代理ARP增加了使用它的那段网段的ARP流量,主机需要更大的ARP缓存空间,也不会为不使用ARP进行地址解析的网络工作

1.1.8. ARP攻击

ARP攻击的原理

ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的进行。基于ARP协议的这一工作特性,黑客向对方计算机不断发送有欺诈性质的ARP数据包,数据包内包含有与当前设备重复的Mac地址,使对方在回应报文时,由于简单的地址重复错误而导致不能进行正常的网络通信


受到ARP攻击产生的现象

不断弹出“本机的XXX段硬件地址与网络中的XXX段地址冲突”的对话框。

计算机不能正常上网,出现网络中断的症状

注:因为这种攻击是利用ARP请求报文进行“欺骗”的,所以防火墙会误以为是正常的请求数据包,不予拦截。因此普通的防火墙很难抵挡这种攻击

当然我还有很多整理好的资料文档和视频文件,【点这里】 获得更多资料文档 往期教学视频,主要也是想给新手小白少走点弯路。