1.5、ARP协议
1.5、ARP协议
- 前言
- 当网络设备有数据要发送给另一台网络设备时,必须要知道对方的网络层地址(即IP地址)。IP地址由网络层来提供,但是仅有IP地址是不够的,IP数据报文必须封装成帧才能通过数据链路进行发送。数据帧必须要包含目的MAC地址,因此发送端还必须获取到目的MAC地址。通过目的IP地址来获取目的MAC地址的过程是由ARP(Address Resolution Protocol)协议来实现的。
- ARP
- 数据链路层在进行数据封装时,需要目的MAC地址
- ARP数据包格式
- ARP报文不能穿越路由器,不能被转发到其他广播域
- ARP数据包的字段
- Hardware Type
- 硬件地址类型
- Protocol Type
- 协议类型
- Hardware Length
- MAC地址长度
- Protocol Length
- IP地址长度
-
Operation Code
- 指定ARP报文的类型
- Eg
- Request
- reply
- Eg
- 指定ARP报文的类型
- Source Hardware Address
- 源MAC地址
- Source Protocol Address
- 源IP地址
- Hardware Type
- ARP工作过程
- 主机A发送一个数据包给主机C之前,首先要获取主机C的MAC地址
- ARP缓存
- ARP请求
- 不知目的MAC地址时,通过广播地址在广播域中发起请求
- ARP响应
- 主机C收到request报文后,检测该报文中的目的IP地址和主机C的源地址是否一致
- 如果一致,会给主机A回应,并且把该request报文中的源MAC地址加入到缓冲表当中
- 如果不一致,则不回应
- 主机A收到主机C的reply的ARP报文,将收到的MAC地址放到缓冲表当中,方便下次使用
- 如果下次发送给主机C时,缓冲表中主机C的MAC地址已经记录。不用进行请求,可以直接进行封装,发送给主机C即可
- 缓存表有缓存时间,时间大概为20分钟
- ARP代理
- 如果主机A没有配置网关,主机A和主机B就无法相同。如果想在不配置网关的情况下相通,则可以通过ARP代理进行实现
- G0/0/0和G0/0/1接口中开启ARP代理,开启后,路由器就可以接受ARP的广播包,然后获取对方的MAC地址
- 双方主机必须处于同一网段
- 同一网段、不同物理网络上的计算机之间,可以通过ARP代理实现相互通信
- 如果主机A没有配置网关,主机A和主机B就无法相同。如果想在不配置网关的情况下相通,则可以通过ARP代理进行实现
- 免费ARP
- 免费ARP可以用来探测IP地址是否冲突
- 总结
- 网络设备在什么情况下会发送ARP Request?
- 发送数据给目的设备之前,检查自身ARP缓存,查看自身是否存在目的MAC
- 如果不存在,则发送Request报文进行请求
- ARP报文属于网络层
- 网络设备什么时候会产生免费ARP?
- 当一个设备被分配IP地址,或者IP地址变更后,就通过免费ARP来检测IP地址是否冲突
- 网络设备在什么情况下会发送ARP Request?