1、1/,第12讲网络层(2),2/,知识回顾,网络层功能网络互联思想IP地址分类,3/,本讲教学内容和教学目标,掌握MAC地址与IP地址转换方法ARP协议掌握IP数据报格式理解IP转发分组的方法,4/,IP 地址与硬件地址,TCP 报文,IP 数据报,MAC 帧,应用层数据,首部,首部,尾部,首部,5/,HA1,HA5,HA4,HA3,HA6,主机 H1,主机 H2,路由器 R1,硬件地址,路由器 R2,HA2,IP1,IP2,局域网,局域网,局域网,通信的路径H1经过 R1 转发再经过 R2 转发H2,查找路由表,查找路由表,路由表应用,6/,HA1,HA5,HA4,HA3,HA6,主机 H1
2、,主机 H2,路由器 R1,硬件地址,路由器 R2,HA2,IP1,IP2,局域网,局域网,局域网,IP1,HA1,HA5,HA4,HA3,HA6,HA2,IP6,主机 H1,主机 H2,路由器 R1,IP 层上的互联网,MAC 帧,IP2,IP4,IP3,IP5,路由器 R2,MAC 帧,MAC 帧,IP 数据报,从协议栈的层次上看数据的流动,7/,HA1,HA5,HA4,HA3,HA6,主机 H1,主机 H2,路由器 R1,硬件地址,路由器 R2,HA2,IP1,IP2,局域网,局域网,局域网,IP1,HA1,HA5,HA4,HA3,HA6,HA2,IP6,主机 H1,主机 H2,路由器
3、R1,IP 层上的互联网,MAC 帧,IP2,IP4,IP3,IP5,路由器 R2,MAC 帧,MAC 帧,IP 数据报,从虚拟的 IP 层上看 IP 数据报的流动,8/,HA1,HA5,HA4,HA3,HA6,主机 H1,主机 H2,路由器 R1,硬件地址,路由器 R2,HA2,IP1,IP2,局域网,局域网,局域网,IP1,HA1,HA5,HA4,HA3,HA6,HA2,IP6,主机 H1,主机 H2,路由器 R1,IP 层上的互联网,MAC 帧,IP2,IP4,IP3,IP5,路由器 R2,MAC 帧,MAC 帧,IP 数据报,在链路上看 MAC 帧的流动,9/,IP1,HA1,HA5,
4、HA4,HA3,HA6,HA2,IP6,主机 H1,主机 H2,路由器 R1,IP 层上的互联网,MAC 帧,IP2,IP4,IP3,IP5,路由器 R2,MAC 帧,MAC 帧,IP 数据报,在 IP 层抽象的互联网上只能看到 IP 数据报图中的 IP1IP2 表示从源地址 IP1 到目的地址 IP2 两个路由器的 IP 地址并不出现在 IP 数据报的首部中,10/,IP1,HA1,HA5,HA4,HA3,HA6,HA2,IP6,主机 H1,主机 H2,路由器 R1,IP 层上的互联网,MAC 帧,IP2,IP4,IP3,IP5,路由器 R2,MAC 帧,MAC 帧,IP 数据报,路由器只根
5、据目的站的 IP 地址的网络号进行路由选择,11/,IP1,HA1,HA5,HA4,HA3,HA6,HA2,IP6,主机 H1,主机 H2,路由器 R1,IP 层上的互联网,IP2,IP4,IP3,IP5,路由器 R2,IP 数据报,在具体的物理网络的链路层只能看见 MAC 帧而看不见 IP 数据报,12/,IP1,HA1,HA5,HA4,HA3,HA6,HA2,IP6,主机 H1,主机 H2,路由器 R1,IP 层上的互联网,IP2,IP4,IP3,IP5,路由器 R2,IP 数据报,IP层抽象的互联网屏蔽了下层很复杂的细节在抽象的网络层上讨论问题,就能够使用统一的、抽象的 IP 地址研究主
6、机和主机或主机和路由器之间的通信,13/,地址解析协议 ARP 和 RARP,IP 地址,物理地址,ARP,物理地址,IP 地址,RARP,14/,地址解析协议 ARP,不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。 每一个主机都设有一个 ARP 高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该
7、MAC 帧发往此硬件地址。 测试本机ARP表 Arp ahttp:/netresearch.ics.uci.edu/kfujii/Jpcap/doc/install.html,安装和演示使用jpcap捕获数据帧,观察IP、MAC构造Analyzer: A public domain network sniffer,15/,A,Y,X,B,Z,主机 B 向 A 发送ARP 响应分组,主机 A 广播发送ARP 请求分组,ARP 请求,ARP 请求,ARP 请求,209.0.0.5,209.0.0.6,00-00-C0-15-AD-18,08-00-2B-00-EE-0A,我是 209.0.0.5,
8、硬件地址是 00-00-C0-15-AD-18我想知道主机 209.0.0.6 的硬件地址,我是 209.0.0.6硬件地址是 08-00-2B-00-EE-0A,A,Y,X,B,Z,209.0.0.5,209.0.0.6,00-00-C0-15-AD-18,16/,ARP 高速缓存的作用,为了减少网络上的通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到硬件地址的映射写入 ARP 请求分组。当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。这对主机 B 以后向 A 发送数据报时就更方便了。,17/,应当注
9、意的问题,ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。,18/,应当注意的问题(续),从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 协议就会自动地将该 IP 地址解析为链路层所需要的硬件地址。,19/,使用 ARP 的四种典型情况,发送方是主
10、机,要把IP数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。,20/,为什么我们不直接使用硬件地址进行通信?,由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构
11、网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事。连接到因特网的主机都拥有统一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为调用 ARP 来寻找某个路由器或主机的硬件地址都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。,21/,逆地址解析协议 RARP,逆地址解析协议 RARP 使只知道自己硬件地址的主机能够知道其 IP 地址。这种主机往往是无盘工作站。 因此 RARP协议目前已很少使用。,22/,IP 数据报的格式,一个 IP 数据报由首部和数据两部分组成。首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的
12、。在首部的固定部分的后面是一些可选字段,其长度是可变的。,23/,固定部分,可变部分,0,4,8,16,19,24,31,版 本,标志,生 存 时 间,协 议,标 识,区 分 服 务,总 长 度,片 偏 移,填 充,首 部 检 验 和,源 地 址,目 的 地 址,可 选 字 段 (长 度 可 变),位,首部长度,数 据 部 分,数 据 部 分,首 部,IP 数据报,24/,首部,0,4,8,16,19,24,31,版 本,标志,生 存 时 间,协 议,标 识,总 长 度,片 偏 移,填 充,首 部 检 验 和,源 地 址,目 的 地 址,可 选 字 段 (长 度 可 变),位,首部长度,数 据
13、 部 分,固定部分,可变部分,区 分 服 务,1. IP 数据报首部的固定部分中的各字段,25/,首部,0,4,8,16,19,24,31,版 本,标志,生 存 时 间,协 议,标 识,总 长 度,片 偏 移,填 充,首 部 检 验 和,源 地 址,目 的 地 址,可 选 字 段 (长 度 可 变),位,首部长度,数 据 部 分,固定部分,可变部分,区 分 服 务,26/,首部,0,4,8,16,19,24,31,版 本,标志,生 存 时 间,协 议,标 识,总 长 度,片 偏 移,填 充,首 部 检 验 和,源 地 址,目 的 地 址,可 选 字 段 (长 度 可 变),位,首部长度,数 据
14、 部 分,固定部分,可变部分,区 分 服 务,27/,首部,0,4,8,16,19,24,31,版 本,标志,生 存 时 间,协 议,标 识,总 长 度,片 偏 移,填 充,首 部 检 验 和,源 地 址,目 的 地 址,可 选 字 段 (长 度 可 变),位,首部长度,数 据 部 分,固定部分,可变部分,区 分 服 务,28/,首部,0,4,8,16,19,24,31,版 本,标志,生 存 时 间,协 议,标 识,总 长 度,片 偏 移,填 充,首 部 检 验 和,源 地 址,目 的 地 址,可 选 字 段 (长 度 可 变),位,首部长度,数 据 部 分,固定部分,可变部分,区 分 服 务
15、,29/,首部,0,4,8,16,19,24,31,版 本,标志,生 存 时 间,协 议,标 识,区 分 服 务,总 长 度,片 偏 移,填 充,首 部 检 验 和,源 地 址,目 的 地 址,可 选 字 段 (长 度 可 变),位,首部长度,数 据 部 分,固定部分,可变部分,标志(flag) 占 3 位,目前只有前两位有意义。标志字段的最低位是 MF (More Fragment)。MF 1 表示后面“还有分片”。MF 0 表示最后一个分片。标志字段中间的一位是 DF (Dont Fragment) 。只有当 DF 0 时才允许分片。,30/,首部,0,4,8,16,19,24,31,版
16、本,标志,生 存 时 间,协 议,标 识,总 长 度,片 偏 移,填 充,首 部 检 验 和,源 地 址,目 的 地 址,可 选 字 段 (长 度 可 变),位,首部长度,数 据 部 分,固定部分,可变部分,区 分 服 务,31/,偏移 = 0/8 = 0,偏移 = 0/8= 0,偏移 = 1400/8 = 175,偏移 = 2800/8 = 350,1400,2800,3799,2799,1399,3799,需分片的数据报,数据报片 1,首部,数据部分共 3800 字节,首部 1,首部 2,首部 3,字节 0,数据报片 2,数据报片 3,1400,2800,字节 0,【例4-1】 IP 数据
17、报分片,32/,首部,0,4,8,16,19,24,31,版 本,标志,生 存 时 间,协 议,标 识,总 长 度,片 偏 移,填 充,首 部 检 验 和,源 地 址,目 的 地 址,可 选 字 段 (长 度 可 变),位,首部长度,数 据 部 分,固定部分,可变部分,生存时间(8 位)记为 TTL (Time To Live)数据报在网络中可通过的路由器数的最大值。,区 分 服 务,33/,首部,0,4,8,16,19,24,31,版 本,标志,生 存 时 间,协 议,标 识,总 长 度,片 偏 移,填 充,首 部 检 验 和,源 地 址,目 的 地 址,可 选 字 段 (长 度 可 变),
18、位,首部长度,数 据 部 分,固定部分,可变部分,区 分 服 务,34/,运输层,网络层,首部,TCP,UDP,ICMP,IGMP,OSPF,数 据 部 分,IP 数据报,35/,首部,0,4,8,16,19,24,31,版 本,标志,生 存 时 间,协 议,标 识,总 长 度,片 偏 移,填 充,首 部 检 验 和,源 地 址,目 的 地 址,可 选 字 段 (长 度 可 变),位,首部长度,数 据 部 分,固定部分,可变部分,区 分 服 务,36/,发送端,接收端,16 位,字 1,16 位,字 2,16 位,字 n,数据报首部,IP 数据报,16 位,字 1,16 位,字 2,16 位,
19、字 n,数据部分,37/,校验和计算方法,采用的都是将数据流视为16位整数流进行重复叠加计算。发送方为了计算检验和,首先把检验和字段置为0。然后,对有效数据范围内中每个16位进行二进制反码求和,结果存在检验和字段中,如果数据长度为奇数则补一字节0。接收方当收到数据后,同样对有效数据范围中每个16位数进行二进制反码的求和。由于接收方在计算过程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错,那么接收方计算的结果应该为全0或全1(具体看实现了,本质一样) 。如果结果不是全0或全1,那么表示数据错误。,38/,首部,0,4,8,16,19,24,31,版 本,标志,生 存
20、 时 间,协 议,标 识,总 长 度,片 偏 移,填 充,首 部 检 验 和,源 地 址,目 的 地 址,可 选 字 段 (长 度 可 变),位,首部长度,数 据 部 分,固定部分,可变部分,区 分 服 务,39/,IP 数据报首部的可变部分,IP 首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。选项字段的长度可变,从 1 个字节到 40 个字节不等,取决于所选择的项目。增加首部的可变部分是为了增加 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。实际上这些选项很少被使用。,40/,IP 层转发分组的流
21、程,有四个 A 类网络通过三个路由器连接在一起。每一个网络上都可能有成千上万个主机。可以想像,若按目的主机号来制作路由表,则所得出的路由表就会过于庞大。但若按主机所在的网络地址来制作路由表,那么每一个路由器中的路由表就只包含 4 个项目。这样就可使路由表大大简化。,41/,网 110.0.0.0,网 440.0.0.0,网 330.0.0.0,网 220.0.0.0,10.0.0.4,40.0.0.4,30.0.0.2,20.0.0.9,20.0.0.7,目的主机所在的网络,下一跳地址,20.0.0.0,30.0.0.0,10.0.0.0,40.0.0.0,20.0.0.7,30.0.0.1,
22、直接交付,接口 1,直接交付,接口 0,路由器 R2 的路由表,30.0.0.1,10.0.0.4,40.0.0.4,30.0.0.2,20.0.0.9,20.0.0.7,30.0.0.1,链路 4,链路 3,链路 2,链路 1,R2,R3,R1,0,1,R2,R3,R1,在路由表中,对每一条路由,最主要的是(目的网络地址,下一跳地址),42/,查找路由表,根据目的网络地址就能确定下一跳路由器,这样做的结果是:IP 数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)。只有到达最后一个路由器时,才试图向目的主机进行直接交付。,43/,特定主机路由,这种路由是为特定的
23、目的主机指明一个路由。采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。,44/,默认路由(default route),路由器还可采用默认路由以减少路由表所占用的空间和搜索路由表所用的时间。这种转发方式在一个网络只有很少的对外连接时是很有用的。默认路由在主机发送 IP 数据报时往往更能显示出它的好处。如果一个主机连接在一个小网络上,而这个网络只用一个路由器和因特网连接,那么在这种情况下使用默认路由是非常合适的。,45/,N1,R1,因特网,目的网络 下一跳 N1 直接 N2 R2 默认 R1,路由表,N2,R2,只要目的网络不
24、是 N1 和 N2,就一律选择默认路由,把数据报先间接交付路由器 R1,让 R1 再转发给下一个路由器。,46/,必须强调指出,IP 数据报的首部中没有地方可以用来指明“下一跳路由器的 IP 地址”。当路由器收到待转发的数据报,不是将下一跳路由器的 IP 地址填入 IP 数据报,而是送交下层的网络接口软件。网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址,并将此硬件地址放在链路层的 MAC 帧的首部,然后根据这个硬件地址找到下一跳路由器。,47/,分组转发算法,(1) 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。(2) 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行(3)。(3) 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。(4) 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)。(5) 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。(6) 报告转发分组出错。,48/,小结,ARP协议地址转换原理IP数据报格式http:/