浅谈
ARP 协议
-
ARP概述
ARP 是地址解析协议(Address Resolution Protocol)的缩写,其基本功能为通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,
ARP 是TCP/IP协议栈中一个 最不安全的协议 ,但是TCP/IP协议又离不开它,它有以下几个特点:- ARP协议的报文是不能穿越路由器,不能被转发到其它广播域
- ARP整个完整交互过程仅需要两个包,一问一答即可搞定!
- ARP协议,是用于实现从 IP 地址到 MAC地址的映射,即询问目标IP对应的MAC地址。
- 在网络通信中,仅有IP地址是不够的,因为IP数据报文必须封装成帧才能通过数据链路层进行发送,而数据帧必须要包含目的MAC地址,因此发送端还必须获取到目的MAC地址。每一个网络设备在数据封装前都需要获取下一跳的MAC地址。IP地址由网络层来提供,MAC地址通过ARP协议来获取。ARP协议是TCP/IP协议簇中的重要组成部分,ARP能够通过目的IP地址发现目标设备的MAC地址,从而实现数据链路层的可达性
- 上层应用程序关心的是IP地址,而不关系MAC地址,所以需要ARP协议来获知目的地主机的MAC地址完成数据封装
-
ARP报文格式
-
ARP工作原理简图
上图就是ARP协议的简单运行原理,通过 一问一答 的方式获取了目标的MAC地址,然后储存在本地的 ARP缓存表 ,后续需要直接先去缓存表里面找。
arp -n #查看ARP缓存表
Address HWtype HWaddress Flags Mask Iface
192.168.39.254 ether 00:50:56:e1:42:8a C eth0
192.168.39.1 ether 00:50:56:f3:f7:31 C eth0
192.168.39.100 ether 00:50:56:c0:00:08 C eth0
既然是"缓存"表,意味着它有时效性,并且如果电脑或者通信设备重启的话,这张表就会清空;也就是说,如果下次需要通信,又需要进行ARP请求.
- ARP原理之广播请求单播回应
上面的工作原理图,是在一个局域网里面就两台主机之间的通讯,所以这个 一问一答 很顺畅,但是实际生活中,一个网段里面不可能只有两台机器,存在上百上千台机器,那么他们的通讯是个什么情况呢
- 来分析下这张模拟图的运行原理
- PC1 发出需要跟 PC2 的请求通讯广播
- PC2 PC3 PC4 都收到了广播
- PC3 PC4 收到广播后发现不是问自己,所以把包丢弃
- PC2 收到广播后,根据报文所含信息(里面有 自己的IP地址 ),判断是给自己,所以不会做丢弃动作,而是返回一个 ARP回应包,并且把 PC1 的MAC地址 储存在自己的ARP缓存表里。
- PC1 收到后确认PC2的位置,并把PC2的MAC地址 储存在 ARP缓存表 里面
注意:PC2的返回ARP回应包并没有通过广播来实现,而是单播回应
- 来分析下这张模拟图的运行原理
ARP协议通过"一问一答"实现交互,但是"问"和"答"都有讲究,"问"是通过广播形式实现,"答"是通过单播形式。
免费ARP用来探测IP地址石头冲突
当网络上的一个设备被分配了IP地址或者IP地址发生变化后,可以通过免费ARP来检查IP地址是否冲突,采取的方式 是 自问自答。
主机被分配了IP地址或者IP地址发生变化后,必须立刻检测其所分配的IP地址在网络上是否是唯一的,以避免地址冲突。主机通过发送ARP request报文来进行地址冲突检测。
主机A将ARP request广播报文中的目的IP地址字段设置为自己的IP地址,该网络中所有主机包括网关都会接收到此报文。当目的IP地址已经被某一个主机或网关使用时,该主机或网关就会回应ARP reply报文。通过这种方式,主机A就能探测到IP地址冲突了。