【计算机网络基础 四】网络层

xiaoxiao2021-02-28  83

网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。它提供的服务使传输层不需要了解网络中的数据传输和交换技术。主要工作就是“路径选择、路由及逻辑寻址”

网络层基本概念

网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。网络在发送分组时不需要先建立连接。每一个分组(也就是IP数据报)独立发送,与其前后的分组无关(不进行编号)。网络层不提供服务质量的承诺。也就是说,所传送的分组可能出错、丢失、重复和失序(即不按序到达终点),当然也不保证分组交付的时限。由于传输网络不提供端到端的可靠传输服务,这就使网络中的路由器比较简单,且价格低廉

网际层IP的作用:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。 网际层IP的协议:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 网际层IP的设备:路由器

路由器

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

物理层使用的中间设备叫做转发器(repeater)数据链路层使用的中间设备叫做网桥或桥接器(bridge)网络层使用的中间设备叫做路由器(router)在网络层以上使用的中间设备叫做网关(gateway)。用网关连接两个不兼容的系统需要在高层进行协议的转换。

网关由于比较复杂,目前使用得较少。因此现在我们讨论网络互连时,都是指用路由器进行网络互连和路由选择。路由器其实就是一台专用计算机,用来在互联网中进行路由选择

通过路由器和IP协议,我们就能很轻松的进行跨网络机器数据传输: 路由器由三部分组成:交换结构、一组输入端口和一组输出端口,它的主要工作就是为经过路由器的每个数据包寻找一条最佳的传输路径,并将该数据有效地传送到目的站点。由此可见,选择最佳路径的策略即路由算法是路由器的关键所在。为了完成这项工作,在路由器中保存着各种传输路径的相关数据——路由表(Routing Table),供路由选择时使用,表中包含的信息决定了数据转发的策略。

网际协议IP

网络层中涉及众多的协议,其中包括最重要的协议,也是TCP/IP的核心协议——IP协议。IP协议非常简单,仅仅提供不可靠、无连接的传送服务。

IP协议的主要功能有:无连接数据报传输、数据报路由选择和差错控制,与IP协议配套使用实现其功能的还有

地址解析协议ARP (Address Resolution Protocol),逆地址解析协议RARP网际控制报文协议ICMP (Internet Control Message Protocol)网际组管理协议IGMP (Internet Group Management Protocol)

接下来详细介绍下IP协议:

IP地址

IP地址由网络号(包括子网号)和主机号组成,整个的互联网就是一个单一的、抽象的网络。IP地址就是给互联网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32位的标识符。

网络号(net-id),它标志主机(或路由器)所连接到的网络。一个网络号在整个互联网范围内必须是唯一的。主机号(host-id),它标志该主机(或路由器)。一台主机号在它前面的网络号所指明的网络范围内必须是唯一的

IP地址的结构使我们可以在互联网上很方便地进行寻址,因为IP地址在全网是唯一的。

对主机或路由器来说,IP地址都是32位的二进制代码。为了提高可读性,我们常常把32位的IP地址中的每8位插入一个空格(但在机器中并没有这样的空格)。为了便于书写,可用其等效的十进制数字表示,并且在这些数字之间加上一个点。这就叫做点分十进制记法 其中A类,B类,C类地址都是单播地址,而网络号里的1-3位表示类别位。IP地址指派范围 一般不使用的特殊ip地址:

五类网络地址

可以看到总共划分了五个网段,当然我们常用的只有三个网段。

A类地址(50%的IP地址)以0开头,第一个字节作为网络号

地址范围为:1.0.0.0 到126.0.0.0每个A类子网最大主机数2^24-2 = 16777214

B类地址(25%的IP地址)以10开头,前两个字节作为网络号,默认128.0.0.0不指派

地址范围为:128.1.0.0到191.255.255.255每个B类子网最大主机数2^16 -2 = 65534

C类地址(12.5%的IP地址)以110开头,前三个字节作为网络号,默认192.0.0.0不指派

地址范围为:192.0.1.0~223.255.255.255。每个C类子网最大主机数2^8 -2 = 254

D类地址以1110开头

地址范围是224.0.0.0~239.255.255.255,D类地址作为组播地址(一对多的通信);

E类地址以1111开头,地址范围是240.0.0.0~255.255.255.255,E类地址为保留地址,供以后使用。

只有A,B,C有网络号和主机号之分,D类地址和E类地址没有划分网络号和主机号。

IP地址特点

这样设计IP地址有以下四个特点和优点:

每一个IP地址都由网络号和主机号两部分组成。有两个好处:

IP地址管理机构在分配IP地址时只分配网络号(第一级),而剩下的主机号(第二级)则由得到该网络号的单位自行分配;路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间以及查找路由表的时间。

实际上IP地址是标志一台主机(或路由器)和一条链路的接口。当一台主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络号必须是不同的。这种主机称为多归属主机(multihomed host)。由于一个路由器至少应当连接到两个网络,因此一个路由器至少应当有两个不同的IP地址【不同网络号】。

用放大器【物理层】或网桥【数据链路层】连接起来的若干个局域网仍为一个网络,因为这些局域网都具有同样的网络号。具有不同网络号的局域网必须使用路由器进行互连。

在IP地址中,所有分配到网络号的网络(不管是范围很小的局域网,还是可能覆盖很大地理范围的广域网)都是平等的。所谓平等,是指互联网同等对待每一个IP地址。

上图描述的是C类地址,前三个字节作为网络号:

同一个局域网上的主机或路由器中的ip地址中的网络号必须是一样的两个路由器直连时可以不分配IP地址用网桥(交换机)互联的网段仍然是一个局域网

网络地址的主机号为全0,网络地址代表着整个网络。例如LAN2(222.1.2.0)

IP地址与硬件地址

在局域网中,由于硬件地址已固化在网卡上的ROM中。因此常常将硬件地址称为物理地址。因为在局域网的MAC帧中的源地址和目的地址都是硬件地址。因此硬件地址又称为MAC地址。物理地址、硬件地址和MAC地址常常作为同义词出现。要弄懂主机的IP地址与硬件地址的区别。

下图说明了这两种地址的区别。从层次的角度看,物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址(称IP地址为逻辑地址是因为IP地址是用软件实现的) 这里要强调指出以下几点:

在IP层抽象的互联网上只能看到IP数据报。发送过程中IP地址不会变化。举个例子,虽然IP数据报从IP1发往IP2要经过路由器R1和R2的两次转发,但在它的首部中的源地址和目的地址始终分别是IP1和IP2。虽然在IP数据报首部有源站IP地址,但路由器只根据目的站的IP地址的网络号进行路由选择。在局域网的链路层,只能看见MAC帧。IP数据报被封装在MAC帧中。MAC帧在不同网络上传送时,其MAC帧首部中的源地址和目的地址会发生变化。举个例子,MAC帧从IP1发往IP2要经过路由器R1和R2的两次转发,它的首部中的源地址和目的地址会因转发而发生变化,但是, MAC帧的首部的这种变化,在上面的IP层上是看不见的。尽管互连在一起的网络的硬件地址体系各不相同,但IP层抽象的互联网却屏蔽了下层这些很复杂的细节。只要我们在网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机和主机或路由器之间的通信。上述的这种“屏蔽”概念是一个很有用、很普遍的基本概念。

我们可以从不同层次上看ip地址和硬件地址:

而ip地址到硬件地址的映射,由ARP协议来完成,注意,APR协议是解决同一个局域网上的主机或者路由器的IP地址和硬件地址的映射问题。

地址解析协议ARP

己经知道了一个机器(主机或路由器)的IP地址,需要找出其相应的硬件地址。地址解析协议ARP就是用来解决这样的问题的,由于是IP协议使用了ARP协议,因此通常就把ARP协议划归网络层。但ARP协议的用途是为了从网络层使用的IP地址,解析出在数据链路层使用的硬件地址 场景举例:主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;注意,需要是同一局域网内的解析当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程:

根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。主机B将包含其MAC地址的ARP回复消息直接发送回主机A。当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。

需要注意的是:ARP是广播发送,ARP响应是单播发送的。

ARP欺骗

地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。

跨局域网ARP

ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。那么不同局域网的通讯是如何做到的呢,

连接不同局域网的设备(主机或路由器)有多个IP,只要主机或路由器要和一个网络上的另一个己知IP地址的主机或路由器进行通信,ARP协议就会自动地把这个IP地址解析为链路层所需要的硬件地址。从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。

为什么要用ARP

既然在网络链路上传送的帧最终是按照硬件地址找到目的主机的,那么为什么我们还要使用抽象的IP地址,而不直接使用硬件地址进行通信?这样似乎可以免除使用ARP。

由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此由用户或用户主机来完成这项工作几乎是不可能的事。但IP编址把这个复杂问题解决了。

因此,在虚拟的IP网络上用IP地址进行通信给广大的计算机用户带来很大的方便

逆地址解析协议RARP

逆地址解析协议,即RARP,功能和ARP协议相对,其将局域网中某个主机的物理地址转换为IP地址,比如局域网中有一台主机只知道物理地址而不知道IP地址,那么可以通过RARP协议发出征求自身IP地址的广播请求,然后由RARP服务器负责回答。

RARP是逆地址解析协议,作用是完成硬件地址到IP地址的映射,主要用于无盘工作站,因为给无盘工作站配置的IP地址不能保存。RARP协议工作流程:

给主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用如果不存在,RARP服务器对此不做任何的响应源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;如果一直没有收到RARP服务器的响应信息,表示初始化失败。

应用场景较少,可以不关注。

IP数据报

IP数据报的主要格式如下图所示: 一个IP数据报由首部和数据两部分组成。首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。下面介绍首部各字段的意义。IP数据报首部的固定部分中的各字段

版本,占4位,指IP协议的版本。通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。关于以后要使用的IPv6(即版本6的IP协议)首部长度,长度占4位,可表示的最大十进制数值是15。表明IP数据报的首部长度。最小值0101(5),最大值1111(15),单位是32字(4字节)。区分服务,占8位,用来获得更好的服务。在一般的情况下都不使用这个字段。总长度,总长度字段为16位,表明首部和数据之和的长度,单位为字节。在数据链路层blog中提到,在IP层下面的每一种数据链路层协议都规定了一个数据帧中的数据字段的最大长度,这称为最大传送单元MTU 。当一个IP数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层所规定的MTU值。例如,最常用的以太网就规定其MTU值是1500字节。若所传送的数据报长度超过数据链路层的MTU值,就必须把过长的数据报进行分片处理。在进行分片时(见后面的“片偏移”字段),数据报首部中的“总长度”字段是指分片后的每一个分片的首部长度与该分片的数据长度的总和。标识,占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。标志,占3位,但目前只有两位有意义。标志字段中的最低位记为MF (More Fragment)。MF=1即表示后面“还有分片”的数据报。MF = 0表示这己是若千数据报片中的最后一个。标志字段中间的一位记为DF (Don’t Fragment),意思是“不能分片”。只有当DF = 0时才允许分片。片偏移,占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节(64位)的整数倍。生存时间,占8位,生存时间字段常用的英文缩写是TTL (Time To Live),表明这是数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在互联网中兜圈子(例如从路由器R1,转发到R2,再转发到R3,然后又转发到R1),因而白白消耗网络资源。TTL的意义是指明数据报在互联网中至多可经过多少个路由器 TTL值就减小到零,就会被转发路由器丢弃。协议,占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个协议进行处理。常用的一些协议和相应的协议字段值如下: 首部检验和, 占16位.这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。为了进一步减小计算检验和的工作量,IP首部的检验和不采用复杂的CRC检验码而采用一种简单的计算方法。源地址 占32位。目的地址 占32位。

IP数据报首部的可变部分,IP数据报首部的可变部分就是一个选项字段。选项字段用来支持排错、测量以及安全等措施,

IP数据报分组转发算法

分组转发是指在互联网络中路由器转发IP分组的物理传输过程与数据报转发机制。根据分组的目的IP地址与源IP地址是否属于同一个子网可分为直接转发和间接转发在路由表中,对每一条路由最主要的是以下两个信息:(目的网络地址,下一跳地址),在互联网上转发分组时,是从一个路由器转发到下一个路由器 在IP数据报的首部中没有地方可以用来指明“下一跳路由器的IP地址”。在IP数据报的首部写上的IP地址是源IP地址和目的IP地址,而没有中间经过的路由器的IP地址。那么待转发的数据报又怎样能够找到下一跳路由器呢?

当路由器收到一个待转发的数据报,在从路由表得出下一跳路由器的IP地址后,不是把这个地址填入IP数据报,而是送交数据链路层的网络接口软件。网络接口软件负责把下一跳路由器的IP地址转换成硬件地址(必须使用ARP),并将此硬件地址放在链路层的MAC帧的首部,然后根据这个硬件地址找到下一跳路由器。

分组转发算法归纳:

划分子网和构造超网

上面所讨论的是IP层怎样根据路由表的内容进行分组转发,而没有涉及到路由表一开始是如何建立的以及路由表中的内容应如何进行更新。但是在进一步讨论路由选择之前,我们还要先介绍划分子网和构造超网这两个非常重要的概念。

划分子网

从两级IP地址到三级IP地址,在早期,原来的两级IP地址的设计不够合理。

第一,IP地址空间的利用率有时很低。有的单位申请到了一个B类地址网络,但所连接的主机数并不多,可是又不愿意申请一个足够使用的C类地址,理由是考虑到今后可能的发展。第二,给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。第三,两级IP地址不够灵活。有时情况紧急,一个单位需要在新的地点马上开通一个新的网络。但是在申请到一个新的IP地址之前,新增加的网络是不可能连接到互联网上工作的。

为解决上述问题,从1985年起在IP地址中又增加了一个“子网号字段”,使两级IP地址变成为三级IP地址,它能够较好地解决上述问题,并且使用起来也很灵活。这种做法叫做划分子网(subnetting) [RFC 950]。或子网寻址或子网路由选择 。划分子网己成为互联网的正式标准协议。划分子网是通过借用IP地址的若干位主机位来充当子网地址从而将原网络划分为若干子网而实现的。划分子网的思路如下:

划分子网时,随着子网地址借用主机位数的增多,子网的数目随之增加,而每个子网中的可用主机数逐渐减少。

子网划分举例

以C类网络为例,原有8位主机位,2的8次方即256个主机地址,默认子网掩码255.255.255.0。

借用1位主机位,产生2个子网,每个子网有126个主机地址借用2位主机位,产生4个子网,每个子网有62个主机地址

每个网中,第一个IP地址(即主机部分全部为0的IP)和最后一个IP(即主机部分全部为1的IP)不能分配给主机使用,所以每个子网的可用IP地址数为总IP地址数量减2;根据子网ID借用的主机位数,我们可以计算出划分的子网数、掩码、每个子网主机数。 若子网占用7位主机位时,主机位只剩一位,无论设为0还是1,都意味着主机位是全0或全1。由于主机位全0表示本网络,全1留作广播地址,这时子网实际没有可用主机地址,所以主机位至少应保留2位

子网掩码

子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。

子网掩码是标志两个IP地址是否同属于一个子网的,也是32位二进制地址,其每一个为1代表该位是网络位,为0代表主机位。它和IP地址一样也是使用点式十进制来表示的。如果两个IP地址在子网掩码的按位与的计算下所得结果相同,即表明它们共属于同一子网中。

其实就是用主机位为0与掉ip地址里1的部分,这样就证明在同一个网段。 如果一个网络不划分子网,那么该网络的子网掩码就使用默认子网掩码

带有子网掩码的分组转发算法

子网划分后,路由转发算法就得带着子网掩码进行计算了。

子网掩码、子网、主机相互计算

利用子网数来计算子网掩码

如果想把B类地址168.195.0.0划分成27个子网,则子网掩码为:

把数目转化为二进制:27个子网,二进制为11011取得该二进制位数:5将B类地址168.195.0.0的主机位前5位置1,得到255.255.248.0

利用主机数来计算子网掩码

如欲将B类IP地址168.195.0.0划分成若干子网,每个子网内有主机700台:

700台主机转为二进制,700 = 10 10111100如果主机数小于或等于254(注意去掉保留的两个IP地址),则取得该主机的二进制位数,为N,这里肯定 N<8。如果大于254,则 N>8,这就是说主机地址将占据不止8位;占据10位二进制位则子网掩码为255.255.11111100,00000000, 也就是255.255.252.0

利用掩码求主机数

把网络202.112.78.0划分为多个子网(子网掩码是255.255.255.192),则各子网中可用的主机地址总数是,因为192占用2位且是C类地址,每个子网的主机数是2^6-2 = 62,所以总的主机数是124。

构建超网

无分类域IBS路由选择CIDR ,CIDR消除了传统的A类、B类和C类地址以及划分子网的概念,CIDR把网络前缀都相同的连续的IP地址组成一个“CIDR地址块”

路由选择协议

路由选择协议也叫做内部网关协议,主要讨论路由表中的路由是怎样得出的。路由选择协议的核心就是路由算法,即需要何种算法来获得路由表中的各项目。

理想的路由算法

一个理想的路由算法应具有如下的一些特点:

算法必须是正确的和完整的。这里,“正确”的含义是:沿着各路由表所指引的路由,分组一定能够最终到达目的网络和目的主机。算法在计算上应简单。路由选择的计算不应使网络通信量增加太多的额外开销。算法应能适应通信量和网络拓扑的变化,这就是说,要有自适应性。当网络中的通信量发生变化时,算法能自适应地改变路由以均衡各链路的负载。当某个或某些结点、链路发生故障不能工作,或者修理好了再投入运行时,算法也能及时地改变路由。有时称这种自适应性为“稳健性”(robustness)。算法应具有稳定性。在网络通信量和网络拓扑相对稳定的情况下,路由算法应收敛于一个可以接受的解,而不应使得出的路由不停地变化。算法应是公平的。路由选择算法应对所有用户(除对少数优先级高的用户)都是平等的。例如,若仅仅使某一对用户的端到端时延为最小,但却不考虑其他的广大用户,这就明显地不符合公平性的要求。算法应是最佳的。路由选择算法应当能够找出最好的路由,使得分组平均时延最小而网络的吞吐量最大。虽然我们希望得到“最佳”的算法,但这并不总是最重要的。对于某些网络,网络的可靠性有时要比最小的分组平均时延或最大吞吐量更加重要。因此,所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。

应当指出,路由选择是个非常复杂的问题,因为它是网络中的所有结点共同协调工作的结果。并且路由选择的环境往往是不断变化的,而这种变化有时无法事先知道。

从路由算法能否随网络的通信量或拓扑自适应地进行调整变化来划分,则只有两大类

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

分层次的路由选择协议

互联网采用的路由选择协议主要是自适应的(即动态的)、分布式路由选择协议。由于以下两个原因,互联网采用分层次的路由选择协议:

互联网的规模非常大。如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,处理起来也太花时间。而所有这些路由器之间交换路由信息所需的带宽就会使互联网的通信链路饱和。许多单位不愿意外界了解自己单位网络的布局细节和本部门所采用的路由选择协议(这属于本部门内部的事情),但同时还希望连接到互联网上。

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

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

内部网关协议IGP (Interior Gateway Protocol),即在一个自治系统内部使用的路由选择协议,而这与在互联网中的其他自治系统选用什么路由选择协议无关。目前这类路由选择协议使用得最多,如RIP和OSPF协议。外部网关协议EGP (External Gateway Protocol)若源主机和目的主机处在不同的自治系统中(这两个自治系统可能使用不同的内部网关协议),当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议EGP.目前使用最多的外部网关协议是BGP的版本4 (BGP-4).

自治系统之间的路由选择也叫做域间路由选择(interdomain routing),而在自治系统内部的路由选择叫做域内路由选择(intradomain routing)。

每个自治系统自己决定在本自治系统内部运行哪一个内部路由选择协议(例如,可以是RIP,也可以是OSPF)。但每个自治系统都有一个或多个路由器(图中的路由器R1和R2)除运行本系统的内部路由选择协议外,还要运行自治系统间的路由选择协议(BGP-4)

内部网关协议RIP协议

RIP是一种分布式的基于距离向量的路由选择协议,是互联网的标准协议,其最大优点就是简单.RIP协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录(因此,这是一组距离,即**“距离向量”)。RIP协议将“距离”**定义如下:

从一路由器到直接连接的网络的距离定义为1。从一路由器到非直接连接的网络的距离定义为所经过的路由器数加1。“加1”是因为到达目的网络后就进行直接交付,而到直接连接的网络的距离己经定义为1。

RIP协议的“距离”也称为**“跳数”(hop count),因为每经过一个路由器,跳数就加1。RIP认为好的路由就是它通过的路由器的数目少,即“距离短”。RIP允许一条路径最多只能包含15个路由器。因此,“距离”等于16时即相当于不可达。可见RIP只适用于小型互联网

RIP协议特点

RIP协议有如下几个特点:

仅和相邻路由器交换信息。如果两个路由器之间的通信不需要经过另一个路由器,那么这两个路由器就是相邻的。RIP协议规定,不相邻的路由器不交换信息.路由器交换的信息是当前本路由器所知道的全部信息,即自己现在的路由表。也就是说,交换的信息是:“我到本自治系统中所有网络的(最短)距离,以及到每个网络应经过的下一跳路由器’,。按固定的时间间隔交换路由信息,例如,每隔30秒。然后路由器根据收到的路由信息更新路由表。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息

路由器在刚刚开始工作时,它的路由表是空的。然后路由器就得出到直接相连的几个网络的距离(这些距离定义为1)。接着,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。但经过若干次的更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。最后在自治系统中所有的结点都得到了正确的路由选择信息

RIP报文

RIP的报文如下,不展开说了:

内部网关协议OSPF

这个协议的名字是开放最短路径优先OSPF (Open Shortest Path First)。它是为克服RIP的缺点在1989年开发出来的。OSPF的原理很简单,但实现起来却较复杂。“开放”表明OSPF协议不是受某一家厂商控制,而是公开发表的。“最短路径优先”是因为使用了Dijkstra提出的最短路径算法SPF。

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

向本自治系统中所有路由器发送信息。这里使用的方法是洪泛法((flooding),这就是路由器通过所有输出端口向所有相邻的路由器发送信息。而每一个相邻路由器又再将此信息发往其所有的相邻路由器(但不再发送给刚刚发来信息的那个路由器)。这样,最终整个区域中所有的路由器都得到了这个信息的一个副本。我们应注意,RIP协议是仅仅向自己相邻的几个路由器发送信息。发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。所谓“链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”(metric). OSPF将这个“度量”用来表示费用、距离、时延、带宽,等等。这些都由网络管理人员来决定,因此较为灵活。有时为了方便就称这个度量为“代价”。我们应注意,对于RIP协议,发送的信息是:“到所有网络的距离和下一跳路由器”。只有当链路状态发生变化时,路由器才向所有路由器用洪泛法发送此信息。而不像RIP那样,不管网络拓扑有无发生变化,路由器之间都要定期交换路由表的信息。

OSPF的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。OSPF的更新过程收敛得快是其重要优点。有如下相关的术语:

路由器/Router:一种三层IP包的交换设备。在早期的IP文献中被称为网关/gateway。自制系统/Autonomous System:一组使用相同路由协议交换路由信息的路由器,缩写为AS。内部网关协议/Interior Gateway Protocol:被一个AS内的路由器所使用的路由协议,缩写为IGP。每个AS使用单一的IGP,不同的AS会使用不同的IGP。路由器标识/Router ID:一个32位的数字,用以识别每台运行OSPF协议的路由器。在一个AS中,这个数字可以唯一地表示出一台路由器。网络/Network:在本备忘录中,会表示IP网络/子网/超网。一个物理网络上可能设置有多个网络/子网号,我们把它们按照独立的网络来对待。物理点对点/point-to-point网络是个例外——无论在上面设置了多少网络/子网号(如果有的话),都将其看作是一个网络。网络掩码/Network mask:一个32位的数字,表示IP地址的范围来说明这是一个IP网络/子网/超网。本文以16进制来表示网络掩码。如将C类IP地址的网络掩码显示为0xffffff00,这一掩码在其他文献中经常被表示为255.255.255.0。点对点网络/Point-to-point networks:仅仅连接一对路由器的网络。56k的串行线路是一个点对点网络的例子。广播网络/Broadcast networks:支持多台(大于两台)路由器接入的网络,同时有能力发送一条信息就能到所有接入的路由器(广播)。网络上邻居路由器可以通过OSPF的Hello协议来动态发现。如果可能,OSPF协议将进一步使用多播。广播网络上的每一对路由器都被认为可以直接通讯。以太网/ethernet是一个广播网络的例子。非广播网络/Non-broadcast networks:支持多台(大于两台)路由器接入的网络,但没有广播能力。网络上的邻居路由器通过OSPF的Hello协议来维持。但由于缺乏广播能力,需要一些配置信息的帮助来发现邻居。在非广播网络上,OSPF协议的数据通常需要被轮流发送到每一台邻居路由器上。X.25公用数据网/Public Data Network(PDN)是一个非广播网络的例子。在非广播网络上运行的OSPF有两种模式。第一种被称为非广播多路接入/non-broadcast multi-access(NBMA),模拟OSPF在广播网络上的操作;第二种被称为点对多点/Point-to-MultiPoint,将非广播网络看作是一系列点对点的连接。非广播网络被作为NBMA网络还是点对多点网络,取决于OSPF在该网络上所配置的运行模式接口/Interface:是指路由器与所接入的网络之间的一个连接。接口通过下层协议和路由协议获取与其相关的状态信息。指向网络的接口只和单一的IP地址及掩码相关(除非是无编号的点对点网络)。接口有时也被称为连接/link。邻居路由器/Neighboring routers:在同一网络中都有接口的两台路由器。邻居关系是由OSPF的Hello协议来维持,并通常依靠Hello协议来动态发现。邻接/Adjacency:用以在所选择的邻居路由器之间交换路由信息的关系。不是每对邻居路由器都会成为邻接。连接状态宣告/Link state advertisement:描述路由器或网络自身状态的数据单元。对路由器来说,这包含它的接口和邻接状态。每一项连接状态宣告都被洪泛到整个路由域中。所有路由器和网络连接状态宣告的集合形成了协议的连接状态数据库。在本备忘录中,连接状态宣告被缩写为LSA。Hello协议/Hello Protocol:在OSPF协议中,用于建立和维持邻居关系的部分。在广播网络中还被用于动态发现邻居路由器。洪泛/Flooding:在OSPF协议中,用于OSPF路由器之间发送及同步连接状态数据库的部分。指定路由器/Designated Router:在每个接入了至少两台路由器的广播和NBMA网络中都有一台作为指定路由器。指定路由器生成Network-LSA并在运行协议时完成其他特定职责。指定路由器通过Hello协议选举。(译注:本文后边将缩写为DR)指定路由器的概念减少了广播和NBMA网络上所需要的邻接数量。同时也减少了路由协议所需要的流量及连接数据库的大小。下层协议/Lower-level protocols:为IP及OSPF协议提供服务的下层网络接入协议。如为X.25 PDN服务的X.25 packet and frame level;以及为以太网服务的以太网数据链路层。

OSPF不用UDP而是直接用IP数据报传送(其IP数据报首部的协议字段值为89) OSPF构成的数据报很短。这样做可减少路由信息的通信量。数据报很短的另一好处是可以不必将长的数据报分片传送。分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传

IPv6

IPv6是Internet Protocol Version 6的缩写,其中Internet Protocol译为“互联网协议”。IPv6是IETF(互联网工程任务组,Internet Engineering Task Force)设计的用于替代现行版本IP协议(IPv4)的下一代IP协议,号称可以为全世界的每一粒沙子编上一个网址。由于IPv4最大的问题在于网络地址资源有限,严重制约了互联网的应用和发展。IPv6的使用,不仅能解决网络地址资源数量的问题,而且也解决了多种接入设备连入互联网的障碍 。

基本首部

IPv6仍支持无连接的传送,但将协议数据单元PDU称为分组,而不是IPv4的数据报。为方便起见,本文仍采用数据报这一名词。IPv6所引进的主要变化如下:

更大的地址空间。IPv6把地址从IPv4的32位增大到4倍,即增大到128位,使地址空间增大了2^96倍。这样大的地址空间在可预见的将来是不会用完的.扩展的地址层次结构。IPv6由于地址空间很大,因此可以划分为更多的层次。灵活的首部格式。改进的选项。IPv6允许数据报包含有选项的控制信息,因而可以包含一些新的选项。但IPv6的首部长度是固定的,其选项放在有效载荷中。我们知道,IPv4所规定的选项是固定不变的,其选项放在首部的可变部分。允许协议继续扩充。这一点很重要,因为技术总是在不断地发展(如网络硬件的更新)而新的应用也还会出现。但我们知道,IPv4的功能是固定不变的。支持即插即用(即自动配置)。因此IPv6不需要使用DHCP。支持资源的预分配。IPv6支持实时视像等要求保证一定的带宽和时延的应用。IPv6首部改为8字节对齐(即首部长度必须是8字节的整数倍)。原来的IPv4首部是4字节对齐。

IPv6数据报由两大部分组成,即基本首部(base header)和后面的有效载荷(payload)。有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部(extension header),再后面是数据部分(上图)。但请注意,所有的扩展首部并不属于IPv6数据报的首部。

IPv6的地址

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

单播,单播就是传统的点对点通信。**多播 ** 多播是一点对多点的通信,数据报发送到一组计算机中的每一个。IPv6没有采用广播的术语,而是将广播看作多播的一个特例。任播这是IPv6增加的一种类型。任播的终点是一组计算机,但数据报只交付其中的一个,通常是距离最近的一个。

在IPv6中,每个地址占128位,例如,一个用点分十进制记法的128位的地址为:

104.230.140.100.255.255.255.255.0.0.17.128.150.10.255.255

为了使地址再稍简洁些,IPv6使用冒号十六进制记法(colon hexadecimal notation),它把每个16位的值用十六进制值表示,各值之间用冒号分隔。例如,前文值改为冒号十六进制记法,就变成了:

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

在十六进制记法中,允许把数字前面的0省略。上面就把0000中的前三个0省略了。冒号十六进制记法还包含两个技术使它尤其有用。首先,冒号十六进制记法可以允许零压缩(zero compression),即一连串连续的零可以为一对冒号所取代,例如:

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

为了保证零压缩有一个不含混的解释,规定在任一地址中只能使用一次零压缩。该技术对己建议的分配策略特别有用,因为会有许多地址包含较长连续的零串。

其次,冒号十六进制记法可结合使用点分十进制记法的后缀。我们下面会看到这种结合在IPv4向IPv6的转换阶段特别有用。例如,下面的串是一个合法的冒号十六进制记法:

0:0:0:0:0:0:128.10.2.1,再使用零压缩,128.10.2.1

从IPv4向IPv6过渡

由于现在整个互联网的规模太大,因此,“规定一个日期,从这一天起所有的路由器一律都改用IPv6",显然是不可行的。这样,向IPv6过渡只能采用逐步演进的办法,同时,还必须使新安装的IPv6系统能够向后兼容。这就是说,IPv6系统必须能够接收和转发IPv4分组,并且能够为IPv4分组洗择路由。

转载请注明原文地址: https://www.6miu.com/read-68877.html

最新回复(0)