1第2章互联网基础协议体系2.1ARP协议和RARP协议2.2ICMP协议2.3多播和IGMP协议2.4网络地址转换2.5因特网路由选择协议2引言IP编址是为主机和路由器分配高层协议地址。IP地址是虚拟的,因为它是由软件维护的。局域网和广域网硬件都不理解IP地址前缀与网络的关系以及IP地址后缀与特殊计算机的关系。更重要的是,在物理网络之间传输的帧必须含有目标的硬件地址。因此,在协议软件向物理网络发送数据包之前,软件必须把目标计算机IP地址解析成对应的硬件地址。3知识点•地址解析概念•工作原理•协议格式•ARP实际优化方法4•理解ARP、RARP在TCP/IP体系中的作用和地位•理解ARP、RARP的工作技术思路•了解ARP、RARP的工作主要过程•了解ARP实际优化方法要求5•地址解析(AddressResolution):从计算机的协议地址到对应的硬件地址的转换。因此,地址解析即是将协议地址解析为正确的硬件地址的过程。注意:地址解析是在网络本地进行的。只有两台计算机同时连接在同一物理网络上时,一台计算机才能解析另一台计算机的地址。6N1N2N31.当主机A的应用程序向主机B发送数据时,……2.当主机A的应用程序向主机F发送数据时,……R1R2ABCDEF7地址解析技术•查表法(Tablelookup):地址绑定或地址映射被存储在内存的表中,软件在需要解析地址时查找这个表(数据结构)。表物理地址IP地址02-60-8C-01-02-03197.15.22.200-00-A2-05-09-89197.15.22.309-00-20-67-92-89197.15.22.4该方法的主要优点就是它的通用性——一个表能保存特定网络的任意一组计算机的地址绑定信息,特别是一个协议地址可以映射到一个任意的硬件地址。而且,用查找表算法进行地址解析易于理解,也容易编程。该方法通常用于广域网。每个物理网络使用一个单独的地址绑定表,因此表中的所有IP地址都有相同的前缀。8•封闭式计算法(Close-formcomputation):分配给计算机的协议地址被仔细选择,以便可以用基本的布尔运算和算术操作计算出计算机的硬件地址。如:动态配置网络号为220.123.5.0/24的网络时,当计算机加入到这个网络中时,分配给第一台主机的IP地址为220.123.5.1,硬件地址为1。分配给第二台主机的IP地址为220.123.5.2,硬件地址为2,依此类推:220.123.5.101,其对应的硬件地址为101。如果已知网络中的任意计算机的IP地址,则仅使用一个布尔“与”操作就可以计算出计算机的硬件地址。硬件地址=IP地址&0xff可见,closed-form解析常常用在动态编址的网络中。因为,使用该方法,其程序计算量小,计算效率高,无需维护任何数值表。9•报文交换法(Messageexchange):计算机通过在网络中交换消息来解析地址。一台计算机发送请求地址解析的消息,另一台计算机返回一个含有被请求消息的应答。帧头ARP请求报文:你的硬件地址是什么?帧头ARP应答报文:这就是我的硬件地址该方法通常用于静态编址的LAN硬件设备上。方案1:网络中包含一个或多个服务器。这些服务器的任务就是回答地址解析的请求。方案2:不需要专门的地址解析服务器。相反,网上的每台计算机都要参与地址的解析,并负责应答对本机地址的解析请求。当某台计算机需要解析一个地址时,它向全网广播它的请求。所有机器都收到这个请求,并检查请求解析的地址,如果请求解析的地址与自己的地址相同,则做出响应。主要优点:集中式处理。由于几个服务器负责处理网络的所有地址解析任务,使得地址解析在配置、控制、管理上都比较容易主要优点:分布式处理。地址解析服务器相对较贵,除了附加硬件(如额外增加的内存)的费用外,服务器本身的维护费用也很大。另外,在大型且繁忙的网络中,地址解析服务器会成为瓶颈。因此,要是每台计算机都能解析它自己的地址,就可以完全甩掉服务器了。10三种地址解析方法的比较:查表法(T)、封闭式计算法(C)和动态报文交换法(D)特点解析方法类别可用于任何硬件地址T地址改变会影响所有主机T协议地址独立于硬件地址T,D硬件地址必须小于协议地址C由硬件地址确定协议地址C要求硬件广播D会给网络增加业务量D以最小延迟产生解析结果T,C实现比较困难D11地址解析协议(ARP)ARP标准定义了两种基本的消息类型:•ARP请求ARP请求被放入一个硬件帧中,以广播的方式发送,网络上的所有计算机都能收到这个请求,收到请求的计算机检查自己的IP地址,如果请求中的IP地址正是自己的,则它发送一个应答。12•ARP应答当一台计算机返回一个ARP应答时,并不采用广播的方式,相反,应答被放到帧中,并发送给提出请求的计算机。我听到广播了,我就是。这是我的以太网地址我需要172.16.3.2的以太网地址IP:172.16.3.2=???IP:172.16.3.2Ethernet:0800.0020.1111172.16.3.1172.16.3.2AB13ARP消息格式硬件类型协议类型硬件地址长度协议地址长度操作发送方硬件地址(前4字节)发送方硬件地址(后2字节)发送方IP地址(前2字节)发送方IP地址(后2字节)目标硬件地址(前2字节)目标硬件地址(后4字节)目标IP地址(4字节)指明发送方想知道的硬件接口类型;对于以太网,该类型的值为“1”。指明了发送方提供的高层协议地址类型;对于IP地址,这个值为0806指明是ARP请求(1)、ARP(2)应答083124为了提高ARP的通用性,设计者为协议地址和硬件地址引入了一个地址长度字段。因而,ARP并不局限于IP地址或指定的物理地址。实际上ARP的通用性并没有充分使用,大多数ARP实现都是针对IP地址和以太网地址的绑定。14ARP请求的发送如果发送者希望把数据发送到某个IP地址:第一步:ARP模块试图在ARP缓存中找到地址。如果它找到了匹配对,它会把对应的48位物理地址返回给调用者(设备驱动程序),然后它就可以传输报文了。第二步:如果ARP模块不能在它的表中找到匹配的地址对,则它将丢弃这个报文(假定更高级的协议会传输它)并生成一个ARP请求网络广播。第三步:将ARP请求报文封装到硬件帧中传输出去。15接收者的MAC地址和IP地址ARP请求发送者的MAC地址和IP地址02-60-8C-01-02-03197.15.22.33197.15.22.126帧头接收者的MAC地址和IP地址ARP请求发送者的MAC地址和IP地址02-60-8C-01-02-03197.15.22.33CRCARP帧ARP报文的封装FF-FF-FF-FF-FF-FF02-60-8C-01-02-03806完整的ARP报文目的地址源地址帧类型帧中的数据197.15.22.126注意:由于ARP请求或应答的数据帧长都是28字节,算上18字节的以太网帧头和帧尾,因此,每一帧都必须加入填充字符18字节以达到以太网的最小长度要求:64字节。MAC用0填充MAC用0填充16发送数据一旦发出ARP请求的发送者接收到ARP应答,它将MAC地址从报头中提取出来,更新自己的ARP表。现在设备已经得到了所需要的信息,它可以利用目的MAC地址和目的IP地址为要发送的数据编址接收者的MAC地址和IP地址08-00-02-89-90-80197.15.22.126数据发送者的MAC地址和IP地址02-60-8C-01-02-03197.15.22.33IP数据报值得注意的是:这种从IP地址到硬件地址的解析是自动进行的,主机的用户对这种解析过程是不知道。17ARP缓存尽管交换报文的方法可以用来绑定地址,但每一次绑定要发送一个报文的做法效率很低。为了减少网络通信量,ARP软件应能提取并保存响应重的信息,以便用于以后的分组传输。事实上,软件并不把这些绑定信息放在永久存储器中,也不会永久保存它们。ARP的实际做法是在内存中维护一个小的绑定表——ARP高速缓存(cash)来管理。当一个响应来到时,就要替换表中的某个项。当表已满或某一项长期(如20分钟)未被更新时,就删除表中最老的那个项。当ARP要执行地址绑定时,它会先在高速缓存中搜索。如果需要的绑定已在其中,ARP就无需再传送一个请求。如果所需绑定不在,则广播一个请求并等待响应,然后更新高速缓存,用所得绑定信息继续工作。要么是接收方才入网,要么是发送方刚刚加电,其高速缓存还是空的。18ARP优化当计算机应答一个ARP请求时,计算机会从到来的请求中,抽取发送者的地址绑定,加入到自己的缓存中备用。理由:1.大多数计算机通信总是涉及双向通信业务——如果一个报文从一台计算机传往另一台计算机,则返回一个应答报文的概率非常高。2.由于每一个地址绑定都需要内存,因此一台计算机不可能存储任意数量的地址绑定信息。19ARP协议与分层TCP/IP体系中,ARP是重要的基础协议,ARP实际完成了网络接口层功能,对高层协议完成隐藏了各种网络通信底层,实现应用软件和网络通信分离。只需要理解一切在按IP地址收发、处理包,使所有应用和高层软件都建立在IP之上,大大简化了网络应用开发,是互联网繁荣的重要因素。网际层协议运输层协议应用ICMPIGMP地址解析设备驱动ARPRARP网络硬件协议地址边界使用IP协议地址使用硬件地址ARP定义标准的请求和应答格式,其过程是由内核自动完成的,不需要应用程序和管理员关心。20思考题:既然在网络链路上传送的帧最终是按照硬件地址找到目的主机的,那么为什么我们不直接使用硬件地址进行通信,而是要使用抽象的IP地址并调用ARP来寻找出相应的硬件地址呢?由于全世界存在各式各样的网络,他们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事。设想有两个主机可以直接使用硬件地址进行通信(具体实现方法暂不必管)。在假定这两个主机的网卡都同时坏了,然后又都更换了一块,因此它们的硬件地址也都改变了。这时,这两个主机怎样能够知道对方的硬件地址呢?显然很难。但IP地址是独立于主机或路由器的硬件地址的。硬件地址的改变不会影响使用IP协议的主机的通信。21反地址解析一些网络主机,诸如无盘工作站等,在它们被引导时不知道它们自己的IP地址。为了确定它们各自的IP地址,它们使用一种类似于ARP的机制,但是现在主机的硬件地址是已知的参数,而IP地址是待查询的参数。它与ARP有着根本的不同,它必须存在于网络上,必须确保预先配置硬件地址到协议地址的映射数据库。这种无盘工作站一般只要运行其ROM中的文件传送代码,就可用下行装载方法从局域网上其他主机得到所需的操作系统和TCP/IP通信软件,但这些软件中没有IP地址。无盘工作站要运行ROM中的RARP来获得其IP地址。22反地址解析协议(RARP协议)它的执行方式与地址解析ARP的执行方式相同。它使用与ARP相同的报文格式。服务器对请求的回答方式是:填写目标协议地址字段,并把操作类型从“请求”改为“应答”发出请求的机器收到了所有RARP服务器的应答,但它只需要一个。此外,值得注意的是:对于“应答”,直接把应答发回提出请求的机器。寻找自己的IP地址的机器和提供这一地址的服务器,它们之间的所有通信都只能使用物理网络实施发送方广播一个指定它自己既是发送方又是接收方的RARP请求,并把它自己的物理网络地址放到目标硬件地址字段中。网络上的所有机器都接收该请求。但只有被授权提供RARP服务的机器才能处理请求并发送应答,这样的机器的非正式名字是RARP服务器。要成功的使用RARP,网络必须至少包含一个RARP服务器。23我听到广播了,IP地址是172.16.3.25我的IP地址是什么?Ethernet=0800.0020.1111IP=???Ethernet:0800.0020.1111IP:172.16.3.25RARPServerAB24RARP消息格式硬件类型协议类型硬件地址长度协议长度操作发送方硬件地址(8位组0-3)发送方硬件地址(8位组4