zoukankan      html  css  js  c++  java
  • 第四、五章_ARP RARP

    引言

    当一台主机将以太网数据帧发送到同一个局域网上的另一台主机时,是根据48bit的以太网地址来确定目的接口的,设备驱动程序从不检查IP数据报中的IP地址。

    ARP为IP地址和硬件地址之间提供动态映射,说是动态的,因为这个过程是自动完成的。

    RARP是被那些没有磁盘驱动器的系统使用的,它需要系统管理员进行手动设置。

    例子

    用一个例子解释ARP的运行过程


    敲入命令ftp bsdi

    1.     ftp客户端调用函数gethostbyname将主机名转换为32bit的IP地址。这个函数在DNS中被称为解析器。

    2.     ftp客户端用得到的IP地址建立TCP链接。

    3.     TCP发送一个连接请求分段到远端的主机,即用上述的IP地址发送IP数据报。

    4.     如果目的主机在本地网络上,那么IP数据报可以直接发送到目的主机上;如果目的主机在一个远程网络上,那么就通过IP选路函数来确定位于本地网络上的下一站路由器地址。

    5.     假定是一个以太网,那么发送端必须把32bit的IP地址变换成48bit的以太网地址。从逻辑Internet地址到对应的物理硬件地址需要进程翻译,这就是ARP的功能。

    6.     ARP发送一份ARP请求的以太网数据帧给以太网上的每个主机,该过程称为广播。其中,ARP请求数据帧中包含目的主机的IP地址,即如果你是这个IP地址的拥有者,请回答你的硬件地址。

    7.     目的主机的ARP层识别出这份广播是发送端在寻问它的硬件地址,于是发送一个ARP应答。

    8.     到ARP应答后,使ARP进行请求-应答交换的IP数据报现在就可以发送了。

    9.     发送IP数据报到目的地址。

    每一个网络接口都有一个48bit的硬件地址,在硬件层次上进行数据帧交换必须有正确的接口地址。但是知道主机的IP地址并不能发送一帧数据给主机。因为内核必须知道目的端的硬件地址才能发送数据,这也就是ARP的存在意义

    SLIP和PPP(点对点)链路不使用ARP。当设置这些链路时,需要告诉内核链路每一端的IP地址而不需要涉及硬件地址。

    ARP高速缓存

    每个主机上都有一个ARP高速缓存,用于存放最近Internet地址到硬件地址的映射记录。高速缓存中每一项的生存时间一般为20分钟,起始时间从被创建时开始算起(生存时间在再次使用后,重新更新为20分钟)。

    ARP分组格式

    ARP请求和应答帧格式

    对比第二章中以太网分装的帧格式发现,首部是一样的,后面的ARP请求/响应字段就是数据段。

    若以太网目的地址全1则是广播地址。

    在ARP请求/应答分组格式中有重复信息:在以太网首部和ARP请求/应答帧中都有发送端的硬件地址。

    对一个ARP请求来说,除目的端的硬件地址外其他都要填上。当主机收到一份目的IP地址为本机的ARP请求后,它就把自己的硬件地址填进去,然后将填进去的目的端地址替换两个发送端地址,将发送端地址替换目的地址,最后发送。

    对不存在主机的ARP请求

    若网络号和子网号对应的网络确实存在,但是主机号不存在,就会有多次ARP请求,大约75s后TCP连接请求才放弃。

    注意:直到ARP应答返回时,TCP报文段才可以被发送,因为这时才知道目的地的硬件地址。

    ARP高速缓存超时设置

    对完整的表项设置超时值为20min,对不完整的表项设置为3min。

    ARP代理

    如果ARP请求时从一个网络的主机发往另一个网络的和足迹,那么连接两个网络的路由器就可以回答这个ARP请求,该过程称为委托ARP或者ARP代理。这样可以欺骗发起ARP的发送端,认为路由器就是目的主机,而事实上目的主机在路由器的另一边。

    ARP代理也称ARP混合和ARP出租,这些名字来源于ARP代理的其他用途:通过两个物理网络的路由器可以相互隐藏物理网络,这种情况下两个物理网络之间可以使用想用的网络号,只要把中间的路由器设置成ARP代理以响应一个网络到另一个网络的ARP请求。

    免费ARP

    免费ARP指主机发送ARP查找自己的IP地址。

    免费ARP作用:

    1.     通过它来确定另一个主机是不是设定了相同的IP。若有ARP响应则说明有另外一个主机设定了相同的IP地址。

    2.     若发送免费ARP的主机正好改变了硬件地址(换网卡),那么免费ARP可以使其他主机高速缓存ARP中的旧的硬件地址进行更新。如果主机收到某个IP地址的ARP请求并且它已经在接收者的告诉缓存中,那么就要用ARP请求中的发送端的硬件地址对高速缓存中相应的内容进行更新。

    一个例子:通过发送含有备份硬件地址和故障服务器的IP地址的免费ARP请求,使得备份服务器可以顺利的接替故障服务器进行工作。这使得所有目的地为故障服务器的报文都被送到了备份服务器那里,客户程序不必关心原来的额服务器是否出了故障。

    RARP逆地址解析协议

    引言

    具有本地磁盘的系统引导时,一般从磁盘上的配置文件中读取IP地址。但无盘机如X终端和无盘工作站则需要采用其他方式获得IP地址。

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

    RARP请求以广播方式传送,RARP应答以单播方式传送。RARP的应答中包含发送端的IP地址,这样发送端就知道了自己的IP地址当无盘系统从RARP应答中收到它的IP地址后,它将发送TFTP请求来读取引导映像

    RARP服务器设计

    提供一个ARP服务器很简单,通常是TCP/IP在内核中实现的一部分。由于内核知道IP地址和硬件地址,因此当它收到一个询问IP地址的ARP请求时,只需用相应的硬件地址来提供应答就可以了。

    RARP服务器要为多个主机(网络上所有的无盘系统)提供硬件地址到IP地址的映射。该映射包含在一个磁盘文件中。由于内核一般不读取和分析磁盘文件,因此RARP服务器的功能就由用户进程来提供而不是作为内核TCP/IP实现的一部分。

    RARP请求是在硬件层进行广播的,它不经过路由器转发。通常在一个网络上要提供多个RARP服务器,为了让无盘系统在RARP服务器关机的状态也能引导。

    每个RARP服务器对每个RARP请求都要发送RARP应答。


  • 相关阅读:
    [saiku] 系统登录成功后查询Cubes
    216. Combination Sum III
    215. Kth Largest Element in an Array
    214. Shortest Palindrome
    213. House Robber II
    212. Word Search II
    211. Add and Search Word
    210. Course Schedule II
    分硬币问题
    开始学习Python
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3073201.html
Copyright © 2011-2022 走看看