一 概述

我们知道,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具体解释学习笔记——数据链路层(2)

    五 Wireless LANs(Wi-Fi) 现在很流行的一种接入互联网的方式就是Wi-Fi了.我们用的ipad.手机.笔记本电脑等等都能够用这样的方式接入互联网,很方便灵活.一个典型的Wi-Fi网络 ...

  2. TCP/IP具体解释学习笔记--TCP的超时与重传

    1.基本概念 TCP之所以能够安全的将数据在传输中的安全性,是因为它每次给对方发送数据,都会等待对方给个确认,当长时间收不到这个确认,发送端就会重发这个数据. 2.超时时间的測量 要測超时时间,TCP ...

  3. TCP/IP具体解释学习笔记--TCP数据流

    1.TCP的交互数据流 (1)基本概念 所谓交互数据流,其对TCP而言,就是他们所产生的大多数的TCP报文段中所包括的数据不超过10个字节.比如聊天等telnet的软件的TCP数据流就属于TCP交互数 ...

  4. TCP/IP具体解释学习笔记--TCP的坚持和保活定时器

    TCP的坚持定时器 1.基本概念 TCP的接收方指名希望从发送方接收的数据字节(窗体大小)来进行流量控制,假设窗体大小为0.那么放送方就会阻止发送数据,直到接收方发来一个已跟新窗体大小的ACK为止,那 ...

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

      TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣 ...

  6. TCP/IP详解学习笔记 这位仁兄写得太好了.(转载)

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

  7. 【转】TCP/IP详解学习笔记(一)

      TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP详解学习笔记(13)-T ...

  8. TCP/IP详解学习笔记- 概述

    TCP/IP详解学习笔记(1)-- 概述1.TCP/IP的分层结构      网络协议通常分不同层次进行开发,每一层分别负责不同的同信功能.TCP/IP通常被认为是一个四层协议系统.      如图所 ...

  9. 【转】TCP/IP详解学习笔记(二)

    TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节 1.静态IP选路 1.1.一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据 ...

随机推荐

  1. Django+Nginx+uwsgi搭建自己的博客(七)

    上一篇博客中介绍了Blogs App的部分后端功能的实现,在这篇博客中,将继续为大家介绍Blogs App中前端功能的实现. 首先来看发布博客功能的前端页面.在blogs/templates/blog ...

  2. WebApi使用JWT认证(二)

    这是第二部:实现NetCore上的WebApi使用JWT认证 1.NetCore新建一个WebApi的项目 2.打开AppSettings.json,添加Jwt的信息,这里为了演示而已 { " ...

  3. 变量的解构赋值--ES6

    1. 数组的解构赋值 基本用法 let [a, b, c] = [1, 2, 3]; let [a,,c] = [1,2,3]; let [a,...b] = [1,2,3]; // a=1; b=[ ...

  4. 【BZOJ 2006】2006: [NOI2010]超级钢琴(RMQ+优先队列)

    2006: [NOI2010]超级钢琴 Time Limit: 20 Sec  Memory Limit: 552 MBSubmit: 2792  Solved: 1388 Description 小 ...

  5. [JZYZOJ 1288][洛谷 1005] NOIP2007 矩阵取数 dp 高精度

    https://www.luogu.org/problem/show?pid=1005   dp好想,高精度练手题,有点不舒服的是前后取数位置的计算,代码量太少才会写题这么慢,noip之前虽然重点放在 ...

  6. 数位dp小结以及模板

    这里是网址 别人的高一啊QAQ.... 嗯一般记忆化搜索是比递推好写的所以我写的都是dfs嗯......(因为我找不到规律啊摔,还是太菜.....) 显然这个东西的条件是非常的有套路..但是不管怎么样 ...

  7. bzoj 1579: [Usaco2009 Feb]Revamping Trails 道路升级 -- 分层图最短路

    1579: [Usaco2009 Feb]Revamping Trails 道路升级 Time Limit: 10 Sec  Memory Limit: 64 MB Description 每天,农夫 ...

  8. Android ConstraintLayout约束控件链接整理

    Android新特性介绍,ConstraintLayout完全解析 探索Android ConstraintLayout布局 了解使用Android ConstraintLayout

  9. CSS的flex布局(转载)

    我们之前已经学过一些布局模型,比如说浮动,绝对定位等等,但是这些布局方式一是不够简洁,而是使用的范围确实是太窄了. flex模型拥有比较多的属性,来设置多样的布局方式,接下来我们就详细介绍各种属性对布 ...

  10. SCOJ 4429: frog's dice 最大流

    4429: frog's dice 题目连接: http://acm.scu.edu.cn/soj/problem.action?id=4429 Description frog has many d ...