ARP协议原理学习
一、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协议原理学习的更多相关文章
- TCP/IP协议原理学习笔记
昨天学习了杨宁老师的TCP/IP协议原理第一讲和第二讲,主要介绍了OSI模型,整理如下: OSI是open system innerconnection的简称,即开放式系统互联参考模型,它把网络协议从 ...
- 浅谈ARP协议以及应用
0. 前言 本章主要简单的介绍ARP的协议格式,主机如何发送和处理ARP报文,以及免费ARP. 1. ARP协议原理 ARP,全称Address Resolution Protocol,地址解析协议, ...
- 一文详解 ARP 协议
我把自己以往的文章汇总成为了 Github ,欢迎各位大佬 star https://github.com/crisxuan/bestJavaer 公众号连载计算机网络文章如下 ARP,这个隐匿在计网 ...
- TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议
把这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数 ...
- 图解ARP协议(二)ARP攻击原理与实践
一.ARP攻击概述 在上篇文章里,我给大家普及了ARP协议的基本原理,包括ARP请求应答.数据包结构以及协议分层标准,今天我们继续讨论大家最感兴趣的话题:ARP攻击原理是什么?通过ARP攻击可以做什么 ...
- 通信原理之IP协议,ARP协议 (三)
把这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数 ...
- ARP地址解析协议原理
概述 网络层以上的协议用IP地址来标识网络接口,但以太数据帧传输时,以物理地址来标识网络接口.因此我们需要进行IP地址与物理地址之间的转化. 对于IPv4来说,我们使用ARP地址解析协议来完成IP地址 ...
- 图解ARP协议(四)代理ARP原理与实践(“善意的欺骗”)
一.代理ARP概述 我:当电脑要访问互联网上的服务器,目标MAC是什么? 很多小伙伴在刚学习网络协议的时候,经常这样直接回应:不就是服务器的MAC嘛! 这时我会反问:那电脑怎么拿到这个服务器的MAC地 ...
- TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议【转】
转自:http://blog.csdn.net/goodboy1881/article/details/668556 把这三个协议放到一起学习是因为这三个协议处于同一层(网际层),ARP协议用来找到目 ...
随机推荐
- Linux内核分析——第七章 链接
第七章——链接 1.链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载到存储器并执行. 2.链接可以执行于编译时,加载时,运行时. 7.1编译器驱动程序 1.大多数编译系 ...
- ajax多级菜单栏
1.jsp 首先ajax查询数据 <script type="text/javascript"> function targetlist() { $.ajax({ ur ...
- 第二个spring,第一天
陈志棚:成绩的统筹 李天麟:界面音乐 徐侃:代码算法 由于队友们都回家了,只有我在努力的写代码...
- “数学口袋精灵”第二个Sprint计划(第九天)
第九天进度 任务分配: 冯美欣:欢迎界面背景音乐发现bug(一开始进入游戏可以播放音乐,进入游戏界面,再返回欢迎界面时,音乐播放不出来),仍在解决中: 吴舒婷:改进ui与音效 1.进度条.金黄色: 2 ...
- CentOS(6.8)7 安装 Mysql 5.7
https://blog.csdn.net/zyw_java/article/details/70949596 https://blog.csdn.net/yzl11/article/details/ ...
- TimeLine CSS/Javascript 时间线
https://casbootadminserver.herokuapp.com/#/applications/23bd8218/trace
- python主成分分析
#-*- coding: utf-8 -*- #主成分分析 降维 import pandas as pd #参数初始化 inputfile = '../data/principal_component ...
- Java多线程:用三个线程控制循环输出10次ABC
转载:http://www.cnblogs.com/gaopeng527/p/5257884.html 题目:有A,B,C三个线程, A线程输出A, B线程输出B, C线程输出C,要求, 同时启动三个 ...
- git常用命令及用法小计
git init 初始化一个本地git仓库repository git status 查看状态 git add <file> 将工作区修改加到暂存区(stage) git commit - ...
- css修改input表单默认样式重置与自定义大全
链接地址: 伪元素表单控件默认样式重置与自定义大全 http://www.zhangxinxu.com/wordpress/?p=3381 Chrome 现在不支持通过伪元素修改 meter 元素样式 ...