码迷,mamicode.com
首页 > 其他好文 > 详细

网络层

时间:2020-02-17 15:41:20      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:距离   调用   网络通   利用   计算机网络   icm   进制   等等   等于   

以下知识整理来自《计算机网络》第七版 谢希仁

本章讨论网络互连问题,也就是讨论多个网络通过路由器互连成为一个互连网络(或互联网)的各种问题。

本章最重要的内容是:

(1)虚拟互连网络的概念

(2)IP地址与物理地址的关系

(3)传统的分类的IP地址(包括子网掩码)和无分类域间路由选择CIDR

(4)路由选择协议的工作原理

网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。网络在发送分组时不需要先建立连接。每一个分组(也就是IP数据报)独立发送,与其前后的分组无关(不进行编号)。网络层不提供服务质量的承诺。也就是说,所传送的分组可能出错、丢失、重复和失序(即不按序到达终点),当然也不保证分组交付的时限。如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责(包括差错处理、流量控制等)。

 

一、网际协议IP

网际协议IP是TCP/IP体系中两个最主要的协议之一,与IP协议配套使用的还有三个协议:地址解析协议ARP 、网际控制报文协议ICMP 、网际组管理协议IGMPIP经常要使用ARP这个协议,ICMP和IGMP要使用IP协议。

1.虚拟互连网络

将网络互相连接起来要使用一些中间设备。根据中间设备所在的层次,可以有以下四种不同的中间设备:

(1)物理层使用的中间设备叫做转发器

(2)数据链路层使用的中间设备叫做网桥桥接器

(3)网络层使用的中间设备叫做路由器

(4)在网络层以上使用的中间设备叫做网关。用网关连接两个不兼容的系统需要在高层进行协议的转换。

当中间设备是转发器或网桥时,这仅仅是把一个网络扩大了,而从网络层的角度看,这仍然是一个网络,一般并不称之为网络互连。现在我们讨论网络互连时,都是指用路由器进行网络互连和路由选择。由于参加互连的计算机网络都使用相同的网际协议IP ,因此可以把互连以后的计算机网络看成一个虚拟互连网络。所谓虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用IP协议就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络

2.分类的IP地址

IP地址就是给因特网上的每一个主机(或路由器)的每一个接口分配一个在全世界范围是唯一的32位的标识符(这里讨论IPv4)。

IP地址的编址方法共经过了三个历史阶段:

(1)分类的IP地址。

(2)子网的划分

(3)构成超网

分类的IP地址:就是将IP地址划分为若干个固定类,A、B、C、D、E类。每一类地址都由两个固定长度的字段组成,其中第一个字段是网络号,它标志主机(或路由器)所连接到的网络。一个网络号在整个因特网范围内必须是唯一的。第二个字段是主机号,它标志该主机(或路由器)。一个主机号在它前面的网络号所指明的网络范围内必须是唯一的。由此可见,一个IP地址在整个因特网范围内是唯一的。近年来己经广泛使用无分类IP地址进行路由选择,分类地址的区分己成为历史。

点分十进制记法来表示IP地址,如10000000 00001011 00000011 00011111记作128.11.3.31。

 

IP地址具有以下一些特点

1)路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少。

2)IP地址是标志一个主机(或路由器)和一条链路的接口。当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络号必须是不同的。

3)用转发器或网桥连接起来的若干个局域网仍为一个网络,因为这些局域网都具有同样的网络号。具有不同网络号的局域网必须使用路由器进行互连。

 

IP地址与硬件地址

物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址(用软件实现)。使用IP地址的IP数据报一旦交给了数据链路层,就被封装成MAC帧了。MAC帧在传送时使用的源地址和目的地址都是硬件地址,这两个硬件地址都写在MAC帧的首部,在数据链路层看不见数据报的IP地址,只能看见MAC帧。路由器在收到MAC帧后,在数据链路层丢弃原来的MAC帧的首部和尾部,交给网际层根据IP地址查找路由表确定下一跳路由器,然后交给数据链路层加上新的MAC帧首部尾部。

 

地址解析协议ARP

己经知道了一个机器(主机或路由器)的IP地址,需要找出其相应的硬件地址。地址解析协议ARP就是用来解决这样的问题的。

地址解析协议ARP解决这个问题的方法是在主机设有一个ARP高速缓存,里面存放本局域网中各主机和路由器的IP地址到硬件地址的映射表,并且这个映射表还经常动态更新。

如何建立这个映射表:

1)该主机的ARP进程在本局域网上广播一个ARP请求分组,主要内容是:“我的IP地址是209 .0.0.5,硬件地址是00-00-C0-15-AD-18。我想知道IP地址为 209 . 0 .0 .6的主机的硬件地址。”

2) 在本局域网上的所有主机上运行的ARP进程都收到此ARP请求分组。

3)IP地址与ARP请求分组里的IP地址一致的主机向源主机发送ARP响应分组,内容是:“我的IP地址是209.0.0.6,我的硬件地址是08-00-2B-00-EE-0A。”

注意:ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题,实际上也不需要知道远程主机的硬件地址。

 

为什么要使用抽象的IP地址,而不直接使用硬件地址进行通信

由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此由用户或用户主机来完成这项工作几乎是不可能的事。但统一的IP地址把这个复杂问题解决了。连接到因特网的主机只需拥有统一的IP地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为上述的调用ARP的复杂过程都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。

 

IP层转发分组的流程

每一个网络上可能有成千上万台主机,若路由表指出每一台主机怎样转发,则所得出的路由表就会过于庞大,若路由表指出到某个网络应如何转发,则每个路由器中的路由表就会小很多。这样,在路由表中,对每一条路由最主要的是以下两个信息:目的网络地址,下一跳地址

特定路由器:对特定的目的主机指明的一个路由

默认路由:只要目的网络是其他网络(比如不是网络1、网络2的情况下),一律选用默认路由。

分组转发的流程归纳如下:

(1)    从数据报的首部提取目的主机的IP地址D,得出目的网络地址为NO

(2)    若就是与此路由器直接相连的某个网络地址,则进行直接交付,不需要再经过其他的路由器,直接把数据报交付目的主机(这里包括把目的主机地址D转换为具体的硬件地址,把数据报封装为MAC帧,再发送此帧);否则就是间接交付,执行(3)。

(3)    若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。

(4)    若路由表中有到达网络的路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(5)。

(5)    若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。

(6)    报告转发分组出错。

 

三、划分子网和构造超网

1.在IP地址中又增加一个“子网号字段”,使两级IP地址变成三级IP地址,这种做法叫做划分子网。、

划分子网特点:

1)一个单位可将所属的物理网络划分为若干个子网,划分子网纯属一个单位内部的事情。本单位以外的网络看不见这个网络是由多少个子网组成,因为这个单位对外仍然表现为一个网络。

2)划分子网的方法是从网络的主机号借用若干位作为子网号,当然主机号也就相应减少了同样的位数。三级IP地址:网络号、子网号、主机号。

3)从其他网络发送给本单位某个主机的IP数据报,仍然是根据IP数据报的目的网络号找到连接在本单位网络上的路由器。但此路由器在收到IP数据报后,再按目的网络号和子网号找到目的子网,把IP数据报交付目的主机。

 

2.子网掩码

假定有一个数据报(其目的地址是145.13.3.10),己经到达了路由器R1,那么这个路由器如何把它转发到子网145.13.3.0呢?这需要使用子网掩码。所谓子网掩码即是对应于IP地址是网络号和子网号的部分全是1,对应于IP地址是主机号的部分全是0。把IP地址和子网掩码相与(AND)即可得到得出IP地址对应的网络号。现在因特网的标准规定:所有的网络都必须使用子网掩码,同时在路由器的路由表中也必须有子网掩码这一栏。

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

 

3.使用子网时分组的转发

(1)从收到的数据报的首部提取目的IP地址D。

(2) 先判断是否为直接交付。对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和D逐位相“与” (AND操作),看结果是否和相应的网络地址匹配。若匹配,则把分组进行直接交付(当然还需要把D转换成物理地址,把数据报封装成帧发送出去),转发任务结束。否则就是间接交付,执行(3)。

(3) 若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器:否则,执行(4)。

(4) 对路由表中的每一行(目的网络地址,子网掩码,下一跳地址),用其中的子网掩码和D逐位相“与" (AND操作) ,其结果为N若与该行的目的网络地址匹配,则把数据报传送给该行指明的下一跳路由器;否则,执行(5)。

(5) 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器:否则,执行(6)。

(6) 报告转发分组出错。

 

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

CIDR的特点:

1)消除了传统的A类、B类和C类地址以及划分子网的概念,因而可以更加有效地分配IPv4的地址空间。CIDR把32位的IP地址划分为两个部分。前面的部分是网络前缀用来指明网络,后面的部分则用来指明主机。CIDR还使用”斜线记法“,即在IP地址后面加上斜线“/”,然后写上网络前缀所占的位数。如128.14.35.7/20 = 10000000 00001110 00100011 00000111

2)CIDR把网络前缀都相同的连续的IP地址组成一个"CIDR地址块"。我们只要知道 CIDR地址块中的任何一个地址,就可以知道这个地址块的起始地址(即最小地址)和最大地址,以及地址块中的地址数。我们可以用地址块中的最小地址和网络前缀的位数指明这个地址块。

CIDR使用32位的地址掩码地址掩码由一串1和一串0组成,而1的个数就是网络前缀的长度。

注意:CIDR并没有在32位地址中指明若干位作为子网字段。但分配到一个CIDR地址块的单位,仍然可以在本单位内根据需要划分出一些子网。这些子网也都只有一个网络前缀和一个主机号字段,但子网的网络前缀比整个单位的网络前缀要长些。例如,某单位分配到地址块/20,就可以再继续划分为8个子网(即需要从主机号中借用3位来划分子网)。这时每一个子网的网络前缀就变成23位(原来的20位加上从主机号借来的3位),比该单位的网络前缀多了3位。

由于一个CIDR地址块中有很多地址,所以在路由表中就利用CIDR地址块来查找目的网络。这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示原来传统分类地址的很多个(例如上千个)路由。路由聚合也称为构成超网。

 

最长前缀匹配

使用了CIDR后,路由表中的项目也要有相应的改变。这时,每个项目由“网络前缀”和 “下一跳地址”组成。但是在查找路由表时可能会得到不止一个匹配结果。这样就带来一个问题:我们应当从这些匹配结果中选择哪一条路由呢?正确的答案是:应当从匹配结果中选择具有最长网络前缀的路由。这叫作最长前缀匹配,这是因为网络前缀越长,其地址块就越小,因而路由就越具体。

 

四、互联网的路由选择协议

路由选择协议的核心就是路由算法,即需要何种算法来获得路由表中的各项目。

分层次的路由选择协议

把互联网划分为许多较小的自治系统,记作AS。AS是在单一的技术管理下的一组路由器,而这些路由器使用一种自治系统内部的路由选择协议和共同度量。一个 AS对其他AS表现出的是一个单一的和一致的路由选择策略。

在目前的因特网中,一个大的ISP就是一个自治系统。这样,因特网就把路由选择协议划分为两大类,即:

1)内部网关协议IGP ,即在一个自治系统内部使用的路由选择协议,而这与在互联网中的其他自治系统选用什么路由选择协议无关。如RIPOSPF协议。

2)外部网关协议EGP,若源主机和目的主机处在不同的自治系统中(这两个自治系统可能使用不同的内部网关协议),当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议EGP,目前使用最多的外部网关协议是BGP的版本4 (BGP-4)。

1.内部网关协议RIP

RIP是一种分布式的基于距离向量的路由选择协议,RIP协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录,从路由器到直接连接的网络的距离定义为1,从一路由器到非直接连接的网络的距离定义为所经过的路由器数加1。RIP允许一条路径最多只能包含15个路由器。因此“距离"等于16时即相当于不可达。RIP只适用于小型互联网。RIP选择一条具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。

RIP协议的特点:

1)仅和相邻路由器交换信息。

2)路由器交换的信息是当前本路由器所知道的全部信息,即自己的路由表。

3)按固定的时间间隔交换路由信息。

距离向量算法:

对每一个相邻路由器发送过来的RIP报文,进行以下步骤:

1)对地址为x的相邻路由器发来的RIP报文,先修改此报文中的所有项目:把“下一跳”字段中的地址都改为x,并把所有的“距离”字段的值加1。每一个项目都有三个关键数据,即:到目的网络N,距离是d,下一跳路由器是x。

2)对修改后的RIP报文中的每一个项目,进行以下步骤:

若原来的路由表中没有目的网络N,则把该项目添加到路由表中。

否则(即在路由表中有目的网络N,这时就再查看下一跳路由器地址)

  若下一跳路由器地址是x,则把收到的项目替换原路由表中的项目。

  否则(即这个项目是:到目的网络N,但下一跳路由器不是x)

    若收到的项目中的距离d小于路由表中的距离,则进行更新,

    否则什么也不做。

3)若3分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达的路由器,即把距离置为16(距离为16表示不可达)。

4)返回。

 

2.内部网关协议OSPF

OSPF协议的特点:

1)向本自治系统中所有路由器发送信息。

2)发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。所谓“链路状态"就是说明本路由器都和哪些路由器相邻六以及该链路的度量,如费用、距离、时延、带宽等等。

3)只有当链路状态发生变化时,路由器才向所有路由器用洪泛法发送此信息。而不像 RIP那样,不管网络拓扑有无发生变化,路由器之间都要定期交换路由表的信息。

网络层

标签:距离   调用   网络通   利用   计算机网络   icm   进制   等等   等于   

原文地址:https://www.cnblogs.com/cs0915/p/12321124.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!