一、ARP的作用。

  首先在window 的命令行中输入arp -a即可查看本机的arp缓存表。主机要发送数据包时,需要填充目的IP及其IP地址对应的MAC。当我们只有目的IP地址时,如何得到其对应的MAC地址?

  此时ARP的作用就体现出来了。ARP就是通过IP来获取其对应的MAC地址。接下来阐述具体的过程。

二、同网段下ARP工作原理。

图 1

  如图1所示,h1与h2是处于同一网段并通过交换机s1连接。在h1上执行ping 10.0.0.3时,具体流程如下:

  1、h1在arp缓存表中h2 IP地址对应的mac,若未查询到进入第2步;

  2、h1将目的mac改为全F(即广播),目的IP为h2,发送除自己以外的s1端口中,询问“谁是10.0.0.3”,进入第3步;

  3、h3收到广播消息后,发现目的IP与自己不匹配,将其丢弃;而h2收到广播消息后,发现查找的是自己,就会发送一个单播帧给h1,

单播帧中包含h2的mac地址。同时h2也会在自身的arp表中记录h1的mac;

  4、h1收到h2的arp回应后,更新arp表,并发送数据给h2,实现h1与h2的ICMP可达;

三、不同网段下ARP工作原理


 图 2

  如图2所示,主机h1与h2连接在路由器r2。h1与h2处于不同网段。在h1上执行ping 11.0.0.4,具体流程如下:

  1、h1查询本机的arp缓存表,发现目的IP与自身不在同一网段,则通过需要通过默认网关来查询h2的mac;

  2、h1需要先arp到网关10.0.0.1的mac地址,网关单播返回给h1,h1将数据包的目的mac改为f0的mac地址,目的IP为h2的IP 11.0.0.4

  3、r2收到数据包之后,r2解包后,发现目的IP不是自己,然后查看路由表,将数据包转发到相应的接口f1;

  4、此时不知道h2的mac地址,所以r2的f1接口中发送arp请求报文,源IP与源mac都是f1,目的IP为h2,目的mac全F,即广播查找h2的mac;

  5、h2返回自身的mac给r2,r2更新路由表,而后r2将h1的包修改为源IP与源mac为h1,目的IP与母的mac为h2,从端口f1发送出去。

  6、h2接收到数据包后,更新arp表,同样返回ICMP应答报文给h1,过程可跟1~5类似。

四、新接入网络的主机是否会自动学习其他主机mac,建立arp缓存表?

  答案:不会,按照以上过程,只有双方有通信时,对方才会将其mac记录在arp缓存表中。

ARP协议原理学习的更多相关文章

  1. TCP/IP协议原理学习笔记

    昨天学习了杨宁老师的TCP/IP协议原理第一讲和第二讲,主要介绍了OSI模型,整理如下: OSI是open system innerconnection的简称,即开放式系统互联参考模型,它把网络协议从 ...

  2. 浅谈ARP协议以及应用

    0. 前言 本章主要简单的介绍ARP的协议格式,主机如何发送和处理ARP报文,以及免费ARP. 1. ARP协议原理 ARP,全称Address Resolution Protocol,地址解析协议, ...

  3. 一文详解 ARP 协议

    我把自己以往的文章汇总成为了 Github ,欢迎各位大佬 star https://github.com/crisxuan/bestJavaer 公众号连载计算机网络文章如下 ARP,这个隐匿在计网 ...

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

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

  5. 图解ARP协议(二)ARP攻击原理与实践

    一.ARP攻击概述 在上篇文章里,我给大家普及了ARP协议的基本原理,包括ARP请求应答.数据包结构以及协议分层标准,今天我们继续讨论大家最感兴趣的话题:ARP攻击原理是什么?通过ARP攻击可以做什么 ...

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

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

  7. ARP地址解析协议原理

    概述 网络层以上的协议用IP地址来标识网络接口,但以太数据帧传输时,以物理地址来标识网络接口.因此我们需要进行IP地址与物理地址之间的转化. 对于IPv4来说,我们使用ARP地址解析协议来完成IP地址 ...

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

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

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

    转自:http://blog.csdn.net/goodboy1881/article/details/668556 把这三个协议放到一起学习是因为这三个协议处于同一层(网际层),ARP协议用来找到目 ...

随机推荐

  1. 跟踪分析Linux内核的启动过程

    潘俊洋 原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.准备 搭建环境 1 2 ...

  2. .NET组件介绍系列

    一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)http://www.cnblogs.com/pengze0902/p/6122311.html 高效而稳定的企业级.NET Offi ...

  3. ppm\℃是什么意思/

    转自http://www.zybang.com/question/b158a106b4e39d8fdb2b93fd3777a00f.html 在基准电压的数据手册里,我们会找到一个描述基准性能的直流参 ...

  4. 『编程题全队』"Gugua"事务管理系统项目宣传文案

    一.项目简介 1.项目简介 Gugua是为了解决有事务管理需要的人群的痛苦, 他们需要 一个便利和高效的个人和团体事务管理平台,但是现有的方案并没有很好地解决这些需求,我们有独特的办法是提供跨平台的软 ...

  5. SQLserver 一种简单的GUI方式创建DBlink copy 表数据的方法

    1. 在sqlserver 上面使用GUI的方式创建dblink 首先打开查询分析器 在如下的位置处右键 -新建连接服务器 输入需要copy数据的服务器 输入ip地址 然后建立连接 在打开查询分析器进 ...

  6. 二叉排序树类的: C++ 实现

    #include<iostream> using namespace std; template<class T> struct TreeNode { T element; T ...

  7. 配合es5.8的使用,升级sb版本到2.X,遇到一个问题

    问题:Failed to bind properties under 'spring.redis.jedis.pool.max-wait' to java.time.Duration: Propert ...

  8. Python——信号量

    信号量 某一段代码,同一时间,只能被N个进程使用 import time import random from multiprocessing import Porcess from multipro ...

  9. mysql 分页数据错乱

    最近在使用mysql 分页查询数据的时候发现返回的数据与预期的不一样,显示数据重复错乱. 在官方文档 有这样一句话 If multiple rows have identical values in ...

  10. char类型的数值转换

    在视频教程中,你已经认识到了数字类型之间.字符串和其他类型之间的转换.而某些时候,我们还需要将char类型转换为int类型,或者把int类型转换为char类型. 这篇文章,将介绍在代码中虽然不太常用, ...