计算机网络学习(3)ARP协议

一、ARP 协议

  网络层以上的协议用IP地址来标识网络接口,但以太数据帧传输时,以物理地址来标识网络接口。因此我们需要进行IP地址与物理地址之间的转化。

  对于IPv4来说,我们使用ARP地址解析协议来完成IP地址与物理地址的转化(IPv6使用邻居发现协议进行IP地址与物理地址的转化,它包含在ICMPv6中)。
  ARP协议提供了网络层地址(IP地址)到物理地址(mac地址)之间的动态映射。ARP协议 是地址解析的通用协议。

二、ARP缓存
  ARP高速缓存(即ARP表)是 ARP地址解析协议能够高效运行的关键 (如果有多次ARP响应时,以最后一次响应为准)。
  ARP给IP地址和MAC地址中间做了动态映射,也就是说缓存了一个ARP表,将得到的IP地址和MAC地址对应起来,如果在表中没有查到IP地址对应的MAC地址,就会发广播去找。随着用户的使用,ARP表如果不做任何措,就会变得越来越臃肿缓慢,就降低了网络传输数据的效率,所以ARP缓存中每一项被设置了生存时间,一般是20分钟,从被创建时开始计算,到时则清除,如果在计时期间又被使用了,计时会重置。电脑断电则ARP表内容清空。

三、ARP 报文的各个字段以及含义

  帧类型: ARP: 0x0806 (2)

ARP 首部:
硬件类型:硬件地址的类型, 1 表示以太网地址。(2)
协议类型:协议地址的类型, 0x0800 表示 IP 地址。 (2)
硬件地址长度: 字节为单位 6 (1)
协议地址长度: 字节为单位 4 (1)
操作类型: 2 个字节。 ARP 请求 1, ARP 回复 2, RARP 请求 3, RARP 应答 4。(2)
发送者硬件地址: 6 个字节(6)
发送者 IP 地址: 4 个字节(4)
目标硬件地址: 6 个字节(6)
目标 IP 地址: 4 个字节(4)
CRC 校验: 4 个字节 (4)
总结:
arp 总共 28 个字节。
记忆方法: 以太网先目地后源, ARP 先发送端后目地端。先硬件后协议。

四、ARP 协议的工作原理

1.每个主机都会在自己的 ARP 缓冲区中建立一个 ARP 列表,以表示 IP 地址和 MAC 地址之间的对应关系。

2.主机(网络接口)新加入网络时(也可能只是mac地址发生变化,接口重启等), 会发送免费ARP报文把自己IP地址与Mac地址的映射关系广播给其他主机。
3.网络上的主机接收到免费ARP报文时,会更新自己的ARP缓冲区。将新的映射关系更新到自己的ARP表中。
4.某个主机需要发送报文时,首先检查 ARP 列表中是否有对应 IP 地址的目的主机的 MAC 地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送 ARP 数据包(广播),该数据包包括的内容有:源主机 IP 地址,源主机 MAC 地址,目的主机的 IP 地址等。
5.当本网络的所有主机收到该 ARP 数据包时:
  (A)首先检查数据包中的 IP 地址是否是自己的 IP 地址,如果不是,则忽略该数据包。
  (B)如果是,则首先从数据包中取出源主机的 IP 和 MAC 地址写入到 ARP 列表中,如果已经存在,则覆盖。
  (C) 然后将自己的 MAC 地址写入 ARP 响应包中(单播),告诉源主机自己是它想要找的 MAC 地址。
6.源主机收到 ARP 响应包后。将目的主机的 IP 和 MAC 地址写入 ARP 列表,并利用此信息发送数据。如果源主机一直没有收到 ARP 响应数据包,表示 ARP 查询失败。

五、ARP 协议有什么弱点?

1.缓存:主机的地址映射是基于高速缓存的,动态更新的。地址刷新是有时间限制的。 可以通过下次更新之前修改计算机上的地址缓存,造成拒绝服务攻击或者 ARP 欺骗。
2.广播:攻击者可以伪装 ARP 应答。
3.ARP 应答没有认证,都是合法的。可以在不接受到请求的时候就发出应答包。

六、ARP的四种类型

1.代理ARP
  若 ARP 请求是从一个网络的主机发送给另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求,这个过程叫做 ARP 代理。 ARP 代理路由器响应 ARP 请求的 MAC 地址为路由器的 MAC 地址而非 ARP 请求的主机的 MAC 地址。
ARP 代理的应用环境:
  两个物理网络之间的路由是使用相同的网络号,两个路由器设置成 ARP 代理,实现相互隐瞒物理网络
2.免费ARP
  指主机发送 ARP 查找自己的 IP 地址,即数据链路层 SIP=DIP
作用有两个:
  1)一个主机使用免费 ARP 确定是是否有其他主机设置了相同的 IP 地址;
  2)如果发送免费 ARP 的主机改变了 MAC 地址,可以通过发送免费 ARP 的方式告知其他主机端更新 ARP 表。
3.翻转ARP(RARP)
  无盘工作站通过RARP协议来获取IP地址(有了IP地址之后通过TFTP引导加载系统)
  自己没有ip地址,但是有mac,通过RARP,向服务器请求获得了IP地址(这个服务器分配给他的),从而获得远程操作系统 。
4.逆向ARP(InverseARP)
  比较少见,一般存在于帧中继网络中(现在已经很少帧中继网络),用于实现IP和DLCI地址的映射。

七、ARP到底是链路层协议还是网络层协议
  协议到底所属哪一层,可以从应用/功能来考虑,也可以从层次/包封装来考虑。
  以ARP协议为例,它的功能最终是获取到MAC信息,服务于链路层,从这点考虑,ARP是链路层协议;
  但是从层次来看,ARP基于Ethernet协议,IP协议基于Ethernet协议,它们在Ethernet协议里面有独立的Type类型,前者是0x0806,后者是0x0800,既然ARP和IP协议"平起平坐",那么IP是网络层,ARP也属于网络层协议。
  基于功能来考虑,ARP是链路层协议;基于分层/包封装来考虑,ARP是网络层协议。(此方法对于ICMP协议同样管用)

参考:https://www.cnblogs.com/csguo/p/7527303.html
https://www.cnblogs.com/csguo/p/7542944.html
https://blog.csdn.net/treepapap/article/details/52293272

原文地址:https://www.cnblogs.com/Harriett-Lin/p/11371539.html

时间: 2024-10-17 20:06:11

计算机网络学习(3)ARP协议的相关文章

学习:ARP协议/数据包分析

ARP(Address Resolution Protocol)即地址解析协议, 用于实现从IP地址到MAC地址的映射,即实现通过目标IP找到对应的MAC地址. 在网络通信中,主机和主机通信的数据包需要依据OSI模型从上到下进行数据封装,当数据封装完整后,再向外发出.所以在局域网的通信中,不仅需要源目IP地址的封装,也需要源/目MAC的封装. 上层应用程序更多关心IP地址而不关心MAC地址,所以需要通过ARP协议来获知目的主机的MAC地址,完成数据封装. 问题:内网中当 主机A 发送消息给 主机

计算机网络基础:ARP协议 --- IP协议 --- ICMP + IGMP协议

ARP协议 ARP高速缓存:ARP把保存在高速缓存中的每一个映射地址项目都设置生存时间.凡超过生存时间的项目就从高速缓存中删除掉. ARP是解决同一局域网上的主机或路由器的IP地址和硬件地址的映射问题. IP协议 利用IP协议可以使这些性能各异的网络从用户看起来好像是一个统一的网络. ICMP协议 为了提高IP数据报交付成功的机会,在网际层用了网际控制报文协议ICMP. ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告. ICMP报文格式 ICMP协议的应用 PING PING用来测

ARP协议(1)什么是ARP协议

这是近期在看<TCP/IP详解>系列书总结出来的,之后会陆续把其他协议部分分享出来. 我尽量以简单易读.易懂的方式呈现出来,但是,由于文笔和水平有限,有些地方也许存在描述上的不足或繁琐或缺失,还请各位看官指出,我会尽量去弥补和更正. 这序列文章,首版是在公众平台发布,同时会同步到csdn(http://my.csdn.net/xiongxianhe),欢迎大家指正和交流. ARP协议,将分以下序列: 1.什么是ARP协议 2.ARP协议格式详解 3.ARP协议编程 4.ARP协议欺骗和攻击 5

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

转http://blog.csdn.net/goodboy1881/article/details/668556 —————————————————————————————————————————————————————— 把这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数据信息. 1.IP协议 IP协议是TCP/IP协议的核心,所有的TCP,UD

ICMP和arp协议以及tcp/ip学习

ICMP:http://blog.csdn.net/tigerjibo/article/details/7356936 ARP:http://blog.csdn.net/tigerjibo/article/details/7351992 IP分片:http://www.vants.org/?post=106 TSO/GSO linux内核源码剖析 udp: http://modernrobber.blog.163.com/blog/static/214636320074305183395/ ht

TCP/IP具体解释学习笔记——地址解析协议ARP

一 概述 我们知道,IP协议是用来在不同的物理网络之间数据传输的.要在不同的网络之间数据传输,至少须要将IP协议所用的地址转换成特定网络所使用的物理地址. 一般来说.就是将IPv4地址转换为mac地址.要想与一个特定的设备进行数据交换,光知道它的IP地址是不够的.还须要知道它的物理地址. 而地址解析协议(ARP)就是来完毕这个工作的,它能将IPv4地址转换为设备的硬件地址.须要注意的是.ARP仅仅能转换IPv4的地址.IPv6须要使用另外的协议进行转换. 另外须要说明的是,网络层和数据链路层地址

计算机网络(2)-----ARP协议

ARP协议(Address Resolution Protocol) 概念 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议. 划分 由于是IP协议使用了ARP协议,因此通常就把ARP协议划归网络层.但是ARP协议的用途是为了从网络层使用的IP地址解析出在数据链路层使用的硬件地址,因此,把ARP协议划归在数据链路层也是可以的. 高速缓存(ARP cache) 每一个主机都设有一个ARP高速缓存,里面有本局域网上的各

三LWIP学习笔记之ARP协议

一.ARP协议简介 ARP,全称 Address Resolution Protocol,译作地址解析协议,ARP 协议与底层网络接口密切相关.TCP/IP 标准分层结构中,把 ARP 划分为了网络层的重要组成部分. 当一个主机上的应用程序要向目标主机发送数据时,它只知道目标主机的 IP 地址,而在协议栈底层接口发送数据包时,需要将该 IP 地址转换为目标主机对应的 MAC 地址,这样才能在数据链路上选择正确的通道将数据包传送出去,在整个转换过程中发挥关键作用的就是 ARP 协议了. 在本章中将

TCP/IP学习20180709-数据链路层-arp协议

arp协议:address resolution protocol地址解析协议数据链路层,每个数据包都有MAC地址.主机是怎样根据对方主机的ip地址知道对方主机的mac地址呢?通过arp协议.主机里有ip-arp对应表.拿到ip就查对应表.查到了就用mac地址.查不到就向网络发arp协议广播包.收到这个广播包的所有主机都查自己的ip地址.如果该主机发现自己的ip地址符合,就把包含自己mac地址的arp包发给广播主机.广播主机拿到arp包后更新ip-arp对应表.然后用arp地址发送数据包. 原文