文章目录
- 计算机网络体系结构
4.1 网络层的几个重要概念
4.1.1 网络层提供的两种服务
- 争论:
- 网络层应该向运输层提供怎样的服务?面向连接还是无连接?
- 在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统?
- 2 种观点:
- 面向连接的可靠交付。
- 无连接的、尽最大努力交付的数据报服务,不提供服务质量的承诺。
一种观点:让网络负责可靠交付
- 计算机网络模仿电信网络,使用面向连接的通信方式。
- 通信之前先建立虚电路 VC (Virtual Circuit) (即连接),以保证双方通信所需的一切网络资源。
- 如果再使用可靠传输的网络协议,可使所发送的分组无差错按序到达终点,不丢失、不重复。
虚电路服务
虚电路只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,并不是真正建立了一条物理连接。
另一种观点:网络提供数据报服务
互联网采用的设计思路:
- 网络层要设计得尽量简单,向其上层只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
- 网络在发送分组时不需要先建立连接。
- 每一个分组(即 IP 数据报)独立发送,与其前后的分组无关(不进行编号)。
- 网络层不提供服务质量的承诺。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),也不保证分组传送的时限。
- 由主机中的运输层负责可靠的通信。
数据报服务
虚电路服务与数据报服务的对比
4.1.2 网络层的两个层面
- 不同网络中的两个主机之间的通信,要经过若干个路由器转发分组来完成。
- 在路由器之间传送的信息有以下 2 大类:
- 数据。
- 路由信息(为数据传送服务)。
数据层面和控制层面
- 数据层面
- 路由器根据本路由器生成的转发表,把收到的分组从查找到的对应接口转发出去。
- 独立工作。
- 采用硬件进行转发,快。
- 控制层面
- 根据路由选择协议所用的路由算法计算路由,创建出本路由器的路由表。
- 许多路由器协同动作。
- 采用软件计算,慢。
软件定义网络 SDN (Software Defined Network)
- 远程控制器:
计算出最佳的路由,在每一个路由器中生成其正确的转发表。 - 路由器:
查找转发表,转发分组。
4.2 网际协议 IP
与网际协议 IPv4 配套的 3 个协议:
- 地址解析协议 ARP (Address Resolution Protocol)
- 网际控制报文协议 ICMP (Internet Control Message Protocol)
- 网际组管理协议 IGMP (Internet Group Management Protocol)
4.2.1 虚拟互连网络
实现网络互连、互通时需要解决许多问题,如以下“不同”:
- 实现异构网络的互连互通方法,哪种好?
- A. 都使用相同的网络?×
- 不能满足不同用户需要。没有一种单一的网络能够适应所有用户的需求。
- 不适应技术发展
- B. 使用中间设备?√
- 可以满足不同需求
- 实用
- A. 都使用相同的网络?×
使用中间设备进行互连
使用转发器或网桥不称为网络互连
- 转发器、网桥或交换机仅把一个网络扩大了,仍然是一个网络
网络互连使用路由器
互连网络与虚拟互连网络
IP 网的意义
- 当互联网上的主机进行通信时,就好像在一个网络上通信一样,看不见互连的各具体的网络异构细节。
- 如果在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就是现在的互联网 (Internet)。
分组在互联网中的传送
分组传输路径
4.2.2 IP 地址
- 在 TCP/IP 体系中,IP 地址是一个最基本的概念。
- 没有IP地址,就无法和网上的其他设备进行通信。
- 本部分重点:
- IP 地址及其表示方法
- 分类的 IP 地址
- 无分类编址 CIDR
- IP 地址的特点
1. IP 地址及其表示方法
- 互联网上的每台主机(或路由器)的每个接口分配一个在全世界唯一的 IP 地址。
由互联网名字和数字分配机构 ICANN (Internet Corporation for Assigned Names and Numbers) 进行分配。
点分十进制记法举例
IP 地址采用 2 级结构
- IP地址在整个互联网范围内是唯一的。
- IP 地址指明了连接到某个网络上的一个主机
2. 分类的 IP 地址
- 各类 IP 地址的网络号字段和主机号字段
- A 类地址的网络号字段 net-id 为 1 字节
- B 类地址的网络号字段 net-id 为 2 字节
- C 类地址的网络号字段 net-id 为 3 字节
- A 类地址的主机号字段 host-id 为 3 字节
- B 类地址的主机号字段 host-id 为 2 字节
- C 类地址的主机号字段 host-id 为 1 字节
- D 类地址是多播地址
- E 类地址是保留地址,保留为今后使用
各类 IP 地址的指派范围
- 注意:
- A 类网络地址中, 网络号 0 和 127 是保留地址,不指派。0 表示“本网络”,127 保留作为本地环回测试地址。
- B 类网络地址中,网络号 128.0 是被 IANA 保留的,不指派。采用无分类编址(CIDR)时可以指派。
- C 类网络地址中,网络号 192.0.0 是被 IANA 保留的,不指派。采用无分类编址(CIDR)时可以指派。
- 指派主机号时,要扣除全 0 和全 1 。全 0 和全 1 有特殊含义和用途。
一般不使用的特殊的 IP 地址
分类的 IP 地址的优点和缺点
-
管理简单;
-
使用方便;
-
转发分组迅速;
-
划分子网,灵活地使用。
-
设计上不合理:
-
大地址块,浪费地址资源;
-
即使采用划分子网的方法,也无法解决 IP 地址枯竭的问题。
3. 无分类编址 CIDR
- CIDR (Classless Inter-Domain Routing) :无分类域间路由选择。
- 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,可以更加有效地分配 IPv4 的地址空间,但无法解决 IP 地址枯竭的问题。
- 要点:
(1) 网络前缀
(2) 地址块
(3) 地址掩码
(1) 网络前缀
- CIDR 记法:斜线记法 (slash notation)
a.b.c.d / n:二进制 IP 地址的前 n 位是网络前缀。- 例如:128.14.35.7 /20:前 20 位是网络前缀。
- 和分类的 IP 地址最大的区别:
前缀的位数 n 不固定,可以在 0 ~ 32 之间选取任意值。
(2) 地址块
- CIDR 把网络前缀都相同的所有连续的 IP 地址组成一个 CIDR 地址块。
- 一个 CIDR 地址块包含的 IP 地址数目,取决于网络前缀的位数。
- 注意:
(3) 地址掩码 (address mask)
- 又称为子网掩码 (subnet mask)。
- 位数:32 位。
- 目的:让机器从 IP 地址迅速算出网络地址。
- 由一连串 1 和接着的一连串 0 组成,而 1 的个数就是网络前缀的长度。
/20 地址块的地址掩码:11111111 11111111 11110000 00000000
点分十进制记法:255.255.240.0
CIDR 记法:255.255.240.0/20。
默认地址掩码
网络地址 = (二进制的 IP 地址) AND (地址掩码)
- 【例】已知 IP 地址是 128.14.35.7/20。求网络地址。
常用的 CIDR 地址块
构造超网
- 每一个 CIDR 地址块中的地址数一定是 2 的整数次幂。
- 除最后几行外,CIDR 地址块都包含了多个 C 类地址(是一个 C 类地址的 2n 倍,n 是整数)。
- 因此在文献中有时称 CIDR 编址为“构造超网”。
三个特殊的 CIDR 地址块
路由聚合 (route aggregation)
- 聚合的路由地址需要连续,如果不连续会把别的路由地址的数据包接收掉。
CIDR 地址块划分举例
这个 ISP 共有 64 个 C 类网络。如果不采用 CIDR 技术,则在与该 ISP 的路由器交换路由信息的每一个路由器的转发表中,需要有 64 行。采用地址聚合后,转发表中只需要用 1 行来指出到 206.0.64.0/18 地址块的下一跳。
在 ISP 内的路由器的转发表中,也仅需用 206.0.68.0/22 这 1 个项目,就能把外部发送到这个大学各系的所有分组,都转发到大学的路由器。
4. IP 地址的特点
- (1) 每个 IP 地址都由网络前缀和主机号两部分组成。
IP 地址是一种分等级的地址结构。- 方便了 IP 地址的分配和管理。
- 实现路由聚合,减小了转发表所占的存储空间,以及查找转发表的时间。
- (2) IP 地址是标志一台主机(或路由器)和一条链路的接口。
- 当一台主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号必须是不同的。这种主机称为多归属主机 (multihomed host)。
- 一个路由器至少应当连接到两个网络,因此一个路由器至少应当有两个不同的 IP 地址。
- (3) 转发器或交换机连接起来的若干个局域网仍为一个网络
- 按照互联网的观点,一个网络(或子网)是指具有相同网络前缀的主机的集合。
- 转发器或交换机连接起来的若干个局域网都具有同样的网络号,它们仍为一个网络。
- 具有不同网络号的局域网必须使用路由器进行互连。
- (4) 在 IP 地址中,所有分配到网络前缀的网络都是平等的。
- 互联网同等对待每一个 IP 地址,不管是范围很小的局域网,还是可能覆盖很大地理范围的广域网
4.2.3 IP 地址与 MAC 地址
- IP 地址
- 虚拟地址、软件地址、逻辑地址。
- 网络层和以上各层使用。
- 放在 IP 数据报的首部。
- MAC 地址
- 固化在网卡上的 ROM 中。
- 硬件地址、物理地址。
- 数据链路层使用。
- 放在 MAC 帧的首部。
IP 地址与 MAC 地址的区别
从协议栈的层次上看 IP 地址和 MAC 地址
- IP地址没有变化、mac地址发生变化,对IP层没有影响
不同层次、不同区间使用的源地址和目的地址
- 尽管互连在一起的网络的 MAC 地址体系各不相同,但 IP 层抽象的互联网却屏蔽了下层这些很复杂的细节。
- 只要我们在网络层上讨论问题,就能够使用统一的、抽象的 IP 地址研究主机和主机或路由器之间的通信。
- 问题:
主机或路由器怎样知道应当在 MAC 帧的首部填入什么样的 MAC 地址?- 使用地址解析协议 ARP
4.2.4 地址解析协议 ARP
- 实现 IP 通信时使用了两个地址:
- IP 地址(网络层地址)
- MAC 地址(数据链路层地址)
地址解析协议 ARP 的作用
- 问题:已经知道了一个机器(主机或路由器)的 IP 地址,如何找出其相应的 MAC 地址?
- ARP (Address Resolution Protocol ) 作用:
- 从 IP 地址解析出 MAC 地址。
要点 1:ARP 高速缓存 (ARP cache)
- ARP 高速缓存 (ARP cache):
- 存放 IP 地址到 MAC 地址的映射表。
- 映射表动态更新(新增或超时删除)。
超过生存时间的项目都从高速缓存中删除,以适应网络适配器变化。
要点 2:ARP 工作
- 当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时:
要点 3:ARP 查找 IP 地址对应的 MAC地址
- 本局域网上广播发送 ARP 请求(路由器不转发 ARP 请求)。
- ARP 请求分组:包含发送方硬件地址 / 发送方 IP 地址 / 目标方硬件地址(未知时填 0) / 目标方 IP 地址。
- 单播 ARP 响应分组:包含发送方硬件地址 / 发送方 IP地址 / 目标方硬件地址 / 目标方 IP 地址。
- ARP 分组封装在以太网帧中传输。
ARP 高速缓存的作用
- 存放最近获得的 IP 地址到 MAC 地址的绑定。
- 减少 ARP 广播的通信量。
- 为进一步减少 ARP 通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到 MAC 地址的映射写入 ARP 请求分组。
- 当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的 IP 地址及其对应的 MAC 地址映射写入主机 B 自己的 ARP 高速缓存中。不必在发送 ARP 请求。
2 台主机不在同一个局域网上怎么办?
- ARP 用于解决同一个局域网上的主机或路由器的 IP 地址和 MAC 地址的映射问题。
- 通信的路径:A → 经过 R1 转发 → B。
- 因此主机 A 必须知道路由器 R1 的 IP 地址,解析出其 MAC 地址。然后把 IP 数据报传送到路由器 R1。
使用 ARP 的四种典型情况
- 发送方是主机,要把 IP 数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。
- 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
- 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。
- 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成。
为什么要使用两种地址:IP 地址和 MAC 地址?
- 不同厂商生产使用不同的 MAC 地址。MAC 地址之间的转换非常复杂。
- 对以太网 MAC 地址进行寻址也是极其困难的。
- IP 编址把这个复杂问题解决了。
- 连接到互联网的主机只需各自拥有一个唯一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,即使必须多次调用 ARP 来找到 MAC 地址,但这个过程都是由计算机软件自动进行的,对用户来说是看不见的。
- 因此,在虚拟的 IP 网络上用 IP 地址进行通信非常方便。
4.2.5 IP 数据报的格式
- IP 数据报由首部和数据两部分组成
- 首部的前一部分是固定长度,共 20字节,是所有 IP 数据报必须具有的。
- 可选字段,其长度是可变的,不足4比特就进行填充
- 版本——占 4 位,指 IP 协议的版本。 目前的 IP 协议版本号为 4 (即 IPv4)。
- 首部长度——占 4 位,可表示的最大数值,是 15 个单位(一个单位为 4 字节),因此 IP 的首部长度的最大值是 60 字节。
- 区分服务——占 8 位,用来获得更好的服务。 只有在使用区分服务(DiffServ)时,这个字段才起作用。 在一般的情况下都不使用这个字段
- 总长度——占 16 位,指首部和数据之和的长度, 单位为字节,因此数据报的最大长度为 65535 字节。 总长度必须不超过最大传送单元 MTU。
- 标识 (identification) ——占 16 位, 它是一个计数器,用来产生 IP 数据报的标识。
- 标志(flag) ——占 3 位,目前只有前两位有意义。
- 标志字段的最低位是 MF (More Fragment)。
MF=1 表示后面还有分片,MF=0 表示最后一个分片。 - 标志字段中间的一位是 DF (Don’t Fragment) 。
只有当 DF=0 时才允许分片。
- 标志字段的最低位是 MF (More Fragment)。
- 片偏移——占 13 位,指出:较长的分组在分片后 某片在原分组中的相对位置。 片偏移以 8 个字节为偏移单位。
- 【例4-1】 IP 数据报分片
- 【例4-1】 IP 数据报分片
- 生存时间——占 8 位,记为 TTL (Time To Live),指示数据报在网络中可通过的路由器数的最大值。
- 协议——占 8 位,指出此数据报携带的数据使用何种协议, 以便目的主机的 IP 层将数据部分上交给那个处理过程
- IP 协议支持多种协议,IP 数据报可以封装多种协议 PDU。
- 常用的一些协议和相应的协议字段值
- IP 协议支持多种协议,IP 数据报可以封装多种协议 PDU。
- 首部检验和——占 16 位,只检验数据报的首部, 不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法。
- 数据报每经过一个路由器,路由器都要重新计算一下首部检验和
- 源地址和目的地址都各占 32 位。
2. IP 数据报首部的可变部分
- IP 首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。
- 长度可变:从 1 个字节到 40 个字节不等,取决于所选择的项目。
- 增加了 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的,增加了每一个路由器处理数据报的开销。
- 实际上这些选项很少被使用。