考点六: 网络层协议

考点六: 网络层协议

1.网际协议IP协议簇

网际协议IP是TCP/IP体系中两个最主要的协议之一,也是最重要的互联网标准协议之一。与IP协议配套使用的还有4个协议:地址解析协议(Address Resolution Protocol,ARP)、逆地址解析协议(Reverse Address Resolution Protocol,RARP)、网际控制报文协议(Internet Control Message Protocol,ICMP)和网际组管理协议(Internet Group Management Protocol,IGMP)。如图4-24所示,在网络层中,ARP在最下面,因为IP经常要使用这个协议。ICMP和IGMP在这一层的上部,因为它们要使用IP协议,同时这两个协议又为IP协议提供服务。

图4-24 网际层的IP协议及配套协议

2.地址解析协议(ARP)和逆地址解析协议(RARP)

IP地址结构和路由转发协议只是从网络层上解决了网络如何划分,网络之间如何传递数据,但是在网络内部如何传播,IP地址结构和路由转发协议无法解决,其实当数据传入到网络内部时,就进入了数据链路层,其管理权限就放到数据链路层。当然网络层使用IP地址,数据链路层使用MAC地址,网络层需要提供IP地址到MAC地址映射的方法(图4-25)。

图4-25 MAC帧、IP数据报和TCP报文

地址解析协议(ARP)用来解决这个问题:已知一个机器(主机或路由器)的IP地址,向下封装时,需要找出其相应的硬件地址。逆地址解析协议(RARP)的作用是使只知道自己硬件地址的主机能够通过RARP协议找出其IP地址。

网络层使用的是IP地址,但在实际网络的链路上传送数据帧时,最终还是使用该网络的硬件地址。

地址解析协议ARP解决这个问题的方法是在主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表,并且这个映射表还经常动态更新(新增或超时删除)。当主机A要向本局域网上的某台主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。如有,就在ARP高速缓存中查出其对应的硬件地址,再把这个硬件地址写入MAC帧,然后通过局域网把该MAC帧发往此硬件地址。

也有可能查不到主机B的IP地址,在这种情况下,主机A就自动运行ARP,然后按以下步骤找出主机B的硬件地址。

(1)ARP进程在本局域网上广播发送一个ARP请求分组,这称为ARP广播请求。

(2)在本局域网上的所有主机上运行的ARP进程都收到此ARP请求分组。

(3)如果主机B的IP地址与ARP请求分组中要查询的IP地址一致,就收下这个ARP请求分组,并向主机A发送ARP响应分组,同时在这个ARP响应分组中写入自己的硬件地址。由于其余所有主机的IP地址都与ARP请求分组中要查询的IP地址不一致,因此都不理睬这个ARP请求分组,这称为ARP单播响应。

我们通过一个例子来说明,如图4-26所示,主机A想知道IP地址209.0.0.6的硬件地址,它向本局域网中的所有主机发送一个ARP请求分组,这个分组是一个广播分组,本局域网中的主机都能接收到这个请求信号,但是只有IP地址是209.0.0.6的主机B响应这个请求信号,这个响应信号是单播信号。主机A收到主机B的ARP响应分组后,就在其ARP高速缓存中写入主机B的IP地址到硬件地址的映射。

图4-26 地址解析协议ARP的工作原理

这里大家需要掌握好ARP广播和ARP单播的地址结构(考试的重点之一)。

ARP广播请求:

(1)IP地址:①源IP地址209.0.0.5;②目的IP地址209.0.0.6。

(2)MAC地址:①源MAC地址00 00 C0 15 AD 18;②目的MAC地址FF FF FF FF FF FF。

ARP单播响应:

(1)IP地址:①源IP地址209.0.0.6;②目的IP地址209.0.0.5。

(2)MAC地址:①源MAC地址08 00 2B 00 EE 0A;②目的MAC地址00 00 C0 15 AD 18。

注意:ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。

①如果所要找的主机和源主机在同一个局域网上,ARP协议就会自动地将该IP地址解析为数据链路层所需要的硬件地址。

②如果所要找的主机和源主机不在同一个局域网上,就要通过ARP找到一个位于本局域网上的某个路由器(其实是边界路由器或网关路由器)的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。

③从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。只要主机或路由器要和本网络上的另一个已知IP地址的主机或路由器进行通信,ARP协议就会自动地将该IP地址解析为数据链路层所需要的硬件地址。

使用ARP进行地址解析典型情况有以下4种。

①发送方是主机,要把IP数据报发送到本网络上的另一个主机。这时用ARP自动找到目的主机的硬件地址。

②发送方是主机,要把IP数据报发送到另一个网络上的主机。这时用ARP找到本网络上的一个路由器的硬件地址,这个路由器是边界路由器,剩下的工作由这个路由器来完成。

③发送方是路由器,要把IP数据报转发到本网络上的一个主机。这时用ARP找到目的主机的硬件地址。

④发送方是路由器,要把IP数据报转发到另一个网络上的主机。这时用ARP找到本网络上另一个路由器的硬件地址,剩下的工作由该路由器来完成。

这个过程比较抽象,我们将这个过程融合到考点七中进行实例化讲解,这里不再赘述。

【政哥点拨】

1.ARP协议的功能是( )

A.根据IP地址查询MAC地址 B.根据MAC地址查询IP地址

C.根据域名查询IP地址 D.根据IP地址查询域名

解析 A 在实际网络的数据链路层上传输数据时,最终必须使用硬件地址,ARP协议是将网络层的IP地址解析为数据链路层的MAC地址。

2.如图4-27所示,主机A发送一个IP数据报给主机B,通信过程中以太网1上出现的以太网帧中承载一个IP数据报,该以太网帧中的目的地址和IP包头中的目的地址分别是( )。

A.B的MAC地址,B的IP地址 B.B的MAC地址,R1的IP地址

C.R1的MAC地址,B的IP地址 D.R1的MAC地址,R1的IP地址

图4-27 主机A发送一个IP数据报给主机B

解析 C 以太网1中出现由主机A发往以太网2的主机B的帧,那么这个帧的数据部分的目的IP地址是主机B的目的地址,排除B、D项。要把IP数据报传送给主机B,需要跨网络,所以将该数据报发送给主机A所位于网络的路由器R1,目的MAC地址应该填写R1的MAC地址。故而,本题选择C项。

3.网际控制报文协议(ICMP)

网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务,数据报(或IP数据报)就是分组。为了提高IP数据报交付成功的概率,在网际层使用了网际控制报文协议(Internet Control Message Protocol,ICMP)。ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP不是高层协议,而是IP层的协议。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。ICMP报文格式如图4-28所示。ICMP报文的前4个字节是统一的格式,共有3个字段:类型、代码和检验和。接下来的4个字节的内容与ICMP的类型有关。最后是数据字段,其长度取决于ICMP的类型。

图4-28 ICMP报文格式

(1)ICMP差错报告报文。

①终点不可达。当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。

②时间超过。当路由器收到生存时间为0的数据报时,除了丢弃该数据报,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。

③参数问题。当路由器或目的主机收到的数据报的首部中个别字段的值不正确时就丢弃该数据报,并向源点发送参数问题报文。

④改变路由(重定向)。路由器把改变路由报文发送给主机,让主机知道下次应将数据分组发送给哪个路径。

⑤源点抑制。当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。

(2)ICMP询问报文。

①回送请求和回答。ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。收到此报文的机器必须给源主机发送ICMP回送应答报文。这种询问报文用来测试目的站是否可达以及了解其有关状态。

②时间戳请求和回答。ICMP时间戳请求允许系统向另一个系统查询当前的时间。该ICMP报文的好处是它提供了毫秒级的分辨率,而利用其他方法从别的主机获取的时间只能提供秒级的分辨率。请求端填写发起时间,然后发送报文。应答系统收到请求报文时填写接收时间戳,在发送应答时填写发送时间戳。

(3)不应发送ICMP差错报告报文的几种情况。

①对ICMP差错报告报文,不再发送ICMP差错报告报文。

②对第一个分片的数据报片的所有后续数据报片,都不发送ICMP差错报告报文。

③对具有多播地址的数据报,都不发送ICMP差错报告报文。

④对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报,不发送ICMP差错报告报文。

(4)ICMP的应用举例。

ICMP的一个重要应用就是PING命令(Packet InterNet Groper)和traceroute命令。PING命令用来测试两台主机之间的连通性,使用了ICMP回送请求与回送回答报文,PING命令是应用层直接使用网络层ICMP的一个例子。traceroute(Windows系统下是tracert)命令利用ICMP协议定位源计算机和目标计算机之间的所有路由器,它工作在网络层,使用ICMP时间超过报文。

政哥应试提醒:掌握好ARP协议的功能、ARP的工作过程(广播请求、单播响应),以及4种情形的地址变换;掌握好ICMP协议的特点、类型及应用。

难度系数:★

牛刀小试

1.对网际控制报文协议(ICMP)描述错误的是( )。

A.ICMP封装在IP数据报的数据部分

B.ICMP属于应用层的协议

C.ICMP是IP协议必需的一个部分

D.ICMP可用来进行拥塞控制

2.下列哪个协议不是IP层的协议?( )

A.IP B.ARP C.MAC D.ICMP

3.下面关于IP地址与硬件地址的叙述错误的是( )。

A.在局域网中,硬件地址又称为物理地址或MAC地址

B.硬件地址是数据链路层和物理层使用的地址,IP地址是网络层及其以上各层使用的地址

C.IP地址不能直接用来进行通信,在实际网络的链路上传送数据帧必须使用硬件地址

D.RARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题

4.ICMP协议位于( )。

A.网络层 B.传输层 C.应用层 D.数据链路层

5.下面不会产生ICMP差错报文的是( )。

A.路由器不能正确选择路由

B.路由器不能传送数据报

C.路由器检测到一个异常条件影响它转发数据报

D.已经产生了ICMP差错报告报文

6.下列哪种情况需要启动ARP请求?( )

A.主机需要接收信息,但ARP表中没有源IP地址与MAC地址的映射关系

B.主机需要接收信息,但ARP表中已经具有了源IP地址与MAC地址的映射关系

C.主机需要发送信息,但ARP表中没有目的IP地址与MAC地址的映射关系

D.主机需要发送信息,但ARP表中已经具有了目的IP地址与MAC地址的映射关系

7.PING命令是利用( )报文来测试目的端主机的可达性。

A.ICMP源抑制 B.ICMP请求/应答

C.ICMP重定向 D.ICMP差错

8.对地址转换协议(ARP)描述正确的是( )。

A.ARP封装在IP数据报的数据部分

B.ARP是采用广播方式发送的

C.ARP是用于IP地址到域名的转换

D.发送ARP包需要知道对方的MAC地址

9.下面关于ICMP协议的描述中,正确的是( )。

A.ICMP协议根据MAC地址查找对应的IP地址

B.ICMP协议把公网的IP地址转换为私网的IP地址

C.ICMP协议用于控制数据报传送中的差错情况

D.ICMP协议集中管理网络中的IP地址分配

牛刀小试解析

1.B 解析 本题考查ICMP协议的相关内容。ICMP网际控制报文协议是网络层协议,不是应用层协议,这是特别易错的地方。ICMP协议是为了提高IP数据报交付成功的概率而引入的。ICMP报文作为IP数据报的数据,再加上IP数据报的首部,组成IP数据报发送出去。

2.C 解析 本题考查常见的IP层协议。ICMP、IP、ARP、DHCP、RARP协议等都是典型的网络层协议。MAC协议是数据链路层的协议,数据链路层通过MAC地址来寻址。所以,C项错误。

3.D 解析 RARP协议,也称为反向地址解析协议,将MAC地址转换成IP地址。D项描述的是ARP协议,而不是RARP协议。值得一提的是,具体的物理网络的数据链路层只能看见MAC帧而看不见IP数据报,如图4-29所示。

图4-29 物理网络的数据链路层只能看见MAC帧

4.A 解析 本题考查ICMP协议在网络体系结构中的层次。ICMP属于网络层协议。在网络层引入ICMP协议,是为了提高IP数据报交付成功的概率。故而,本题选择A项。

5.D 解析 本题考查产生ICMP差错报文的原因。ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文。

6.C 解析 本题考查引起主机发出ARP请求的原因。主机只有在发送信息,而且ARP表里面没有目的地址与MAC地址映射关系的时候,才需要发送ARP请求,找到下一跳的IP地址对应的MAC地址。所以,选择C项。

7.B 解析 PING命令是应用层程序,不经过传输层的UDP或TCP协议而直接使用IP层的ICMP协议传送。

ICMP报文在测试目标主机的可达性的时候,我们日常使用最多的是PING,就是响应请求和应答。一台主机向一个节点发送一个ICMP报文,若途中没有遇到如被路由器丢弃、目标不回应ICMP或传输失败等异常,则目标主机返回说明该主机存在的ICMP报文。

目标不可到达报文在路由器或主机不能传递数据报时使用。常见的不可到达类型还有网络不可到达、主机不可到达和协议不可到达等。

源抑制报文充当一个控制流量的角色,它通知主机减少数据报流量。由于ICMP没有恢复传输的报文,因此只要停止该报文,主机就会逐渐恢复传输速率。

无连接方式网络的问题是数据报会丢失,或者长时间在网络游荡而找不到目标,或者拥塞导致主机在规定时间内无法重组数据报分段,由此产生了ICMP超时报文。

时间戳请求报文和时间戳应答报文用于测试两台主机之间数据报来回一次的传输时间。传输时,主机填充原始时间戳,接收方收到请求后填充接收时间戳并返回,发送方计算时间差,即得到两台主机之间数据报来回一次的传输时间。

8.B 解析 ARP实现了IP地址到MAC地址的转换。所以,C项错误。回顾一下ARP协议的工作原理。

①每台主机都在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址的对应关系。

②当源主机需要将一个数据包发送到目的主机时,首先会检查自己ARP列表中是否存在该IP地址对应的MAC地址。如果有,就直接将数据包发送到这个MAC地址。如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址,以及目的主机的IP地址。

③网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同,就忽略此数据包。如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中。如果ARP表中已经存在该IP的信息,就将其覆盖,然后给源主机发送一个ARP响应数据包,告诉对方自己是它需要查找的MAC地址。

④源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

显然,ARP请求不是封装在IP数据报里面传送的。ARP请求采用的是广播形式发送的,但是ARP应答是单播形式的。

发送ARP包的目的是探得对方的物理地址,若已知道对方的MAC地址,则不需要继续发送ARP包了。

ARP协议工作在网络层,任务是完成IP地址到MAC地址的映射。当源主机要向本局域网上的某个目的主机发送IP数据报时,先在其APR高速缓存中查看有无目的主机的IP地址。如果有,就在ARP高速缓存中查出该目的主机对应的硬件地址,再把这个硬件地址写入MAC帧,然后通过局域网把该MAC帧发往目的主机。如果没有,就先通过广播ARP请求分组,在获得目的主机的ARP响应分组后,将目的主机的硬件地址写入ARP高速缓存中目的主机的IP地址到硬件地址的映射。如果目的主机不在本局域网上,就将IP分组发送给本局域网上的路由器。当然,先得通过同样的方法获得路由器的IP地址和MAC地址的映射关系。

9.C 解析 本题考查ICMP报文的特点与功能。ICMP是网络层的差错控制协议,用于控制数据报传送过程中的差错情况。差错与控制报文协议ICMP有以下3类报文:

①差错控制报文,如信息不可达、超时和参数出错等。

②控制报文,如源抑制报文、重定向报文等。

③请求/应答报文,如回应请求/应答报文、时间戳请求/应答报文等。

根据MAC地址查找对应的IP地址是RARP协议干的活;把公网的IP地址转换成私网的IP地址;是NAT协议干的活;控制IP地址的分配不是ICMP协议干的活。