当前位置: 首页 > news >正文

ARP协议(地址解析协议) 的作用和操作过程

目录

    • 1.问题: (在同一个LAN局域网内)如何在已知目的接口的IP地址前提下确定其MAC地址?
    • 2.问题:现在假设主机A要向目的主机B发送一个数据报,怎么发送呢?
      • 2.1在一个局域网内时
        • 2.1.1情况一:
        • 2.1.2情况二:
      • 2.2从一个LAN路由到另一个LAN时

1.问题: (在同一个LAN局域网内)如何在已知目的接口的IP地址前提下确定其MAC地址?


ARP表: LAN中的每个IP结点(主机、路由器)维护一个表
存储某些LAN结点的IP/MAC地址映射关系:

< IP地址; MAC地址; TTL>

TTL (Time To Live):
经过这个时间以后该映射关系会被遗弃(典型值为20min)
在这里插入图片描述

2.问题:现在假设主机A要向目的主机B发送一个数据报,怎么发送呢?

2.1在一个局域网内时


发送主机 需要获得给定(已知)IP地址的目的主机MAC地址

2.1.1情况一:

如果发送方的ARP表具有该目的节点的表项,则任务很容易完成,直接对应表项查找MAC地址即可。

2.1.2情况二:

但如果ARP表中当前没有该目的节点的表项,又怎么办呢?
🚩具体流程如下:(对应《自顶向下》第七版P306)

  • A想要给同一局域网内的B发送数据报
     B的MAC地址不在A的ARP 表中.
  • A广播ARP查询分组(广播帧),其中包含B的IP地址
    目的MAC地址 = FF-FF-FF-FF-FF-FF
     LAN中所有结点都会接收ARP查询,每个都检查它的IP地址是否与ARP分组中的目的IP地址相匹配
  • B接收ARP查询分组,发现IP地址匹配成功,向A应答B的MAC 地址
     利用单播帧(标准帧)向A发送应答
  • A更新ARP表,在其ARP表中缓存B的IP-MAC地址对,直至超时
     超时后,再次刷新

:ARP是“即插即用”协议:
 结点自主创建ARP表,无需系统管理员干预
上面是一台主机向相同子网上的另一台主机发送一个数据报时ARP的操作过程。但是当子网中的某主机要向子网外(另一个子网)的另一台主机发送一个数据报时,是怎么一个流程?

2.2从一个LAN路由到另一个LAN时

通信过程: A通过路由器R向B发送数据报关注寻址:IP地址(数据报中)和MAC地址(帧中)
a. 假设A知道B的IP地址(怎么知道的?)
b. 假设A知道第一跳路由器R ()接口IP地址 (怎么知道的?)
c. 假设A知道第一跳路由器R ()接口MAC地址 (怎么知道的?)

a.使用DNS查询,根据主机名查询IP地址,然后封装到IP数据报中。
b.默认网关,就是子网外联的路由器的向内IP地址
c.ARP协议,上面讲过的一个局域网内的查询,根据上一个IP地址,查询路由器的MAC地址。

在这里插入图片描述
🚩具体流程如下:(对应《自顶向下》第七版P307)

  • A构造IP数据报,其中源IP地址是A的IP地址,目的IP地址是B的IP地址
  • A构造链路层帧,其中源MAC地址是A的MAC地址,目的MAC地址是R(左)接口的MAC地址,封装A到B的IP数据报。
  • A发送至R
  • R接收帧提取IP数据报,传递给上层IP协议
  • R转发IP数据报(源和目的IP地址不变!
  • R创建链路层帧,其中源MAC地址是R(右)接口的MAC地址目的MAC地址是B的MAC地址,封装A到B的IP数据报。
http://www.lryc.cn/news/194835.html

相关文章:

  • 轻游戏风格虚拟资源付费下载模板Discuz论坛模板
  • MongoDB索引操作
  • AMEYA360:君正低功耗AIoT图像识别处理器—X1600/X1600E
  • EM@圆和圆锥曲线的参数方程
  • uniapp 微信小程序 vue3.0+TS手写自定义封装步骤条(setup)
  • Python 金融大数据分析
  • 初识C++入门(1)
  • 使用Selenium的WebDriver进行长截图
  • python+大数据校园卡数据分析 计算机竞赛
  • 【机器学习】sklearn降维算法PCA
  • 华为云云耀云服务器L实例评测|企业项目最佳实践之评测用例(五)
  • Xcode升级到15.0 解决DT_TOOLCHAIN_DIR问题
  • 小谈设计模式(29)—访问者模式
  • 【25】c++设计模式——>责任链模式
  • GlobalTransactional
  • Android Studio运行kotlin项目,一直Read timed out
  • Excel 的单元格内容和单元格格式
  • 4大软件测试策略的特点和区别(单元测试、集成测试、确认测试和系统测试)
  • armbian 安装mysql
  • Ubuntu22常用软件
  • 【CFD小工坊】浅水模型的边界条件
  • 电力物联网关智能通讯管理机-安科瑞黄安南
  • 用Flask构建一个AI翻译服务
  • 微信小程序引入阿里巴巴iconfont图标并使用
  • mysql面试题49:MySQL中不同text数据类型的最大长度
  • 从虚拟电厂在上海的实践探索看企业微电网数字化的意义
  • 创建并初始化线程池
  • 【LeetCode热题100】--136.只出现一次的数字
  • Java idea查看自定义注解的调用地方
  • ReLU激活函数