如果主机(即端系统)进程之间需要进行可靠的通信,那么就由主机中的运输层负责(包括差错处理、流量控制等)。
从一般的概念来讲,将网络互相连接起来要使用一些中间设备。根据中间设备所在的层次,可以有以下四种不同的中间设备:
(1)物理层使用的中间设备叫作转发器(repeater)。
(2)数据链路层使用的中间设备叫作网桥或桥接器(bridge),以及交换机(switch)。
(3)网络层使用的中间设备叫作路由器(router)。
(4)在网络层以上使用的中间设备叫作网关(gateway)。用网关连接两个不兼容的系统需要在高层进行协议的转换。
讨论网络互连时,都是指用路由器进行网络互连和路由选择。
在互联网的词汇中,分组在传送途中的每一次转发都称为一“跳(hop)”。
IP 地址编址方式有 3 种:分类、子网划分、无分类。
1. IP 地址及其表示方法
对主机或路由器来说,IP 地址都是 32 位的二进制代码(IPv4)。
一个 IP 地址在整个互联网范围内是唯一的。
2. 分类的 IP 地址
图4-10 分类的 IP 地址(a)以及各类地址所占的比例(b)
但要注意,第一,网络号为全 0 的 IP 地址有特殊的用途,它表示“本网络”;第二,网络号为127(即01111111)保留作为本地软件环回测试(loopback test)本主机的进程之间的通信之用。
这里要指出,由于近年来已经广泛使用无分类 IP 地址进行路由选择(即网络位任意,主机位全 0,网络主机 ID),A 类、B 类和 C 类这种分类地址已成为历史[RFC 1812]。
3. 无分类编制 CIDR
这种编制方法的全名是无分类域间路由选择 CIDR(Classless Inter-Domain Routing,CIDR 的读音是“sider”)[RFC 4632],其要点有以下三个。
(1)网络前缀
(2)地址块
(3)地址掩码
地址掩码(常简称为掩码,又称为子网掩码)由一连串 1 和接着的一连串 0 组成,而 1 的个数就是网络前缀的长度。
把二进制的 IP 地址和地址掩码进行按位 AND 运算,即可得出网络地址。
4. IP 地址的特点
这里要强调指出以下几点:
(1)在 IP 层抽象的互联网上只能看到 IP 数据报。
(2)虽然在 IP 数据报首部有源站 IP 地址,但路由器只根据目的站的 IP 地址进行转发。
(3)在局域网的链路层,只能看见 MAC 帧。
(4)尽管互连在一起的网络的 MAC 地址体系各不相同,但 IP 层抽象的互联网却屏蔽了下层这些很复杂的细节。只要我们在网络层上讨论问题,就能够使用统一的、抽象的 IP 地址研究主机和主机或路由器之间的通信。
(a)主机 A 广播发送 ARP 请求分组(广播请求)
(b)主机 B 向 A 发送 ARP 响应分组(单播)
图4-18 地址解析协议 ARP 的工作原理
然而 IP 编址把这个复杂问题解决了。连接到互联网的主机只需各自拥有一个 IP 地址,它们之前的通信就像连接在同一个网络上那样简单方便,即使必须多次调用 ARP 来找到 MAC 地址,但这个过程都是由计算机软件自动进行的,对用户来说是看不见的。
图4-20 IP 数据报的格式
从图4-20 可以看出,一个 IP 数据报由首部和数据两部分组成。首部的前一部分长度是固定的,共 20 字节,是所有 IP 数据报必须具有的。
下面介绍首部各字段的意义。
1. IP 数据报首部的固定部分中的各字段
(1)版本
(2)首部长度
(3)区分服务
(4)总长度
总长度指首部和数据之和的长度,单位为字节。总长度字段为 16 位,因此数据报的最大长度为 字节。
(5)标识(identification)
(6)标志(flag)
占 3 位,但目前只有两位有意义。
(7)片偏移
占 13 位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。这就是说,除最后一个数据报片外,其它每个分片的长度一定是 8 字节(64 位)的整数倍。
(8)生存时间
(9)协议
(10)首部检验和
(11)源地址
(12)目的地址
2. IP 数据报首部的可变部分
分组每到达一个路由器,路由器就根据分组中的终点(目的地址)查到转发表,然后就得知下一跳应当到哪一个路由器。
在 RFC 8200 中定义了以下六种扩展首部:(1)逐跳选项;(2)路由选择;(3)分片;(4)鉴别;(5)封装安全有效载荷;(6)目的站选项。
一般来讲,一个 IPv6 数据报的目的地址可以是以下三种基本类型地址之一:
(1)单播(unicast) 单播就是传统的点对点通信。
(2)多播(multicast) 多播是一点对多点的通信,数据报发送到一组计算机中的每一个。
(3)任播(anycast) 这是 IPv6 增加的一种类型。任播的终点是一组计算机,但数据报只交付其中的一个,通常是按照路由算法得出的距离最近的一个。
1. 理想的路由算法
路由选择协议的核心就是路由算法,即需要何种算法来获得路由表中的各项目。一个理想的路由算法应具有如下的一些特点[BELL86]:
(1)算法必须是正确的和完整的。
(2)算法在计算上应简单。
(3)算法应能适应通信量和网络拓扑的变化,这就是说,要有自适应性。
(4)算法应具有稳定性。
(5)算法应是公平的。
(6)算法应是最佳的。
所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。
2. 分层次的路由选择协议
这样,互联网就把路由选择协议划分为两大类,即:
(1)内部网关协议 IGP(Interior Gateway Protocol):具体的协议有很多种,如 RIP 和 OSPF 等。
(2)外部网关协议 EGP(External Gateway Protocol):目前使用的协议是 BGP-4。
1. 协议 RIP 的工作原理
RIP(Routing Information Protocol)是内部网关协议 IGP 中最先得到广泛使用的协议[RFC 1058],它的中文译名是路由信息协议。RIP 是一种分布式的基于距离向量的路由选择协议,是互联网的标准协议,其最大优点就是简单。
RIP 允许一条路径最多包含 15 个网络。因此“距离”等于 16 时即相当于不可达。可见 RIP 只适用于小型互联网。
协议 RIP 的特点是:
(1)仅和相邻路由器交换信息。
(2)路由器交换的信息是当前本路由器所知道的全部信息,即自己现在的路由表。
(3)按固定的时间间隔交换路由信息,例如,每隔 30 秒。
2. 距离向量算法
3. 坏消息传播得慢
1. 协议 OSPF 的基本特点
OSPF 最主要的特征就是使用链路状态协议(link state protocol),而不是像 RIP 那样的距离向量协议。协议 OSPF 的特点是:
(1)向本自治系统中所有路由器发送信息。这里使用的方法是洪泛法(flooding),这就是路由器通过所有输出端口向所有相邻的路由器发送信息。
(2)发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。
(3)当链路状态发生变化或每隔一段时间(如 30 分钟),路由器向所有路由器用洪泛法发送链路状态信息。
2. OSPF 的五种分组类型
1. 协议 BGP 的主要特点
我们知道,内部网关协议(如 RIP 或 OSPF)主要是设法使数据报在一个 AS 种尽可能有效地从源站传送到目的站。在一个 AS 内部也不需要考虑其它方面的策略。然而 BGP 使用的环境却不同。这主要是因为以下的两个原因:
第一,互联网的规模太大,使得自治系统 AS 之间的路由选择非常困难。
第二,自治系统 AS 之间的路由选择必须考虑有关策略。
由于上述情况,边界网关协议 BGP 只能是力求选择出一条能够到达目的网络前缀且比较好的路由(不能兜圈子),而并非要计算出一条最佳路由。BGP采用了路径向量(path vector)路由选择协议,它与距离向量协议(如 RIP)和链路状态协议(如 OSPF)都有很大的区别。
2. BGP 路由
3. 三种不同的自治系统 AS
4. BGP 的路由选择
5. BGP 的四种报文
1. 路由器的结构
图4-54 典型的路由器的结构(图中的数字1~3表示相应层次的构件)
从图4-54 可以看出,整个的路由器结构可划分为两大部分:路由选择部分和分组转发部分。
2. 交换结构
为了解决这种仅在内部使用的本地地址和互联网中某个 IP 地址重合所出现地址的二义性问题,RFC 1918 指明了一些专用地址(private address,即私有地址)。专用地址只能用作本地地址而不能用作全球地址。在互联网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。2013 年 4 月,RFC 6890 全面地给出了所有特殊用途的 IPv4 和 IPv6 地址,但三个 IPv4 专用地址块的指派并无变化,即
(1)10.0.0.0/8,即从 10.0.0.0 到 10.255.255.255。
(2)172.16.0.0/12,即从 172.16.0.0 到 172.31.255.255。
(3)192.168.0.0/16,即从 192.168.0.0 到 192.168.255.255。
有时一个机构的 VPN 需要有某些外部机构(通常就是合作伙伴)参加进来。这样的 VPN 就称为外联网(extranet 或 extranet VPN,即外联网 VPN)。
装有 NAT 软件的路由器叫作 NAT 路由器,它至少有一个有效的外部全球 IP 地址。