ARP 协议 ,即Address Resolution Protocal,地址解析协议. 它是通过主机IP查找对应的mac地址. 这么说不太严谨,应该是以目标IP地址为线索, 定位下一个应该接收数据《分包》的网络设备对应的MAC地址. 如果目标主机不在同一个链路上,可以通过ARP查找下一跳路由器的MAC地址. 不过ARP只适用于IPv4,不适用于IPv6 .
mac 地址属于数据链路层. 我们先来看下数据链路层.
一 .数据链路层
数据链路层的协议定义了通过媒介互连的设备之间传输的规范. 通信媒介包括双绞线电缆,同轴电缆,光纤,电波以及红外线等介质.
实际上,各个设备之间在数据传输时,数据链路层都是必不可少的. 众所周知, 计算机以二进制 0,1 来表示信息,然而实际的通信媒介之间处理的是电压的高低,光的闪灭,以及电波的强弱等信号.
把这些信号与二进制的0,1进行转换的正是物理层.
数据链路层处理的数据也不是单纯的0,1序列,该层把它们集合为一个叫做“帧”块, 然后再进行传输.
数据链路层也可以被视为网络传输中的最小单位.
二. 数据链路相关技术
2.1 MAC地址
MAC地址是用于识别数据链路层中互连的节点. MAC地址长48比特. 在使用网卡(NIC)的情况下,MAC地址一般会被烧写到ROM中. 因此,一个网卡到MAC地址是唯一的.
2.2 PPP定义
指的是Point-to-Point Protocol, 是指点对点,即1对1连接的计算机协议. 相当于位于OSI参考模型的第2层的数据链路层,并且它属于纯粹的数据链路层,与物理层没有任何关系.
换句话说, 仅有PPP无法实现通信,还要有物理层的支持. PPPoE(PPP over Ehernet)实现互联网的接入就是在以太网的数据中加入PPP帧进行传输的一种方式.
三. ARP的工作机制
简单的说, ARP是借助 ARP请求和ARP响应两种类型的包来确定 MAC地址的.
主机A为了知道主机B的mac地址, 要通过《广播》发送一个ARP请求包. 这个包中 包含了主机B的IP地址, 还有主机A自己的MAC地址. 同一个链路上所有的主机或者路由器都会接收到
主机A的广播包. 因此ARP的请求包会被这同一个链路上的主机和路由器进行解析. 如果ARP请求包中的目标IP地址与自己的IP地址一致,那么这个节点就将自己的MAC地址塞入ARP响应包
返回给主机A.
也就是说,根据ARP可以动态的进行地址解析,无须事先知道MAC地址,只要有IP地址即可. 但是如果每次发送一个IP数据包都要进行一次ARP请求,会造成不必要的网络流量. 因此
通常的做法是把获取到的MAC地址缓存一段时间,并与对应的IP做映射关系记忆.
记录IP地址和MAC地址对应关系的数据库叫做ARP表, 可以通过在命令行中输入arp -a 命令获取该表信息.
每执行一次ARP,之前缓存的对应内容都会被清除. 在清除之前都可以不需要执行ARP就可以获取到想要的MAC地址. 这样,在一定程度上也防止了ARP包在网络上被大量广播的可能性.
疑问? 知道目标主机IP地址 ,为什么还要知道对方的mac地址来进行数据传输呢?