ARP协议过程介绍

引言

​ IP地址的设计目的是为了跨越不同类型的物理网络的分组交换提供相互操作。这需要底层网络硬件使用地址的支持。打个比方,我们可以知道所在地址的IP地址,但是还是需要端口号,也就是精确到目标进程。所以IP数据报想要准确的被一个主机上的网络硬件接受,也需要有个明确的地址——MAC地址。所幸对于TCP/IP网络,有着**地址解析协议(ARP)**提供在IPv4和各种硬件地址之间的映射。

​ MAC地址是和硬件相关的,而且是唯一的。MAC的唯一性是有一个标准的组织给前几位的号码,然后剩下的号码由单位自行生成。

ARP运行过程

​ 我们发送IP数据报到一个目的地可达的路由器,并且是目的地所属子网后,路由器怎么把IP数据报给目标主机呢?

  1. ​ 路由器向广播地址发送ARP请求,这被称为链路层广播。这个请求包含源IP地址,这个包的作用就是“谁的IP地址是这个啊?听到请回复你的MAC地址,我要给你送信(数据)了。”
  2. ​ 如果子网内有这个人,这个人就出来回答一下(发送ARP应答给询问者),其他人都无视该报文(等于没看到),之后就根据MAC地址发送数据;如果子网内没有这个人,就过一会儿说命中失败(目的可达路由器)。

​ ARP本质是一个连接网络层(IP)和链路层(MAC)的一个协议,剖去过程就是一个翻译IP为MAC地址的协议。为啥要翻译呢?网络层的IP虽然用的多,但整个网络架构仍然不是为了一个协议服务的。在链路层是看不到IP的,但是链路层可以看到MAC地址,所以我们就把IP映射到MAC地址,这样TCP/IP协议族中就可以由IP到链路层的MAC地址,我们在链路层传输数据也可以传输和IP相对的MAC地址的主机了。

​ 当然如果是点对点的链路自然是不需要ARP协议了,因为点到点协议IP和MAC地址就是唯一的,或者说MAC地址已经是指定了的。

ARP缓存

​ ARP高效运行的关键就在于ARP缓存表的存在。这个表中有许多表项,每个表项由五个元素:主机名、硬件地址类型、硬件地址、标志和本地网络接口。ARP是可以更新ARP表中表项的(不需要网络管理员自行配置了)。当一个连接成功,就会将其表项更新到本机ARP表中,这样下次也可以迅速发现。但是如果一直积累,导致ARP缓存很大怎么办?ARP有超时机制,大部分系统默认20分钟没有访问出现就删除表项。这个自动化的更新和DHCP一样提供了主机具有即插即用的功能。

ARP代理

​ ARP代理就是通过配置一个专用设备作为主机的专用应答ARP请求。

​ 如果配置了一台设备(通常是路由器),那么在子网中广播就不会直接到达主机,而是到达ARP代理路由器,再由路由器交付给主机,主机判断完成后再返回给代理ARP的路由器,路由器再回送一个ARP应答。在这个过程中,与外界交流的只有代理ARP,隐藏了主机。(功效上可以类似看做内网和网关)

总结

​ ARP协议的意义是为了弥补IP层到链路层无法确定目的主机而存在的。有了ARP协议后,数据从网络层到链路层仍然可以MAC地址的映射到达目标主机。ARP就算是一个网络层和链路层之间的边界协议。ARP中最重要的就是ARP表,ARP表的缓存可以极大的减少广播次数,对于整个子网压力骤降。

是ARP表,ARP表的缓存可以极大的减少广播次数,对于整个子网压力骤降。

​ 注意路由器每个接口可能连接一个子网,且每个端口有着不同的MAC地址。

ARP协议是做什么的?相关推荐

  1. TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议

    把这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数 ...

  2. 通信原理之IP协议,ARP协议 (三)

    把这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数 ...

  3. TCP/IP详解--学习笔记(3)-IP协议,ARP协议,RARP协议

    ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数据信息. 1.IP协议 IP协议是TCP/IP协议的 ...

  4. tcp/ip 协议栈Linux内核源码分析11 邻居子系统分析二 arp协议的实现处理

    内核版本:3.4.39 内核邻居子系统定义了一个基本的框架,使得不同的邻居协议可以共用一套代码.比起其它的内核模块,邻居子系统框架代码还是比较简单易懂的.邻居子系统位于网络层和流量控制子系统中间,它提 ...

  5. nmap扫描局域网存活主机_安全工程师都在用的网络扫描软件,巧用ARP协议发现主机。第二节...

    前情回顾 前一节我们介绍了Nmap的安装和简单实用.不知道小伙伴们有什么疑问?如果有的话请在评论区留言,或者私信都可以.一定尽力解答哟! 在学习本节之前,我们一起回顾一下网络基本知识,网络分层模型大家 ...

  6. 4.3 计算机网络之IPv4(IPv4分组、IPv4地址、NAT、子网划分与子网掩码、CIDR、ARP协议、DHCP、ICMP)

    文章目录 0.思维导图 1.TCP/IP协议栈 2.IPv4分组 (1)IPv4分组格式 (2)IP数据报分片 (3)网络层转发分组的流程 3.IPv4与NAT (1)IPv4地址 ① 组成与分类 ② ...

  7. 局域网ARP协议和欺骗技术及其对策

    ARP协议的概念和工作原理对学习网络安全知识的初学者来说是首先遇到的几个重要的知识点之一,其中ARP欺骗技术和及其对策更是学习网络安全中的重点与难点,往往难以一下子掌握这些抽象复杂的机理.因此很有必要 ...

  8. gns3中两个路由器分别连接主机然后分析ip数据转发报文arp协议_关于TCP/IP,必知必会的十个问题!...

    本文整理了一些TCP/IP协议簇中需要必知必会的十大问题,既是面试高频问题,又是程序员必备基础素养. TCP/IP十个问题 TCP/IP十个问题 一.TCP/IP模型 TCP/IP协议模型(Trans ...

  9. 图解ARP协议(四)代理ARP原理与实践(“善意的欺骗”)

    一.代理ARP概述 我:当电脑要访问互联网上的服务器,目标MAC是什么? 很多小伙伴在刚学习网络协议的时候,经常这样直接回应:不就是服务器的MAC嘛! 这时我会反问:那电脑怎么拿到这个服务器的MAC地 ...

最新文章

  1. 从“小”培养AI安全意识:OpenAI开源具有安全约束的RL训练工具
  2. java调用wcf控件的两种交互
  3. ArcGIS Engine开发之旅09--几何对象和空间参考
  4. OpenCV-Python实战(3)——OpenCV中绘制图形与文本
  5. 2020-我的后端开发秋招之路
  6. Structs个人适用知识整理
  7. oracle优化distinct,oracle 索引优化之distinct
  8. 函数分离常数法 oracle,圆锥曲线:椭圆小题解题报告
  9. 台灯c语言,Jya无线台灯C上手体验:从新界说光的含义
  10. LOJ 6198. 谢特(后缀数组+可持久化Trie)
  11. [附源码]Java计算机毕业设计SSM电商直播订单管理系统
  12. Latex 对号和叉号的
  13. ubuntu浏览器firefox无法播放视频
  14. 没有扫描仪如何用PS把照片处理成扫描文件
  15. 一个简单的页面加载管理类(包含加载中,加载失败,数据为空,加载成功)
  16. Windows版本下安装使用Grafana教程
  17. vue 加载数据后渲染页面
  18. 候选码主属性非主属性
  19. 电源去耦的原因-和如何电源去耦
  20. 《java虚拟机规范SE7》整理——第三章:为Java虚拟机编译

热门文章

  1. winscp拒绝连接问题
  2. 移动开发免费收费api及网站收藏
  3. linux 终端交换caps,linux系统中ctrl和capslock键互换的方法
  4. c语言---字符输入
  5. 基于javaweb的在线嘿嘿网盘系统设计和实现(java+springboot+ssm+mysql)
  6. ChatGPT个人助手产品应用实现
  7. Django-安装教程
  8. 微软亚洲研究院资深研究员梅涛:原来视频可以这么玩了! | CCF-GAIR 2017
  9. BIN文件通过ST-LINK烧录STM32芯片(转)
  10. latex 定义带有方括号的command