计算机网络复习笔记(第四章 3)
第一部分
第4章 网络层
4.4 网际控制报文协议ICMP
4.4.1 ICMP报文的种类
4.4.2 ICMP的应用举例
4.6 IPV6
4.6.1 IPv6的基本首部
4.6.2 IPv6的地址
4.6.3 从IPv4向IPv6过渡
4.4 网际控制报文协议ICMP
前已述及,IP协议是一个“尽力传递”服务的协议,也就是一个不提供可靠性的协议。以路由器为结点构成的Internet网络,会尽最大可能找出根据报文的目的IP地址找到从源站到目的网络的路径,将报文交付给目的网络上的目的主机,但如果交付不到,就直接将报文抛弃,不提供可靠保证。
注:在下一章我们将看到,TCP提供了可靠传输机制,它的基本原理是:接收端确认+发送端重传。要实现此机制,需要对报文进行缓存、编号等很复杂的操作。IP协议不提供可靠保证,也就不需要实现报文的缓存、编号等复杂操作。这样带来的好处是,确保了路由器以极高的效率实现分组的转发。事实证明,该设计思路是Internet取得辉煌成功的最重要因素之一。
尽管IP协议不提供可靠传输,但是协议设计者还是设计了一个辅助性的ICMP协议(RFC 792),即网际控制报文协议(Internet Control Message Protocol) 。该协议以两种报文,即ICMP差错报告报文和ICMP询问报文,为IP协议提供辅助性功能。
ICMP的报文结构如下图所示。
ICMP报文首部固定部分有2行8个字节,其中第1行包括固定的3个字段。
1个字节的“类型”用于说明报文的类型;1个字节的“代码”用于说明某个类型的子类型;2个字节的检验和是对整个报文的检验和,使用的差错检测算法与IP数据报相同,即反码算术运算差错检测算法。
注意:ICMP报文要封装到IP数据报中发送,它对应的IP数据报中的协议字段为1。
在此,我们再回顾一下TCP/IP协议体系结构,如下图所示。
我们现在应该就可以理解为什么ICMP协议要画在IP层的左上角,而ARP协议要画在右下角了。
为什么ICMP协议要画在IP层的左上角呢?这是因为ICMP报文要封装在IP数据报中传送。
为什么ARP协议要画在IP层的右下角呢?首先,ARP协议解决的是IP地址与硬件地址的对应问题,因而它是属于IP层的协议;其次,ARP协议运行于一个物理网络及IP子网内,不需要跨过路由器,因而不需要封装在IP数据报中。
4.4.1 ICMP报文的种类
ICMP报文分成两大类,即ICMP差错报告报文和ICMP询问报文。
其中ICMP差错报告报文用于当一个路由器或主机在转发或接收报文时出现了无法转发或接收的情况时,主机或路由器向源站发回差错报告。
而ICMP询问报文则用于一些基本的网络测试。
常见的报文分类如下表所示。
各分类报文的解释参见教材P148。
其中类型为11的“时间超过”报文,与IP数据报中的TTL有关。前已述及,IP数据报每经过一个路由器,TTL值就会减1,当减到0时就抛弃。抛弃后路由器就向报文的源站发回类型为11的“时间超过”ICMP差错报告报文。
其中类型为3的报文,即终点不可达报文,有如下表所示的代码(子类),即终点不可达的不同情况。
代码 | 报文类型 |
---|---|
0 | 网络不可达 |
1 | 主机不可达 |
2 | 协议不可达 |
3 | 端口不可达 |
4 | 需要分片,但报文的DF为置1,即报文不允许分片 |
差错报告报文中数据部分的内容
差错报告报文中数据部分的内容如下图所示。
当路由器或主机收到了一个出现表4-8中所述类型的差错时,它就抛弃该报文,构造相应的ICMP差错报告报文。差错报告报文的数据部分包括出现差错的IP数据报的首部和该数据报中数据部分的前8个字节。
注:通常出现差错的IP数据报中包括TCP或UDP协议的PDU,因而其数据部分的前8个字节就是TCP或UDP的PDU首部的前8个字节。可以先预习一下TCP或UDP的PDU格式,以查看其前8个字节所包括的内容。
教材P149页上列出了不应发送ICMP差错报告报文的情况。
4.4.2 ICMP的应用举例
ping命令
ping命令是操作系统提供的一个测试网络连接的的命令,使用该命令可以测试到某个主机的IP协议是否可以正常工作。
ping命令的使用格式是:ping + 空格 + 主机的域名或IP地址
注1:ping命令以客户机/服务器方式工作,发送ping命令的主机(客户机)构造类型为8的ICMP回送请求报文(Echo request)发送到目的主机(服务器),目的主机构造类型为0的ICMP回送应答报文(Echo reply)发回给客户机。
注2:当用ping命令测试域名时,它同时会报告域名对应的IP地址。
注3:每次的ping命令会循环进行4轮的回送请求和应答操作。
注4:ping命令正常执行时会显示如下图所示的结果:
可以看出,ping命令每次测试的结果中包括发送的字节数、所用的时间(往返时间)和TTL值,最后还包括最短时间、最长时间和平均时间的统计。
注5:在Windows系统中运行命令需要在命令窗口中进行,在Windows系统中按下快捷键“Win键+R”(如下图所示)打开运行窗口,再在窗口中输入cmd打回车,便可以打开命令窗口。
注6:Windows的cmd命令窗口默认情况下是黑底白字的,这样截屏后贴到Word文档如果再打印的话,大块的黑色背景就会浪费很多墨粉。为环保计,可以将窗口的背景改为较浅的颜色,同时需要设置屏幕的文字颜色以达到合适的对比度。
使用ping命令对本主机进行测试:
IP地址规范规定,A类地址的最后一个网络号,即第一个字节为127的IP地址,为回环地址,用于以IP协议访问当前主机。另外,还规定了使用localhost表示当前主机的名字。
注:在网络应用研发中,常使用127.0.0.1(实际上127.0.0.1~127.255.255.254范围内的每一个地址都可以)和localhost模拟以网络方式访问本机上的服务,以实现应用研发的基本测试。
tracert命令
Windows系统中提供了tracert命令,用于测试到达一个目的站所经过的路由器。该命令也以C/S方式工作。工作过程如下:
-
发出该命令的主机C首先构造一个端口不可达的运输层UDP报文。
-
主机C构造TTL值是1的IP数据报并发送,收到该数据报的第1个路由器R1将TTL减1后TTL的值就变为0,于是R1就发回类型为11的时间超过ICMP差错报告报文。主机C将从收到的携带ICMP报文的IP数据报的首部获得R1的IP地址,通过计算时间可以获得到R1的往返时间。
-
然后主机C构造TTL值是2的IP数据报并发送,收到该数据报的第2个路由器R2将TTL减1后TTL的值就变为0,R2就发回类型为11的时间超过ICMP差错报告报文。
-
依次类推,假如需要经过n个路由器后可以到达目的主机,则当C构造TTL值是n的IP数据报并发送后,收到该数据报的第n个路由器Rn将TTL减1后TTL的值就变为0,Rn也将发回类型为11的时间超过ICMP差错报告报文。
-
最后C构造TTL值是n+1的IP数据报并发送后,目的主机S的IP实体将收到该报文,并判断出它携带着运输层的UDP报文,但发现是一个端口不可达的UDP报文,于是S就构造一个类型为3(终点不可达)代码为3(端口不可达)的ICMP差错报告报文,并发回给源主机C,源主机据此获知报文已经到达了目的主机,过程结束。
注:Unix/Linix系统中对应命令的名字是traceroute。
下图给出了tracert的运行结果:
4.6 IPV6
4.6.1 IPv6的基本首部
关于IPv6(也称为下一代互联网,Next Generation Internet, 简称为NG)的基本介绍及其基本首部教材上介绍的很全面也很清楚,同学们需要仔细阅读教材P171-173中的内容进行学习。
这里给出几个特别注意的地方:
-
IPv6的报文结构如下图所示,它由40字节的基本首部和有效载荷组成,有效载荷包括扩展首部和数据部分,总长度不超过65535字节。
-
IPv6的基本首部是如下图所示的40字节的固定首部,没有可变部分。
-
基本首部中的有效载荷长度确如其名,它表示不包括基本首部40字节,即有效载荷最大可以达到65535字节。
-
IPv6的设计理念除了大幅度地增大地址空间外,就是提高路由器的转发效率,这包括如下一些主要措施:
-
使用固定长度的基本首部;
-
首部取消了差错检测;
-
扩展首部除了逐条首部外,均只由源和目的主机处理,逐条首部如果有,则一定是第一个扩展首部;
-
IPv6取消了路由器上报文的分片与重装,源主机如果需要可以对报文分片,这时它就会用到分片扩展首部。
-
基本首部中的“下一个首部”字段相当于IPv4报文中的协议字段,用来说明下一个首部的类型,或所携带数据所属于的高层协议。
IPv6的扩展首部
本节内容参见思科网页IPV6 EXTENSION HEADERS。
IPv6定义了如下表所示的扩展首部(Extension Header, EH)。
序号 | 类型 | 下一首部代码 |
---|---|---|
1 | 基本首部 | 无 |
2 | 逐跳选项 | 0 |
3 | 目的站选项(含路由选项) | 60 |
4 | 路由选项 | 43 |
5 | 分片 | 44 |
6 | 鉴别 | 51 |
7 | 封装安全有效载荷 | 50 |
8 | 目的站选项 | 60 |
9 | 移动首部 | 135 |
无下一首部 | 59 | |
上层(Upper Layer, UL) | TCP | 6 |
上层(Upper Layer, UL) | UDP | 17 |
上层(Upper Layer, UL) | ICMPv6 | 58 |
上述次序中只有逐跳选项是硬性要求的,该选项如果出现,则必须紧跟在基本首部后面。
各扩展首部必须以8字节为边界,即长度必须是8的倍数,如果不是8的倍数则填充。
可以看出,上层协议TCP和UDP的代码与IPv4的协议代码是兼容的。
一个IPv6报文可以只有基本首部,没有扩展首部,这时基本首部后面就直接跟着数据,即上层协议的报文,这时基本首部中下一首部的中的值就是上层协议的代码,如下面的第1个图所示。
一般情况下,基本首部和扩展首部会构成一个首部链,如下面的第2个图所示。
下图示出了一个带有扩展首部代码的首部链的例子。
注:每个扩展首部的第1个字段都是2字节的下一首部(Next Header, NH)。
4.6.2 IPv6的地址
关于IPv6地址的基本介绍教材上讲得的很全面也很清楚,同学们需要仔细阅读教材P173-175中的内容进行学习。
特别需要注意的是以下2点:
-
IPv6的地址为8字节128位的长度,比IPv4的地址空间要大的多。
-
IPv6的地址采用了冒号十六进制表示法。
4.6.3 从IPv4向IPv6过渡
Internet从IPv4升级到IPv6需要平滑进行。在这个过程中,需要解决IPv6报文穿过IPv4网络的问题。这个问题有两种解决方法。即双协议栈和隧道技术。这部分内容教材上讲得的很全面也很清楚,同学们需要仔细阅读教材P176-177中的内容进行学习。
这里说明一下相应的要点。
双协议栈技术
双协议栈技术如下图所示。其基本思路是在IPv4网络与IPv6网络接壤的边界上,收到IPv6数据报的路由器B将IPv6的报文去掉首部,再用其数据构造一个IPv4数据报,该数据报的目的地址为可以最小代价将原来IPv6报文交付到目的站的另一个IPv4边界路由器E,E再从IPv4报文中取出数据,构造一个新的IPv6数据报,并将该数据报发送出去。
双协议栈存在着较大的缺陷,即原来IPv6数据报中首部的信息,如流标号会丢失。
隧道技术
隧道技术如下图所示,它是一种比双栈技术要科学的技术。它在IPv4网络的入口边界路由器上将整个IPv6数据报作为IPv4数据报的数据部分封装起来,再在IPv4网络的出口边界路由器上将原来的IPv6数据报从IPv4数据报中取出来,继续在另一侧的IPv6网络上传输。
可以看出,隧道技术不丢失原来IPv6报文的任何信息。
第二部分
第4章 网络层
4.5 互联网的路由选择协议
4.5.1 有关路由选择协议的几个基本概念
4.5.2 内部网关协议RIP
4.5.3 内部网关协议OSPF
4.5.4 外部网关协议BGP
4.5.5 路由器的构成
4.5 互联网的路由选择协议
前面我们学习了IP层两大功能中的报文转发功能,本节我们将学习IP层中的另一个重要功能:路由选择功能。
我们在学习路由器转发报文时,知道需要事先有一张路由表。那么路由表是怎么来的呢?路由表是通过路由选择协议根据一定的路由算法自动建立的。本节就介绍建立路由表的协议和算法。
4.5.1 有关路由选择协议的几个基本概念
路由选择协议的分类
从路由算法能否随网络的通信量或拓扑自适应地进行调整变化来划分,路由选择协议可以划分为两大类,即静态路由选择策略与动态路由选择策略。
静态路由选择也叫做非自适应路由选择,是由人工配置的路由,其特点是简单和开销较小,但不能及时适应网络状态的变化。
动态路由选择也叫做自适应路由选择,其特点是能较好地适应网络状态的变化,它通常分布式地运行于一组路由器中。
注:教材中对于动态路由选择还给出了如下描述(P152):“实现起来较为复杂,开销也比较大。因此,动态路由选择适用于较复杂的大网络。”这句话似乎给人的印象是动态路由选择是一种负面性的路由选择。事实上,路由选择的基本理念是动态路由选择,说到路由选择,如无特别说明,几乎指的都是动态路由选择。说到路由选择算法,那一定是动态路由选择算法,静态路由选择是不需要算法的。实际网络的路由器中,主要运行的路由选择协议是动态路由选择协议,有时候需要静态路由选择协议来辅助。例如,一些到特定主机的路由,是人工静态地配置的。
分层次的路由选择协议
互联网的巨大规模和区域性网络管理的需要,使得在全Internet范围的路由器上运行同一个路由选择协议不现实,于是人们设计了合理实用的分层次的路由选择协议。
针对分层次的路由选择协议,人们提出了自治系统(Autonomous System,AS)的概念。自治系统AS通常是隶属于某个机构或组织的在单一技术管理下的一组路由器,这些路由器使用一种自治系统内部的路由选择协议和共同的距离度量。
下图给出了一个自治系统的示意。
![]() |
有了自治系统概念后,互联网的路由选择协议就可以划分为两大类,即:
-
内部网关协议IGP (Interior Gateway Protocol)。即在一个自治系统内部使用的路由选择协议,其中最有代表性的是RIP和OSPF协议。
-
外部网关协议EGP (External Gateway Protocol)。实现自治系统之间路由选择的协议称为外部网关协议,其中最有代表性的是第4版的BGP(Border Gateway Protocol,边界网关协议)协议(BGP-4)。
自治系统之间的路由选择也叫做域间路由选择(interdomain routing),而在自治系统内部的路由选择叫做域内路由选择(intradomain routing)。
RIP协议与OSPF协议的总结
我们将在下面详细介绍RIP和OSPF两种内部网关协议,在介绍之前,我们先将这两个协议的要点总结在下面的表中。
RIP | OSPF | |
---|---|---|
英文名 | Routing Information Protocol | Open Shortest Path First protocol |
中文名 | 路由信息协议 | 开放最短路径优先协议 |
路由信息类型 |
距离向量(Distance Vector,DV) | 链路状态(Link State, LS) |
距离度量 | 路由器的个数 | 距离、时延、带宽、费用等 |
发送的路由信息量 |
本路由器所有可达的网络和相应的距离 | 与本路由器相邻的路由器的链路状态信息,链路状态指的是与哪些路由器相邻和到相邻路由器的距离度量 |
路由信息的发送范围 | 与本路由器直接相邻的路由器 | 本自治系统中的所有路由器 |
发送路由信息的频度 | 固定时间间隔,默认为30秒 | 只有链路状态发生变化时才发送 |
路由算法 |
Dijkstra最短路径算法 |
Bellman-Ford算法 也称为Ford-Fulkerson算法 |
报文封装 |
RIP2格式,使用运输层的UDP协议封装,端口号为520,UDP再构造为IP数据报 | 不构造运输层报文,直接使用IP数据报封装,IP数据报对应的协议号为89 |
注1:RIP协议发送的路由信息量较大(因为包括当前路由器可达的所有网络),但仅向邻居路由器发送;而OSPF协议发送的路由信息量较少(因为只包括邻居路由器的链路状态信息),但要向自治系统内的所有路由器发送。
注2:OSPF并不是一个路由器向每个路由器都发送一份路由信息,它也是向每个邻居路由器各发送一份,但是邻居路由器要转发到其他路由器。
带有距离度量的路由表
前面学习CIDR时,我们曾经给出了一个4列的路由表。现在我们学习到了路由选择协议,我们需要为该表增加一个新的重要的列,即距离度量列,如下所示。因为距离度量是路由选择必须的依据。
目的网络 | 网络掩码 | 下一站 | 接口 | 距离度量 |
---|---|---|---|---|
4.5.2 内部网关协议RIP
RIP (Routing Information Protocol)是内部网关协议IGP中最先得到广泛使用的协议[RFC 1058],它的中文名称叫做路由信息协议。RIP是一种分布式的基于距离向量的路由选择协议,是互联网的标准协议,其最大优点就是简单。
RIP协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录,常称为“距离向量”,如下表所示。
网络 | 距离 | 下一跳 |
---|---|---|
Net1 | 1 | R2 |
Net2 |
5 | R3 |
Net3 | 12 | R2 |
Net4 | 8 | R4 |
注:为简化描述,在讲解路由选择协议时,网络和路由器使用符号代替实际的IP网络号和IP地址。
RIP 协议将“距离”定义为:
-
从一路由器到直接连接的网络的距离定义为1。
-
从一路由器到非直接连接的网络的距离定义为所经过的路由器数加1。
RIP的基本特征参见上面的表1,此外RIP还具有如下一些特点:
-
RIP协议的“距离”也称为“跳数(hop count)”,因为报文每经过一个路由器,人们常称为增加了一跳。
-
RIP认为好的路由就是它通过的路由器的数目少,即“距离短”。
-
RIP允许一条路径最多只能包含15个路由器,“距离”等于16时即表示网络不可达。
-
RIP只适用于小型的自治系统。
RIP中的路由选择算法
RIP采用了分布式的Bellman-Ford算法(也称为Ford-Fulkerson算法)来进行路由计算,该算法是一种动态规划算法(Dynamic Programming,DP)。其要点如下:
-
路由器Rx收到邻居路由器Ry发来的如表2所示的一个RIP报文,即Ry的路由表,也就是Ry的距离向量。
-
Rx修改Ry发来的RIP报文中的所有项目(每个项目包括目的网络N、距离d、下一跳路由器):
-
把“下一跳”字段中的值都改为Ry;
-
把所有的“距离”字段的值加 1。
-
Rx对修改后的Ry的RIP报文中的每一个项目,检查自己的路由表,重复以下步骤:
-
若Ry项目中的目的网络N不在Rx的路由表中,则把该项目添加到Rx的路由表中。
-
否则,若Rx中表项的下一跳路由器是Ry,则用该项目中的距离d替换Rx路由表中对应项的距离。
-
否则,若收到项目到N的距离小于Rx路由表记录的到N的距离,则更新原路由表中对应项的下一跳为Ry。
-
否则,收到项目到N的距离大于Rx路由表记录的到N的距离,则什么也不做。
-
若给定时间内(一般3分钟)收不到相邻路由器的路由更新报文,则把此相邻路由器记为不可达路由器(距离置为16)。
注:上述步骤中第2步的原理是:如果路由器Ry经过某个路由器Rz可以到达网络Nz,则路由器Rx就可以认为经过Ry可以到达Nz,但跳数(即距离)要增加1,因为对于Rx来说,到达网络Nz的路径上又增加了一个路由器Ry。
教材P155页对上述算法进行了较为详细的注解。
教材P155-156页以例4-5给出了上述算法的一个计算示例。
RIP2协议的报文
RIP协议的最新版本为2,称为RIP2,其报文如下所示:
RIP2报文的要点如下:
-
RIP2报文首先封装在运输层的UDP数据报中(对应的端口号为520),该UDP数据报再封装为网络层的IP数据报,此后再发送到网络中。
-
RIP2报文的首部只有4个字节,
-
其中第1个字节为命令,1表示RIP的请求报文,2表示携带路由信息的报文,它可能是对请求的应答报文,也可能是路由器主动发送的路由更新报文;
-
1个字节的版本号,目前的版本号为2;
-
两个字节的0用于4字节对齐。
-
RIP2报文的内容是一些路由项,每个路由项由6个字段20个字节组成,一个RIP2报文最多可以包括25个路由项。
注:详细的路由项解释参见教材P157页。 -
RIP2允许使用鉴别功能,以确保收到的是合法的路由信息。
注:鉴别功能的解释参见教材P157页。
RIP的问题:好消息传播得快,坏消息传播得慢。
注:此问题的描述参见教材P158页。
“坏消息传播得慢”的问题的解决方法:当路由器Rx向邻居路由器Ry发送路由信息报文时,过滤掉那些下一站为Ry的路由表项。这是因为,如果Rx到达某个网络N要经过路由器Ry且距离为d,则路由器Ry就会有一条到达N的距离为d-1的路径,而路由器Ry如果要经过Rx到达网络N,则距离将会是d+1。
4.5.3 内部网关协议OSPF
OSPF名字是开放最短路径优先OSPF (Open Shortest Path First),它是为克服RIP协议只适应小型AS且距离度量过于简单而提出来的。
注:OSPF只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。实际上,所有的在自治系统内部使用的路由选择协议(包括RIP协议)都是要寻找一条最短的路径。
OSPF的最新版本也是第2版,称为OSPF2,它是互联网标准协议[RFC 2328]之一。
关于OSPF协议的要点请参阅上面的表1,详细的解释参见教材P159页。
为使OSPF适应很大规模的AS,OSPF支持将自治系统划分为区域(area),这样可使路由信息的交换局限在一个区域内部,而区域之间的路由交换则只由指定的区域边界路由器完成,这样就会使整个网络中路由信息的交换数量大大减少,也显著地提高了路由表的生成效率。下图示出了OSPF的区域划分。
请参阅教材P160页以详细学习OSPF的区域划分问题。
|
这里要注意 R3和R7是身兼多职 在主干区域内 是主干路由器 同时又是区域边界路由器
OSPF的报文结构
OSPF的报文结构如下图所示。关于该报文的首部结构及其5种类型的分组,参见教材P160-162页。
OSPF路由信息的传播
前已述及,OSPF中的路由器要向整个AS或其所在的区域(area)发送它的链路状态信息。但并不是每个路由器都向其他每个路由器都发送一份路由信息,它也是向每个邻居路由器各发送一份,但是邻居路由器要转发到其他路由器。
OSPF为这个过程确定了详细的算法,称为可靠的洪泛法(flooding),参阅教材P162-163。
OSPF使用分布式的链路状态协议:
RIP协议比OSPF重要啊。。。
4.5.4 外部网关协议BGP
关于外部网关协议BGP,教材在P163-167页进行了详细解释,这里列出相关的要点:
-
BGP不能像内部网关协议那样仅考虑尽最大可能有效地(即以路径最短的方式)将报文从源站传送到目的站,原因有两条:
-
互联网的规模太大,使得自治系统AS之间路由选择非常困难;
-
自治系统AS之间的路由选择需要特别注意有关的通常是人为的一些策略。
-
由于上述情况,边界网关协议BGP只能是力求寻找一条能够到达目的网络且比较好的路由(至少不能兜圈子),而并非要寻找一条最佳路由。
-
BGP采用了路径向量(path vector)式的路由选择协议,即在交换的路由报文中包括到达某个目的网络所要经过的自治系统序列,这显然与RIP交换的距离向量式的路由报文和OSPF交换的链路状态式的路由报文有很大不同。
-
在配置BGP时,每一个自治系统的管理员要选择至少一个路由器(也可以选择多个)作为该自治系统的“BGP发言人”。一般说来,两个BGP发言人都是通过一个共享网络连接在一起的, 而BGP发言人往往就是BGP边界路由器,但也可以不是BGP边界路由器。
-
BGP发言人之间通过TCP连接交换路由报文,这样就可以在一个TCP连接中完成多次报文交换,这对于交换路由量很大的BGP发言人来说是一种高效率的策略。
-
BGP发言人需要同时运行其所属自治系统的内部网关协议和用于自治系统间路由信息交换的BGP协议。
-
关于自治系统间交换路径向量的解释参见教材P165页图4-40及相关的解释。
-
BGP交换路由信息的结点数量是自治系统个数的量级,这比Internet上路由器个数的量级要小得多,因而总的的路由交换代价并不算高。
-
由于BGP使用了路径向量路由信息,就很容易避免产生兜圈子的路由。
-
BGP开始时,邻站间交换的是整个的BGP路由表,但以后只需要在发生变化时交换变化的部分。这一措施也有效地提高了路由信息的交换效率,减少了Internet上BGP路由交换所占用的带宽。
-
关于BGP的报文格式参见教材P167页图4-41及相关的解释。
BGP支持CIDR
三种协议比较
4.5.5 路由器的构成
关于路由器的功能,这里给出一个较为全面的描述:路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是建立路由和转发分组。从路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。下一跳路由器也按照这种方法处理分组,直到该分组到达终点为止。路由器转发分组的功能正是网络层的主要工作之一。网络层也就是路由器的另外一项主要工作就是运行路由选择协议,建立和维护路由表。
下图给出了典型的路由器的构成框图,参见教材P167页图4-42及相关的解释。
![]() |
关于路由器的构成,要点如下:
-
路由器由路由选择部分和分组转发两部分组成,其中分组转发部分又由输入端口、输出端口和交换结构三部分组成。
-
严格地说,路由选择协议生成的是路由表,而分组转发使用的是转发表,但在《计算机网络原理》课程中,通常不区分这两种表,即认为它们是相同的表。
-
输入端口和输出端口均包括物理层、数据链路层和网络层三个网络层次的处理模块。
-
输入端口上的排队时延:分组到达输入端口时,输入端口要先缓存该分组,排队等待查找路由,这会带来排队时延。
-
结点处理时延:路由器查找路由表所花费的时延是结点处理时延的一个重要组成部分。
-
输出端口上的排队时延:分组在查找到路由后,会被路由器从输入端口传送到输出端口的缓存中排队等待发送到链路上,这会产生输出端口上的排队时延。输出端口上的排队时延是路由器排队时延的主要组成部分。
-
路由器的交换结构用于实现将分组从输入端口传送到输出端口,常见的交换结构有三种实现方式,即存储器、总线和互联网络方式,如下图所示。
-
存储器方式是其中最简单的方式,它实际上是在一台普通的计算机上插两块或多块网卡实现的,虽然专业级的路由器一般不会使用这种方式,但它却是路由器有关的网络实验经常使用的方式。
-
总线方式通常较存储器方式有高得多的交换速率,但是由于总线是共享的,同一时刻只能有一对端口进行分组的传输,其它端口上待传输的分组则会因为被阻塞而产生时延。
-
纵横交换结构(crossbar switch fabric)是路由器交换结构中最高级的交换结构,它可以实现超高速率的分组交换,由于交换结构的形状像是互连网络,该种结构又被形象地称为互连网络式的交换结构(interconnection network)。