网络层地址解析协议ARP

        想了解地址解析协议ARP,首先要知道网络层IP地址和链路层MAC地址的区别。

         IP地址的特点是:IP地址往往固定在某一个区域(和路由器相关),且IP地址具有层次特点,取决于节点所连的那个子网;但是MAC地址可以不受限制的自由移动(和网卡相关),MAC地址是平面结构,网卡可从一个LAN移动到另一个LAN。IP地址并不是一个特定的地址,它仅仅表示这一个特定的网络连接。

        那么地址解析的需求是怎么回事呢?我们知道在链路层,在转发帧的时候是用链路层的MAC地址来解析的,但是链路层并不知道,网卡MAC地址所对应的主机是什么。也就是从链路层向上交给网络层的时候,找不到网络层对应的那个主机的网络层IP地址,也就是说物理网络硬件不知道如何用MAC地址来定位一台计算机。所以用地址解析协议ARP来定义怎样从MAC地址映射到IP地址

        ARP所应用的是动态信息交换法,也就是需要解析地址时通过网络进行消息通信获得IP地址对应的物理地址。如下图所示:

        假设B要给D发送一个数据包。那么ARP协议的步骤是:

        ①首先B广播发送一个ARP请求,这是帧(链路层)的地址,注意地址是全1,因为是广播。

        ②AC收到之后发现问的不是自己的地址,沉默;

        ③D发现是自己的地址,那么单播给B,B就知道了D的Mac地址,B就可以把IP包封装在帧中,帧的地址就是D单播给B的D的Mac地址。

         也就是广播请求,单播回应的过程。D直接就能单播给B自己的地址,这是因为B广播的ARP请求本身就包含了自己的MAC地址和网络层IP地址,D根据这两个地址就可以恢复给B自己链路层MAC地址对应的IP地址了。

         每个主机都有一个ARP的高速缓存表,存放最近的其他主机MAC地址和IP地址的对应关系,避免每次发送之前都需要查询。

        ARP算是一个链路层的协议,封装在帧的有效载荷部分。在每一跳的发送中,MAC地址是变的(MAC地址表明的是下一跳的目标地址,所以自然会随着每一跳而改变)但是正文里面的IP地址是不变的,永远是自己所请求的那个主机的IP地址。从这个角度就不难理解为什么它是链路层的协议了。在每一跳的过程中他都要经过一次封装和解析。解析是路由器看它是从哪里传递过来的,以及它的目标地址是什么,再次封装则把ARP头中的下一跳MAC地址(这时是上个路由器指定的,理论上目前是这个路由器的MAC地址)修改成下一跳地址(这时是这个路由器对应的下一跳地址,是路由器根据路由表确定的),但是不论包怎么封装和解析,里面的IP地址肯定是不变的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值