网络层
网络层提供的服务
TCP/IP 体系中的网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。网络层不提供服务质量的承诺,不保证分组交付的时限,所传送的分组可能出错、丢失、重复、和失序。
PS:TCP/IP体系的网络层提供的是数据报服务,因此我们就来讨论下如何在网络层传送IP数据报这个主题。
网际协议IP
网际协议IP是TCP/IP体系中两个最重要的协议之一(另一个是TCP),与IP协议配套使用的还有三个协议:地址解析协议APR(Address Resolution Protocol)、网际控制报文协议ICMP(Internet Control Message Protocol)、网际组管理协议IGMP(Internet Group Management Protocol)。
虚拟互连网络
所谓虚拟互连网络也就是逻辑互连网络,它是指互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用IP协议就可以使这些性能各异的网从用户看起来就是一个统一的网络。使用 IP 协议的虚拟互连网络可简称为 IP 网。
好处是:当互连网上的主机进行通信时,就好像在一个网络上通信,而看不见互连的各具体网络异构的细节。
Tip:如果在这种覆盖全球的IP网的上层使用TCP协议,那么就是现在的互联网(Internet)
那如何将异构的网络互相连接起来呢?我们需要使用一些中间设备来使异构的网络互相连接起来:
中间设备:
物理层中继系统:转发器(转发器 转发器是最简单的互联设备,它没有“智能”,不能控制和分析信息,也不具备网络管理功能,只是简单地接受数据祯,逐一再生放大信号,然后把数据发往更远的网络结点,因此转发器只能用于同种网络的物理层上)
数据链路层中继系统:以太网交换机 交换机能同时连通许多对的端口,使每一对相互通信的主机都能像独占通信媒体那样,进行无冲突地传输数据。
网络层中继系统:路由器
网桥和路由器的混合物:桥路器(brouter)
网络层以上的中继系统:网关(gateway)
Tips:网络互连都是用路由器进行网络互连和路由选择。由于历史的原因,许多有关 TCP/IP 的文献将网络层使用的路由器称为网关。
IP地址的编址
IP地址的含义:就是给每个连接在互联网上的主机(或路由器)分配一个在全世界范围内是唯一的32位标识符(由ICANN分配)。
IP地址的编址方法分为三种:
分类的 IP 地址:这是最基本的编址方法,在 1981 年就通过了相应的标准协议。
子网的划分:这是对最基本的编址方法的改进,其标准 [RFC 950] 在 1985 年通过。
构成超网:这是比较新的无分类编址方法。 1993 年提出后很快就得到推广应用。
分类IP地址
将IP地址划分为若干个固定类。 每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号 host-id,它标志该主机(或路由器)。 主机号在它前面的网络号所指明的网络范围内必须是唯一的。 由此可见,一个 IP 地址在整个互联网范围内是唯一的。
这种两级的IP地址结构如下:
这种两级的IP地址可以记为:
各类IP地址的网络号字段和主机号字段:
A类、B类、C类地址网络号(net-id)字段分别是1个、2个、3个字节长。由于IP共4个字节,所以A类、B类、C类地址主机号(host-id),分别是3个、2个、1个字节长。而在网络号字段的最前面有1-3位的类别号,分别为0,10,110。
D类地址(前4位是1110)用于多播(一对多通信)。E类地址(前4位是1111)保留以后用。
IP地址的指派范围:
一般不使用的特殊IP地址:
Tips:主机号全0,代表这个网络的网络地址,主机号全1代表广播地址。今年来已广泛使用无分类的IP。但由于很多文献和资料还使用传统的分类的IP地址。
二级IP地址的重要特点:(1)IP地址是一种分等级的地址结构 (2)实际上IP地址是标志一个主机(或路由器)和一条链路的接口(所以一个路由器至少应当有两个不同的IP地址)。(3)用转发器或网桥连接起来的若干个局域网仍为一个网络(网络号net-id相同) (4)互联网平等对待每一个IP地址。
IP地址和硬件地址(MAC地址)
从层次的角度看, 硬件地址(或物理地址)是数据链路层和物理层使用的地址。 IP 地址是网络层和以上各层使用的地址,是一种逻辑地址(称 IP 地址是逻辑地址是因为 IP 地址是用软件实现的)。
路由器只根据目的站的 IP 地址的网络号进行路由选择。在具体的物理网络的链路层 只能看见 MAC 帧而看不见 IP 数据报。在IP层抽象的互联网上只能看到IP数据报。
Tips:IP数据报的首部的源地址和目的地址是不变的,而MAC帧首部中的MAC源地址和目的地址却是在变换的(通过不同的网络)。IP 层抽象的互联网屏蔽了下层很复杂的细节。 在抽象的网络层上讨论问题,就能够使用 统一的、抽象的 IP 地址 研究主机和主机或主机和路由器之间的通信
地址解析协议ARP
通过上面的知识,我们知道了MAC地址和IP地址的区别及工作层次后,不禁又产生了疑问:主机或路由器怎么知道应当在MAC帧的首部填入什么样的硬件地址?路由器中的路由表又是怎么得出的?不急,我们先来看第一个问题,第一个问题的答案就是使用地址解析协议APR--从网络层使用的IP地址解析出在数据链路层使用的MAC硬件地址。
那么它是怎么解析的呢?每一个主机都设有一个 ARP 高速缓存 (ARP cache)(通过广播发送APR请求分组类似以太网交换机),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。
APR高速缓存的作用:存放最近获得的 IP 地址到 MAC 地址的绑定,以减少 ARP 广播的数量。
APR要点:不管在网络层上使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。 如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。
PS:学到这里,问题来了,既然在网络链路上传送的帧最终是按照硬件地址找到目的主机的,那么为什么还要使用抽象的IP地址?
这是因为:IP地址的分配是根据网络的拓朴结构,而不是根据谁制造了网络设置。若将高效的路由选择方案建立在设备制造商的基础上而不是网络所处的拓扑位置基础上,这种方案是不可行的。由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事。所以还是要通过IP地址来使这个问题简单化,总之,在虚拟的 IP 网络上用 IP 地址进行通信给广大的计算机用户带来了很大的方便。
IP数据报(分组)的格式
一个 IP 数据报由首部和数据两部分组成。 首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。 在首部的固定部分的后面是一些可选字段,其长度是可变的。
版本——占 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 时才允许分片。
片偏移——占13 位,指出:较长的分组在分片后 ,某片在原分组中的相对位置。 片偏移以 8 个字节为偏移单位。
生存时间——占8 位,记为 TTL (Time To Live),单位是‘跳数’, 指示数据报在网络中可通过的路由器数的最大值。
协议——占8 位,指出此数据报携带的数据使用何种协议, 以便目的主机的 IP 层将数据部分 上交给哪个协议进行处理。
首部检验和——占16 位,只检验数据报的首部, 不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法。
源地址和目的地址都各占 4 字节。
可项字段的长度可变,从 1 个字节到 40 个字节不等,取决于所选择的项目,用来支持排错、测量以及安全等措施,内容很丰富。
填充部分——用0填充使可选字段的长度是4字节的整数倍。
IP层(网络层)转发分组的流程
PS:我们知道在IP层转发分组是通过查找路由表来实现的,那么为什么通过查找路由表就可以知道该怎么转发分组呢?路由表里又存储的是什么呢?至于路由表的创建和维护就放在后面来说了。
假设:有四个 A 类网络通过三个路由器连接在一起。每一个网络上都可能有成千上万个主机。 可以想像,若按目的主机号来制作路由表,每一个路由表就有 4 万个项目,即 4 万行(每一行对应于一台主机),则所得出的路由表就会过于庞大。 但若按主机所在的网络地址来制作路由表,那么每一个路由器中的路由表就只包含 4 个项目(每一行对应于一个网络),这样就可使路由表大大简化。
在路由表中,对每一条路由,最重要的就是(目的网络地址,下一跳地址)。
特点:根据目的网络地址就能确定下一跳路由器,这样做的结果是: IP 数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)。 只有到达最后一个路由器时,才试图向目的主机进行直接交付。
特定主机路由:虽然互联网所有的分组转发都是基于目的主机所在的网络,但在大多数情况下都允许有这样的特例,即为特定的目的主机指明一个路由。 采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。
默认路由:路由器还可采用默认路由以减少路由表所占用的空间和搜索路由表所用的时间。 这种转发方式在一个网络只有很少的对外连接时是很有用的。 默认路由在主机发送 IP 数据报时往往更能显示出它的好处。 如果一个主机连接在一个小网络上,而这个网络只用一个路由器和互联网连接,那么在这种情况下使用默认路由是非常合适的。
路由器分组转发算法:(1) 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。 (2) 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行 (3)。 (3) 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行 (4)。 (4) 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行 (5)。 (5) 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行 (6)。 (6) 报告转发分组出错。
Tips:当路由器收到待转发的数据报,不是将下一跳路由器的 IP 地址填入 IP 数据报,而是送交下层的网络接口软件。 网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址,并将此硬件地址放在链路层的 MAC 帧的首部,然后根据这个硬件地址找到下一跳路由器。
划分子网和构造超网
那么首先为什么要划分子网?肯定是因为原先的二级IP地址缺点太多:
(1) IP 地址空间的利用率有时很低。 (2) 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。 (3) 两级的 IP 地址不够灵活。
划分子网(三级IP)
从 1985 年起在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址。 这种做法叫做划分子网 (subnetting) 或子网寻址或子网路由选择。
划分子网的基本思路与原理:划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。 从主机号(host-id)借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位。凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。 然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。 最后就将 IP 数据报直接交付目的主机。
划分子网的例子:将一个B类划分成3个子网:
特点:划分子网后 IP 地址就变成了三级结构。 划分子网只是把 IP 地址的主机号 host-id 这部分进行再划分,而不改变 IP 地址原来的网络号 net-id。减少了 IP 地址的浪费 使网络的组织更加灵活 更便于维护和管理。
子网掩码
PS:问题:假定有一个数据报(目的地址是145.13.3.10)已经到达了路由器R1,那么这个路由器如何把它转发到子网145.13.3.0呢?
我们知道IP数据报的首部并没有给出源或目的主机所在的网络是否划分了子网以及子网的信息。此时使用子网掩码(subnet mask)就可以找出IP地址中的子网部分。
规则:子网掩码的长度还是为32位。某位 = 1:IP地址中的对应位为网络号和子网号 某位 = 0:IP地址中的对应位为主机号。子网掩码最好使用连续的1(避免出错)。
OK,回到问题,我们就可以通过该子网的子网掩码(255.255.255.0)来找到子网145.13.3.0,子网是根据子网掩码来划分的。该子网的子网掩码划分如下图:
ok,想必你已经发现了一个重要的结论:(IP 地址) AND (子网掩码) =网络地址。
那么A,B, C类的默认子网掩码:
子网掩码的重要作用:路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。 路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码(没有划分就是默认子网的掩码)。 若一个路由器连接在两个子网上就拥有两个网络地址和两个子网掩码。
Tips:子网的划分分为固定长度和变长子网。划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数。随着无分类域间路由选择 CIDR 的广泛使用,现在全 1 和全 0 的子网号也可以使用了,但一定要谨慎使用,确认你的路由器所用的路由选择软件是否支持全 0 或全 1 的子网号这种较新的用法。
使用子网时分组的转发
前面已经说过了在不划分子网时的分组转发,那么在划分子网后,又该怎么转发分组呢?
我们可以知道这两者的区别仅仅在于能不能直接得到目的地址的网络地址。划分子网后,网络地址不仅取决于IP地址,还要取决于子网掩码。所以修改分组算法如下:(1) 从收到的分组的首部提取目的 IP 地址 D。 (2) 先用各网络的子网掩码和 D 逐位相“与”,看是否和相应的网 络地址匹配。若匹配,则将分组直接交付。否则就是间接交付, 执行 (3)。 (3) 若路由表中有目的地址为 D 的特定主机路由,则将分组传送给 指明的下一跳路由器;否则,执行 (4)。 (4) 对路由表中的每一行,将子网掩码和 D 逐位相“与”。若结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行 (5)。 (5) 若路由表中有一个默认路由,则将分组传送给路由表中所指明 的默认路由器;否则,执行 (6)。 (6) 报告转发分组出错。
无分类编址CIDR(构造超网)
为什么要构造超网,不是已经有了子网了吗?划分子网只是在一定的程度上缓解了互联网在发展中遇到的困难(增加了灵活性、增加了利用率、减少了路由表中的项目增加网络的性能)。但是我们还需要解决:(1) B 类地址在 1992 年已分配了近一半,眼看就要在 1994 年 3 月全部分配完毕! (2) 互联网主干网上的路由表中的项目数急剧增长(从几千个增长到几万个)。
历程:1987 年,RFC 1009 就指明了在一个划分子网的网络中可同时使用几个不同的子网掩码。 使用变长子网掩码 VLSM (Variable Length Subnet Mask)可进一步提高 IP 地址资源的利用率。 在 VLSM 的基础上又进一步研究出无分类编址方法,它的正式名字是无分类域间路由选择 CIDR (Classless Inter-Domain Routing)。
CIDR的特点:(1)CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。(2) CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。 (3)IP 地址从三级编址(使用子网掩码)又回到了两级编址。(当初没想好。。天下合久必分分久必合)
无分类的两级编址的记法是:
注意:CIDR 使用“斜线记法”(slash notation),它又称为 CIDR 记法,即在 IP 地址面加上一个斜线“/”,然后写上网络前缀所占的位数(这个数值对应于三级编址中子网掩码中 1 的个数)。例如: 220.78.168.0/24
扩:CIDR记法的特殊形式:可以把点分十进制中地位连续的0省略。如:10.0.0.0/10 可简写为 10/10;
网络前缀的后面加一个星号 * 的表示方法,如 00001010 00*,在星号 * 之前是网络前缀,而星号 * 表示 IP 地址中的主机号,可以是任意值。
CDIR地址块:CIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块”。我们只要知道CIDR地址块中的任何一个地址,就可以知道该地址块的最小地址、最大地址、地址数。如:128.14.32.0/20 表示的地址块共有 212 个地址(因为斜线后面的 20 是网络前缀的位数,所以这个地址的主机号是 12 位),最小地址128.14.32.0最大地址128.14.47.255。
路由聚合(构成超网):一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由。 路由聚合有利于减少路由器之间的路由选择信息的交换,从而提高了整个互联网的性能。
在路由器中使用CIDR:使用 CIDR 时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。 应当从匹配结果(和前面的子网分组算法匹配类似)中选择具有最长网络前缀(最长匹配、最佳匹配)的路由(之所以会有多个结果,是因为地址块又划分了地址块,如ISP给大学地址块,大学给院系划分地址块):最长前缀匹配 (longest-prefix matching)。 网络前缀越长,其地址块就越小,因而路由就越具体 (more specific) 。
*使用二叉线索查找路由表:当路由表的项目数很大时,怎样设法减小路由表的查找时间就成为一个非常重要的问题。 为了进行更加有效的查找,通常是将无分类编址的路由表存放在一种层次的数据结构中,然后自上而下地按层次进行查找。这里最常用的就是二叉线索 (binary trie)。 IP 地址中从左到右的比特值决定了从根结点逐层向下层延伸的路径,而二叉线索中的各个路径就代表路由表中存放的各个地址。 为了提高二叉线索的查找速度,广泛使用了各种压缩技术。
与划分子网的对比:(1)从子网的三级编址又变回了二级编址。(2)没有A、B、C类了,是无分类的了。(3)超网的网络前缀相当于子网的网络地址。(4)超网没有子网,但仍然使用“”掩码”(网络前缀的位数)。(5)就是不是以/8,/16,/24为单位来划分的,可以/7,/8...这样了,更灵活。(6)网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网是使网络前缀变长。
网际控制报文协议ICMP
ICMP的作用:为了更有效地转发 IP 数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。
ICMP的种类:ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。
ICMP报文的格式:ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型、代码和检验和。接着的 4 个字节的内容与 ICMP 的类型有关。
ICMP差错报告报文共有4种:终点不可达 时间超过 参数问题 改变路由(重定向)(Redirect)
ICMP差错报告报文和IP报文的关系:
*ICMP询问报文有两种:回送请求和回答报文 时间戳和回答报文
ICMP的应用: PING (Packet InterNet Groper)(用来测试两个主机的连通性)。PING 使用了 ICMP 回送请求与回送回答报文。 PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP。tract:用来跟踪一个分组从源点到终点的路径。 它利用 IP 数据报中的 TTL 字段和 ICMP 时间超过差错报告报文实现对从源点到终点的路径的跟踪。
互联网的路由选择协议
所谓路由协议,也就是讨论路由表是怎么得到的。
理想的路由算法:算法必须是正确的和完整的。 算法在计算上应简单。 算法应能适应通信量和网络拓扑的变化,这就是说,要有自适应性。 算法应具有稳定性。 算法应是公平的。 算法应是最佳的。
互联网采用分层次的路由选择协议。因为(1)互联网的规模非常大 (2)许多单位不希望自己内部的网络的布局细节被知道。
所以,可以把互联网划分为许多个小的自治系统(autonomous system)AS:一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。
互联网的两大类路由选择协议:内部网关协议IGP(Interior Gateway Protocol) 外部网关协议EGP(Extern Gateway Protocol)。
内部网关协议RIP
RIP 是一种分布式的、基于距离向量的路由选择协议。 RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。
RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”。 RIP 允许一条路径最多只能包含 15 个路由器。 “距离”的最大值为 16 时即相当于不可达。可见 RIP 只适用于小型互联网。 RIP 不能在两个网络之间同时使用多条路由。RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。
RIP的三个特点:(1) 仅和相邻路由器交换信息。 (2) 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。 (3) 按固定的时间间隔交换路由信息,例如,每隔 30 秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。
路由器的建立(通过距离向量算法):路由器在刚刚开始工作时,只知道到直接连接的网络的距离(此距离定义为 1)。它的路由表是空的。 以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。 经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。
距离向量算法的基础就是Bellman-Ford算法,要点:设X是结点 A 到 B 的最短路径上的一个结点。 若把路径 A→B 拆成两段路径 A→X 和 X→B,则每一段路径 A→X 和 X→B 也都分别是结点 A 到 X 和结点 X 到 B 的最短路径。
RIP2协议的报文格式:
RIP 协议特点:好消息传播得快,坏消息传播得慢。 RIP 存在的一个问题:当网络出现故障时,要经过比较长的时间 (例如数分钟) 才能将此信息传送到所有的路由器。适用于规模小的网络。
内部网关协议OSPF(略)
开放最短路径优先 OSPF (Open Shortest Path First)是为克服 RIP 的缺点在 1989 年开发出来的。适用于规模较大的网络。
OSPF最主要的特征就是使用分布式的链路状态控制协议,而不是像RIP那样的距离向量协议。和RIP不同的是:
(1)向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。 (2)发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。 (3)发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。
链路状态数据库:由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。 这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)。 OSPF 的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。OSPF的更新过程收敛得快是其重要的优点。
OSPF的区域:为了使OSPF能够用于规模很大的网络。OSPF 将一个自治系统再划分为若干个更小的范围,叫做区域。 每一个区域都有一个 32 位的区域标识符(用点分十进制表示)。 区域也不能太大,在一个区域内的路由器最好不超过 200 个。
外部网关协议BGP(略)
BGP 是不同自治系统的路由器之间交换路由信息的协议。边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。
BGP发言人:每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“ BGP 发言人” (BGP speaker) 。 一般说来,两个 BGP 发言人都是通过一个共享网络连接在一起的,而 BGP 发言人往往就是 BGP 边界路由器,但也可以不是 BGP 边界路由器。
路由器的构成
路由器是一种典型的网络层设备。 路由器是互联网中的关键设备。路由器的任务是:转发分组。
路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。也就是说,将路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。
转发和路由选择的区别:“转发”(forwarding) 就是路由器根据转发表将用户的 IP 数据报从合适的端口转发出去。 “路由选择”(routing) 则是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由。 路由表是根据路由选择算法得出的。而转发表是从路由表得出的。 在讨论路由选择的原理时,往往不去区分转发表和路由表的区别。
路由器的输入端口里面装有物理层、数据链路层和网络层的处理模块。 数据链路层剥去帧首部和尾部后,将分组送到网络层的队列中排队等待处理。这会产生一定的时延。 输入端口中的查找和转发功能在路由器的交换功能中是最重要的。
IPv6
我国在 2014 – 2015 年也逐步停止了向新用户和应用分配 IPv4 地址。 解决 IP 地址耗尽的根本措施就是采用具有更大地址空间的新版本的 IP,即 IPv6。
IPv6 仍支持无连接的传送,但将协议数据单元 PDU 称为分组。IPv6 数据报由两大部分组成: 基本首部 (base header) 有效载荷 (payload)。有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部 (extension header),再后面是数据部分。
IPv6 将首部长度变为固定的 40 字节,称为基本首部。 把首部中不必要的功能取消了,使得 IPv6 首部的字段数减少到只有 8 个。 IPv6 对首部中的某些字段进行了如下的更改:
版本(version)—— 4 位。它指明了协议的版本,对 IPv6 该字段总是 6。 通信量类(traffic class)—— 8 位。这是为了区分不同的 IPv6 数据报的类别或优先级。目前正在进行不同的通信量类性能的实验。 流标号(flow label)—— 20 位。 “流”是互联网络上从特定源点到特定终点的一系列数据报, “流”所经过的路径上的路由器都保证指明的服务质量。所有属于同一个流的数据报都具有同样的流标号。 有效载荷长度(payload length)—— 16 位。它指明 IPv6 数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷之内),其最大值是 64 KB。 下一个首部(next header)—— 8 位。它相当于 IPv4 的协议字段或可选字段。 跳数限制(hop limit)—— 8 位。源站在数据报发出时即设定跳数限制。路由器在转发数据报时将跳数限制字段中的值减 1。 当跳数限制的值为零时,就要将此数据报丢弃。 源地址—— 128 位。是数据报的发送站的 IP 地址。 目的地址—— 128 位。是数据报的接收站的 IP 地址。
冒号十六进制记法:每个 16 位的值用十六进制值表示,各值之间用冒号分隔。例如: 68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF。冒号十六进制记法可结合使用点分十进制记法的后缀,这种结合在 IPv4 向 IPv6 的转换阶段特别有用。 例如:0:0:0:0:0:0:128.10.2.1 再使用零压缩即可得出: ::128.10.2.1
从IPv4向IPv6进行过渡
向 IPv6 过渡只能采用逐步演进的办法,同时,还必须使新安装的 IPv6 系统能够向后兼容:IPv6 系统必须能够接收和转发 IPv4 分组,并且能够为 IPv4 分组选择路由。 两种向 IPv6 过渡的策略: 使用双协议栈 使用隧道技术
双协议栈:双协议栈 (dual stack) 是指在完全过渡到 IPv6 之前,使一部分主机(或路由器)装有两个协议栈,一个 IPv4 和一个 IPv6。 双协议栈的主机(或路由器)记为 IPv6/IPv4,表明它同时具有两种 IP 地址:一个 IPv6 地址和一个 IPv4 地址。 双协议栈主机在和 IPv6 主机通信时是采用 IPv6 地址,而和 IPv4 主机通信时就采用 IPv4 地址。 根据 DNS 返回的地址类型可以确定使用 IPv4 地址还是 IPv6 地址。
隧道技术:
在 IPv6 数据报要进入 IPv4 网络时,把 IPv6 数据报封装成为 IPv4 数据报,整个的 IPv6 数据报变成了 IPv4 数据报的数据部分。 当 IPv4 数据报离开 IPv4 网络中的隧道时,再把数据部分(即原来的 IPv6 数据报)交给主机的 IPv6 协议栈。
ICMPv6(略)
IP多播(略)
虚拟专用网VPN
由于 IP 地址的紧缺,一个机构能够申请到的IP地址数往往远小于本机构所拥有的主机数。 考虑到互联网并不很安全,一个机构内也并不需要把所有的主机接入到外部的互联网。 假定在一个机构内部的计算机通信也是采用 TCP/IP 协议,那么从原则上讲,对于这些仅在机构内部使用的计算机就可以由本机构自行分配其 IP 地址。
虚拟专用网VPN:利用公用的互联网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网VPN (Virtual Private Network)。 “专用网”是因为这种网络是为本机构的主机用于机构内部的通信,而不是用于和网络外非本机构的主机通信。 “虚拟”表示“好像是”,但实际上并不是,因为现在并没有真正使用通信专线,而VPN只是在效果上和真正的专用网一样。
VPN的构建:如果专用网不同网点之间的通信必须经过公用的互联网,但又有保密的要求,那么所有通过互联网传送的数据都必须加密。 一个机构要构建自己的 VPN 就必须为它的每一个场所购买专门的硬件和软件,并进行配置,使每一个场所的 VPN 系统都知道其他场所的地址。
内联网和外联网:它们都是基于 TCP/IP 协议的。 由部门 A 和 B 的内部网络所构成的虚拟专用网 VPN 又称为内联网 (intranet),表示部门 A 和 B 都是在同一个机构的内部。 一个机构和某些外部机构共同建立的虚拟专用网 VPN 又称为外联网 (extranet)。
远程接入 VPN (remote access VPN)可以满足外部流动员工访问公司网络的需求。 在外地工作的员工拨号接入互联网,而驻留在员工 PC 机中的 VPN 软件可在员工的 PC 机和公司的主机之间建立 VPN 隧道,因而外地员工与公司通信的内容是保密的,员工们感到好像就是使用公司内部的本地网络。
网络地址转换NAT
问题:在专用网上使用专用地址的主机如何与互联网上的主机通信(并不需要加密)?
解决: (1) 再申请一些全球 IP 地址。但这在很多情况下是不容易做到的。 (2)采用网络地址转换 NAT。这是目前使用得最多的方法。 需要在专用网连接到互联网的路由器上安装 NAT 软件。
装有 NAT 软件的路由器叫做 NAT路由器,它至少有一个有效的外部全球IP地址。 所有使用本地地址的主机在和外界通信时,都要在 NAT 路由器上将其本地地址转换成全球 IP 地址,才能和互联网连接。
网络地址转换的过程:内部主机 A 用本地地址 IPA 和互联网上主机 B 通信所发送的数据报必须经过 NAT 路由器。 NAT 路由器将数据报的源地址 IPA 转换成全球地址 IPG,并把转换结果记录到NAT地址转换表中,目的地址 IPB 保持不变,然后发送到互联网。 NAT 路由器收到主机 B 发回的数据报时,知道数据报中的源地址是 IPB 而目的地址是 IPG。 根据 NAT 转换表,NAT 路由器将目的地址 IPG 转换为 IPA,转发给最终的内部主机 A。
参考文献
计算机网络 / 谢希仁编著.——7版