ARP协议(Address Resolution Protocol)地址解析协议
ARP协议广播请求不能出路由器
已知对方的IP地址,解析对方的MAC地址。(学习别人的IP和别人的目标MAC地址)
广播请求不能出局域网,所以ARP协议只能存在于内网,不能通过路由器
ARP缓存表可以通过学习ARP应答或广播报文来形成,无需任何身份验证! (只要你给我回,我就学)
ARP缓存表可以通过学习接受到的ARP广播报文及ARP单播报文来形成。
ARP缓存表以最后学习到的为准,并更新缓存表。
目的:终止通信,断网。
方法:通过发送虚假的ARP广播或ARP单播报文,其中虚假的MAC地址是不存在的!
目的:监听、窃取数据、控制数据。
方法:通过发送虚假的ARP广播或ARP单播报文,其中虚假的MAC地址是攻击者的MAC地址。
ARP欺骗(又称 中间人攻击)可以正常上网通信,会造成信息泄露
(一问一答:广播问一下,单播回一下)
发送ARP广播请求报文,询问MAC地址。目标MAC地址为12个F代表是广播MAC地址
接收ARP单播应答报文
第一次通信时,有对方IP地址但是没有目标MAC地址,该PC就会在网络层启动ARP协议生成一个ARP报文“我叫1.1,我的MAC是AA;谁是1.3,你的MAC是多少?”,该PC把报文广播出去,到交换机加上帧头帧尾。帧头的目标MAC是12个F进行广播,报文变为广播请求报文。交换机看到12个F就进行广播,所有人都收到。被广播接收方拿下帧头帧尾再查看3级ARP报文,看问的是谁,其他PC和网关发现找的不是自己就丢弃不给回应。
正确接收方接收到发现问的就是自己,就会给个回应,把自己的MAC地址写进去。因为知道是谁问的,所以此时回应不需要广播,这叫ARP单播应答。 PC收到单播应答后,就获取到对方MAC地址。并在自己电脑上生成ARP缓存表,该缓存表内就是别人的IP和别人的MAC地址。
如果路由器发现找的不是自己,不会再继续转发继续广播。交换机控制不了广播,路由器是天然控制二层广播的设备。广播到路由器永远出不去。
若想找和自己不在一个网段的用户,目标IP与自己不在同一个网段,就先找网关。广播报文就是“我是1.1,我的MAC地址是AA;谁是1.254,你的MAC地址是多少”,同理便获得网关的ARP缓存表。路由器专门根据目标IP进行路由
通过获取网关MAC地址,把信息成功地送到网关。再由网关把信息路由出去。
当PC与其他主机通信时,首先判断与自己是否在同一网段
若在同一网段,则发送ARP广播寻求目标IP地址的MAC地址
若不在同一网段,则发送ARP广播寻求网关的MAC地址(前提是给PC配了网关)。(想要上网,直接找网关的目标MAC地址)
只有本网段的IP和MAC地址的对应关系。
和外网通信有网关IP和网关MAC地址对应关系。不会出现其他的网段。
对一台PC来说,其ARP缓存表中不可能出现其他网段的IP。要访问外网则交给网关
ARP缓存,学习完60秒就消失了。
局域网中有多少个PC上网,每个路由器就有多少个ARP缓存表。
查看PC上的ARP缓存表: arp -a 清空ARP缓存表: arp -d
3层接口可以配IP的情况下,也有一个MAC地址。交换机不能配IP,也没有MAC地址。
MAC地址仅限于PC和路由
①一个帧到达路由器后,首先检查帧中目标MAC地址是否是本接口的MAC,如不是则丢弃,如是则解封装并将IP包移动到路由器内部。
②将IP包中目标IP与路由表进行匹配,如匹配路由表不成功,则丢弃,返回ICMP错误消息;若成功,则将数据路由到相应的出口,再封装帧头帧尾
③检查ARP缓存中是否有下一跳的MAC,如有则重新封装出去;如没有,则发送ARP请求广播报文获取下一跳的MAC,并记录到ARP缓存表中,再重新封装数据帧发送出去。
封装的帧头,源MAC地址为自己接口的地址
在路由器只有路由的功能情况下:
一个帧经过路由器时,帧头帧尾会变,TTL会变,数据帧的源IP不会变
一台PC的ARP缓存表不会记录自己的MAC地址
ARP攻击和ARP欺骗可能要用到的:
开启Telnet服务(电脑右键–>管理–>服务–>Telnet)
查看开启的端口:netstat -an