网络技术-争议层:ARP协议
ARP协议介绍:
Address Resolution Protocol 即 地址解析协议 (实际上ARP协议到底在数据链路层还是在网络层,是有争议的,这里不做过多研究)
网络设备有数据要发送给另外一台网络设备时,不仅仅要知道对方的IP地址(IP地址由网络层提供);还需要知道对方的MAC地址(由物理层定义的MAC地址)。
在进行网络通讯时,我们都依靠IP地址进行通讯,此时就会发现对方的MAC地址我们并不知道,这时候ARP协议诞生了。
ARP协议通过发送广播报文的形式来询问对方的MAC地址,然后建立IP地址与MAC地址对应表 例如:
192.168.0.10 | 0A-00-27-00-00-0D |
192.168.0.20 | 04-92-26-4A-D0-AB |
192.168.0.30 | 00-50-56-C0-00-01 |
ARP工作过程:
主机A在第一次与主机B进行通讯时,主机A只知道主机B的IP地址,但并不知道主机B的MAC地址
此时主机A将发送这样的信息:源IP:主机A、目的IP:主机B;源MAC:主机A、目的MAC:FF-FF-FF-FF-FF-FF
尤其注意目的MAC,全F即代表发给了局域网(或Vlan)内所有的主机
此时主机A发送的广播,主机B能收到,主机C能收到,主机D能收到
主机B在收到后进行解封装,解封到网络层时,发现目的IP地址竟是自己,因此会回包
与此同时:主机C、主机D收到后也进行解封装,解封到网络层时,发现目的IP并不是自己,因此将此包丢弃。
此时主机A知道了主机B的MAC地址后,将此条IP、MAC对应表记录到自己arp表中(主机B也会将主机A的IP、MAC对应表记录在自己的arp表中),方便下次省略ARP 直接进行通讯
以下是抓包中,看到的ARP报文
可以注意:主机A在发送给主机B时,目标MAC地址全是F (也有可能全是0)
查看系统ARP表:
使用arp -a 命令来查看arp表
使用arp -d 清空arp表
ARP欺骗、攻击:
ARP的原理极其简单,回顾一下步骤:
主机A发送个广播请求主机B告知MAC地址 主机B收到信息后,回应了主机A;一切都很正常。
若有这种情况:
主机A发送广播请求主机B告知MAC
但主机B虽然先回复了MAC地址,随后主机C也假装成主机B回应了MAC地址
此时此刻,主机A的arp表会立马被C回复的覆盖掉,这样一来,主机A以后发送目的IP为主机B的信息,信息实际上没有被主机B接收,而是被主机C接收了;这种情况:ARP欺骗就诞生了。
这是在抓包中,看到ARP攻击的包
你会发现,有两台机器是同一个IP,但是MAC地址却不一样,第二个回应者,就是欺骗者。
免费ARP:
免费ARP用于探测自身IP地址是否被其他人使用,用于检测IP冲突
免费ARP原理:
主机A的IP地址是:10.1.1.1
主机A会不定时自己问自己:IP为10.1.1.1的主机,你的MAC地址是什么?
如果没有得到任何回应,则表示IP无冲突
若得到了回应,就说明回应者使用了与主机A相同的IP地址
🌏 记录时间:2023年9月18日 22点07分
🌏 参考资料: https://www.bilibili.com/video/BV1Dg4y187bZ?p=12
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构