ARP协议

0. 前言

主机A将数据跨网络交给主机B,首先是要将数据交给下一跳路由器,最后到达入口路由器,入口路由器要通过内网转发发给主机B,此时就要把数据封装成mac帧,这就要知道该主机的mac地址,所以就需要将IP地址再转换成mac地址,这就需要ARP协议。

1. ARP原理

当数据跨网络发送到入口路由器之后,路由器在局域网广播“谁的IP是xxx.xxx.x.x啊,请把你的mac地址告诉我”,然后IP地址为xxx.xxx.x.x的主机收到之后,就一对一将自己的mac地址发送了出去

2. ARP报头

image-20240328104957155

ARP协议属于MAC帧上层,但是归属到数据链路层层

  • **硬件类型:**一般都是网络类型,1代表以太网
  • **协议类型:**转化的地址,0800表示将IP转化为mac地址
  • **硬件地址长度:**以太网长度为6byte
  • **协议地址长度:**IP地址为4byte
  • **操作:**如果是1,表示arp请求;如果是2,表示arp应答
  • **以太网发送端地址:**发起arp请求的以太网地址
  • **发送端IP地址:**发起者的IP地址
  • **目的以太网地址:**这个目的并不清楚,需要收到应答之后才知道,填成全f
  • **目的IP地址:**目标主机的IP

3. 模拟ARP过程

image-20240328113528704

发起arp请求的时候,并不知道目的以太网地址,所以全f。

当arp请求构建完毕之后,交给mac帧封装,此时也不知道目的以太网地址,全f表示广播,0806表示arp请求/应答。

发送到局域网当中时,其他主机首先看的是请求还是应答,然后再对比IP,如果不是则直接丢弃;如果是,则要构建mac帧应答,此时源地址和目的地址都知道,所以可以表明发送的目标。

应答发送到局域网当中时,也是先看op是请求还是应答,只有曾经发起过请求的主机,才知道这个应答是自己的,然后提取发送端的IP地址和mac地址。其他主机没有发送过请求,所以在数据链路层就直接丢弃了。

所以在ARP过程当中,收到的任何报文,都是先看OP字段

OP字段决定是请求和应答,请求看的是目的mac和目的IP,应答看的是发送端mac和发送端IP

4. ARP相关问题

  1. arp并不是每次都需要做的,因为arp会进行缓存(时间有限制,过一段时间就清空)

image-20240328124206973

  1. 如果想要拿到同一网段所以主机的IP和mac,可以通过IP&子网掩码得到网络号,然后直接ping所以的主机

  2. 如果收到多次arp应答,会以最新的为主

在局域网中,路由器的IP地址一般都是比较确定的,如果有一个C主机冒充路由器IP地址,向另一台A主机发送大量的arp应答,那么此时A主机就会更新映射关系。

此时这A主机发送的以太网请求,就全部到C主机这里来了,如果C主机将报文直接丢弃,就相当于定性让A主机断网,这叫ARP欺骗;如果不丢弃,将报文发给路由器,路由器就以为是C主机要发起请求,将报文当中的源IP和源mac,替换成了C主机的,这个请求的应答就会发给C主机,此时路由器和A主机都不知道,C就成了中间人机器

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

加法器+

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值