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

一 概述

我们知道,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地址,因此须要更新。

时间: 2024-10-13 21:56:15

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

TCP/IP详解学习笔记--UDP协议

UDP协议基本介绍 1.基本概念 UDP是一个简单的面向数据包的运输层协议:进程的每一个输出操作都正好产生一个UDP数据报,并组装成一个待发送的IP数据报,与流字符协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数据报没有联系,UDP提供不可靠的服务,它的数据报格式如下图所示 UDP数据报 IP首部 UDP首部 UDP数据 2.UDP首部 16位源端口号 16位目的端口号 16位UDP长度 16位UDP校验和 数据 数据 端口号表示发送进程和接收进程,TCP端口号与UDP端口号是相

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

TCP的坚持定时器 1.基本概念 TCP的接收方指名希望从发送方接收的数据字节(窗体大小)来进行流量控制,假设窗体大小为0.那么放送方就会阻止发送数据,直到接收方发来一个已跟新窗体大小的ACK为止,那么假设接收方发送的这个ACK中途丢失了呢(这样的可能性是有的)?此时发送方收不到信息,就默认窗体大小还为0,那它就继续堵塞在那,这样就造成了死锁. 那么怎样解决此类问题呢,解决方式就是我此片博文的题目.TCP的坚持定时器.为了防止上述死锁的发生.TCP的发送方使用了一个坚持定时器.来周期性的向接收方

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

1.TCP的交互数据流 (1)基本概念 所谓交互数据流,其对TCP而言,就是他们所产生的大多数的TCP报文段中所包括的数据不超过10个字节.比如聊天等telnet的软件的TCP数据流就属于TCP交互数据流 (2)经受时延的确认 TCP收到数据时并不会立即发送数据.相反它会推迟数据的发送,以便让ack和该方向要发送的数据一起发送(搭个便车.不然ack就得自己自己组成一个数据段发送,这样有可能造成网络发生拥塞),可是假设此方向一直没数据发送,那么ack就得一直等下去?当然不会,系统会给其定一个最长等

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

TCP/IP详解学习笔记   这位仁兄写得太好了 TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP详解学习笔记(13)-TCP坚持定时器,TCP保活定时器 TCP/IP详解学习笔记(12)-TCP的超时与重传TCP/IP详解学习笔记(11)-TCP交互数据流,成块数据流 TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着

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

TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节 1.静态IP选路 1.1.一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据包的IP地址来选择路由.这里就不重复了.首先来看看一个简单的系统路由表. Destination     Gateway         Genmask         Flags Metric Ref    Use Iface192.168.11.0    *               255.

TCP/IP详解学习笔记

TCP/IP详解学习笔记(1)-基本概念 TCP/IP详解学习笔记(2)-数据链路层 TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议 TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节 TCP/IP详解学习笔记(6)-UDP协议 TCP/IP详解学习笔记(7)-广播和多播,IGMP协议 TCP/IP详解学习笔记(8)-DNS域名系统 TCP/IP详解学习笔记(9)-TCP协议概述 TCP

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

1. OSI七层和TCP/IP四层的关系 1.1 OSI引入了服务.接口.协议.分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型. 1.2 OSI先有模型,后有协议,先有标准,后进行实践:而TCP/IP则相反,先有协议和应用再提出了模型,且是参照的OSI模型. 1.3 OSI是一种理论下的模型,而TCP/IP已被广泛使用,成为网络互联事实上的标准. TCP:transmission control protocol 传输控制协议 UDP:user data protocol 用

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

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

把这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数据信息. 1.IP协议 IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输.要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制--这被认为是上层协议--TCP或UDP要做的事情.所以这也就出现了TCP是一个可靠的协议