计算机网络:第四章 网络层

4.1 网络层提供的两种服务 – 了解即可

网络层向运输层提供两种服务:虚电路服务数据报服务。鉴于TCP/IP体系的网络层提供的是数据报服务,因此下面我们讨论都是围绕网络层如何传送IP数据报这个主题。

下面给出一幅图用来说明主机H1向主机H2发送数据的过程:
在这里插入图片描述

虚电路服务与数据报服务的主要区别:

在这里插入图片描述

4.2 网际协议IP

网际协议IP是TCP/IP体系中两个最主要的协议之一。

与IP协议配套使用的还有三个协议:

  1. 网址解析协议ARP(Address Resolution Protocol);
  2. 网际控制报文协议ICMP(Internet Control Message Protocol);
  3. 网际组管理协议IGMP(Internet Group Management Protocol)

如下图所示,这三个协议在网络层的位置。ARP在最下面,因为IP协议经常要使用这个协议。ICMP和IGMP在最上面,是因为它们要使用IP协议。

在这里插入图片描述

4.2.1 虚拟互联网

4.2.1.1 网络互连的设备

中间设备又称为中间系统或中继系统:

  1. 物理层使用的中间设备是:转发器(repeater);
  2. 数据链路层的中间设备是:网桥或者桥接器(bridge);
  3. 网络层使用的中间设备是:路由器(router);
  4. 网络层以上使用的中间设备:网关(gateway);【ps:这是以前的方式,现在的网关一般都指路由器的接口了】

ps:如果计算机没有配置网关【即:没有接路由器】,则访问不了其他网段的计算机,只能访问本网段的。

4.2.1.2 虚拟互联网定义

所谓虚拟互联网也就是逻辑互联网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但我们利用IP协议使这些性能各异的网络在网络层看起来好像是一个统一的网络。如下图所示:

在这里插入图片描述

4.2.2 分类的IP地址

IP地址的编址方法共经过了三个历史阶段:分类的IP地址、子网的划分以及构成超网。

4.2.2.1 分类IP地址的概念

分类的IP地址:是将IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成,其中一个字段是网络号(net-id),它标志主机(或路由器)所连接到的网络。一个网络号在整个互联网范围内必须是唯一的。第二个字段是主机号(host-id),它标志该主机(或路由器)。一个主机号在它前面的网络号所指明的网络范围内必须是唯一的。因此,一个IP地址在整个互联网范围内是唯一的。

这种两级的IP地址可以记为: IP地址 ::= {<网络号>,<主机号>}

下图用来说明IP地址中的网络号字段和主机号字段,A~E类地址:

在这里插入图片描述

下面给出一张二进制和十进制之间的转换的图片,便于直观感受分类的IP地址是怎么计算出来的。

在这里插入图片描述

4.2.2.2 常用的三种类别的IP地址

常用的是A类(占总IP地址50%)、B类(占总IP地址25%)和C类(占总IP地址12.5%),下面给出它们的IP地址指派范围:

在这里插入图片描述

主机部分不能全为1或者全为0。全为1代表广播,全为0代表这个网段。

说明:特殊的几个IP地址:

  • 127.0.0.1:本地环回测试,网络号为127的都是;
  • 169.254.0.0:动态获取IP失败,零时用的;

下面几个是保留的私网地址:【互联网上的路由器找不到的】

  • 10.0.0.0:保留给一些政府单位或者学校用;
  • 172.16.0.0 — 172.31.0.0
  • 192.168.0.0 — 192.168.255.0

4.2.2.3 IP地址的一些重要特点

1)每一个IP地址都是由网络号和主机号两部分组成。路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间以及查找路由表的时间;

(2)实际上IP地址是标志一台主机(或路由器)和一条链路的接口。当一台主机同时连接到两个网络上时,该主机就必须具有两个相同的IP地址,必须是网络号不同的。所以,路由器是用来连接不同网络的,所以一个路由器应当至少有2个IP地址。这就好比一个建筑正好处在北京路和上海路的交叉口上,那么这个建筑就可以拥有两个门牌号,例如:北京路4号和上海路37号;

(3)用转发器或网桥连接起来的若干个局域网仍为一个网络,因为它们的网络号相同。具有不同网络号的局域网必须使用路由器进行互联;

(4)在IP地址中,所有分配到的网络号的网络都是平等的。所谓平等,就是指互联网同等对待每一个IP地址。

在这里插入图片描述

4.2.3 IP地址与硬件地址 ---- 重要

如下图所示,物理地址(MAC地址)是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址。

在这里插入图片描述

在发送数据时,数据从高层下到低层,然后才到通信链路上传输。使用IP地址的IP数据报一旦交给了数据链路层,就被封装成了MAC帧了。MAC在传送时使用的源地址和目的地址都是硬件地址,这两个硬件地址都写在了MAC帧的首部了。

总之:IP地址放在IP数据报的首部,而硬件地址放在MAC帧的首部。在网络层和网络层以上使用IP地址,而在数据链路层及以下使用硬件地址。当IP数据报放入数据链路层的MAC帧后,整个的IP数据报都成为了MAC帧的数据,因而在数据链路层是看不见数据报的IP地址的。

下面介绍下:计算机A和计算机B通信的过程:

在这里插入图片描述

由上图中计算机A和计算机B的通信过程,我们可以得出以下结论:

  1. 交换机基于数据帧的MAC地址转发数据帧,路由器基于数据包的IP地址转发数据包;
  2. 数据包在传输过程中不变,过网络设备时,数据帧要用新的物理层地址重新封装;---- 即MAC地址变化
  3. MAC地址决定了数据帧下一跳哪个设备接收,而IP地址决定了数据包的起点和终点。

4.2.4 地址解析协议ARP ---- 重要

ARP协议作用:将网络层使用的IP地址解析出数据链路层使用的硬件地址(即:MAC地址)。
RARP协议作用:也叫逆向ARP,它的作用是使只知道自己硬件地址的主机能够通过RARP协议找出其IP地址。但是现在的DHCP协议已经包含了RARP协议的功能了。

在这里插入图片描述

每一台主机都设有一个ARP高速缓存,里面有本局域网上的各主机和路由器的IP地址到硬件地址的映射表。那么主机是怎样知道这些地址的呢?看下面主机A向主机B发送一个数据包的过程:

当主机A向本局域网中的主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。如果有,就在ARP高速缓存中查出其对应的硬件地址,再把这个硬件地址写入MAC帧,然后再通过局域网把该MAC帧发往此硬件地址。

如果在ARP高速缓存中没有查到主机B的IP地址,那么主机A就自动运行ARP,再按照下面的步骤找出主机B的硬件地址:

  • (1)主机A的ARP进程在本局域网上广播发送一个ARP请求分组,内容包括自己的IP地址和MAC地址以及要找的主机IP地址;
  • (2)在本局域网上的所有主机上运行的ARP进程都收到ARP请求分组;
  • (3)主机B的IP地址与ARP请求分组中要查询的IP地址一致,就收下这个ARP请求分组,并向主机A发送ARP响应分组,同时将这个ARP相应分组中写入自己的硬件地址,同时也会将主机A的IP到硬件地址的映射写入自己的ARP高速缓存。
  • (4)主机A收到主机B的ARP响应分组后,就在其ARP高速缓存中写入主机B的IP地址到硬件地址的映射。

说明:为了防止硬件地址的变更而导致通信故障,ARP对保存在高速缓存中的每一个映射地址项目都设置生存时间,凡超过生存时间的项目就从高速缓存中删掉。

在这里插入图片描述

4.2.5 IP数据报的格式

IP数据报的完整格式如下所示:

在这里插入图片描述
一个IP数据报由首部和数据两部分组成。首部的前一部分是固定长度,共20个字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。首部各字段的意义如下所示:

  • 1、版本:占4位,指IP协议的版本,是4还是6;
  • 2、首部长度:占4位,5~15;
  • 3、区分服务:实时性要求高不高决定要不要用;
  • 4、总长度:指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为:2^16 - 1 = 65535字节。但是IP层下面的数据链路层中的一个数据帧中的数据字段最大传输单元MTU为1500,所以,如果数据报的长度超过了MTU,需要进行分片处理;
  • 5、标识:占16位,用于标识分片后的数据报,最后能组装成原来的数据报;
  • 6、标志:MF=1,后面还有分片;MF=0,后面没有分片了;DF:不能分片。(MF:More Fragment DF:Donot Fragment)
  • 7、片偏移:占13位,相对于用户数据起点,该片从何处开始。片偏移以8字节位偏移单位,看后面的图片示例;
  • 8、生存时间:占8位,TTL(Time To Live),单位为跳数。路由器没转发数据报之前就把TTL值减1,最大数值为255;
  • 9、协议:占8位,标记上层需要使用哪个协议进行处理,常用的协议字段如下图所示;
  • 10、首部检验和:占16位,只检验数据报的首部,不包括数据部分;
  • 11、源地址:占32位,4字节;
  • 12、目的地址:占32位,4字节。
  • 13、可变部分:用来支持排错、测量以及安全等措施,很少被使用。

在这里插入图片描述

4.2.6 IP层转发分组的流程

在互联网上转发分组的时候,是从一个路由器转发到下一个路由器。

1. 路由表

路由表中,每一条路由最主要的两个信息是:目的网络地址和下一跳地址。

在这里插入图片描述

说明:

(1)从上图可以看出来,与路由器R2直连的网络不需要路由表,可以之间交付。但是没有直连的网络则需要路由表来指明目的主机所在的网络以及下一跳的地址;

(2)图中每一个路由器都连接两个网络,则每一个路由器都有两个不同的IP地址。

2. 分组转发算法

  • 1、从数据报的首部提取目的主机的IP地址D,得出目的网络地址为N;
  • 2、若N就是与此路由器直接相连的某个网络地址,则进行直接交付,不需要再经过其他路由器,直接把数据报交付目的主机(这里包括把目的主机地址D转换为具体的硬件地址,把数据报封装为MAC帧,再发送帧);否则就是间接交付,执行3;
  • 3、若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行4;
  • 4、若路由表中没有达到网络N的路由,则把数据报传送给路由表中所指明的下一跳由器;否则,执行5;
  • 5、若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则执行6;
  • 6、报告转发分组出错。
    说明:上诉过程不适用于子网,子网中还需要用各网络的子网掩码和D逐位”与“操作。

4.3 子网的划分

从两级IP地址到三级IP地址:网络号、子网号、主机号,可以用下面的记法来表示子网的IP形式:

三级IP地址可以表示为:IP地址 ::= {<网络号>, <子网号>, <主机号>}

4.3.1 划分子网

1. 为什么要划分子网呢?

(1)IP地址的利用率有时很低。比如,有的公司申请一个B类地址的网络,但是所连接的主机并不多,但是又不愿意换成C类,因为留着备用,但是一个B类地址可连接的主机数超过了6万,这就造成了很大的浪费;

(2)给每一个物理网络分配一个网络号会使路由表变得太大,因而使网络性能变坏(主机太大,路由表存的就多,每次查找的时候就会变慢);

(3)两级IP地址不够灵活。

2. 划分子网的基本思路
  • (1)划分完子网后,本单位以外的网络是看不见这个子网的,对于它们来说这个单位仍然表现为一个网络;
  • (2)三级IP地址可以表示为:IP地址 ::= {<网络号>, <子网号>, <主机号>};
  • (3)凡是从其他网络发送给本单位某台主机的IP数据报,仍然根据数据报的目的网络号找到连接到本单位网络上的路由器。但此路由器在收到IP数据报后,再按目的网络号和子网号找到目的子网,将数据报交给目的主机。

在这里插入图片描述

4. 子网掩码

一个网络中的路由器怎么找到子网,将数据报发送给它呢?从IP数据报的首部是无法看出源主机或者目标主机是否进行了子网划分,这个时候就需要使用子网掩码了。

在这里插入图片描述

子网掩码的特点:网络号部分都为1,主机部分都为0。所以都是255.255.***,***形式(以B类地址为例)。

使用子网掩码的好处:不管网络有没有划分过子网,只要把子网掩码和IP地址进行逐位的“与”(AND)运算,就可以立即得出网络地址。如下面的例子所示:

在这里插入图片描述

上面这个例子比较简单,子网掩码比较简单。在对一个网络进行多次子网划分的时候,子网掩码非常重要,只有先计算出了子网掩码,才能直到对应的子网IP段。

子网掩码是一个网络或一个子网的重要属性。RFC950中规定:路由器在和相邻路由器交换路由信息时,就必须把自己所在网络或者子网的子网掩码告诉相邻的路由器。在路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。

划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数。(每个子网的第一个和最后一个IP都没法用)

4.3.3 无分类编址CIDR(构造超网)

1. 网络前缀

无分类编址的正式名字为:无分类域间路由选择CIDR(Classless Inter-Domain Routing,CIDR读作”sider“)。

CIDR主要的两个特点:
(1)CIDR消除了传统的A类、B类和C类地址以及子网的概念。CIDR将32位的IP地址划分为前后两个部分。前部分是”网络前缀“,用来指明网络,后面的部分用来指明主机。因此无分类的两级编址为:

IP地址 :== {<网络前缀>, <主机部分>}

(2)CIDR将网络前缀都相同的连续的IP地址组成一个”CIDR地址块“。知道CIDR地址快中的任何一个地址,就可以知道这个地址块的最小地址和最大地址,以及地址块中的地址数。如下图所示案例:

在这里插入图片描述

  • 路由聚合:由于一个CIDR块地址块中有很多地址,所以在路由表中就利用CIDR地址块来查找目的网络。这种地址的聚合称为路由聚合。路由聚合也称为构造超网。
2. 最长前缀匹配

CIDR中的IP地址用网络前缀和主机两部分表示。因而,路由表中的每个项目由”路由前缀“和”下一跳地址“组成,但是在查找路由表时可能会得到不止一个匹配结果,应当从匹配结果中选择具有最长网络前缀的路由。这叫做最长前缀匹配,因为网络的前缀越长,地址块就越小,因而路由就越具体。故又称为最佳匹配。

3. 使用二叉线索查找路由表

为了更加有效的查询,通常是把无分类地址的路由表存放在一种层次的数据结构中,然后自上而下地按层次进行查找。这里最常用的就是二叉索引(binary trie),它是一种特殊结构的树。IP地址中从左到右的比特值决定了从根节点逐层向下层延申的路径,而二叉线索中的各个路径就代表路由表中存放的各个地址。

说明:图中小圆圈代表中间节点、小方框代表叶子节点(每个叶节点代表唯一前缀)

从二叉线索的根节点自顶向下的深度最多32层,每一层对应IP地址中的一位。一个IP地址存入二叉索引的规则也很简单。先检查IP地址左边的第一位,如果为0,则第一层的节点就在根节点的左下方,如果为1,则在右下方。然后再检查地址的第二位,构造出第二层的结点,以此类推,直至唯一前缀的最后一位。图中加粗的就是前缀0101在这个二叉线索中的路径。

这里需要说明:二叉线索只是提供了一种可以快速在路由表中找到匹配的叶节点的机制。但这是否和网络前缀匹
在这里插入图片描述

4.4 网络控制报文协议ICMP

为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP(Internet Control Message Protocol)。ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。

在这里插入图片描述

4.4.1 ICMP报文的种类

ICMP报文有两种:ICMP差错报告报文和ICMP询问报文。

几种常用的ICMP报文类型如下表所示:

在这里插入图片描述

ICMP差错报告报文共有四种:

  1. 终点不可达。当路由器或主机不能交付数据报时就像源点发送终点不可达报文。
  2. 时间超过。当路由器收到生存时间为零的数据报时,除丢弃该数据报之外,还要向源点发送时间超过报文
  3. 参数问题。当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
  4. 改变路由(重定向)。路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器。

常用的ICMP询问报文有两种:

  1. 回送请求和回答。ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。收到此报文的主机必给源主机或路由器发送ICMP回送回答报文。这种询问报文用来测试目的站是否可达以及了解其有关状态。
  2. 时间戳请求回答。ICMP时间戳请求报文是某台主机或路由器回答当前的日期和时间。

4.4.2 ICMP的应用举例

ICMP的一个重要的应用就是分组网间探测PING(Packet InterNet Groper),用来测试两台主机之间的连通性。PING使用了ICMP回送请求和回送回答报文。PING是应用层直接使用网络层ICMP协议的一个例子。它没有通过运输层的TCP或者UDP。

具体应用:

  • ping 目标主机名/IP : 查看网络通不通、往返时间等等信息
  • tracert 目标主机IP:跟踪路由,查看从源主机到达目标主机所经过的路由器的IP地址,以及到达其中每一个路由器的往返时间;(说明:Linux下该命令为traceroute)
  • pathping 目标主机IP:功能同tracert。

4.5 互联网的路由选择协议

本节将讨论几种常用的路由选择协议,也就是要讨论路由表中的路由是怎样得出来得。

4.5.1 有关路由选择协议的几个基本概念

1. 理想的路由算法

路由选择协议的核心就是路由算法,即需要何种算法来获得路由表中的各项目,一个理想的路由算法应具备如下特点:

  1. 算法必须是正确的和完整的。这里的“正确”的含义是:沿着各路由表所指引的路由,分组一定能够最终到达目的网络和目的主机;
  2. 算法在计算上应简单。路由选择协议不应该使网络通信增加太多的额外开销;
  3. 算法应该能适应通信量和网络拓扑的变化,即自适应性。当网络中的通信量发送变化时,算法能自适应地改变路由以均衡各链路的负载。当某个或某些结点、链路发生故障不能工作时,或者修理好了再投入允许时,算法也能及时地改变路由;
  4. 算法应具有稳定性。在网络通信量和网络拓扑相对稳定的情况下,路由算法应收敛于一个可以接受的解,而不应使得出的路由不停地变化;
  5. 算法应是公平的。路由选择算法对所有用户(除对少数优先级高的用户)都是平等的;
  6. 算法应是最佳的。路由选择算法应当能够找出最好的路由。使得分组平均时延最小而网络的吞吐量最大。

2. 静态路由和动态路由

倘若从路由算法能否随网络的通信量或拓扑自适应地进行调整变化来划分,则只有两大类:静态路由选择策略和动态路由选择策略。

  1. 静态路由选择也叫做非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。对于较小的网络,完全可以采用静态路由选择,用人工配置每一条路由;
  1. 动态路由选择也叫做自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也较大。动态路由选择适用于较复杂的大网络。

3. 分层次的路由选择协议

互联网采用的路由选择协议主要是自适应的(即动态的)、分布式路由选择协议。

由于互联网规模非常大以及有些单位不愿意外界了解本单位的网络布局细节但是又要接入互联网,所以可以把整个互联网划分为多个较小的自治系统AS(autonomous system),一个AS对其他AS表现出的是一个单一的和一致的路由选择策略。

一个大的ISP就是一个AS,这样,互联网把路由选择协议分为两大类:内部网关协议IGP和外部网关协议EGP。

1、内部网关协议IGP(Interior Gateway Protocol):即在一个自治系统内部使用的路由选择协议。目前这类路由选择协议使用的最多,如:RIP和OSPF协议。

2、外部网关协议EGP(External Gateway Protocol):源主机和目标主机不在一个AS中使用的路由选择协议。目前使用最多的外部网关协议的是BGP的版本4(BGP-4)。

4.5.2 内部网关协议RIP

1. 工作原理

RIP(Routing Information Protocol),路由信息协议。是一种分布式的基于距离向量(即跳数)的路由选择协议。

RIP认为好的路由器就是它通过的路由器的数目少,即“距离短”。RIP允许一条路径最多只能包含15个路由器,第16个就不可达了。本节讨论的RIP和OSPF都是分布式的路由选择协议,它们共同的特点就是每一个路由器都要不断地和其他一些路由器交换路由信息。我们需要明确三个要点:和哪些路由器交换信息?交换什么信息?在什么时候交换信息?

用RIP协议的特点来回答这三个问题:

  1. 仅和相邻路由器交换信息;
  2. 路由器交换的信息是当前本路由器所知道的全部信息,即自己现在的路由表;
  3. 按固定的时间间隔交换路由信息。如,每隔30S。

RIP协议让一个自治系统AS中的所有路由器都和自己相邻路由器定期交换信息,并不断更新其路由表,使得从每一个路由器到每一个目的网络的路由器都是最短的(即跳数最少)

RIP协议存在的问题:当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器,即”好消息传的快,而坏消息传的慢

总之,RIP协议最大的优点是实现简单、开销较小。但是RIP的缺点也较多。首先,RIP限制了网络的规模,它能使用的最大距离为15.其次,路由器之间的路由信息是路由器中完整的路由表,因而随着网络规模的扩大,开销也随之增大。最后,”坏消息传播的慢“,使更新过程的收敛时间过长。然而目前在规模较小的网络中,使用RIP协议仍占多数。

4.5.3 内部网关协议OSPF

1. OSPF协议的基本特点

这个协议的名字是开放最短路径优先OSPF(Open Shortest Path First),它是为了克服RIP的缺点而开发出来的,使用的是最短路径算法。

OSPF最主要的特征就是使用分布式的链路状态协议(link state protocol),而不是像RIP那样的距离向量协议。和RIP相比,OSPF的三个要点和RIP的都不一样:

  1. 向本自治系统中的所有路由器发送消息。这里使用的是洪泛法,这就是路由器通过所有输出端口向所有相邻的路由器发送消息。而每一个相邻的路由器又再将此信息发往其所有相邻路由器。这样,最终整个区域中所有的路由器都得到了这个信息的一个副本。而RIP协议仅仅向自己向自己相邻的几个路由器发送消息;
  2. 发送的消息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器知道的部分信息;
  3. 只有当链路状态发生变化时,路由器才向所有路由器用洪泛法发送此消息。
  • 其他特点:
  1. OSPF允许管理员给每条路由指派不同的代价,即对于不同类型的业务可计算出不同的路由。一般通过带宽来计算;
  2. 如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径,这叫做多路径间的负载均衡。

由于各路由器之间频繁地交换链路状态信息,因此,所有的路由器最终都能建立一个链路状态数据库(link-state database),这个数据库实际上就是全网的拓扑结构图。而RIP协议的每一个路由器虽然知道所有的网络的距离以及下一跳路由器,但却不知道全网的拓扑结构。

为了使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干个更小的范围,叫做区域(area)。

在这里插入图片描述

划分区域的好处就是把利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个自治系统,这就减少了整个网络上的通信量。

2. OSPF的五种分组类型

(1)问候(Hello)分组,用来发现和维持邻站的可达性;

(2)数据库描述分组,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息;

(3)链路状态请求分组,向对方请求发送某些链路状态项目的详细信息;

(4)链路状态更新分组,用洪泛法对全网更新链路状态;

(5)链路状态确认分组,对链路更新分组确认。

在这里插入图片描述

4.5.4 外部网关协议BGP

BGP是不同自治系统的路由器之间交换路由信息的协议,BGP最新版本为BGP-4。

边界网关协议BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),并非要寻找一条最佳路由。BGP采用了路径向量(path vector)路由选择协议。

每个自治系统需要有一个BGP发言人。一般来说,两个BGP发言人都是通过一个共享网络连接在一起的,而BGP发言人往往就是BGP边界路由器。每一个BGP发言人除了必须运行BGP协议外,还必须运行该自治系统所使用的内部网关协议,如:RIP或OSPF。

一个BGP发言人与其他AS的BGP发言人要交换路由信息,就需要先建立TCP连接,然后在此连接上交换BGP报文以建立BGP会话,利用BGP会话交换路由信息,如增加了新的路由或者撤销了过时的路由,以及报告出差错情况等。

在这里插入图片描述

BGP-4的四种报文:

  1. OPEN:打开报文,用来与相邻的另一个BGP发言人建立关系,使通信初始化;
  2. UPDATE:更新报文,用来通告某一路由信息,以及列出要撤销的多条路由;
  3. KEEPALIVE:保活报文,用来周期性地证实邻站的连通性,一般间隔是30s;
  4. NOTIFICATION:通知报文,用来发送检测到的差错。

4.5.5 路由器的构成

1. 路由器的结构

路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。从路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。下一跳路由器也按照这样的方法处理分组,直到该分组到达终点为止。路由器的转发分组正是网络层的主要工作。

在这里插入图片描述

整个路由器结构可以划分为两大部分:路由选择部分和分组转发部分。

路由选择部分也叫控制部分,其核心构建是路由选择处理机。路由选择处理机的任务是根据所选定的路由选择协议构造出路由表,同时经常或者定期地和相邻路由器交换路由信息而不断地更新和维护路由表。

分组转发部分由三部分组成:交换结构、一组输入端口和一组输出端口。

分组在路由器的输入端口和输出端口都可能会在队列中排队等候处理。若分组处理的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃。

交换结构三种常用的交换方法:通过存储器、通过总线、通过互联网络。
在这里插入图片描述

4.6 IPv6

IP是互联网的核心协议。解决IP地址耗尽的根本措施就是采用具有更大地址空间的新版本IP,即IPv6。

4.6.1 IPv6的基本首部

IPv6所引进的主要变化如下:

  1. 更大的地址空间。IPv6把地址从IPv4的32位增大到4倍,即增大到128位;
  2. 扩展的地址层次结构。IPv6的地址空间很大,因此可以划分为更多的层次;
  3. 灵活的首部格式。
  4. 改进的选项。IPv6允许数据报包含有选项的控制信息,因而可以包含一些新的选项;
  5. 允许协议继续扩充。
  6. IPv6首部改为8字节对齐,原来的IPv4首部是4字节对齐

IPv6数据报由两大部分组成,即基本首部和后面的有效载荷。有效载荷允许有零个或多个扩展首部,再后面是数据部分。但是,所有的扩展首部都不属于IPv6数据报的首部。

在这里插入图片描述

如下图所示:对IPv6首部中的各字段的作用进行了说明:

在这里插入图片描述

IPv6把原来IPv4首部中选项的功能都放在扩展首部中,并把扩展首部留给路径两端的源点和终点的主机来处理,而数据报途中经过的路由器都不处理这些扩展首部,这样就大大提高了路由器的处理效率。

4.6.2 IPv6的地址

一般来讲,一个IPv6数据报的目的地址可以是以下三种基本类型地址之一:

(1)单播(unicast):就是传统的点对点通信;

(2)多播(multicast):就是一点对多点的通信,数据报发送到一组计算机中的每一个;

(3)任播(anycast):这是IPv6增加的一种类型。任播的终点是一组计算机,但数据报只交付给其中一个,通常是距离最近的一个。

IPv6采用冒号十六进制记法,各值之间用冒号分隔,0可以省略,例如:

68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF

在十六进制记法中允许零压缩,即一连串连续的零可以为一对冒号所取代,例如:

FF05:0:0:0:0:0:0:B3 可以压缩为: FF05:B3

IPv6的地址分类见下表:

在这里插入图片描述

4.6.3 IPv4向IPv6过渡

IPv4向IPv6过渡只能采用逐步演进的办法,同时,还必须使新安装的IPv6系统能够向后兼容。这就是说,IPv6系统必须能够接收和转发IPv4分组,并且能够为IPv4分组选择路由。

两种IPv4向IPv6过渡的策略:双协议栈和隧道技术。

1. 双协议栈

双协议栈:指一部分主机或者路由装有双协议栈,一个IPv4和一个IPv6。因此双协议栈主机或者路由既能够和IPv6的系统通信,又能够和IPv4的系统通信。双协议栈的主机记为:IPv6/IPv4,表明它同时具有两种IP地址:一个IPv6地址和一个IPv4地址。但是有可能会出现IPv6中某些字段(例如:流标号)无法恢复。

在这里插入图片描述

2. 隧道技术

这种方法的要点就是在IPv6数据报要进入IPv4网络时,把IPv6数据报封装成为IPv4数据报。如下图所示:

在这里插入图片描述

4.7 IP多播

4.7.1 IP多播的基本概念

在互联网上进行多播就叫做IP多播。IP多播所传送的分组需要使用多播IP地址。

在这里插入图片描述

与单播相比,在一对多的通信中,多播可大大节约网络资源。视频服务器只需要将视频分组当作多播数据报来发送,并且只用发送一次。路由器R1在转发分组的时候,需要把收到的分组复制成3个副本,分别向R2、R3、R4各转发1个副本。当分组到达目的局域网时,由于局域网具有硬件多播功能,因此不需要复制分组,在局域网上的多播组成员都能收到这个视频分组。

在互联网范围的多要靠路由器来实现,能够运行多播协议的路由器称为多播路由器。

在多播数据报的目的地址中写入的是多播组的标识符,然后设法让加入到这个多播组的主机IP地址与多播组的标识符关联起来。这里的标识符就是IP地址中的D类地址。多播数据报和一般的IP数据报的区别就是它使用D类IP地址作为目的地址,并且首部协议字段值是2,表明使用网际管理协议IGMP。

4.7.2 在局域网上进行硬件多播

以太网硬件地址字段中的第一个字节的最低位为1时就代表是多播硬件。

在这里插入图片描述

由于多播IP地址和以太网硬件地址的映射关系不是唯一的,因此收到的多播数据报的主机,还要在IP层利用软件进行过滤,把不是本主机要接收的数据报丢弃。

4.7.3 网际组管理协议IGMP和多播路由选择协议

1. IP多播需要两种协议

如下图所示,图中四台有IP的主机都参加了一个多播组,其组的地址为226.15.37.123。显然,多播数据报应当传送到路由器R1、R2和R3,而不应该传到R4,因为R4连接的局域网上现在没有这个多播组的成员。那么这个路由器又怎样知道多播组的成员信息呢?这就需要网际管理协议IGMP(Internet Group Management Protocol)。

在这里插入图片描述

IGMP协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机参加或者退出了某个多播组。

显然,仅有IGMP协议是不能完成多播任务的。连接在局域网上的多播路由器还必须和互联网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组成员。这就需要使用多播路由选择协议。

2. 网际组管理协议IGMP

IGMP的工作可分为两个阶段:

  • 第一个阶段:当某台主机加入新的多播组时,该主机应向多播组的多播地址发送一个IGMP报文,声明自己要成为该组的成员。本地的多播路由器收到IGMP报文后,还要利用多播路由选择协议把这种组成员关系转发给互联网上其他多播路由器;
  • 第二个阶段:组成员关系是动态的。本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员。只要有一台主机对某个组响应,那么多播路由器就认为这个组是活跃的。但一个组经过几次的探询后仍然没有一台主机响应,多播路由器就认为本网络上的主机都离开了这个组,因此也就不再把这个组的成员关系转发给其他的多播路由器。
3. 多播路由选择协议

在多播过程中一个多播组中的成员是动态变化的。例如在收听网上某个广播节目的时候,随时会有主机加入或者离开这个多播组。多播路由选择实际上就是要找出以源主机为根节点的多播转发树。

在多播转发树上,每一个多播路由器向树的叶节点方向转发收到的多播数据报,但在多播转发树上的路由器不会收到重复的多播转发报。不难看出,对不同的多播组对应于不同的多播转发树。同一个多播组,对不同的源点也会有不同的多博转发树。

已经有了多种实用的多播路由选择协议,它们在转发多播数据报时使用了以下三种方法:

1、洪泛与剪除

这种方法适合较小的多播组,而所有的组成员接入局域网也是相邻的。为了避免兜圈子,采用了反向路径广播RPB,即每一个路由器在收到一个多播数据报时,先检查数据报是否是从源点经最短路径传送过来的。

在这里插入图片描述

路由器R1收到源点发来的多播数据报后,向R2和R3转发。R2发现R1就在自己到源点的最短路径上,因此向R3和R4转发收到的数据报。R3发现R2不在自己到源点最短路径上,因此将R2发来的多播数据报丢弃掉。其他路由器也这样进行转发。R7到源点有两条最短路径,我们假设R4的IP地址比R5的IP地址小(多条最短路径时,选择相邻路由器IP地址较小的),因此R7只接收R4传过来的数据报。最后就得出了上图中加粗表示的多播转发树。

如果在多播转发树上的某个路由器发现它的下游树枝已没有该多播组的成员,就应把它和下游的树枝一起剪除。

2、隧道技术

隧道技术多用于多播组的位置在地理位置上很分散的情况。

在这里插入图片描述

如图所示,网1和网2都支持多播,但是路由器R1和R2之间的网络不支持多播,因此路由器R1就对多播数据报进行再次封装,即加上普通数据报的首部,使之成为向单一目的站发送的单播数据报,然后通过”隧道“从R1发送到R2。可以想象汽车过海峡的场景,汽车自己无法过海峡,需要先开上轮渡,到了岸,再开走。

4.8 虚拟专用网VPN和网络地址转换NAT

4.8.1 虚拟专用网VPN

有时一个很大的机构(如连锁超市或者连锁酒店),它的很多部分遍布范围很广,但是这些部门又经常需要交换信息,那么有两种方法:

(1)租用电信公司的通信线路为本机构专用,这种方法虽然简单,但是租金太高,一般难以承受;

(2)利用公用的互联网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网VPN(Virtual Private Network)。

下面给出三个专用的IP地址块,这些地址只能用于一个机构的内部通信,而不能用于和互联网上的主机通信。在互联网中的所有路由器,对目的地址为专用地址的数据报一律不进行转发。

  • 10.0.0.0 到 10.255.255.255
  • 172.16.0.0 到 172.31.255.255
  • 192.168.0.0 到 192.168.255.255

4.8.2 网络地址转换NAT

在专用网络内部的一些主机本来已经分配到了仅在内网使用的本地IP地址,但是又想和互联网上的主机通信(并不需要加密),这时可以使用网络地址转换NAT(Network Address Translation)。

这种方法需要在专用网连接到互联网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换为全球IP地址,才能和互联网连接。如下图所示:

在这里插入图片描述

由此可见,当NAT路由器具有n个全球IP地址时,专用网内最多可以同时有n台主机接入到互联网。为了更加有效的利用全球IP地址,现在常用的NAT转换表把运输层的端口号也利用上了。这样,就可以使用多个拥有本地地址的主机,共用一个NAT路由器上的全球IP地址。使用端口号的NAT也叫做网络地址与端口号转换NAPT(Network Address and Port Translation)。如下表所示:

在这里插入图片描述

可以看出来,当NAPT路由器收到从互联网发来的应答时,就可以从IP数据报的数据部分找出运输层端口号,然后根据不同的目的端口号,从NAPT转换表中找到目的主机。

这里需要说明一点:通过NAT路由器的通信必须是由专用网内的主机发起的。设想互联网上的主机要发起通信,当IP数据报到达NAT路由器时,NAT路由器就不知道应当把目的IP地址转换为专用网内的哪一个IP地址。这就表名,这种专用网内部不能充当服务器,因为互联网上的用户无法请求专用网内的服务器提供服务。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值