# 网络层
从源到目标主机进行 packet 的传输。
# 网络层的设计要点
- 分组封装 (packetizing/encapsulation).
- 路由选择 (routing): 路由协议不全是网络层的协议。
- 转发 (forwarding): 偏向动作的描述。
- 差错控制 (error control)
- QoS 在网络层上加入 virtual layer, 用来解决网络安全问题。
网络层向传输层提供的服务决定其设计要点。其提供的服务应包括以下考虑:
- 服务应该独立于网络层的路由技术。
- 应向传输层屏蔽路由相关信息 (路由数量、类型和拓扑关系等)。
- 传输层的网络地址应存在统一编码方案。
# 存储转发型的分组交换机制
存储转发型的分组交换机制 (Store-and-Forward Packet Switching) 是不同路由器 (router) 的组网连接进行资源调度的机制。其提供两种服务:
- 无连接的服务 (Connection-less services): 采用数据报 (datagram) 进行数据交换。
- 是不可靠的网络,会出现失序 (out of order)、丢失 (lost)、错误 (destroyed) 的情况。
- 其代表是 IP 协议。
- 无连接服务实现的核心是路由算法,有如下特点:
- 尽最大努力交付 (best effort delivery): 各个
- 面向连接的服务 (Connection-oriented services): 采用虚电路 (virtual circuit) 进行数据交换。
- 不会出现失序的情况,因为线路是唯一的。因此可以保障 QoS.
- 其代表是 X.25, Frame Relay, ATM 和 MPLS.
# 向传输层提供服务的目标
网络层向传输层提供服务包括以下三个目标:
- 向上提供的服务应该独立于路由器技术;
- 应该向传输层屏蔽路由器的数量、类型和拓扑关系;
- 传输层可用的网络地址应该有一个统一编址方案,甚至可以跨越 LAN 和 WAN.
# 路由算法
路由算法 (routing algorithm) 负责确定一个入境数据包应该被发送到哪一条输出线路上。
# 泛洪算法
# 拥塞控制
# 拥塞控制的概念
当网络中同时出现过多的数据包,导致数据包被延迟或消失,从而降低网络传输效率的情况称为拥塞 (congestion). 网络层和传输层承担拥塞控制的主要责任。
拥塞控制不同于流量控制。拥塞控制是对网络整体的控制方式,而流量控制则是点对点的控制。
# 拥塞控制的主要途径
拥塞控制包括如下主要途径:
- 流量感知的路由 (traffic-aware routing)
- 准入控制 (admission control)
- 流量调节 (traffic throttling)
- 负载脱落 (loading shedding)
# Internet 的网络层
我们主要研究 Internet 网络层的 IPv4 协议。
# IPV4
IPv4 的特点是不可靠,无确认,无连接。只进行数据封装。唯一的优点是协议机制简单。
路由策略:有路则走,无路则丢
引出了 ICMP、IGMP、ARP、DHCP 协议。
# IP 数据报首部结构
IP 数据报的 header 可以分为两部分:长度为 20Bytes 的固定部分和长度为 1~40Bytes 的可变部分。
# IP 地址
这里说的 IP 地址是 IPV4 的地址。其为 32 位长度的地址。为方便表示,每 8 位为一段采用点隔开,称为点分十进制记法。
# IP 地址分类
IP 地址可以分为 A, B, C, D, E 类地址。
- A 类地址网络号字段长 8 位,主机号字段长 24 位,首位为
0
, 前 8 位为 0 至 127, 最多容纳 个网络 (网络号为0000 0000
和0111 1111
留作他用)。可用的主机号共 个 (全 0 和全 1 的表示网络本身和全体主机)。 - B 类地址网络号字段长 16 位,主机号字段长 16 位,首位为
10
, 前 8 位为 128 至 191. - C 类地址网络号字段长 24 位,主机号字段长 8 位,首位为
110
, 前 8 位为 192 至 224. - D 类地址为多播地址,首位为
1110
. - E 类地址为保留地址,首位为
1111
.
子网掩码
子网划分使路由表变大了。
无分类的两级编址。
动态分配 IP 地址。
- 受限广播地址 (limited broadcasting address): 地址形式唯一,为
255.255.255.255
. - 直接广播地址 (directed broadcasting address): 网络号有效,主机号全为
1
. 即子网中的最后一个地址,用来使路由器将一个来
自其他网络的分组以广播方式发送给特定网络上的所有主机。 - 回送地址 (loopback address): A 类 IP 地址中的
127.0.0.0
是一个保留地址,它即回送地址。用于网络软件测试和本地进程间通信使用。 - 网络地址:即网络号 (主机号全为
0
), 是子网的第一个地址。 - 子网的第一个可用地址:网络地址的后一个地址。
- 子网的最后一个可用地址:直接广播地址前的一个地址。
- 子网掩码:网络位全
1
, 主机位全0
.
# CIDR 技术
# NAT 技术
网络地址转换 (Network Address Translation, NAT) 用来实现网络私有地址和公有地址的转换。
# IPv6
# Internet 控制协议 (路由协议)
# 自治系统
每个网络独立于其它网络运营,因此称为一个自治系统 (Autonomous System, AS).
# ICMP 协议
网际控制报文协议 (Internet Control Message Protocol, ICMP) 用来提高 IP 数据报交付成功的可能。
# DHCP 协议
动态主机配置协议 (Dynamic Host Configuration Protocol, DHCP) 可以实现服务器向客户端动态分配配置信息,提供了即插即用联网 (plug-and-play networking) 的机制。配置信息包括:
- IP 地址
- 子网掩码
- 默认路由器的 IP 地址
- 域名服务器的 IP 地址
# 网关协议
网关 (gateway) 是路由器的旧称。
域内路由协议又称内部网关协议 (Interior Gateway Protocol, IGP), 域间路由协议又称外部网关协议 (Exterior Gateway Protocol, EGP). 主要的网关协议包括:
- IGP (内部网关协议)
- RIP (路由信息协议)
- OSPF (开放最短路径优先协议)
- IS-IS (中间系统到中间系统)
- IGRP (内部网关路由协议)
- EGP (外部网关协议)
- BGP (边界网关协议)
# RIP 协议
路由信息协议 (Routing Information Protocol, RIP) 是一种分布式的、基于距离向量 (distance vector) 的路由选择协议,是 Internet 的标准协议。
RIP 协议中关于距离的定义和规则如下:
- 好路由为距离短的路由。最佳路由为距离最短的路由。
- 一条路径最多只能包含 15 个路由器。
- 距离的最大值为 16 时即相当于不可达。
- RIP 不能在两个网络之间同时使用多条路由,只选择距离最短的路由。
RIP 协议的三个特点:
- 仅和相邻路由器交换信息。
- 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
- 按固定时间间隔交换路由信息,例如,每隔 30 秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。
# OSPF 协议
OSPF 协议传输的信息包括五种类型:
信息类型 | 描述 |
---|---|
Hello | Used to discover who the neighbors are |
Link state update | Provides the sender's costs to its neighbors |
Link state ack | Acknowledges link state update |
Database description | Announces which updates the sender has |
Link state request | Requests information from the partner |
OSPF 协议的三个主要特点:
- 采用洪泛法 (flooding), 向本自治系统中所有路由器发送信息。
- 发送的信息是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。
- 链路状态:说明本路由器都和哪些路由器相邻,以及该链路的度量 (metric), 包括费用、距离、延时和带宽。
- 当链路状态发生变化或每隔一段时间 (如 30 分钟),路由器才用洪泛法向所有路由器发送此信息。
# 链路状态数据库
链路状态数据库 (link-state database) 有如下特点:
- 每个路由器最终都能建立。
- 全网的拓扑结构图。
- 在全网范围内是一致的(这称为链路状态数据库的同步)。
- 每个路由器使用链路状态数据库中的数据构造自己的路由表 (例如
,使用 Dijkstra 的最短路径路由算法)
# 三级网络
- OSPF 是开放系统最短路径优先协议。
- OSPF 使用分布式链路状态协议。
- OSPF 要求路由器发送的信息是本路由器与哪些路由器相邻,以及链路的度量值 (OSPF 使用的度量值包括费用、距离、延时、带宽)。
- OSPF 使用洪泛法发送信息。
- OSPF 协议要求让路由器建立一个链路状态数据库,该数据库实际上是全网的拓扑结构图。
- OSPF 将一个自治系统划分为多个区域 (area), 每个区域有一个 32 位的区域标识符,每个区域内的路由器通常不超过 200 个。
- 使用 OSPF 的路由器只需要建立本区域内的链路状态数据库,负责各区域之间通信的路由器叫做区域边界路由器,只需要将来自本区域的信息发送给下一个区域的区域边界路由器,同样不需要获取其他区域的链路状态数据库。
# BGP 协议
边界网关协议 (Border Gateway Protocol, BGP) 属于外部网关协议。Internet 中最常用的外部网关协议为 BGP-4. BGP 协议采用路径矢量协议 (path vector protocol, 又称路由向量协议),与 RIP 不同。
BGP 路由选择协议执行中使用的四个分组为
- 打开 (open): 与另一个 BGP 发言人建立关系
- 更新 (update): 发送要更新的某一条路由信息或要删除的多条路由信息
- 保活 (keepalive): 周期性的证实相邻的边界路由器存在
- 通知 (notification): 发送检测到的错误
BGP 发言人需要定期交换 keepalive
分组以确认双方的相邻关系。交换采用的协议为 TCP.