首页 > 代码库 > ARP协议-路由交换原理5-【HCNA笔记】

ARP协议-路由交换原理5-【HCNA笔记】

1、ARP报文格式

    ARP协议工作在数据链路层,网络中传输的ARP包示意如下(由于字段较多,这里对连续字段进行换行处理):

帧头Data(ARP包)FCS

ARP包:

Hardware TypeProtocol TypeHardware LengthProtocol LengthOperation Code
16位16位8位
8位16位
Source Hardware AddressSource Protocol Address
48位32位
Destination Hardware AddressDestination Protocol Address
48位32位

Hardware Type:硬件类型,指物理网络的类型,如以太网(值为1)

Protocol Type:协议类型,指网络协议类型,如IP协议(值为0x0806)

Hardware Length:硬件地址长度,指MAC地址长度,通常为6字节

Protocol Length:协议地址长度,指I票地址长度,通常为4字节

Operation Code:操作类型,指明ARP操作类型,ARP请求为1;ARP响应为2;RARP请求为3,RARP响应为4

Source Hardware Address:发送方硬件地址

Source Protocol Address:发送方IP地址

Destination Hardware Address:接收方硬件地址

Destination Protocol Address:接收方IP地址


2、ARP运行过程

    一台设备通过网络向另一台设备发送数据时,进行IP报文和帧封装时必须要填入目标设备的IP地址和MAC地址,而从上层交付的信息中只告知了目标IP地址,MAC地址则需要设备通过ARP协议自行获取。

    当源主机需要向目的主机发送数据时,源主机会先查看自己的ARP缓存表中是否有目标IP地址和MAC地址,若有则直接使用,若没有则通过ARP协议到网络中询问。询问过程是源主机向网络中广播一个ARP请求报文(即Operation Code=1),该报文包含了源IP、源MAC和目的IP。所有接受到该广播的设备均用自己的IP与目的IP进行比对,若不一致则不响应该请求,若一致则向源主机发送一个ARP响应报文(即Operation Code=2),其中就包含了目的主机的MAC地址。这样源主机和目的主机都知道了对方的IP及对应的MAC地址,并更新其ARP缓存表待以后使用。若ARP缓存表中的条目长时间不使用,主机会将该条目删除下次需要时再通过ARP询问,条目的默认缓存时间通常是1200S。需要注意的是ARP请求报文是广播包,也就是说该报文不能穿越路由器,不能转发到其他广播域,只能被主机所在网段内的其他主机收到。


3、ARP代理

    若主机配置了网关(一般是路由器),则发往另一个网段的数据会直接发往网关而不需要通过ARP协议获取MAC地址。若主机没有配置网关,则发往另一个网段的数据会被直接丢弃,ARP协议根本不会起作用。只有当源主机认为目标与自己处于同网段,但实际上目标主机处于另一网段,且他们之间通过一个路由器连接在一起(后面会详细说明这种情况)。因为源主机认为目标与自己处于同网段,所以源主机依旧向网段内广播ARP请求报文,启用了ARP代理的路由器也会收到该报文,路由器先查看目标主机的IP是否在自己的路由表中,若不存在则丢弃该报文,若存在则路由器会向源主机返回一个ARP应答报文,应答报文中目标IP对应的MAC地址是路由器自己的MAC地址。源主机记录该MAC地址后,需要发往目标主机的数据均会发往路由器再由路由器转发。


4、免费ARP

    免费ARP报文中的目的IP就是源主机本身,该报文依旧通过广播的形式发到广播域,其目的在于检测广播域内是否有主机与源主机IP冲突,另外还可以更新广播域内其他主机的ARP缓存表。


【ARP代理奇怪的作用范围】前面讲到ARP代理的产生条件非常有限,首先源主机要认为自己与目的主机位于同网段,但实际又不在同网段,这是怎么回事呢。

    实际上是可能的,这是由于掩码不同导致的问题。前几章中我们讲到过VLSM(可变长子网掩码)技术,也就是说一个IP可以使用不同的掩码来划分网段。那就会产生一种情况,如A:192.168.0.1/255.255.0.0和B:192.168.1.1/255.255.255.0这两个IP,因为掩码的问题导致A认为B与自己是同一网段,但B却认为A与自己不在同一网段,这种情况下的通讯就需要依靠ARP代理了。


【ARP到底工作于那一层】在学习时我们发现OSI模型中将ARP划分到数据链路层,而在TCP/IP模型中又将ARP划分到了网络层,那ARP到底是那一层呢。

    首先OSI模型是一个理论模型,而TCP/IP模型是网络实现后才进行划分的。OSI分为7层,最低层包括物理层、数据链路层、网络层等等。TCP/IP分为4层,包括网络接入层、网际互连层、传输层、应用层。这里误会的产生就在TCP/IP模型中将最低层叫做网络层,实际上它对应的是OSI中的物理层和数据链路层,所以把名字改成接入层大家就不争论了吧。实际上ARP在网络中传输时也并不包含IP头。


【ARP缓存表】ARP缓存表就是个IP-MAC对照表,设备会定期对其进行更新和清理。


【网关】网关实质上是一个网络通向其他网络的IP地址(路由器的IP)。比如有网络A和网络B,网络A的网段为192.168.1.0/255.255.255.0;网络B的网段为192.168.2.0/255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使两个网络连接在同一台交换机上,TCP/IP协议也会根据子网掩码判定两个主机处于不同的网络里。而要实现这两个网络之间的通信则必须通过网关。如果网络A中的主机发现数据包的目的主机不再本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。

ARP协议-路由交换原理5-【HCNA笔记】