必不可少的ARP原理, 3分钟快速了解

若文章对你有帮助请点个👍👍👍, 表示对我的鼓励, 非常感谢 ❤️❤️❤️

预备知识

  1. 讨论的的前提在 TCP/IP 协议族中
  2. 在同一个局域网中,有自己的寻址机制(不是IP地址,而是物理地址,如Mac地址).
  3. 如果物理地址是 FF:FF:FF:FF:FF:FF, 则表示广播, 要将数据发送给所有PC.

ARP基本原理

ARP 地址解析协议, 主要用的作用就是负责把IP地址转换为数据链路层的地址. 下面拿以太网(Ethernet)来说, 以太网的寻址地址是48位比特.

ARP基本原理

为什么需要硬件地址(Mac地址) ?
在 TCP/IP 协议族中, 数据在数据链路层传输必须知道目的端的硬件地址才能发送数据. 这里是不能通过IP地址进行寻找的. 而ARP就是为了解决这个问题.

什么是硬件地址?
硬件地址就是网络接口的硬件地址, 比如通过ifconfig命令查看, 有一行是ether, 后面跟着的就是以太网的硬件地址, 该地址具有唯一性, 也就是全球没有两个硬件地址是一样的.
ether地址

ARP实际使用

简单ping一下同一局域网上的另一个台电脑. 比如ping 192.168.1.100. 然后用 WireShark 抓包.(代码: ping 10.232.32.187)

ping实例

解释上图:

  1. Dell_fc:bb:ef 向外询问, 谁的IP地址是10:232:32:187, 把你的硬件地址告诉 10.232.32.189(这个是我).
  2. Dell_4a:0f:28 回复 Dell_fc:bb:ef , IP地址是10:232:32:187的硬件地址在 xx:xx:xx:xx:xx:xx

可以用图来解释上面过程:
假设有如下结构的局域网:
局域网

现在PC1 想要向 PC2 发送消息, 但是只知道PC3的IP地址(这里先不管怎么获取IP地址,实际可以提前告知,或者DNS等), 这个时候 PC1 就会发送ARP请求,询问 192.168.0.102 的硬件地址是多少?

发送ARP请求

回答ARP请求

ARP请求是广播,而ARP响应是单播.

ARP拓展

在同一个局域网上, 如上述流程. 但是如果两者不在一个局域网中, 那么又该如何进行通信呢? 答案: ARP代理.

ARP代理

本质是路由器代理PC, 在不同的子网中, 必定会有一个路由器进行连接,路由器具有代理ARP的功能.

假设有如下图的网络结构, PC1 想要给 PC3 发送消息, 但是 PC1 不知道PC3 的硬件地址, 所以需要先获取 PC3 的硬件地址.
ARP代理

  1. PC1 发出寻找PC3硬件地址的 ARP 请求
  2. 路由器接收到 ARP请求, 根据IP发现某个子网的请求, 则返回自己的硬件地址. 若不是,则根据IP地址转发.
  3. PC1 接收到 “认为” 是PC3的硬件地址, 实际是路由器的硬件地址.
  4. PC1 开始发送数据给PC3, 但是数据链路层封装的目标硬件地址是路由器的.
  5. 路由器接收到数据包,发现是给自己的数据, 因此分析IP头. 发现是给PC3的, 于是重新封装该数据包, 把真正的PC3的硬件地址封装进去. 发送给PC3.
  6. PC3 接收到 PC1 发送的数据包.

参考:
[1]. TCP/IP详解 卷1:协议

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值