ARP协议及其工作原理

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地址来进行数据传输呢?  

原文地址:https://www.cnblogs.com/sunnydaybyday/p/15616586.html