网络技术-ARP协议

为什么我们不直接使用硬件地址进行通信?
由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事。
连接到因特网的主机都拥有统一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为调用 ARP 来寻找某个路由器或主机的硬件地址都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。  
功能:从IP地址到物理地址的映射
高速缓存技术:
在主机内开辟一片专用内存空间,用来存放局域网上所有的主机和路由器的IP地址到物理地址的映射表。
当主机1向主机2发送报文时,它首先检查高速缓存中有没有主机2的IP地址,如果有,就查找出对应的物理地址,将其写入到MAC帧,然后通过局域网发送出去。
如果没有主机2的IP地址,主机1自动运行ARP去查找主机2的物理地址。

ARP工作原理/步骤

1)主机 A 上的 ARP 协议进程在本局域网上发送一个ARP广播帧,该帧的主要内容是:“我的IP地址是202.197.12.1,物理地址是E1(08-00-2B-00-EE-0A),我想知道IP地址为202.197.12.2的主机的硬件地址。”

2)本网络上所有计算机都收到广播帧,并检查自己的 IP 地址。

3)主机 B 发现它与自己的IP地址相同,于是就向主机 A发送一个ARP响应报文,该报文的主要内容是:“我的IP地址是202.197.12.2,物理地址是E2(00-00-2C-00-44-0D)”。

4)主机 A 收到主机 B 的 ARP 响应报文后,就在其高速缓存中写入主机 B 的 IP 地址到硬件地址的映射。当主机 A向主机 B 发送数据时,就可以直接从高速缓存中找到主机 B 的 IP 地址到物理地址的映射。

提高 ARP的效率的措施
1)采用高速缓存技术。
2)在源端主机发送的ARP请求报文(ARP广播帧)中加入它自己的地址映射。
3)源主机在局域网上广播它自己的地址映射时,网络上所有主机都应将它存放到它们各自的高速缓存中。
4)新计算机入网时,要主动广播地址映射。

应当注意的问题
ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题
路由器不转发以太网广播帧。
不在同一局域网:
        如果所要找的主机和源主机不在同一个局域网上:
  通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址
  把分组发送给这个路由器,让这个路由器把分组转发给下一个网络
  剩下的工作就由下一个网络来做

 不在同一局域网上的地址解析:

总结:ARP地址解析过程需记住8个字:广播请求、单播响应

如果需要进一步分析ARP地址解析的过程,就需要用wires hark抓取数据包来进行分析。

原文地址:https://www.cnblogs.com/dragon2018/p/8886444.html

时间: 2024-10-29 06:07:40

网络技术-ARP协议的相关文章

【网络】ARP协议

其实在网络传输中,分为不同的层次,然后不同的层分类了不同的协议,我们来简单看一下协议的分类图: 今天我来讲解一下APR协议: 什么是ARP协议: 对于APR协议,我们首先需要了解网络IP的概念,在网络层中,IP是网络层的唯一标识,但是对于我们寻找到网络局域后进行通信的具体主机是哪一台,也就是确定具体的接收方主机,我们需要确定双方的MAC帧,也就是物理地址,物理地址才能够真正确定双方的具体对象,IP是针对于网络层而言的唯一性.所以为了避免发送端不知道接收端的MAC地址,所以就出现了ARP协议. A

深入理解Linux网络技术内幕——协议处理函数

网络帧在进入网络层时,需要区分不同的网络协议进行处理,这就需要涉及协议处理函数. 首先我们从驱动接收到一个数据帧,分析数据帧在协议栈中自下而上的传输流程. 设备驱动程序在接收到一个数据帧时,会将其保存在一个sk_buff缓冲区数据结构,并对其进行初始化. struct sk_buff { ...... __be16 protocol:16; ...... } 在这个缓冲区结构体中,有一个protocol字段,用于标识网络层的协议. 我们知道网络帧在设备驱动程序中处理后,设备驱动程序会调用neti

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地址发送数据包. 原文

软件定义网络基础---NETCONF协议

netconf协议最早被作为网管协议被提出来的,与SNMP网管协议相比较:SNMP的优势在于网络设备的监测,在大规模网管应用中有很大不足,正是针对这种不足之处,提出了NETCONF协议 一:NETCONF协议 NETCONF协议虽然是多个SDN控制支持的南向协议,但是他无法指导交换机进行数据转发,它与OF-Config OVSDB协议类似,是一种网络设备的配置管理协议 (一)功能 NETCONF是新一代网管协议:网络配置协议NETCONF(Network Configuration Protoc

网络技术教程笔记(12)生成树协议

局域网技术 局域网技术 生成树协议 1.冗余的意义 单点故障:如左图,网段A与网段B之间只有一条链路和交换机连接,一旦网线出现故障,那么网段A与网段B就无法进行直接连接. 那么如何避免单点故障,如右图,在网段A和网段B之间再添加一条链路和一台交换机就能有效的避免单点故障.这就是冗余的网络设计. 要实现冗余就要添加额外的链路和设备,这就会导致投入的成本偏高.而网络设备的故障率要远远低于网络线路的故障率. 因此,可以使用上图的方式来避免单点故障的问题和额外成本的问题. 2.交换环路所带来的危害 1.

Winpcap网络编程八之Winpcap实战,ARP协议获得MAC表及主机通信

大家好,本次我们需要完成的任务是: 完成两台主机之间的数据通信(数据链路层) 仿真ARP协议获得网段内主机的MAC表 使用帧完成两台主机的通信(Hello! I'm -) 声明:本博客不针对伸手党,求代码?求源码?求完整程序?得了,既然你对自己的学习这么不负责,那我也没必要写出来了,本文章的目的是为大家的Winpcap编程带来一定的借鉴,希望对大家的课程设计有一定的帮助.总之,我相信,大家看了前几篇 Winpcap 编程基础知识,再加上这篇文章的讲解,一步一步做下来,相信你能成功的. P.S.

9、网络知识(路由交换和ARP协议)+配置单网卡多ip和配置默认路由

网络知识详解 提问:网络到底是什么?我们在电缆中传输的都是电信号(高电压或者是低电压),所以高电压就是1,低电压就是0,所以规定一定的时间传输固定的高低电压来当做是接收的数据我们所谓的10Mbps:每秒中可以传输10M个bit所以别人说你的是4M的带宽,指的就是4Mbps,要除以8才是实际的速率那就是4Mbps=4/8MBs=0.5MBs=0.51024KBs=(41024)Kbps=512KB/s的下载速率我们平时说的下载速度就是以KB/s为单位的1KB/S=8Kbps 512KB/S=8K*

【网络基础】地址解析协议(ARP协议)简介

地址解析协议: 即ARP协议,是根据IP地址获取物理地址的一个TCP/IP协议 功能: 主机将ARP请求广播到网络上的所有主机,并接收返回消息,确定目标IP地址的物理地址,同时将IP地址和硬件地址存入本机ARP缓存中,下次请求时直接查询ARP缓存. 工作原理: 我们以主机A(209.0.0.5)向主机B(209.0.0.6)发送数据为例. 1.当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址. 2.如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了

【网络协议】IP协议、ARP协议、RARP协议

IP数据报 IP是TCP/IP协议族中最核心的协议,全部的TCP.UDP.ICMP.IGMP数据都以IP数据报的格式传输.IP仅提供尽力而为的传输服务.假设发生某种错误.IP会丢失该数据.然后发送ICMP消息给信源端.另外.IP数据报能够不按发送顺序接受. IP数据报的格式例如以下: 前20字节和紧接其后的选项部分是IP数据报的首部,前20个字节是固定的,选项可有可无.首部的每一行是一个32位字的单位,最高位在左边,为0bit.最低位在右边.为31bit. 4字节的32bit值依照下面次序传输: