网络层协议 --- ARP协议

ARP协议(Address Resolution Protocol,地址解析协议)

1、功能

     当主机通过数据链路发送数据的时候, IP 数据报 会先被封装为一个 数据帧 ,而 MAC 地址 会被添加到数据帧的 报头 (链路层介绍时已讲过)。 ARP 便是在这个过程中通过目标主机的 IP 地址,查询目标主机的 MAC 地址。

2、原理

     电脑和路由器中都有一个 ARP 缓存表 ,其中保存的是近期(20 分钟)与自己有过通信的主机的 IP 地址与 MAC 地址的对应关系。

ARP 缓存表使用过程:

  • 当主机要发送一个 IP 数据报的时候,会首先查询一下自己的 ARP 缓存表;

  • 如果在 ARP 缓存表中找到对应的 MAC 地址,则将 IP 数据报封装为数据帧,把 MAC 地址放在帧首部,发送数据帧;

  • 如果查询的 IP-MAC 值对不存在,那么主机就向网络中广播发送一个 ARP 请求数据帧,ARP 请求中包含待查询 IP 地址;

  • 网络内所有收到 ARP 请求的主机查询自己的 IP 地址,如果发现自己符合条件,就回复一个 ARP 应答数据帧,其中包含自己的 MAC 地址;

  • 收到 ARP 应答后,主机将其 IP - MAC 对应信息存入自己的 ARP 缓存,然后再据此封装 IP 数据报,再发送数据帧。

     可以通过命令 arp -a 查看 ARP 缓存表(表项记录 20 分钟超时),这里还有其它 ARP 命令可以对缓存表做查看、修改:

扫描二维码关注公众号,回复: 13144347 查看本文章
命令 功能 格式
arp -a或arp -g 显示ARP高速缓存中的所有内容 ARP -a[inet_addr] [-N if_addr]
arp -d 用户删除ARP高速缓存中的某一项内容 ARP -d inet_addr [if_addr]
arp -s 向ARP高速缓存中人工输入一个静态项目。该项目在计算机引导过程中将保持有效状态,或者在出现错误时,人工配置的物理地址将自动更新该项目。(这个参数需要主机号和以太网地址,静态的ARP关系) ARP -s inet_addr eth_addr[if_addr]
arp pub -s 使系统起着主机ARP代理功能。系统将回答与主机名对应的IP地址的ARP请求  

3、ARP代理

       如果 ARP 请求是从一个网络上的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该 ARP 请求,这个过程称作 代理 ARP(Proxy ARP)。

       当连接这两个网络的路由器收到该 ARP 请求时,它会发现自己有通向目的主机的路径,随后它会将自己(路由器)的 MAC 地址回复给源主机。源主机会认为路由器的 MAC 地址就是目的主机的 MAC 地址,而对于随后发来的数据帧,路由器会转发到它后面真实 MAC 地址的目的主机。

       两个物理网络之间的路由器可以使这两个网络彼此透明化,在这种情况下,只要路由器设置成一个 ARP 代理,以响应一个网络到另一个网络主机的 ARP 请求,两个物理网络就可以使用相同的网络号。

4、ARP欺骗

       从 ARP 代理的原理可以看出来:IP - MAC 的对应信息很容易被伪造!黑客可以伪造 ARP 应答数据帧而欺骗 ARP 请求者,从而达到截获数据的目的。

猜你喜欢

转载自blog.csdn.net/qq_30123335/article/details/83381375
今日推荐