一、ARP在同个网段下的工作原理

首先,每台主机都会在自己的ARP缓冲区中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系。当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址,如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个 ARP响应数据包,告诉对方自己是它需要查找的MAC地址;源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

例如:

A的地址为:IP:192.168.10.1 MAC: AA-AA-AA-AA-AA-AA
B的地址为:IP:192.168.10.2 MAC: BB-BB-BB-BB-BB-BB

根据上面的所讲的原理,我们简单说明这个过程:A要和B通讯,A就需要知道B的以太网地址,于是A发送一个ARP请求广播(谁是192.168.10.2 ,请告诉192.168.10.1),当B收到该广播,就检查自己,结果发现和自己的一致,然后就向A发送一个ARP单播应答(192.168.10.2 在BB-BB-BB-BB-BB-BB)。

二、局域网中跨网段主机间通讯

不同网段的主机通信时,主机会封装网关(通常是路由器)的mac地址,然后主机将数据发送给路由器,后续路由进行路由转发,通过arp解析目标地址的mac地址,然后将数据包送达目的地。具体过程分析如下:

如上图,主机A、B通过路由器连接,属于两个不同的网段子网掩码24(255.255.255.0)

1、主机A有数据发往主机B,数据封装IP之后发现没有主机B的mac地址;然后查询ARP,ARP回应:“我在192.168.3.0/24网段,目标地址在192.168.4.0/24,不属于同一网段,需要使用默认网关”;ARP发现默认网关是192.168.3.2,但是没有网关mac地址,需要先进行查询;

2、主机将数据包先放到缓存中,然后发送ARP查询报文:封装自己的mac地址为源mac,目标mac地址写全F的广播地址,请求网关192.168.3.2的mac地址。然后以广播方式发送出去;

3、路由器收到广播数据包,首先将原192.168.3.1添加到自己的mac地址表中,对应mac地址为0800.0222.2222。路由发现是请求自己的mac地址,然后路由回复一个ARP应答:封装自己的IP地址为源IP自己的mac地址为源mac,主机A的IP为目的IP主机A的mac为目的mac,发送一个单播应答“我是192.168.3.2.我的mac地址为0800.0333.2222”;

4、主机收到应答后,将网关mac地址对应192.168.4.2(跨网关通信,其他网段IP地址的mac地址均为网关mac),然后将缓存中的数据包,封装网关mac地址进行发送;

5、路由收到数据包,检查目的IP地址,发现不是给自己的,决定要进行路由,然后查询路由表,需要发往192.168.4.0网段中的192.168.4.2地址。路由准备从相应接口上发出去,然后查询mac地址表,发现没有主机B的映射。路由器发送arp请求查询主机B的mac地址(原理同2、3步,主机B收到请求后首先会添加网关的mac地址,然后单播回复arp请求);

6、路由器收到主机B的mac地址后,将其添加到路由mac地址表中,然后将缓存中的数据2层帧头去掉,封装自己的mac地址为源mac,主机B的mac地址为目的mac(源和目的IP地址不变),加上二层帧头及校验,发送给主机B;

7、主机B收到数据之后,进行处理,发送过程结束;

8、如果主机B收到数据后进行回复,主机B会进行地址判断,不在同一网段,然后决定将数据发送给网关,主机B查询mac地址表获得网关mac地址,将数据封装后发送(arp地址解析的过程不再需要了,mac地址表条目有一定的有效时间),网关收到数据后直接查询mac表,将二层帧mac地址更改为A的mac发送出去。如此,主机A收到主机B的回复;

综上在跨网段通信过程中有以下过程:
1、判断地址是否同一网段
2、查询目的IP地址的mac(发送arp请求)

此外需注意点:
1、ARP请求以广播发送、以单播回应
2、路由器隔离广播。每一个网段都是独立的广播域
3、跨越网段通信需要使用网关的mac地址
ps:如想深入分析,建议模拟环境,进行抓包操作,可以看到具体经历了哪些过程,有助于深入了解。

ARP协议在同网段及跨网段下的工作原理相关推荐

  1. gns3中两个路由器分别连接主机然后分析ip数据转发报文arp协议_ARP协议在同网段及跨网段下的工作原理...

    前言:ARP协议是在链路层通讯中,已知目标IP地址,但是,仅有IP 地址是不够的,因为IP数据报必须封装成帧才能通过数据链路进行发送,而数据帧必须要有目的MAC地址,每一个网络设备在数据封装前都需要获 ...

  2. ARP 协议工作原理(同网段及跨网段)

    目录 一.ARP简介 二.ARP的工作原理 三.ARP协议在同网段工作原理 四.ARP协议在不同网段工作原理 一.ARP简介 ARP全称是"Address Resolution Protoc ...

  3. arp协议获取mac地址,同网段和不同网段。

    arp协议属于OSI模型第二层(数据链路层) 计算机实现网络通信在数据链路层发送数据帧(链路层数据包)实现通讯.而数据帧要发送到目标计算机需要知道,发送端的ip地址和mac地址还有接收端的ip地址和m ...

  4. 同网段及跨网段主机间通信原理

    在当今的以太网络通信中,在 IP 数据包中有两个必不可少的地址,那就是 IP 地址和网卡地址(即 MAC 地址),在数据包中,无论是 IP 地址还是 MAC 地址,都有源地址和目标地址,因为通信是双方 ...

  5. 双时隙的工作原理_一文读懂跨阻放大器的工作原理

    跨阻放大器(TIA)是光学传感器(如光电二极管)的前端放大器,用于将传感器的输出电流转换为电压.跨阻放大器的概念很简单,即运算放大器(op amp)两端的反馈电阻(RF)使用欧姆定律VOUT= I × ...

  6. tplink 跨路由器 共享打印机_焦作联通案例分享:跨网段通过防火墙共享打印机设置...

    跨网段通过防火墙共享打印机设置 焦作联通网络部:薛培延 两个不同的局域网间如何实现打印机共享操作呢?以下将与大家分享一下处于同一个路由器连接下(即处于同一个域中的计算机之间)不同局域网段之间打印机共享 ...

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

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

  8. 图解ARP协议(六)RARP与IARP:被遗忘的兄弟协议

    一.概述 在我第一次接触ARP协议的时候,发现这协议挺简单的,"一去一回通过IP拿到MAC地址",整个过程在1s内就搞定了.后面学到了代理ARP,发现也不过是变了个法子,做了次&q ...

  9. 计算机网络实验arp协议分析,计算机网络ARP地址协议解析实验报告

    计算机网络ARP地址协议解析实验报告 (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 计算机网络实验报告.实验目的:1. 掌握ARP协议 ...

最新文章

  1. boost::math::tools::luroth_expansion用法的测试程序
  2. dwz(jui)刷新当前dialog的方法
  3. golang语言编译的二进制可执行文件为什么比 C 语言大(转载)
  4. ModuleNotFoundError: No module named 'oscar.app'
  5. html %3ca id=%3e,a.markdown
  6. C语言打包解包文件程序(简易版)
  7. 关于element-ui的upload文件上传组件的使用技巧总结
  8. 【AI视野·今日Sound 声学论文速览 第一期】Thu, 14 Apr 2022
  9. [转]用行为树的方式思考
  10. python数据拟合方法_Python-最小二乘法曲线拟合【转载】
  11. EXCEL表格复制到空白的EXCEL表格变形 解决方法
  12. python不区分大小写的列表比较_关于列表:不区分大小写’in’ – Python
  13. 深圳计算机专业中专学校,深圳最好的中专学校有哪些 十大中专学校排名
  14. JZOJ 6297. 2019.08.10【NOIP提高组A】世界第一的猛汉王
  15. Pytorch实战:8层神经网络实现Cifar-10图像分类验证集准确率94.71%
  16. oracle gbk ebcdic,文件编码 ANSI、GBK、GB2312、MS936、MS932、SJIS、Windows-31 、EUC-JP 、EBCDIC 等等之间的区别与联系...
  17. iShot--长截图的首选工具
  18. 文件上传漏洞初步解析(个人浅薄理解)
  19. 百度网盘源码分享!基于 Maven+SpringBoot+SpringDataJPA
  20. 将网页分享到微信带有缩略图和简介

热门文章

  1. 欺诈行为识别_使用R(编程)识别欺诈性的招聘广告
  2. 树莓派 zero linux,树莓派 zero基本调试
  3. 城市轨道交通运营票务管理论文_城市轨道交通运营管理专业就业前景怎么样?中职优选告诉你...
  4. 成为一名真正的数据科学家有多困难
  5. leetcode 115. 不同的子序列(dp)
  6. leetcode695. 岛屿的最大面积(dfs)
  7. 泛型型协变逆变_Java泛型类型简介:协变和逆变
  8. Linux多命令协作:管道及重定向
  9. CGAffineTransform
  10. Spring 注解AOP 入门