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

2023-10-17 15:20

本文主要是介绍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数据报。

这篇关于ARP协议(地址解析协议) 的作用和操作过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/226286

相关文章

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

Java字符串处理全解析(String、StringBuilder与StringBuffer)

《Java字符串处理全解析(String、StringBuilder与StringBuffer)》:本文主要介绍Java字符串处理全解析(String、StringBuilder与StringBu... 目录Java字符串处理全解析:String、StringBuilder与StringBuffer一、St

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

C#中async await异步关键字用法和异步的底层原理全解析

《C#中asyncawait异步关键字用法和异步的底层原理全解析》:本文主要介绍C#中asyncawait异步关键字用法和异步的底层原理全解析,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录C#异步编程一、异步编程基础二、异步方法的工作原理三、代码示例四、编译后的底层实现五、总结C#异步编程

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地

MySQL中FIND_IN_SET函数与INSTR函数用法解析

《MySQL中FIND_IN_SET函数与INSTR函数用法解析》:本文主要介绍MySQL中FIND_IN_SET函数与INSTR函数用法解析,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一... 目录一、功能定义与语法1、FIND_IN_SET函数2、INSTR函数二、本质区别对比三、实际场景案例分

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

Java图片压缩三种高效压缩方案详细解析

《Java图片压缩三种高效压缩方案详细解析》图片压缩通常涉及减少图片的尺寸缩放、调整图片的质量(针对JPEG、PNG等)、使用特定的算法来减少图片的数据量等,:本文主要介绍Java图片压缩三种高效... 目录一、基于OpenCV的智能尺寸压缩技术亮点:适用场景:二、JPEG质量参数压缩关键技术:压缩效果对比

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3