您好,欢迎访问三七文档
BBA网络层实现的功能就是从主机AB传输IP数据报地址解析协议(ARP)和逆地址解析协议(RARP)?问题:怎样把数据报交付给B计算机,现在我们仅知道B的标识:IP.BIP.BIP数据报IP.A一、先讨论A和B在同一个局域网内情况在同一个网络内,IP数据报是直接交付?问题:A怎样把数据报直接交付给你B主机hub交换机路由器hubhubAB要在实际的链路上传输,必须遵循链路的帧格式IP.BIP.A…MAC.BMAC.A…现在关键的问题:?MAC.B地址解析协议(ARP协议):功能:就是把IP地址解析成你的MAC地址1:首先,ARP高级缓存,存放:IP--MACIP.CMAC.CIP.DMAC.D2:如果没有,运行ARP进程。工作过程:1)A的ARP进程广播发送ARP请求分组2)不是B,不理睬,丢弃3)B响应,向A发送ARP响应分组4)主机A收到,得到MAC.B,写入缓存AYXBZ主机B向A发送ARP响应分组主机A广播发送ARP请求分组209.0.0.5209.0.0.600-00-C0-15-AD-1808-00-2B-00-EE-0A我是209.0.0.5,硬件地址是00-00-C0-15-AD-18我想知道主机209.0.0.6的硬件地址我是209.0.0.6硬件地址是08-00-2B-00-EE-0AAYXBZ209.0.0.5209.0.0.600-00-C0-15-AD-18ARP请求ARP请求ARP请求ARP请求ARP响应地址解析协议(ARP协议):功能:就是把IP地址解析成你的MAC地址1:首先,ARP高级缓存,存放:IP--MACIP.CMAC.CIP.DMAC.D2:如果没有,运行ARP进程。工作过程:1)A的ARP进程广播发送ARP请求分组2)不是B,不理睬,丢弃3)B响应,向A发送ARP响应分组4)主机A收到,得到MAC.B,写入缓存ARP协议应当注意的问题1.ARP将保存在高速缓存中的每一映射地址项目都设置生存时间,凡是超过生存时间的项目就从高速缓存中删掉。2.从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。3.ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。同一网络中,A-B的IP数据报传输过程B网络层在A主机的网络层运行的IP进程,封装IP数据报如果B是在本网络中,运行ARP,由IP得到MAC地址;交给数据链路层,封装MAC帧;交给物理层,转换成信号,发送出去;B主机就能接收到该MAC帧,得到A交付的IP数据报IP.Bhub交换机路由器hubhubAB…IP.BMAC.B…二、A和B不在同一个网内的情况不在同一个网络内,要间接交付?间接交付间接交付间接交付ABC直接交付直接交付1.首先判断A和B是不是在同一个局域网内网络地址主机地址子网掩码11111111111111111111111100000000IP地址举例:A的IP:209.100.100.5子网掩码:255.255.255.0若B的IP:209.100.100.25=A和B在同一个网络内,直接交付若B的IP:209.100.200.5=A和B不在同一个网络内,间接交付2.间接交付:主机A把该数据报交给本地路由器间接交付ABMAC.R…IP.A→IP.BIP.A→IP.B…RARP协议(ARP缓存、ARP请求、ARP响应)IP.RMAC.R间接交付间接交付AB路由表33交换结构输入端口转发表分组处理输出端口…11133122223.路由器进行转发R1帧中继网间接交付间接交付AB直接交付4.目的网络路由器进行直接交付R1到达目的网络端口132ARP协议IP.BMAC.B网络层:R这样,该IP数据报就最终到达了B主机IPA→IPBIP数据报MAC.BMAC.R…数据链路层:IP.A-IP.B在A主机的网络层运行的IP进程,•首先判断A和B是不是在同一个局域网内•是,直接交付,直接交给B主机(使用ARP协议)•不是,主机A把该数据报交给本地路由器(ARP)•中间路由器进行一步步转发,最后到达目的网络•目的网络路由器进行直接交付(又使用ARP协议)间接交付间接交付AB直接交付网络层A-B的IP数据报传输过程直接交付三、为什么我们不直接使用硬件地址进行通信?•由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事。•连接到因特网的主机都拥有统一的IP地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为调用ARP来寻找某个路由器或主机的硬件地址都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。四、逆地址解析协议RARP•逆地址解析协议RARP使只知道自己硬件地址的主机能够知道其IP地址。•这种主机往往是无盘工作站。因此RARP协议目前已很少使用。五ARP设计ARP软件包由5个构件组成:–高速缓存表–队列–输出模块–输入模块–高速缓存控制模块ARP设计(续)ARP输出模块高速缓存表高速缓存控制模块队列输入模块ARP分组(请求)ARP分组(请求或应答)ARP分组(应答)具有已解析硬件地址的IP分组ARP分组(请求)具有已解析硬件地址的IP分组IP分组ARP设计(续)①高速缓存表:高速缓存表用项目数组来实现,每个项目包括以下字段:–状态:表示项目的状态。其值为FREE(已超时)、PENDING(已发送请求但未应答)或RESOLVED(已经应答)。–硬件类型、协议类型、硬件地址长度、协议地址长度:与ARP分组中的相应字段相同。–接口号:对应路由器的不同接口。–队列号:ARP使用不同的队列将等待地址解析的分组进行排队。发往同一个目的地的分组通常放在同一个队列中。–尝试:表示这个项目发送出了多少次的ARP请求。–超时:表示一个项目以秒为单位的寿命。–硬件地址:目的硬件地址,应答返回前保持为空。–协议地址:目的高层协议地址如IP地址。ARP设计(续)②队列用于在ARP试图解析硬件地址时保留待发的IP分组。输出模块将未解析的分组发送到相应的队列中。输入模块从一个队列中取出分组并将解析出的物理地址一起发送给数据链路层来传输。③输出模块ARP设计(续)从IP软件等待IP分组,工作流程如下:输出模块1.睡眠,直到从IP软件收到分组。2.检查高速缓存表,寻找对应于这个IP的项目。3.若(找到)(1)若(状态是RESOLVED)①从项目中提取硬件地址。②将分组连同硬件地址一起发给数据链路层。③返回。(2)若(状态时PENDING)①将分组放入相应的队列。②返回4.若(未找到)(1)创建一个队列。(2)将分组放入该队列。(3)创建一个高速缓存项目,状态为PENDING且尝试ATTEMPTS置为1。(4)广播发送ARP请求。5.返回ARP设计(续)④输入模块等待到ARP分组到达,工作流程如下:输入模块1.睡眠,直到ARP分组(请求或应答)到达。2.检查高速缓存表,寻找对应于这个ARP分组(源IP、源物理地址)的项目。3.若(找到)(1)若(状态是PENDING)①更新项目。②当队列非空时将分组从队列中取出,连同硬件地址一起发给数据链路层。(2)若(状态是RESOLVED)更新项目(包括硬件地址和超时字段)4.若(未找到)(1)创建一个项目。(2)将此项目放入高速缓存表中。5.若(分组是一个请求且本机负责应答)单播发送对应ARP应答报文。6.返回ARP设计(续)⑤高速缓存控制模块负责维持高速缓存表,周期性地检查高速缓存表。高速缓存控制模块1.睡眠,直到周期性地计时器到时间。2.对高速缓存表中的每个项目(1)若(状态是FREE)继续(2)若(状态是PENDING)①将尝试值加1。②若(尝试大于最大值)将状态改变为FREE撤销相应的队列。③若(不是)重新发送ARP请求④继续(3)若(状态是RESOLVED)①将超时字段减去已经过的时间。②若(超时字段小于等于零)将状态改变为FREE撤销相应的队列。3.返回ARP设计(续)11.ARP举例12.设ARP超时时间为900,每隔一分钟高速缓存控制模块将已解析项目超时值减去60。ARP高速缓存表初始如下:状态队列尝试超时协议地址硬件地址R5900180.3.6.1ACAE32457342P22129.34.4.8P145201.11.56.7R8450114.5.7.89457342ACAE32P121220.55.5.7FR96019.1.7.824573E3242ACAP183188.11.8.71ARP设计(续)问:①ARP输出模块收到一个IP数据报(从IP层),其目的地址为114.5.7.89,ARP将如何操作,并给出修改后地高速缓存表?②ARP输出模块收到一个IP数据报(从IP层),其目的地址为116.1.7.22,ARP将如何操作,并给出修改后地高速缓存表?③ARP输入模块收到一个ARP应答分组,其源协议地址为188.11.8.71、源物理地址为E34573242ACA,ARP将如何操作,并给出修改后地高速缓存表?④1分钟后,高速缓存控制模块更新每一个项目,更新后的高速缓存表每个项目值是多少?六实践:arp命令的使用1.arp命令的功能查看、添加和删除高速缓存区中的ARP表项2.Windows2000ARP高速缓冲区(1)包含动态和静态表项动态表项:随时间推移自动添加和删除静态表项:一直存在,直到人为删除或重新启动(2)动态表项的计时器:潜在生命周期10min6.1显示高速cache中的ARP表6.2添加ARP静态表项6.3删除ARP表项
本文标题:ARP协议
链接地址:https://www.777doc.com/doc-7270098 .html