在说ARP协议之前,我们先了解两个概念,一个是IP地址,一个是MAC地址。IP地址用于标示网络中的一台主机,IP地址可以是全球唯一的(当然这个是需要你申请的),也可以是在局域网内唯一的。MAC地址个人认为是用于标示一个网卡,并不和主机绑定,当你的主机换了一个网卡,主机的MAC也就跟着变掉了,而IP地址并不会因为网卡变了而发生改变。作为用户我们是可以修改IP地址的,但网卡的MAC地址是生产厂家烧录进去的,一般我们是无法修改,或者不会去修改的。
这里你可能有个疑问,既然已经有了MAC地址,虽然它用于标示一个网卡,但安装到主机后也可以标示这台主机,那为什么我们还要IP地址呢?个人认为原因可能是:
1、MAC地址是数据链路层地址,而IP是网络层地址,是TCP/IP协议栈中的一个概念。数据链路层我们使用以太网协议,但上面未必一定使用TCP/IP协议。基于分层的概念和各层协议之间的解耦问题,各层都有自己的寻址方式,不应该相互依赖;
2、MAC地址没有明显的地址结构,而且地址配置不灵活(生产厂家定死了),不方便网络管理;
一:为什么需要ARP协议
说了这么多,进入今天的正题 - ARP协议。实现IP地址与MAC地址间的映射关系,确切的讲是根据IP地址获取这个IP地址所在网口的MAC地址。为什么需要这个协议呢?因为当一台主机需要把以太网帧发送到位于同一局域网上的另一台主机时,是根据48bit的以太网接口地址来确定目的网口的,网口驱动程序会检查这个地址,以确定是否接收数据。所以我们只知道对端的IP地址还不行,还必须要获取对端的MAC地址。
二:ARP包的结构
ARP请求和应答报文