ARP协议

一.概述

  1. ARP ( Address Resolution Protocol )即地址解析协议,用于实现从IP地址到MAC地址的映射,即询问目标IP对应的MAC地址
  2. 在网络通信中,主机和主机通信的数据包需要依据OSI模型从上到下进行数据封装,当数据封装完整后,再向外发出。所以在局域网的通信中,不仅需要源目IP地址的封装,也需要源目MAC的封装。
  3. 一般情况下,上层应用程序更多关心IP地址而不关心MAC地址,所以需要通过ARP协议来获知目的主机的MAC地址,完成数据封装。

二.原理

根据OSI数据封装顺序,发送方会自顶向下(从应用层到物理层)封装数据,以PC1 ping PC2 为例
ARP1PC1封装数据并且对外发送数据时,数据封装失败。因为我们给PC1指令ping ip2,这就告知了目的IP,此时PC1便有了通信需要的源目IP地址,但是PC1仍然没有通信需要的目的MAC地址。这就好比我们要寄一个快递,如果在快递单上仅仅写了收件人的姓名(IP),却没有写收件人的地址( MAC),那么这个快递就没法寄出,因为信息不完整。这时就需要用到ARP协议了。
ARP2

通过第三和第四步骤,我们看到PC1和PC2进行了一次ARP请求和回复过程,通过这个交互工程,PC1具备了PC2的MAC地址信息。接下来PC1会怎么做呢?在真正进行通信之前,PC1还会将PC2的MAC信息放入本地的【ARP缓存表】,表里面放置了IP和MAC地址的映射信息,例如IP2<->MAC2。接下来,PC1再次进行数据封装,正式进入PING通信,如下:

ARP3
小结:经过上面6个步骤的处理,PC1终于把数据包发送出去了,之后便可以进行正常的通信了。看到了吧,ARP的功能和实现过程是如此的简单︰它在发送方需要目标MAC地址的时及时出手,通过"一问一答"的方式获取到特定IP对应的MAC地址,然后存储到本地【ARP缓存表】后续需要的话,就到这里查找。既然是"缓存"表,意味着它有时效性,并且如果电脑或者通信设备重启的话,这张表就会清空;也就是说,如果下次需要通信,又需要进行ARP请求。在我们的windows/macos系统下,可以通过命令行"arp -a"查看具体信息。

三.ARP原理之广播请求单播回应

广播请求
根据上图我们看到,PC1发送的请求广播包同时被其他主机收到,然后PC3和PC4收到之后(发现不是问自己)则丢弃。而PC2收到之后,根据请求包里面的信息(有自己的IP地址)),判断是给自己的,所以不会做丢弃动作,而是返回ARP回应包。

  1. ARP请求包
    请求包
  2. ARP回应包
    回应包
  3. ARP协议字段解读
    ①Hardware type :硬件类型,标识链路层协议
    ②Protocol type :协议类型,标识网络层协议
    ③Hardware size :硬件地址大小,标识MAC地址长度,这里是6个字节( 48bti )
    ④Protocol size :协议地址大小,标识IP地址长度,这里是4个字节( 32bit )
    ⑤Opcode :操作代码,标识ARP数据包类型,1表示请求,2表示回应
    ⑥Sender MAC address :发送者MAC
    ⑦Sender IP address :发送者IP
    ⑧Target MAC address :目标MAC,些处全0表示在请求
    ⑨Target IP address:目标IP
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值