网络层(一)
4.1、网络层概述
简介
- 网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输
这些异构型网络N1~N7如果只是需要各自内部通信,他们只要实现各自的物理层和数据链路层即可
但是如果要将这些异构型网络互连起来,形成一个更大的互联网,就需要实现网络层设备路由器
有时为了简单起见,可以不用画出这些网络,图中N1~N7,而将他们看做是一条链路即可
要实现网络层任务,需要解决一下主要问题:
- 网络层向运输层提供怎样的服务(“可靠传输” 还是 “不可靠传输”)
- 在数据链路层那章讲过的可靠传输,详情可以看那边的笔记:如果网络层对以下的分组丢失、分组失序、分组重复的传输错误采取措施,使得接收方能够正确接收发送方发送的数据,就是可靠传输;反之,如果不采取措施,则是不可靠传输
- 网络层寻址问题
- 路由选择问题
路由器收到数据后,是依据什么来决定将数据包从自己的哪个接口转发出去呢 ?
- 依据数据包中的目的地址和路由器中的路由表
但在实际过程中,路由器是怎样知道这些路由记录呢 ?
- 由用户或网络管理员进行人工配置,这种方法只适用于规模较小且网络拓扑不改变的小型互联网。
- 另一种是实现各种路由选择协议,由路由器执行路由选择协议中所规定的路由选择算法,而自动得出路由表中的路由记录,这种方法更适用于规模较大且网络拓扑经常改变的大型互联网。
概述
- 因特网(Internet)是目前全世界用户数量最多的互联网,它使用 TCP/IP 协议栈
- 由于 TCP/IP 协议栈的网络层使用网际协议IP,它是整个协议栈的核心协议,因此在 TCP/IP 协议栈中网络层常称为:网际层。
- 综上所述,我们通过学习TCP/IP 协议栈的网际层来学习网络层的理论知识和实践技术。
补充:
网络层(网际层)除了 IP协议外,还有之前介绍过的地址解析协议ARP,还有网际控制报文协议ICMP,网际组管理协议IGMP
总结
4.2、网络层提供的两种服务
- 在计算机网络领域,网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”)曾引起了长期的争论。
- 争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统?
面向连接的虚电路服务
一种观点:让网络负责可靠交付
- 这种观点认为,应借助于电信网的成功经验,让网络负责可靠交付,计算机网络应模仿电信网络,使用面向连接的通信方式。
- 通信之前先建立虚电路(Virtual Circuit),以保证双方通信所需的一切网络资源。
- 如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点,不丢失、不重复。
发送方 发送给 接收方 的所有分组都沿着同一条虚电路传送
- 虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接。
- 注意,采用电路交换的电话通信是先建立了一条真正的连接。
- 因此分组交换的虚连接和电路交换的连接只是类似,但并不完全一样。
无连接的数据报服务
另一种观点:网络提供数据报服务
- 互联网的先驱者提出了一种崭新的网络设计思路
- 网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务
- 网络在发送分组时不需要先建立连接。每一个分组(即 IP 数据报)独立发送,与其前后的分组无关(不进行编号)
- 网络层不提供服务质量的承诺。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限
发送方 发送给 接收方 的分组可能沿着不同路径传送
尽最大努力交付
- 如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责可靠交付(包括差错处理、流量控制等)
- 采用这种设计思路的好处是:网络的造价大大降低,运行方式灵活,能够适应多种应用
- 因特网能够发展到今日的规模,充分证明了当初采用这种设计思路的正确性
虚电路服务与数据报服务的对比
由于 TCP/IP 体系结构的因特网的网际层提供的是简单灵活、无连接的、尽最大努力交付的数据报服务,因此本章主要围绕网际层如何传送 IP 数据报这个主题进行讨论。
4.3、IPv4
概述
练习
8位无符号二进制整数转十进制
十进制正整数转8位无符号二进制数
1、分类编址的IPv4地址
简介
- 每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号 host-id,它标志该主机(或路由器)
- 主机号在它前面的网络号所指明的网络范围内必须是唯一的
- 由此可见,一个 IP 地址在整个互联网范围内是唯一的
A类地址
B类地址
C类地址
练习
总结
IP 地址的指派范围
一般不使用的特殊的 IP 地址
IP 地址的一些重要特点
- IP 地址是一种分等级的地址结构。分两个等级的好处是:
- 第一,IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理
- 第二,路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间
- 实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口
- 当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为多归属主机(multihomed host)。
- 由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址
- 用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net-id
- 所有分配到网络号 net-id 的网络,无论是范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的
2、划分子网的IPv4地址
为什么要划分子网
在 ARPANET 的早期,IP 地址的设计确实不够合理:
- IP 地址空间的利用率有时很低
- 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏
- 两级的 IP 地址不够灵活
- 如果想要将原来的网络划分成三个独立的网路
- 是否可以从 IP地址的主机号部分借用一些位作为子网号来区分不同的子网
如果未在图中标记子网号部分,那么我们和计算机又如何知道分类地址中主机号有多少位被用作子网号了呢?
所以就有了划分子网的工具:子网掩码
- 从 1985 年起在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址。
- 这种做法叫做划分子网(subnetting) 。
- 划分子网已成为互联网的正式标准协议。
如何划分子网
基本思路
- 划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络
- 从主机号借用若干个位作为子网号subnet-id,而主机号 host-id 也就相应减少了若干个位
- 凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号net-id,先找到连接在本单位网络上的路由器。
- 然后此路由器在收到 IP 数据报后,再按目的网络号net-id 和子网号subnet-id 找到目的子网。
- 最后就将 IP 数据报直接交付目的主机
划分为三个子网后对外仍是一个网络
- 优点
- 减少了 IP 地址的浪费
- 使网络的组织更加灵活
- 更便于维护和管理
- 划分子网纯属一个单位内部的事情,对外部网络透明,对外仍然表现为没有划分子网的一个网络
子网掩码
(IP 地址) AND (子网掩码) = 网络地址 重要,下面很多相关知识都会用到
举例
- 从主机号部分借用一个比特作为子网号,子网号只能是0或1
练习
练习一
练习二
默认子网掩码
总结
- 子网掩码是一个网络或一个子网的重要属性
- 路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器
- 路由器的路由表中的每一个项目,除了要给出目的网络地址之外,还必须同时给出该网络的子网掩码
- 若一个路由器连接在两个子网上,就拥有两个网络地址和两个子网掩码
3、无分类编址的IPv4地址
为什么使用无分类编址
无分类域间路由选择 CIDR (Classless Inter-Domain Routing)
CIDR 最主要的特点
- CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号
- IP 地址从三级编址(使用子网掩码)又回到了两级编址
如何使用无分类编址
举例
练习
路由聚合(构造超网)
练习
练习一
练习二
总结
4、IPv4地址的应用规划
给定一个IPv4地址块,如何将其划分成几个更小的地址块,并将这些地址块分配给互联网中的不同网络,进而可以给各网络中的主机和路由器接口分配IPv4地址。
定长的子网掩码FLSM(Fixed Length Subnet Mask)
注意:划分子网的IPv4就是定长的子网掩码
举例
注意:总共有5个子网需要分配,2^1 = 2、2^2 = 4、2^3 = 8,所以只能是借用3个比特作为子网号
通过上面步骤分析,就可以从子网 1~8 中任选5个分配给左图中的 N1~N5
采用定长的子网掩码划分,只能划分出2^n个子网,其中n是从主机号部分借用的用来作为子网号的比特数量,每个子网所分配的IP地址数量相同,容易造成 IP地址 的浪费
例如:图中的网络5只需要4个IP地址,但是我们只能给它分配32个IP地址,这样就造成了IP地址的严重浪费
变长的子网掩码VLSM(Variable Length Subnet Mask)
注意:无分类编址的IPv4就是变长的子网掩码
举例
在该地址块中给上图所示的网络N1~N5分配子块,分配原则是“每个子块的起点位置不能随意选取,只能选取块大小整数倍的地址作为起点”。建议先给大的子块分配。
练习