1. 网络层提供的两种服务
网络层关注的是如何将分组从源端沿着网络路径送达目的端。
两种服务:网络层应该向运输层提供怎样的服务?
- 虚电路服务
- 数据报服务
虚电路
虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接。
数据报服务
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
网络在发送时不需要先建立连接。每一个分组(即 IP 数据报)独立发送,与其前后的分组无关(不进行编号)。
网络层不提供服务质量的承诺。即所传送的分组可能出错、丢失、重复和失序。当然也不保证分组传送的时限。
好处:
- 由于传输网络不提供端到端的可靠传输服务,就使得网络中的路由器可以做得比较简单,而且价格低廉。
- 如果主机中的进程之间的通信需要是可靠的,那么就由网络的主机中的传输层负责。
| 对比的方面 | 虚电路服务 | 数据报服务 |
| - | - | - |
| 思路 | 可靠通信应当由网络来保证 | 可靠通信应当由用户主机来保证 |
| 连接的建立 | 必须有 | 不需要 |
| 终点地址 | 仅在连接建立阶段使用,每个分组使用短的虚电路号 | 每个分组都有终点的完整地址 |
| 分组的转发 | 属于同一条虚电路的分组均按照同一路由进行转发 | 每个分组独立选择路由进行转发 |
| 当结点出故障时 | 所有通过出故障的结点的虚电路均不能工作 | 出故障的结点可能会丢失分组,一些路由可能会发生变化 |
| 分组的顺序 | 总是按发送顺序到达终点 | 到达终点时不一定按发送顺序 |
| 端到端的差错处理和流量控制 | 可以由网络负责,也可以由用户主机负责 | 由用户主机负责 |
2. 网际协议 IP
2.1 虚拟互连网络
网络互连的设备
中间设备又称为中间系统或中继系统
- 物理层中继系统:转发器(集线器)
- 数据链路层中继系统:网桥或桥接器(交换机)
- 网络层中继系统:路由器
- 网络层以上的中继系统:网关
网络互联的问题
互连在一起的网络要进行通信,会遇到许多问题需要解决,如:
- 不同的寻址方案
- 不同的最大分组长度
- 不同的网络接入机制
- 不同的超时控制
- 不同的差错恢复方法
- 不同的状态报告方法
- 不同的路由选择技术
- 不同的用户接入控制
- 不同的服务(面向连接服务和无连接服务)
- 不同的管理与控制方式
2.2 IP 协议
IP 协议简介
网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。与 IP 协议相关的还有四个协议:
- 地址解析协议 ARP
- 逆地址解析协议 RARP
- 网际控制报文协议 ICMP
- 网际组管理协议 IGMP
网络层 4 个协议之间层次
IP 层次结构
层次化 IP 地址
网络地址
网络地址唯一制定了每个网络。同一网络中的每台计算机都共享相同的网络地址,并用它作为自己 IP 地址的一部分。
2.3 分类的 IP 地址
IP 地址的类别
IP 地址及其表示方法
我们把整个因特网看成为一个单一的、抽象的网络。IP 地址就是给每个接在因特网上的主机的每一个接口分配一个在全世界范围是唯一的 32 位的标识符。
IP 地址现在由因特网名字与号码指派公司 ICANN 进行分配。
IP 地址的编址方法
- 分类的 IP 地址
- 子网的划分
- 构成超网
分类 IP 地址
- 每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标识主机所连接到的网络,而另一个字段则是主机号 host-id,它标识该主机。
- 两级的 IP 地址可以记为: IP 地址 ::= {< 网络号 >,< 主机号 >}
A 类地址:1-126
B 类地址:128-191
C 类地址:192-223
特殊的几个地址
- 0.0.0.0 本网络
- 127.0.0.1 本地环回地址
- 169.254.0.0 无法分配时
- 保留的私网地址
- 10.0.0.0
- 172.16.0.0 --- 172.31.0.0
- 192.168.0.0 --- 192.168.255.0
3. 划分子网和构造超网 CIDR
3.1 划分子网
子网掩码作用
子网掩码又叫网络掩码、地址掩码,它是一种用来指明一个 IP 地址的哪些位标识的是主机所在的子网以及哪些位标识是主机的位掩码。子网掩码不能单独存在,它必须结合 IP 地址一起使用。子网掩码只有一个作用,就是将某个 IP 地址划分成网络地址和主机地址两个部分。
例子:如果一台计算机的 IP 地址配置为 172.16.122.204,子网掩码为 255.255.0.0。将其 IP 地址和子网掩码都写成二进制,进行与运算,即 1 和 1 与运算得 1,0 和 1 或 1 和 0 做与运算得 0。这样主机位归零,网络位不变,得到 172.16.0.0。
从两级 IP 地址到三级 IP 地址
- 第一,IP 地址空间的利用率有时很低;
- 第二,给每个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏;
- 第三,两级 IP 不够灵活。
划分子网的方法是从网络的主机号借用若干位作为子网号,当然主机号也相应减少了同样的位数,两级 IP 变成了三级 IP:网络号、子网号、主机号。
IP 地址 ::= {< 网络号 >,< 子网号 >,< 主机号 >}
把 C 类网等分成两个子网
划分两个子网后网络规划如图所示
子网掩码是 128
等分成四个子网
可以用的网段:1-62 65-126 129-190 193-253
(0 的 IP 是网段的网络地址,而 63 的 IP 是网段的广播地址,其他类似)
子网掩码是 192
等分成八个子网
可以用的网段:同理
子网掩码是 224
点对点的子网掩码是 252
划分子网只能等分划分
变长子网划分
变长子网掩码 VLSM 可进一步提高 IP 地址资源利用率
- 100 50 20 10 可以划分为:
实例:判断 192.168.0.101/26 所属的子网
3.2 构造超网 CIDR
如何让两个子网的计算机划分在一个网段?
如图,将 192.168.0.0 和 192.168.1.0 两个 C 类网络合并。将 IP 地址第 3 个字节和第 4 个字节写成二进制,可以看到将子网掩码往左移动 1 位,网络部分就一样了,这两个网段就在一个网段了。这就是构造超网。
在 VLSM 的基础上更进一步研究出无分类编址方法,正式命名为无分类域间路由选择 CIDR(构造超网)
CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,能更加有效的分配 IPv4 的地址空间。
CIDR 地址块划分举例
合并网络的规律总结
3.3 IP 地址与硬件地址
两个计算机之间的通信过程
地址解析协议 ARP&逆地址解析协议 RARP
由于 IP 协议使用了 ARP 协议,因此 ARP 协议通常划归网络层。ARP 协议的用途是为了从网络层使用的 IP 地址,解析出在数据链路层使用的硬件地址。一个旧的协议叫做逆地址解析协议 RARP。
由于更换适配器会使主机的硬件地址改变,地址解析协议 ARP 解决解决的方法是在主机 ARP 高速缓存中存放一个从 IP 地址到硬件地址的映射表,并且这个映射表还经常动态更新。
3.4 IP 数据报的格式
在 TCP/IP 的标准中,各种数据格式常常以 32 位为单位来描述。
各字段含义:
- 版本:占 4 位,IP 的版本是 IPv4 还是 IPv6;
- 首部长度:占 4 位,IP 的首部长度最大是 60 字节;
- 区分服务:占 8 位,用于获得更好的服务。只有在使用区分服务时,这个字段才起作用;
- 总长度:占 16 位,指首部和数据之和的长度。最大长度为 65535 字节;
- 标识:占 16 位,是一个计数器,用于记录产生数据报个数;
- 标志:最低位记为 MF,MF=1 表示后面“还有分片”,中间一位记为 DF,意思是“不能分片”;
- 片偏移:占 13 位,分片后,某片在原分组中的相对位置,即偏移量;
- 生存时间:占 8 位,英文缩写 TTL,数据报在网络中的寿命; ping ip 地址 -i 5 可以看到至 ip 地址第 5 个路由器的 ip;
- 首部检验和:占 16 位,检验首部是否有错误;
- 源地址
- 目的地址
IP 数据报分片例子
首部校验过程
IP 数据报首部的可变长度是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。长度从 1 个字节到 40 个字节不等。
3.5 IP 转发分组的流程
路由表必须包含以下三项内容:目的网络地址、子网掩码、下一跳地址。
数据路由,路由器在不同网段转发数据报
网络畅通的条件:能去能回
- 沿途的路由器必须知道到目标网络下一跳给哪个接口
- 沿途的路由器必须知道到源网络下一跳给哪个接口
例子:计算机 PC0 ping PC1,网络要想通,要求沿途的路由器 Router0、Router1、Router2 和 Router3 都必须有到 192.168.1.0/24 网络的路由,这样数据报才能到达 PC1。
PC1 要回应数据报给 PC0,沿途所有的路由器必须有到 192.168.0.0/24 网络的路由,这样数据报才能回来。
添加默认路由实战命令:
Router1>en
Router1#config t
Router1#show ip route
Router1#config t
Routerl (config)#ip route 192.168.0.0 255.255.255.0 172.16.0.1
Router1#
Router1#show ip route
Router1#
Router1#config t
Router1 (config)#no ip route 192.168.0.0 255.255.255.0 172.16.0.1
4. 网际控制报文协议 ICMP
为了提高 IP 数据报交付成功的机会,在网际层使用了网际控制报文协议 ICMP。
- ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告;
- ICMP 不是高层协议,而是 IP 层的协议
- ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去。
ICMP 报文格式
4.1 ICMP 报文的种类
ICMP 报文的种类有两种,即ICMP 差错报告报文和ICMP 询问报文。
ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型、代码和检验和。接着的 4 个字节的内容与 ICMP 的类型有关。
差错报告报文有五种:终点不可达,源点抑制,时间超过,参数问题,改变路由(重定向)
询问报文有两种:回送请求和回答报文,时间戳请求和回答报文。
差错报告报文的数据字段的的内容
4.2 ICMP 的应用案例
ICMP 的一个重要应用就是分组网间探测 PING,用来测试两台主机之间的连通性。PING 使用了 ICMP 回送请求和回送回答请求报文。PING 是应用层直接使用网络层 ICMP 的一个例子,没有通过传输层的 TCP 或 UDP。
另一个非常有用的应用是 traceroute(这是 UNIX 操作系统中名字),它用来跟踪一个分组从源点到终点的路径,在 Windows 操作系统的命令是 tracert。
5. 互联网的路由选择协议
5.1 有关路由选择协议的几个基本概念
理想的路由算法
- 算法必须是正确的和完整的
- 算法在计算上应简单
- 算法应能适应通信量和网络拓扑的变化
- 算法应具有稳定性
- 算法应是公平的
- 算法应是最佳的
所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。
** 静态路由选择策略与动态路由选择策略**
静态路由选择也叫做非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。对于很简单的小网络,完全可以使用,人工配种每一个路由。
动态路由选择也叫做自适应路由选择,其特色是能较好地适应网络状态变化,但实现起来较为复杂,开销也比较大。因此动态路由选择适合复杂的大网络。
分层次的路由选择协议
互联网采用的路由选择协议主要是自适应的,分布式路由选择协议。原因:一是互联网规模非常大,二是许多单位不愿意外界了解自己单位网络的布局细节和采用的路由选择协议。
因此把互联网划分为很多小的自治系统(AS)。一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。
目前互联网把路由选择协议分为了内部网络协议 IGP(如:RIP 和 OSPF)和外部网络协议 EGP(BGP-4)。也叫做域间路由选择和域内路由选择。
5.2 内部网关协议 RIP
RIP 是内部网关协议 IGP 最先得到广泛使用的协议,是一种基于距离向量的路由选择协议。
RIP 协议要求网络中每一个路由器都要维护从它自己到其它每一个目的网络的距离记录,距离定义:从一路由器到直接连接的网络的距离定义为 1,到非直接连接的路由器没经过一个路由器加 1,也称为**“跳数”**,允许一条路径最多包含 15 个路由器,因此适用于小型互联网。
三个要点,即 RIP 协议的特点:和哪些路由器交换信息?交换什么信息?在什么时候交换信息?
- 仅和相邻路由交换信息;
- 交换的信息是当前本路由器所知道的全部信息,即自己现在的路由表;
- 按固定的时间间隔交换路由信息,每隔 30s 更新一次。
路由表中最主要的信息就是:到某个网络的距离,以及应经过的下一跳地址。路由表更新的原则是找出到每个目的网络的最短距离,也称为距离向量算法。
距离向量算法
对每一个相邻路由器发送过来的 RIP 报文,都进行以下步骤:
(1)对地址为 X 的相邻路由器发来的 RIP 报文,先修改此报文中的所有项目:把下一跳字段中的地址都改为 X,并把所有的“距离”字段的值加 1。每一个项目都有三个关键数据:到目的网络 N、距离是 d、下一跳路由器是 X。
(2)对修改后的 RIP 报文中的每一个项目,进行以下步骤:
- 若原来的路由表中没有目的网络 N,则把该项目添加到路由表中
- 否则(有目的地址,就查看下一跳路由器地址)
- 若下一跳路由器地址是 X,则把收到的项目替换原路由表中的项目;
- 否则(到目的网络 N,但下一跳路由器不是 X)
- 若收到的项目中的距离 d 小于路由表中的距离,则进行更新。
- 否则什么都不做。
5.3 内部网关协议 OSPF
这个协议的名字是开放最短路径优先 OSPF。
OSPF 最主要的特征就是使用分布式的链路状态协议,而不像 RIP 哪有的距离向量协议。
- 向本自治系统中所有路由器发送信息。
- 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。
- 只有当链路状态发生变化时,路由器才向所有路由器用洪泛法发送此信息。
由于频繁交换链路状态信息,因此所有路由器都能建立一个链路状态数据库,这个数据库实际上就是全网的拓扑结构图。在全网范围内是一致的(链路状态数据库的同步)。
OSPF 和 RIP 都是动态路由协议,OSPF 的度量值是带宽,支持多区域、负载均衡、触发式更新、支持无分类编址 CIDR
OSPF 有三个表
- 邻居表(问候:Hello)
- 链路状态表
- 计算路由表
OSPF 不用 UDP 而是直接用 IP 数据报传送(其 IP 数据报首部的协议字段值是 89),构成的数据报很短。其中有:版本、类型、分组长度、路由器标识符、区域标识符、检验和、鉴别类型、鉴别。
5.4 外边网关协议 BGP
BGP 是不同自治系统的路由器之间交换路由信息的协议,BGP 较新版本是 BGP-4。
BGP 协议只能是力求寻找一条能够到达目的网络且比较好的路由,而并非要寻找一条最佳路由。每个自治系统的管理员都要选择至少一个路由器作为该自治系统的“BGP 发言人”。
BGP 发言人和自治系统 AS 的关系
BGP 发言人交换路径向量
BGP 协议的特点
- BGP 协议交换路由信息数量不是很多;
- BGP 发言人数不多,路由选择相对简单;
- BGP 协议支持 CIDR;
- BGP 建立时,交换整个路由表但之后只交换变化部分。
5.5 路由器的组成
典型的路由器的结构
6. IPv6
** IPv6 的基本首部**
IPv6 仍支持无连接的传送,但将协议数据单元 PDU 称为分组,而不是 IPv4 的数据报。
- 更大的地址空间
- 扩展的地址层次结构
- 灵活的首部格式
- 改进的选项
- 允许协议继续扩充
- 支持即插即用
- 支持资源的预分配
- IPv6 首部改为 8 字节对齐
IPv6 数据报有两部分组成:基本头部和有效载荷(净负荷)
** IPv6 的地址**
目的地址可以是单播、多播、任播。地址使用冒号十六进制记法。
7. 虚拟专用网 VPN 和网络地址转换 NAT
7.1 虚拟专用网 VPN
专用地址只能用于一个机构的内部通信,而不能与互联网的主机通信。互联网的所有路由器,对目的地址是专用地址的数据报一律不转发。
利用共用的互联网作为主机构各专用网之间的通信载体,这样的专用网称为虚拟专用网 VPN。
7.2 网络地址转换 NAT
网络地址转换 NAT 方法于 1994 年提出。
需要再专用网连接到因特网的路由器上安装 NAT 软件。装有 NAT 软件的路由器叫做 NAT 路由器,它至少有一个有效的外部全球地址 IP。
所有使用本地地址的主机和外界通信时都要在 NAT 路由器上将其本地地址转换成 IP,才能和因特网连接。
使用端口号的 NAT 也叫做网络地址与端口号转换 NAPT。