网络——ARP协议

ARP协议的作用:

ARP:地址解析协议,是一个通过IP地址获取物理地址的协议。它并不是一个单纯的数据链路层协议,而是一个位于网络层与数据链路层之间的协议(一般认为ARP只适用于局域网)

ARP协议建立了主机IP与MAC地址之间的映射

在网络通信时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,数据包首先是被网卡接收到再去处理上层协议,如果接收到数据包的硬件地址个本机不符,则直接丢弃,因此在通信之前必须获得目的主机的硬件地址

IP地址:

  • 32位,四字节,常用点分十进制表示
  • 仅知道主机的IP地址不能让内核发送数据桢给主机

MAC地址:

  • 48位,6字节,用十六进制中间用冒号隔开
  • 网卡出厂时就确定了,不能被修改
  • 用来识别数据链路层中相邻的节点,在硬件层次上,进行数据交换必须有正确的接口地址,内核必须知道目的端的硬件地址才能发送数据

以快递的例子来看,IP地址描述的是卖家到买家的地址,MAC地址是指路途中的每一个区间的起点和中点

在以太网中,一台主机要将数据帧发送到同一局域网内的另一台主机时,必须知道以太网地址才能发送数据。而我们只知道IP地址,这就要使用ARP协议将IP地址映射为以太网地址

ARP协议解析地址的过程:

  • 源主机发送ARP请求,询问“IP地址是172.20.1..2的MAC地址是?”并将这个请求广播到本网段
  • 目的主机接收到广播的ARP请求,发现其中的IP与自己的相符合,则发送一个ARP应答数据包给源主机.将自己的MAC地址填写在应答包中.
  • 每台主机都维护一个ARP缓存表,可以使用arp -a查看,缓存表中的表项有过期时间(一般是20分钟)如果20分钟内没有在使用某个表项,则删除该表项,下次再用时继续使用ARP协议获取

ARP高速缓存

  • ARP有一个缓冲区,用来存储IP地址与MAC地址的映射,即<IP地址,MAC地址>的对应表.表中一个一条目记录了网上一个主机对应的IP地址和MAC地址.
  • 每个以太网或令牌环网适配器都有一个自己独立的表
  • 当ARP协议被询问一个已知IP地址的MAC地址时,先从其缓冲区中找,如果有,直接返回其MAC地址,如果没有,则发送ARP请求广播获取地址

ARP缓存表项的生存时间

  • ARP缓存包括静态项目和动态项目
  • 静态ARP项目时永久存在的,要通过TCP/IP工具手动的添加或删除
  • 动态ARP的项目时随时间添加或删除的,一般都有一个生存时间TTL,其TTL为0时,则删除该表项.

为什么要有缓存表?为什么表项要有过期时间而不是一直有效

  • ARP缓存可以减小广播量,当主机发送一个ARP请求时,先查看ARP缓存中是否存在对应的IP地址表项,若存在之间返回其MAC地址,否则才发起广播.这就减小了网络通信量,从而提高了计算机之间的通信效率
  • 本主机一直要和网络上不同的目的主机进行通信,如果一直不过其将会积累大量的表项,而且有些表项用过一次后可能再也不会用到,一直不删除的话,会浪费大量的资源 

ARP报文格式

  • 以太网目的地址:ARP请求的目的以太网地址,全1时代表广播地址
  • 以太网源地址:发送ARP请求的以太网地址
  • 以太网帧类型:ARP请求或ARP应答,值为0x0806
  • 硬件类型指:链路层网络类型,1为以太网
  • 协议类型指:要转换的地址类型,0x0800为IP地址
  • 硬件地址长度为:MAC地址6字节
  • 协议地址长度为:IP地址4字节
  • op字段:值为1,表示ARP请求,值为2 ,表示ARP应答

猜你喜欢

转载自blog.csdn.net/audience_fzn/article/details/81259704