ARP(地址解析协议)_arp协议只工作在局域网吗-程序员宅基地

技术标签: 网络  网络协议  tcp/ip  

该文章算是计算机网络第八版的阅读总结,可以直接看书

ARP(地址解析协议) ,实现ip地址与MAC地址的相互转化。

要点

网络层使用IP地址,但实际网络的链路上传送数据帧时,最终还是必须使用链路层的MAC地址,IP地址与MAC地址因为格式不同所以并不存在简单的映射关系(例如,IP地址有32位,MAC地址有48位)。又因为更换网络适配器也会使主机MAC地址改变(主机的MAC地址实际是网络适配器的MAC地址)。

地址解析协议ARP 解决这个问题的方法是在主机的ARP高速缓存中存放一个从IP地址到MAC地址的映射表,并且这个映射表还经常动态更新(新增或超时删除),存有 本局域网 的各主机和路由器的IP地址到MAC地址的映射表。

问题:一个主机A想要发送IP数据报给本局域网内的另一主机B。

首先A会在自己的ARP高速缓存器内查找B的的IP地址,此时会出现两种情况。

  1. 能找到B的IP地址。那么高速缓存器会查出其相对应的B的MAC地址再把这个MAC地址写入MAC帧,然后通过该MAC帧发往此MAC地址。

  2. 不能找到B的IP地址。A主机的ARP会在该局域网内广播发送一个ARP请求分组,携带源主机(A)的IP地址,MAC地址,目的主机的IP地址。在该局域网内的所有主机运行的ARP进程都会收到该请求分组,当主机IP与请求分组内携带的目的主机的IP地址相同时会收下该分组并向A发送响应分组,响应报文中写入自己的MAC地址。不一致时会丢弃该请求分组。A在收到响应分组时会将其携带的B主机的MAC地址写入APR高速缓存器的映射表。 APR请求分组是广播,但APR响应分组是普通的单播。

APR对保存在高速缓存中的每个映射地址项目都设置 生存时间 (例如10~20 分钟)。凡是超过该时间的项目就会从高速缓存中删除掉。

ARP用于解决 同一个局域网上的主机或路由器的IP地址和MAC地址的映射问题。当目的主机与源主机不在同一局域网中会将ARP发送到链接两个局域网的路由器,再由该路由器发给源主机。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_67991583/article/details/127272523

智能推荐

Linux中tty是什么(tty1~7)-程序员宅基地

文章浏览阅读5.2k次,点赞3次,收藏7次。tty:终端设备的统称。tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。tty1~6是文本型控制台,tty7是X Window图形显示管理器。在本地机器上..._linux tty10

【ESP8266之LUA开发】九、File操作,实现C#改变并存储工作模式,SSID与PWD的保存与读取_esp8266 configfile.close()-程序员宅基地

文章浏览阅读1.5k次。emmmm,这一片信息量很大,算是一个综合的过程吧,如果哪里有疑问记得及时查看前面的内容,查漏补缺。文件操作,保存数据,这样的话就可以随意修改启动时工作在哪一种模式,哪一种通信,以及其余需要保存在模块内部的信息。 就实现上位机软件的第一个功能,,修改启动模式 对应的C#代码private void button2_Click(object sender, EventArgs e)_esp8266 configfile.close()

【Unity】如何优雅地移动物体-8个方法_unity 物体移动-程序员宅基地

文章浏览阅读8.1k次,点赞58次,收藏136次。在游戏开发中,如何移动物体?是我们需要思考的事情。Unity 引擎也提供了众多的方法,每个开发者的使用习惯也各不相同,所以往往不是很清楚在这种场景下哪种方式最好的或者最有效的。那么,这篇文章,我想分享一下移动物体的一些方法和优缺点。_unity 物体移动

【Python】python 反射机制在实际的应用场景讲解-程序员宅基地

文章浏览阅读97次。 剖析python语言中 "反射" 机制的本质和实际应用场景一. 前言def s1(): print("s1是这个函数的名字!") s = "s1"print("%s是个字符串" % s)在上面的代码中,我们必须区分两个概念,f1和“f1"。前者是函数f1的函数名,后者只是一个叫”f1“的字符串,两者是不同的事物。我们可以用f1()的方式调用函数f1,但我们不能用"f..._python反射机制及应用场景

uni-app上传文件(带进度条)_uniapp 上传视频时显示进度-程序员宅基地

文章浏览阅读3.6k次。<template> <view> <view> <progress :percent="percent" stroke-width="10"></progress> </view> <view> <button type="primary" :loading="loading" :disabled="disabled" @click="upload">选择照片</button&g_uniapp 上传视频时显示进度

pthread_mutex_lock引起的core_thread mutex lock segmentation fault-程序员宅基地

文章浏览阅读5.9k次。遇到一个奇怪的corecore在pthread_mutex_lock下一行最后发现:_thread mutex lock segmentation fault

随便推点

【云原生 | 31】Docker运行实时流计算框架Apache Storm_这是因为docker compose目前只能保证容器的启动顺序,但是无法确保所依赖容器中的-程序员宅基地

文章浏览阅读2.9w次,点赞11次,收藏11次。Apache Storm是一个实时流计算框架,由Twitter在2014年正式开源,遵循Eclipse Public License 1.0。Storm基于Clojure等语言实现。_这是因为docker compose目前只能保证容器的启动顺序,但是无法确保所依赖容器中的

【转】微信小游戏开发总结-程序员宅基地

文章浏览阅读165次。小游戏是小程序的一个类目,小游戏是微信开放给小程序的更多的能力,让小程序开发者有了开发游戏的能力。小游戏没有WXSS、WXML、多页面等内容,但加了一些渲染、文件系统以及后台多线程的功能。小游戏的运行环境是小程序环境的扩展,基本思路也是封装必要的 WEB 接口提供给用户,尽可能追求和 WEB 同样的开发体验。小游戏在小程序环境的基础上提供了 WebGL 接口的封装..._h5 游戏 转 微信 weapp-adapter

公众号模板消息推送_公众号平台模板推送流程-程序员宅基地

文章浏览阅读365次。首先公众号和小程序需要在同一主体下需要在公众号“广告与服务”→“模板消息”中申请自己所需的模板需要在公众号“设置与开发”→“基本配置”拿到appid,appsecret及配置服务器对应的IP白名单其次推送需要推送人员关注该公众号且拿到该用户的openid进行推送最后点击模板消息进入小程序的话,还需要提供小程序的appid和path信息以上就是公众号推送的大致流程啦_公众号平台模板推送流程

python编程从入门到实践第五章习题_python快速编程入门第五章课后题-程序员宅基地

文章浏览阅读1.2k次。第五章讲的是if的一些用法,和C、C++相比,只是把当中的else if 换成了elif,其他逻辑等完全没有任何变化。总的来说还是没有任何难度的,只是每一个语句后面需要加一个“:”,这个是初学的时候特别容易遗漏的。好了,直接上代码:#5-1car = 'subaru'print("Is car == 'subaru'? I Predict True.")print(car=='subaru')..._python快速编程入门第五章课后题

基于SpringBoot的社区医院管理服务系统的设计与实现_基于springboot的社区医疗服务管理系统-程序员宅基地

文章浏览阅读1.3k次。因此,系统无疑给人们的生活带来了极大的方便,网络的应用让时间和距离不再是局限。通过前面的功能分析可以将社区医院管理服务系统的功能分为管理员、用户和医生三个部分,系统的主要功能包括首页、个人中心、用户管理、医生管理、预约医生管理、就诊信息管理、诊疗方案管理、病历信息管理、健康档案管理、费用信息管理、系统管理等内容。预约医生管理,在预约医生管理页面中可以对索引、预约编号、医生账号、医生姓名、预约时间、科室、用户账号、用户姓名、审核回复、审核状态、审核等内容进行详情、就诊、修改或删除等操作,如图5-21所示。_基于springboot的社区医疗服务管理系统

374. Guess Number Higher or Lower(猜数字大小)-程序员宅基地

文章浏览阅读304次,点赞10次,收藏9次。返回我选出的数字。