一 概述

我们知道,IP协议是用来在不同的物理网络之间数据传输的。要在不同的网络之间数据传输,至少须要将IP协议所用的地址转换成特定网络所使用的物理地址。

一般来说。就是将IPv4地址转换为mac地址。要想与一个特定的设备进行数据交换,光知道它的IP地址是不够的。还须要知道它的物理地址。

而地址解析协议(ARP)就是来完毕这个工作的,它能将IPv4地址转换为设备的硬件地址。须要注意的是。ARP仅仅能转换IPv4的地址。IPv6须要使用另外的协议进行转换。

另外须要说明的是,网络层和数据链路层地址并非由同一个组织进行分配的。

对于硬件地址来说。是由生产它的厂家进行分配的。而且一旦生产出来,物理地址永远不会改变。

而IP地址是由使用者或者管理员分配的。而且是能够更改的。我们知道IP数据包是封装在数据链路层的帧里的。

当一个包括IP数据包得以太网帧数据在一个局域网内传输时。是通过48bit的以太网地址(硬件地址)来决定目的port的。

ARP提供动态的地址解析。就是说,解析的过程是自己主动的、自适应的,当物理地址改变(可是IP地址没变)的时候,比方更换网卡,ARP仍然可以正确的通过IP地址找到相应的网卡。而不须要进行额外的配置。
二 一个样例
当我们使用网络的时候。比方打开浏览器,浏览一个网页,我们使用的主机须要推断如何与我们感兴趣的站点server主机建立连接。第一个须要推断的就是server主机是处于本地还是非本地。换句话说。是在同一个局域网还是处于另外的网络。

假设处于同一个局域网。仅仅须要ARP协议就可以訪问。否则,须要通过路由器进行连接。

当两台主机处于同一网段,或者说处于同一局域网。那么用ARP能够直接进行訪问(direct delivery)。我们通过一个样例来说明直接訪问要经历哪些步骤。
比方我们在浏览器里输入http://10.0.0.1。将会发生下面步骤:
1.应用程序(浏览器)获取目的IP地址,这里是10.0.0.1。
2.应用程序请求TCP协议建立与10.0.0.1的连接
3.TCP发送连接请求给10.0.0.1。
4.我们这里如果10.0.0.1和本地主机处于同一局域网,因此请求连接数据能够直接发送而不用经过路由器。
5.这个时候,须要找到10.0.0.1相应的主机。就必须将该IP地址转换为相应的物理地址。这就是ARP的作用。ARP使用广播的方式数据传输,假设局域网不支持广播。那么须要用到更加复杂的协议,当然,这样的情况非常少见。
6.ARP给每一个连接在这个局域网的主机发送ARP请求数据。ARP请求数据里面包括目的IP地址,也就是10.0.0.1。该请求的意思是,假设你的IP地址是10.0.0.1,那么把你的mac地址发给我。

7.如上图所看到的,本地主机广播ARP请求给全部主机,仅仅有具有目的IP地址的主机会做出应答。应答数据中包含了自身的mac地址。

应答不再採用广播方式,而是单播给发送请求的主机。与此同一时候,全部收到ARP请求的主机,都能在请求数据中得到发送请求的主机的IP地址和相应的mac地址。他们会将其存在自己的缓存中,以供兴许使用。

8.收到应答后。TCP的连接请求信息如今就行发送了,由于如今可以找到目的主机在哪儿了。
9.发送数据至目的主机。
点对点链路(PPP)不使用ARP。在设置这些链路时,必须告知内核链路每一端的IP地址。因此像以太网这种硬件地址并不涉及。
三 ARP快速缓存
ARP高效执行的关键是因为每一个主机上都有一个ARP快速缓存。这个快速缓存存放了近期IP地址到硬件地址之间的映射记录。

快速缓存中每一项记录的生存时间一般位20分钟,開始时间从被创建时開始。

四 ARP帧格式

在以太网上解析IP地址时。ARP请求和应答分组的格式如上图所看到的。一開始的14字节是以太网头部,在上一章介绍数据链路层时讨论过。

剩余的部分是由ARP协议所定义的。ARP数据部分的前8个字节是通用的,后面的部分是特定的。这里是针对IP地址和以太网物理地址的转换。其实,除此之外,ARP还能够用于其它类型的网络。假设换了其它类型。这里的发送方和接收方的硬件地址和IP地址都要做出对应的更改。所以说这个部分是特定的,而前面的Hard Type字段到Op字段8个字节是通用的。不管转换什么样的网络类型,都是这8字节。

在以太网帧头部的两个部分各自是目的地址字段和源地址字段,在发送ARP请求时,目的地址字段要填充为全1,也就是广播地址。

类型或长度字段(Length/Type)为0x0806,表示这是ARP协议数据。

Hard Type字段表示硬件地址类型,值为1表示以太网地址。Prot Type表示要解析的协议地址类型,值为0x0800表示IPv4地址。Hard Size字段和Prot Size字段分别表示硬件地址和协议地址的长度,这里各自是6和4.相应的时mac地址6字节。IP地址4字节。Op字段指出4种操作类型。1表示ARP请求。2表示ARP应答,3表示RARP请求,4表示RARP应答。RARP是ARP的逆协议。如今已经非常少用到了。接下来的各自是发送端的硬件地址、协议地址,目的端的硬件地址、协议地址。

大概就是这样了。

五 ARP代理(Proxy ARP)
代理ARP就是通过使用一个主机(一般是一个特定配置的路由器),来作为指定的设备对还有一设备的ARP请求作出应答。 举个样例
PC1和PC2尽管属于不同的广播域。但它们处于同一网段中,因此PC1会向PC2发出ARP请求广播包。请求获得PC2的mac地址。因为路由器不会转发广播包,因此ARP请求仅仅能到达路由器,不能到达PC2。当在路由器上启用ARP代理后,路由器会查看ARP请求。发现IP地址172.16.20.100属于它连接的还有一个网络,因此路由器用自己的接口mac地址替换PC2的mac地址,向PC1发送了一个ARP应答。

PC1收到ARP应答后。会觉得PC2的mac地址就是00-00-0c-94-36-ab。不会感知ARP代理的存在。

正是因为这个原因,代理ARP用的不多,而且假设可能,尽可能避免使用它。

六 Gratuitous ARP 和地址冲突检測(ACD)
Gratuitous ARP的意思就是主机向自身IP地址发送ARP请求。这样做得目的有两个:
(1)这样能够让主机知道自身的IP地址有没有已经被其它主机占用。

显然,假设已经被其它主机占用的话。返回的mac地址和自身mac地址不一致。

(2)假设主机刚好更换了网卡,那么使用Gratuitous ARP就能让广播域中其它的主机更新正确的IP地址到mac地址映射。由于其它主机的ARP缓存中存储的可能是更换网卡之前的mac地址,因此须要更新。

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

  1. 【转】:TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute

    TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute 分类:            TCP/IP详解学习笔记计算机网络2006-04-20 18:147970人阅读评论(1)收 ...

  2. TCP/IP详解学习笔记-基本概念

    为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样 ...

  3. 基础才是王道——TCP/IP详解学习笔记 这位仁兄写得太好了

    TCP/IP详解学习笔记 这位仁兄写得太好了 TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/204448.as ...

  4. TCP/IP详解学习笔记(1)-基本概念

    为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样 ...

  5. TCP/IP详解学习笔记 这位仁兄写得太好了.

    http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样 ...

  6. TCP/IP详解学习笔记

    [TCP/IP详解学习笔记(1)基本概念] 为什么会有TCP/IP协议? 计算机型号多种多样,并且运行于不同操作系统.虽然电线把计算机连接到了一起,但是这些计算机无法"交流",所以 ...

  7. OSI七层协议模型、TCP/IP四层模型学习笔记

    1. OSI七层和TCP/IP四层的关系 1.1 OSI引入了服务.接口.协议.分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型. 1.2 OSI先有模型,后有协议,先有标准,后进行 ...

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

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

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

    ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数据信息. 1.IP协议 IP协议是TCP/IP协议的 ...

最新文章

  1. html根据字段制作曲线图,canvas制作简单的HTML图表,折线或者矩形统计(原创)
  2. Java 责任链模式
  3. html5圣诞贺卡,2016圣诞节手工贺卡图片大全
  4. delphi中DateTimePicker控件同时输入日期和时间
  5. linux系统安装tv软件下载,达龙云电脑apk下载
  6. 全球及中国防褥疮充气垫行业投资前景展望与“十四五”发展规划建议报告2021年版
  7. 精通移动端布局 - 概念篇 -
  8. 【论文解读】图像超分最新记录!南洋理工提出图神经网络嵌入新思路,复原效果惊艳...
  9. python3爬虫初探(四)之文件保存
  10. 第 5-2 课:线程池——ThreadPoolExecutor + 面试题
  11. 免费的React课程,通过构建聊天应用程序来提高您的React JS技能
  12. 《天天数学》连载04:一月四日
  13. (三)重构ResNet50以诊断COVID-19
  14. 荣耀Magic 2 3D感光版来了,和苹果Face ID系统有何不同?
  15. OpenCV-矩阵变形reshape
  16. Express框架学习笔记-模板引擎
  17. 推挽变换器matlab仿真,双驱动推挽DC-DC变换器方案分享之设计原理简析
  18. 计算机类专业必备的软件,拿来把你
  19. 实现树莓派模拟wifi进行打卡签到
  20. 计算机平面设计福建专科学校,2016年福建单招视觉传达设计专业的学校有哪些?...

热门文章

  1. 入门机器学习(四)--Logistic回归
  2. C++头文件和源文件,编译过程
  3. 连接oracle配置文件参数,Hibernate3 +Oracle10g 集群,hibernate配置文件中如何编写连接参数...
  4. php curl密码控件,检索通过curl传递的用户名,密码参数 - php
  5. 串的模式匹配(BF算法)
  6. Tour West Australia by Motorcycle
  7. CacheManager操作缓存
  8. mangTomany 自关联之个人感悟
  9. Bzoj 1926: [Sdoi2010]粟粟的书架(二分答案+乱搞+主席树)
  10. 查询屏幕中一个已知颜色的值