无论是同网段还是不同网段通信,想要实现该要求,都需要获得源目MAC地址、源目IP地址,而ARP和RARP正是用来解决这一问题的
ARP
背景
根据前言,我们可以发现要获得源目MAC地址、源目IP地址,下面我们来依次分析
源Mac地址:这里在解封装二层头部的时候,可以获得
目的Mac地址:发现没有办法获得
源IP地址:也是在解封装三层头部的时候,可以获得
目的IP地址:这里就是要通信的地址,难道会不知道吗
于是为了获得目的Mac地址,于是ARP协议诞生
相关名词
ARP:中文名称是地址解析协议,通过Mac来解析获得IP地址
ARP请求报文:广播发送,里面封装自己的MAC地址、源目IP地址,用来获取目的MAC地址
ARP应答报文:单播发送,对应答报文进行回复,携带源目Mac地址,源目IP地址
ARP表项:是IP地址和MAC的一个映射表项,可以通过这个表项通信,老化时间为180S
工作原理
- 首先是查看本地的设备上是否存在ARP映射表项,如果存在,那么就按照这个表项进行转发,如果不存在进行第二步
- 把自己的Mac地址以及源目IP地址封装在ARP请求报文中,广播发送到这个局域网中,如果是跨网段通信,需要使用ARP 代理,这里在类型会详细介绍
- 局域网中的设备发现是自己的Mac地址,那么就会把ARP请求报文接收,同时发送ARP应答报文,里面存在源目Mac地址、源目IP地址
- 收到应答报文后,会在设备形成ARP表项,在没老化之前,可以直接通告表项进行通信
类型
- 免费ARP:这是最为常见的ARP,也是必不可少的,它是起到一个地址冲突检测的作用、宣告一个新的MAC地址;例如DHCP中就是使用它。(特别注意的是在主机会存储,在路由器不会存储。原理我也不清楚,被它坑过)
- ARP proxy:ARP代理,这就是在不同网段下使用的ARP,它的工作原理和同网段的大致相同,唯一不同的就是先把报文发送到网关设备上,后面由网关转发给下行设备
- 这里我就想到了两种比较常用的,印象中应该还有,但是不影响
RARP
RARP是ARP的反向,适用于特定的场景下,在现网中较少用到
背景
会存在这样一种特殊的情况,那就是知道Mac地址,但是不知道IP地址,具体忘记是那种情况了,存在就对了,而这种技术就是为了解决这种情况
相关名词
RARP请求报文:作用和ARP的一样
RARP应答报文:作用和ARP的一样
工作原理
- 发送RARP请求报文,里面包含着自己的Mac地址,向网络中的服务器请求IP地址
- 服务器收到后,会查看RARP表项,如果存在对应的MAC地址,那么就分配IP地址
- 如果不存在,那就是MAC地址出现问题了,因为按理来说是一定会有一个回复的
PS:ARP是最为常用的,而对于RARP来说,这个协议就基本没看过,要不是一个笔试,我都不知道这个东西,而且根据最新资料显示,在RARP上面,还有更新的技术