网络层概述

网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输

要实现网络层任务,需要解决以下主要问题:

因特网(Internet)是目前全世界用户数量最多的互联网,它使用TCP/IP协议栈

由于TCP/IP协议栈的网络层使用网际协议IP,它是整个协议栈的核心协议,因此在TCP/IP协议栈中网络层常称为网际层

综上所述,我们通过学习TCP/IP协议栈的网际层来学习网络层的理论知识和实践技术。

IPv4地址概述

在TCP/IP体系中,IP地址是一个最基本的概念,我们必须把它弄清楚。

IPv4地址就是给因特网(Internet)上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符

IP地址由因特网名字和数字分配机构ICANN(Internet Corporation for Assigned Names and Numbers)进行分配。

IPv4地址的编址方法经历了如下三个历史阶段:

32比特的IPv4地址不方便阅读、记录以及输入等,因此IPv4地址采用点分十进制表示方法以方便用户使用。

例题:请将以下这些32比特的IPv4地址转换为点分十进制形式。

(1) 00001010 11111110 00001111 11110000

(2)10101100 00010000 10111111 11110111

(3)11000000 10101000 10100101 00000111

答案:

(1)10.254.15.240 (2)172.16.191.247 (3)192.168.165.7

二进制与十进制的转换自己学,较简单

分类编址的IPv4地址

注意事项:

只有A类、B类和C类地址可分配给网络中的主机或路由器的各接口

主机号为“全0”的地址是网络地址,不能分配给主机或路由器的各接口

主机号为“全1”的地址是广播地址,不能分配给主机或路由器的各接口

A类地址

可指派的网络数量为2^(8-1) - 2 = 126(减2的原因是除去最小网络号0和最大网络号127)

每个网络中可分配的IP地址数量为2^24 -2= 16777214(减2的原因是除去主机号为全0的网络地址和全1的广播地址)

B类地址

可指派的网络数量为2^(16-2) =16384

每个网络中可分配的IP地址数量为2^16 - 2 = 65534(减2的原因是除去主机号为全0的网络地址和全1的广播地址)

注意:有些教材中指出128.0是保留网络号,B类第一个可指派的网络号为128.1。但根据2002年9月发表的RFC3330文档,128.0网络号已经可以分配了。

C类地址

可指派的网络数量为2^(24-3) = 2097152

每个网络中可分配的IP地址数量为2^8 - 2= 254 (减2的原因是除去主机号为全0的网络地址和全1的广播地址)

注意:有些教材中指出192.0.0是保留网络号,C类第一个可指派的网络号为192.0.1。但根据2002年9月发表的RFC 3330文档,192.0.0网络号已经可以分配了。只不过目前还没有分配出去。

例题:

解析:

1.根据地址左起第一个十进制数的值,可以判断出网络类别(小于127的为A类,128191的为B类,192223的为C类);

2.根据网络类别,就可找出地址中的网络号部分和主机号部分(A类地址网络号为左起第一个字节,B类地址网络号为左起前两个字节,C类地址网络号为左起前三个字节);

3.以下三种情况的地址不能指派给主机或路由器接口:

例题:下列IP地址中,只能作为IP分组的源IP地址但不能作为目的IP地址的是

A.0.0.0.0 B.127.0.0.1 C.20.10.10.3 D.255.255.255.25

解析:

地址0.0.0.0是一个特殊的IPv4地址,只能作为源地址使用,表示“在本网络上的本主机”。封装有DHCPDiscovery报文的IP分组的源地址使用0.0.0.0;

以127开头且后面三个字节非“全O”或“全1”的IP地址是一类特殊的IPv4地址,既可以作为源地址使用,也可以作为目的地址使用,用于本地软件环回测试,例如常用的环回测试地址127.0.0.1;

地址255.255.255.255是一个特殊的IPv4地址,只能作为目的地址使用,表示“只在本网络上进行广播(各路由器均不转发)”。

例题:请根据本节课所学内容给出下图各网络的IPv4地址分配方案。请按照节约IP地址的原则进行分配。

解析:

路由器接口也需要一个ip地址

划分子网的的IPv4地址

将原有的网络地址划分成若干个更细的子网,避免重复申请新的网络地址,从而节约网络地址。

如某单位申请了一个b类地址145.16.0.0,将其分为3个子网,主机号为145.16向后借去子网号,如145.16.0,145.16.2,145.16.3

10010001.00010000.00000000.00000000 (145.16.0.0)

10010001.00010000.00000001.00000000 (145.16.1.0)

10010001.00010000.00000010.00000000 (145.16.2.0)

10010001.00010000.00000011.00000000 (145.16.3.0)

32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号

例题:已知某个网络的地址为218.75.230.0,使用子网掩码255.255.255.128对其进行子网划分,请给出划分细节。

对正常c类网进行分析

但是我们要分子网将主机号写成8个比特的二进制数

相当于分成2个子网。

例题:已知某个网络的地址为218.75.230.0,使用子网掩码255.255.255.192对其进行子网划分,请给出划分细节。

解析:

1.根据所给网络地址可知其为C类网络地址,网络号占3个字节,主机号占1个字节;

2.根据所给子网掩码可知从1字节主机号中借用2位作为子网号;

例题:某主机的IP地址为180.80.77.55,子网掩码为255.255.252.0,如该主机向其所在子网发送广播分组,则目的地址可以是

A.180.80.76.0 B.180.80.76.255 C.180.80.77.255 D.180.80.79.255

解析:

默认的子网掩码是指在未划分子网的情况下使用的子网掩码。

无分类编址的IPv4地址

划分子网在一定程度上缓解了因特网在发展中遇到的困难,但是数量巨大的C类网因为其地址空间太小没有得到充分使用,而因特网的IP地址仍在加速消耗,整个IPv4地址空间面临全部耗尽的威胁

为此,因特网工程任务组IETF又提出了采用无分类编址的方法来解决IP地址紧张的问题同时还专门成立IPv6工作组负责研究新版本IP以彻底解决IP地址耗尽问题。

1993年,IETF发布了无分类域间路由选择CIDR(Classless Inter-Domain Routing)的RFC文档:RFC 1517~1519和1520。

CIDR使用“斜线记法”,或称CIDR记法。即在IPv4地址后面加上斜线“/”,在斜线后面写上网络前缀所占的比特数量。

举例:128.14.35.7 / 20

网络前缀占用的比特数量:20 主机编号占用的比特数量: 32-20=12

CIDR实际上是将网络前缀都相同的连续的IP地址组成一个“CIDR地址块”

我们只要知道CIDR地址块中的任何一个地址,就可以知道该地址块的全部细节:

例题:请给出CIDR地址块128.14.35.7/20的全部细节(最小地址,最大地址,地址数量,聚合C类网数量,地址掩码)。

解析:

例题:请给出CIDR地址块206.0.64.8/18的全部细节(最小地址,最大地址,地址数量,聚合C类网数量,地址掩码)。

解析:

路由聚合(构造超网)

举例:

网络前缀越长,地址块越小,路由越具体;

若路由器查表转发分组时发现有多条路由可选,则选择网络前缀最长的那条,这称为最长前缀匹配,因为这样的路由更具体。

例题:在子网192.168.4.0 / 30中,能接收目的地址为192.168.4.3的IP分组的最大主机数是

A.0 B.1 C.2 D.4

解析:

选C

例题:某路由表中有转发接口相同的4条路由表项,其目的网络地址分别为35.230.32.0/21、35.230.40.0/21、35.230.48.0/21和35.230.56.0/21,将该4条路由聚合后的目的网络地址为

A.35.230.0.0/19 B.35.230.0.0/20 C.35.230.32.0/19 D.35.230.32.0/20

解析:

故选C

IPv4地址的应用规划

1.定长的子网掩码FLSM

2.变长的子网掩码VLSM

FLSM举例

假设申请到的C类网络为218.75.230.0,请使用定长的子网掩码给下图所示的小型互联网中的各设备分配IP地址。

应用需求:将C类网络218.75.230.0划分成5个子网,每个子网上可分配的IP地址数量不得少于各自的需求。

任选5个

VLSM举例

假设申请到的C类网络为218.75.230.0/24,请使用定长的子网掩码给下图所示的小型互联网中的各设备分配IP地址。

应用需求:从地址块218.75.230.0/24中取出5个地址块

(1个“/27”地址块,3个“/28”地址块,1个“/30”(1个“/27”地址块,3个“/28”地址块,1个“/30”地址块),按需分配给上图所示的5个网络。

在该地址块中给左图所示的网络N1~N5分配子块,分配原则是“每个子块的起点位置不能随意选取,只能选取块大小整数倍的地址作为起点”。建议先给大的子块分配。