TCP/IP网络协议学习笔记三

来源:互联网 发布:紫藤花种子淘宝 编辑:程序博客网 时间:2024/06/03 15:56

ARP:地址解析协议

当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据 48 bit的以太网地址来确定目的接口的。设备驱动程序从不检查IP数据报中的目的I P地址。地址解析为这两种不同的地址形式提供映射:32bit的IP地址和数据链路层使用的任何类型的地址。

A R P为I P地址到对应的硬件地址之间提供动态映射。R A R P是被那些没有磁盘驱动器的系统使用(一般是无盘工作站或 X终端),它需要系统管理员进行手工设置。

1) 应用程序FTP客户端调用函数g e t h o s t b y n a m e把主机名(bsdi)转换成32 bit的IP地址。这个函数在D N S(域名系统)中称作解析器。
2) F T P客户端请求T C P用得到的I P地址建立连接。
3) T C P发送一个连接请求分段到远端的主机,即用上述 I P地址发送一份I P数据报(在第1 8章我们将讨论完成这个过程的细节) 。
4) 如果目的主机在本地网络上(如以太网、令牌环网或点对点链接的另一端) ,那么I P数据报可以直接送到目的主机上。如果目的主机在一个远程网络上,那么就通过 I P选路函数来确定位于本地网络上的下一站路由器地址,并让它转发 I P数据报。在这两种情况下,I P数据报都是被送到位于本地网络上的一台主机或路由器。
5) 假定是一个以太网,那么发送端主机必须把 32 bit的I P地址变换成48 bit的以太网地址。从逻辑I n t e r n e t地址到对应的物理硬件地址需要进行翻译。这就是 A R P的功能。A R P本来是用于广播网络的,有许多主机或路由器连在同一个网络上。
6) A R P发送一份称作A R P请求的以太网数据帧给以太网上的每个主机。这个过程称作广播。 A R P请求数据帧中包含目的主机的 I P地址(主机名为b s d i) ,其意思是“如果你是这个I P地址的拥有者,请回答你的硬件地址。 ”
7) 目的主机的A R P层收到这份广播报文后,识别出这是发送端在寻问它的 I P地址,于是发送一个A R P应答。这个A R P应答包含I P地址及对应的硬件地址。
8) 收到A R P应答后,使A R P进行请求—应答交换的I P数据报现在就可以传送了。
9) 发送I P数据报到目的主机。

点对点链路不使用A R P。当设置这些链路时(一般在引导过程进行) ,必须告知内核链路每一端的I P地址。像以太网地址这样的硬件地址并不涉及。
ARP高速缓存
A R P高效运行的关键是由于每个主机上都有一个 A R P高速缓存。这个高速缓存存放了最近I n t e r n e t地址到硬件地址之间的映射记录。

ARP的分组格式

以太网报头中的前两个字段是以太网的源地址和目的地址。目的地址为全 1的特殊地址是广播地址。电缆上的所有以太网接口都要接收广播的数据帧。
两个字节长的以太网帧类型表示后面数据的类型。对于 A R P请求或应答来说,该字段的值为0x0806。
形容词h a r d w a r e (硬件)和p r o t o c o l (协议)用来描述A R P分组中的各个字段。例如,一个A R P请求分组询问协议地址(这里是I P地址)对应的硬件地址(这里是以太网地址) 。
硬件类型字段表示硬件地址的类型。它的值为 1即表示以太网地址。协议类型字段表示要映射的协议地址类型。它的值为 0 x 0 8 0 0即表示I P地址。它的值与包含I P数据报的以太网数据帧中的类型字段的值相同 。
接下来的两个1字节的字段,硬件地址长度和协议地址长度分别指出硬件地址和协议地址的长度,以字节为单位。对于以太网上I P地址的A R P请求或应答来说,它们的值分别为6和4。
操作字段指出四种操作类型,它们是 A R P请求(值为1) 、A R P应答(值为2) 、R A R P请求(值为3)和R A R P应答(值为4) (我们在第5章讨论R A R P) 。这个字段必需的,因为A R P请求和A R P应答的帧类型字段值是相同的。
接下来的四个字段是发送端的硬件地址(在本例中是以太网地址) 、发送端的协议地址(I P地址) 、目的端的硬件地址和目的端的协议地址。注意,这里有一些重复信息:在以太网的数据帧报头中和A R P请求数据帧中都有发送端的硬件地址。
对于一个A R P请求来说,除目的端硬件地址外的所有其他的字段都有填充值。当系统收到一份目的端为本机的 A R P请求报文后,它就把硬件地址填进去,然后用两个目的端地址分别替换两个发送端地址,并把操作字段置为 2,最后把它发送回去。

ARP代理

如果A R P请求是从一个网络的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求,这个过程称作委托 A R P或A R P代理(Proxy ARP)。
当子网1 4 0 . 2 5 2 . 1(称作g e m i n i)上的其他主机有一份I P数据报要传给地址为1 4 0 . 2 5 2 . 1 . 2 9的s u n时,g e m i n i比较网络号(1 4 0 . 2 5 2)和子网号(1) ,因为它们都是相同的,因而在图中上面的以太网中发送I P地址1 4 0 . 2 5 2 . 1 . 2 9的A R P请求。路由器n e t b识别出该I P地址属于它的一个拔号主机,于是把它的以太网接口地址1 4 0 . 2 5 2 . 1作为硬件地址来回答。主机g e m i n i通过以太网发送I P数据报到n e t b,n e t b通过拨号S L I P链路把数据报转发到s u n。这个过程对于所有1 4 0 . 2 5 2 . 1子网上的主机来说都是透明的,主机s u n实际上是在路由器n e t b后面进行配置的。



免费ARP

免费ARP指的是主机发送ARP查找自己的IP地址,通常发生在系统引导器件进行接口配置的时候。
免费ARP主要有两个方面的应用:
1)一个主机可以通过它来确定另一个主机是否设置了相同的IP地址。
2)如果发送免费ARP的主机正好改变了硬件地址,那么这个分组就可以使其他主机告诉缓存中旧的硬件地址进行相应的更新。

在大多数的T C P / I P实现中,A R P是一个基础协议,但是它的运行对于应用程序或系统管理员来说一般是透明的。A R P高速缓存在它的运行过程中非常关键,我们可以用 a r p命令对高速缓存进行检查和操作。高速缓存中的每一项内容都有一个定时器,根据它来删除不完整和完整的表项。a r p命令可以显示和修改A R P高速缓存中的内容。


arp命令

命令及参数- a来显示A R P高速缓存中的所有内容。
超级用户可以用选项- d来删除A R P高速缓存中的某一项内容(这个命令格式可以在运行一些例子之前使用,以让我们看清楚A R P的交换过程) 。
另外,可以通过选项- s来增加高速缓存中的内容。这个参数需要主机名和以太网地址:对应于主机名的I P地址和以太网地址被增加到高速缓存中。新增加的内容是永久性的(比如,它没有超时值) ,除非在命令行的末尾附上关键字t e m p。
位于命令行末尾的关键字 p u b和- s选项一起,可以使系统起着主机 A R P代理的作用。系统将回答与主机名对应的 I P地址的A R P请求,并以指定的以太网地址作为应答。如果广播的地址是系统本身,那么系统就为指定的主机名起着委托 A R P代理的作用。


RARP:逆地址解析协议

无盘系统的RARP实现过程是从接口卡上读取唯一的硬件地址,然后发送一份RARP请求(一帧在网络上广播的数据),请求某个主机响应该无盘系统的IP地址(在RARP应答中)。

RARP分组格式

R A R P分组的格式与A R P分组基本一致 。它们之间主要的差别是 R A R P请求或应答的帧类型代码为0 x 8 0 3 5,而且R A R P请求的操作代码为3,应答操作代码为4。对应于A R P,R A R P请求以广播方式传送,而R A R P应答一般是单播( u n i c a s t )传送的。

RARP服务器的复杂性

1)内核一般不读取和分析存储着硬件地址到IP地址映射的磁盘文件,因此RARP服务器的功能由用户进程来提供,而不是作为内核的TCP/IP实现的一部分
2)RARP请求时作为一个特殊类型的以太网数据帧来传送的(帧类型字段值为0x8035),则RARP服务器必须能够发送和接收这种类型的以太网数据帧。
3)RARP请求时在硬件层上进行广播着(利用链路层),这意味着他们不经过路由器进行转发。因此为了让无盘系统在RARP服务器关机的状态下也能引导,通常一个网络上要提供多个RARP服务器,这不仅增加网络流量,同时增加以太网发生冲突的概率。



原创粉丝点击