Download presentation
Presentation is loading. Please wait.
1
第三章 ARP与RARP
2
引言 我们使用TCP/IP进行通信,从高层来看使用的是IP地址作为源/目的地的标识 IP数据包的传输是通过物理网络来进行的
物理网络有它自己的地址机制,称为物理地址。 物理网络是通过物理地址来发送和接收数据的。设备驱动程序从不检查I P数据报中的目的I P地址 于是,引出一个问题: 由于物理网络并不识别IP地址,那么它把IP数据包发给谁呢? 这里就有一个IP地址和物理地址的映射问题。只要能找到IP地址对应的物理地址,IP数据包在物理网络传输中的寻址问题就解决了。
3
Ethernet Address 以太网是我们常用的网络,以此为例: 每个以太网接口都有一个唯一的48位的地址(也叫做硬件地址、MAC地址)
Example: C0:B3:44:17:21:17 前24位标识网络接口卡的厂商,不同厂商生产的标识不同,后24位是由厂商指定的网络接口卡序列号 分配给厂商的地址是由某机构统一分配的,保证唯一。 广播地址:所有比特位都是1 (11:11:11:11:11:11?,X,FF:FF:)
4
Ethernet Addressing Preamble Destination Address Source Address Msg. Type DATA CRC 8 bytes 6 6 2 0-1500 4 先看一下Ethernet 的数据帧,虽然不同标准帧的格式稍有区别,但其中都有一个目的地址,标识此帧数据希望由谁来接收。 但是呢,以太网是一种广播网络,连接在网络中的主机可以收到网络上发送的所有数据。虽然都收到,但主机会检查数据帧中的目的地址。如果目的地址和自己接口的地址不符,同时目的地址也不是广播地址,那么就会丢弃这个数据。
5
IP数据包在以太网上的传输 课本例子P29,Figure4.1 构造一个IP数据包,设好目的IP地址P4 交给网卡处理,指定发往M4 网卡将数据包封装在数据帧中的数据区中,并将数据帧的目的地址设置为M4,然后发送出去 以太网的广播特性,每台主机都能收到这个数据帧 H4收到后,通过比较目的地址,发现该帧是发给自己的,就将帧的数据区提取出来,交给上层协议处理。 结论:IP协议在发送数据时必须知道通过哪个MAC地址才能到达目的IP地址,就是说,IP协议中有一张表,记录了目的IP地址到MAC地址的映射。 convert the <protocol type, target protocol address> pair to a 48bit Ethernet address
6
映射表建立的方法 人工建立 自动建立 利用了以太网的广播特性,让主机互相知道对方的IP地址和MAC地址。这就是ARP协议采用的方法
Address Resolution
7
ARP 地址解析协议(Address Resolution Protocol)是需要发送报文的主机在知道目的IP却不知道目的物理地址的时候使用的 ARP是一个广播协议——网络上的每个主机都能收到ARP请求 各主机根据其IP地址检查ARP请求——只有符合的那个进行应答(当然,想搞破坏的话,其它主机也可以应答进行欺骗,这就涉及到一些安全方面的课题了)
8
ARP conversation HEY - Everyone please listen!
Will please send me his/her Ethernet address? not me Hi Green! I’m , and my Ethernet address is 87:A2:15:35:02:C3
9
ARP (cont.) ARP不需要每发送一个IP数据包都执行——它可以用缓存来记住IP地址和物理地址的对应关系:<IP地址,物理地址,更新时间>。(缓存的有效期大约10分钟左右吧) 接收到ARP请求的主机也可以根据请求中的源IP地址和源物理地址更新自己的缓存。
10
网络接口层简介 以太网的帧格式 Internet 封裝:網際層封包與 Ethernet 訊框包裝 Type 0800 :IP 封包
Type 0806:ARP 封包 Type 8035:RARP 封包
11
ARP数据包格式 struct arp { u_short ar_hwtype; /* hardware type */
u_short ar_prtype; /* protocol type */ u_char ar_hwlen; /* hardware address length */ u_char ar_prlen; /* protocol address length */ u_short ar_op; /* ARP operation (see list above) */ u_char ar_addrs[1]; /* sender and target hw & proto addrs */ }; #define SHA(p) (&p->ar_addrs[0]) #define SPA(p) (&p->ar_addrs[p->ar_hwlen]) #define THA(p) (&p->ar_addrs[p->ar_hwlen + p->ar_prlen]) #define TPA(p) (&p->ar_addrs[(p->ar_hwlen*2) + p->ar_prlen]) Notation --- S:source, T:Target; H:Hardware, P:Protocol; A:Address Ethernet 传输层,即以太网头部 注意:是按顺序的) 48.bit: 目的方的以太网地址 48.bit: 发送方的以太网地址 16.bit: 协议类型 = ether_type$ADDRESS_RESOLUTION Ethernet ARP数据包内的数据:
12
ARP软件的功能需求 功能需求:将上层的IP地址与底层的物理地址进行绑定(binding) ARP软件属于网络接口层。
13
理论上的结构 ARP软件可以划分为3个部分:输出模块、输入模块和高速缓存管理模块。
输出模块:给网络接口软件返回IP地址到物理地址的绑定(映射) 输入模块:处理来自网络的ARP分组,包括请求和响应。 高速缓存管理模块:实现高速缓存替换策略,删除到达规定时限的表项。
14
设计方案举例 单一的高速缓存 VS 每个网络接口一个缓存(对连接多网络的设备有影响) 全局替换策略VS本地替换策略
前者可以动态的跟随网络负载的变化;后者可以保持接口间的独立性 高速缓存的超时与删除(寿命字段) 分组以多队列的形式等待发送。ARP缓存中的每个表项都有一个输出分组队列。 互斥访问:调用者完成VS过程中设置
15
ARP回顾 当某主机要向以太网中另一台主机发送I P数据时,它首先根据目的主机的I P地址在A R P高速缓存中查询相应的以太网地址, A R P高速缓存是主机维护的一个I P地址到相应以太网地址的映射表。 如果查到匹配的结点,则相应的以太网地址被写入以太网帧首部,数据报被加入到输出队列等候发送。 如果查询失败, A R P会先保留待发送的I P数据报,然后广播一个询问目的主机硬件地址的A R P报文,等收到回答后再将I P数据报发送出去。
16
ARP结论 在大多数的T C P / I P实现中,A R P是一个基础协议,但是它的运行对于应用程序或系统管理员来说一般是透明的
a r p命令可以显示和修改A R P高速缓存中的内容 课本P171,ARP在Windows下的工作过程
17
反向地址解析协议RARP 给定物理地址,去查找IP地址的过程就称为反向地址解析Reverse Address Resolution
反向地址解析是无盘工作战启动的时候需要的 需要通过TCP/IP从远程服务器获取启动映象文件来启动;但启动前却无IP地址
18
RARP conversation HEY - Everyone please listen!
My Ethernet address is 22:BC:66:17:01:75. Does anyone know my IP address ? not me Hi Green! Your IP address is
Similar presentations