Introduction to Computer Networking学习笔记(五):ARP协议(Address Resolution Protocol)

ARP协议是什么:

在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。而在TCP/IP协议中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,链路层接收到上层即网络层提供的数据中,只包含目的主机的IP地址。ARP要做的就是根据网络层地址(IP地址)来找寻链路层地址(MAC地址)。

两台设备通信示意图:

对上图中的过程进行简单解释:当设备A想给设备B发送数据时,以HTTP的GET请求为例,应用层将GET请求封装发送给传输层,传输层添加TCP包头后发送给网络层,网络层添加IP包头后发送给链路层,链路层通过子网掩码获知设备B与自己不在同一个network下,需要穿过网关与B通信。那么此时链路层添加链路层包头,链路层包头的destination IP为网关左侧网卡IP即192.168.0.1,destination MAC地址为网关左侧网卡地址即0:18:e7:f3:ce:1a。到达网关右侧时,链路层包头改变,destination IP改为设备B的IP,destination MAC地址为B的MAC地址。

以上过程清晰明了,但是存在一个问题:设备A知道自身IP及MAC地址,知道网关IP,但是如何获知网关左侧网卡的MAC地址。这就是ARP要做的事情。

ARP实现过程:

以下图为例:当client需要它所在network内某一IP对应设备的MAC地址时,首先查看自己缓存的IP、MAC映射表,如果能够查询到,则直接发送到对应MAC地址,如果查询不到,则在整个network上发送广播,广播内容包含自己的IP、MAC地址以及目标IP地址,network内所有设备都会收听到广播,所有收到广播的设备都会更新自己的缓存中设备A的IP、MAC地址,同时,发现广播中目的IP与自身IP一致的设备(该例中为网关)会回复发送广播的设备A自及的MAC地址,设备A获知并更新缓存的网关IP及MAC地址。每台设备的缓存都有有效期,超过有效期将会清除缓存。

一条ARP packet内容(如下图):其中Hardware标明packet发送者链路类型,Protocol标明packet发送者网络协议类型,length标明MAC及IP地址长度,Opcode标明该packet是请求还是回复,下面则是自身IP、MAC地址及目标IP、MAC地址。所有内容以大端顺序存储。

一条请求广播示例:

一条回复示例:

ARP的优点:

要创建自身除外某台设备的IP、MAC映射的唯一方式是收到这台设备的广播或者回复,所以如果某台设备损坏或者退出了这个network群,当过一段时间network内所有设备的缓存过期(几十分钟到几小时)之后,这台设备将在这个network群中消失。这样可以更轻松的debug和寻找问题。

特别注意:

在最初的协议中,回复是单播,但是现在广播也很常见,这样可以更方便的让所有其他设备更新缓存的映射表,并且network中会有很多无端的ARP请求广播,请求不存在的映射,这样也可以方便地让其他所有设备更新映射表。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值