原文链接:https://www.ahaoaha.top/2019/07/01/以太网数据帧和ARP协议/
以太网数据帧
在以太网环境下,数据链路层的数据帧格式为:
在以太网环境下,需要得知目的主机的mac地址才可以进行数据帧的发送,但是在数据帧从上层向下封装时,并无法得知目的主机的mac地址,所以在数据链路层进行数据帧格式的封装时,需要用到ARP协议。
- 前导码和帧开始符:以太网上的每一个数据帧都会7字节的前导码和1字节的帧开始符作为数据帧的开始,该部分是定值(10101010 10101010 10101010 10101010 10101010 10101010 10101010)
- 帧间距:作为数据帧的结束标识
ARP协议
ARP协议的作用就是在发送方不知道目的主机的mac地址时,通过ARP协议可以获得目的主机的mac地址使得数据链路层完成数据帧的发送。
ARP协议格式:
- 硬件类型:表明发送方硬件接口的类型,以太网为1
- 协议类型:表明发送方提供的高层协议类型,IP协议为0x0800
- 操作类型:用来表示当前报文的动作,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4
当数据报经过IP协议封装之后,就要在数据链路层进行帧打包,从以太网数据帧的结构中可以看出要对数据进行帧打包必须得到数据帧下一站的主机的mac地址。
所以在进行数据帧打包的上层以及IP协议封装的下层会使用ARP协议获得数据帧下一站主机的mac地址。
- 首先根据发送端主机的路由表确定下一站的IP地址
- 发送方主机会在本地ARP缓存中查找对应机器的mac地址,如果找到,则无需进行以下步骤
- 如果在发送方本地缓存中没有找到对应机器的mac地址,或者缓存过期时,发送方主机会进行ARP广播,将发送方主机的IP地址和mac地址都包含在ARP报文中对局域网中所有的主机进行广播(进行广播及就是将目的mac地址设置为FF FF FF FF)
- 局域网中的所以机器在收到ARP报文之后都会对报文中的目的IP地址与自身IP地址进行对比,如果不同则丢弃报文,相同时,目的机器会将发送方的IP和mac地址映射保存在自身机器的ARP缓存中,再将自身的mac地址通过ARP响应返回给发送方
- 发送方将目的机器的IP和mac地址映射保存进本机ARP缓存中,再对数据报文进行帧打包
通过arp -a
可以查看当前机器上所有的ARP缓存。