一. 网络层的功能

互联网在网络层的设计思路是,向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。也就是说,所传送的分组可能出错、丢失、重复、失序或超时,这就使得网络中的路由器比较简单,而且价格低廉。如果主机中的进程之间的通信需要是可靠的,那么可以由更高层的传输层来负责。采用这种设计思路的好处是∶网络的造价大大降低,运行方式灵活,能够适应多种应用。互联网能够发展到今日的规模,充分证明了当初采用这种设计思想的正确性。

1. 异构网络互联 (数据链路层与物理层不同)

网络的异构性是指传输介质、数据编码方式、链路控制协议及不同的数据单元格式和转发机制,这些特点分别在物理层和数据链路层协议中定义。

要在全球范围内把数以百万计的网络互联起来,并且能够互相通信,是一项非常复杂的任务此时需要解决许多问题,比如不同的寻址方案、不同的网络接入机制、不同的差错处理方法、不同的路由选择机制等。用户的需求是多样的,没有一种单一的网络能适应所有用户的需求。网络层所要完成的任务之一就是使这些异构的网络实现互联。

所谓网络互联,是指:将两个以上的计算机网络,通过一定的方法,用一种或多种通信处理设备(即中间设备)相互连接起来,以构成更大的网络系统。中间设备又称中间系统或中继系统。 根据所在的层次,中继系统分为以下 4种∶

1)物理层中继系统∶ 中继器,集线器(Hub)。

2)数据链路层中继系统∶ 网桥或交换机。

3)网络层中继系统∶路由器。

4)网络层以上的中继系统∶ 网关。

使用物理层或数据链路层的中继系统时,只是把一个网络扩大了,而从网络层的角度看,它仍然是同一个网络,一般并不称为网络互联。因此网络互联通常是指用路由器进行网络互联和路由选择。路由器是一台专用计算机,用于在互联网中进行路由选择,

由路由器互联的多个局域网,物理层,数据链路层,网络层协议可以不同,但网络层以上的高层协议必须相同。

路由器可以隔离广播域,是由于其工作在网络层,不转发广播包(目的地址为255.255.255.255的IP包)。

注意∶ 由于历史原因,许多有关 TCP/IP的文献也把网络层的路由器称为网关。

TCP/IP 体系在网络互联上采用的做法是在网络层(即 IP 层)采用标准化协议,但相互连接的网络可以是异构的。图 4.1(a)表示用许多计算机网络通过一些路由器进行互联。由于参加互联的计算机网络都使用相同的网际[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

协议(Intemnet Protocol,IP),因此可以把互联后的计算机网络视为如图4.1(b)所示的一个虚拟IP 网络。

虚拟互联网络也就是逻辑互联网络,即互联起来的各种物理网络的异构性本来是客观存在的,但是通过IP就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。这种使用 IP 的虚拟互联网络可简称为 IP 网络。 使用虚拟互联网络的好处是∶当互联网上的主机进行通信时,就好像在一个网络上通信一样, 而看不见互联的具体的网络异构细节(如具体的编址方案、路由选择协议等)。

2. 路由与转发

路由器主要完成两个功能∶一是路由选择(确定哪一条路径),二是分组转发(当一个分组到达时所采取的动作)。前者是根据特定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。后者处理通过路由器的数据流,关键操作是转发表查询、转发及相关的队列管理和任务调度等。

1)路由选择。指按照复杂的分布式算法,根据从各相邻路由器所得到的关于整个网络拓扑的变化情况,动态地改变所选择的路由。

2)分组转发。指路由器根据转发表将用户的IP 数据报从合适的端口转发出去。 路由表是根据路由选择算法得出的,而转发表是从路由表得出的。转发表的结构应当使查找过程最优化,路由表则需要对网络拓扑变化的计算最优化。在讨论路由选择的原理时,往往不去区分转发表和路由表,而是笼统地使用路由表一词。

3. 拥塞控制

在通信子网中,因出现过量的分组而引起网络性能下降的现象称为拥塞。例如,某个路由器所在链路的带宽为 R B/s, 如果IP 分组只从它的某个端口进入,那么其速率为rm B/s。当 rm=R时,可能看起来是件"好事",因为链路带宽被充分利用。 但是,如图 4.2 所示,当分组到达路由器的速率接近 R时,平均时延急剧增加,并且会有大量的分组被丢弃(路由器端口的缓冲区是有限的),整个网络的吞吐量会骤降,源与目的地之间的平均时延也会变得近乎无穷大。 (相当于堵车)

判断网络是否进入拥塞状态的方法是,观察网络的吞吐量与网络负载的关系;

l 如果随着网络负载的增加,网络的吞吐量明显小于正常的吞吐量,那么网络就可能已进入"轻度拥塞"状态;

l 如果网络的吞吐量随着网络负载的增大而下降,那么网络就可能已进入拥塞状态;

l 如果网络的负载继续增大,而网络的吞吐量下降到零,那么网络就可能已进入死锁状态。

为避免拥塞现象的出现,要采用能防止拥塞的一系列方法对子网进行拥塞控制。拥塞控制主要解决的问题是:如何获取网络中发生拥塞的信息,从而利用这些信息进行控制,以避免由于拥塞而出现分组的丢失,以及严重拥塞而产生网络死锁的现象。

拥塞控制的作用是:确保子网能够承载所达到的流量,这是一个全局性的过程,涉及各方面的行为∶主机、路由器及路由器内部的转发处理过程等。单一地增加资源并不能解决拥塞。

流量控制和拥塞控制的区别∶流量控制往往是指在发送端和接收端之间的点对点通信量的控制。流量控制所要做的是抑制发送端发送数据的速率,以便使接收端来得及接收。而拥塞控制必须确保通信子网能够传送待传送的数据,是一个全局性的问题,涉及网络中所有的主机、路由器及导致网络传输能力下降的所有因素。

拥塞控制的方法有两种∶

1)开环控制。在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞。这是一种静态的预防方法。一旦整个系统启动并运行,中途就不再需要修改。 开环控制手段包括确定何时可接收新流量、何时可丢弃分组及丢弃哪些分组,确定何种调度策略等。所有这些手段的共性是,在做决定时不考虑当前网络的状态。

2)闭环控制。事先不考虑有关发生拥塞的各种因素,采用监测网络系统去监视,及时检测哪里发生了拥塞,然后将拥塞信息传到合适的地方,以便调整网络系统的运行,并解决出现的问题。闭环控制是基于反馈环路的概念,是一种动态的方法。

二. 路由算法

1. 静态路由与动态路由

路由器转发分组是通过路由表转发的,而路由表是通过各种算法得到的。从能否随网络的通信量或拓扑自适应地进行调整变化来划分,路由算法可以分为如下两大类。

静态路由算法(又称非自适应路由算法)。指由网络管理员手工配置的路由信息。当网络的拓扑结构或链路的状态发生变化时,网络管理员需要手工去修改路由表中相关的静态路由信息。 它不能及时适应网络状态的变化,对于简单的小型网络,可以采用静态路由。

动态路由算法(又称自适应路由算法)。指路由器上的路由表项是通过相互连接的路由器之间彼此交换信息,然后按照一定的算法优化出来的,而这些路由信息会在一定时间间隙里不断更新,以适应不断变化的网络,随时获得最优的寻路效果。

静态路由算法的特点是简便和开销较小,在拓扑变化不大的小网络中运行效果很好。动态路由算法能改善网络的性能并有助于流量控制;但算法复杂,会增加网络的负担,有时因对动态变化的反应太快而引起振荡,或反应太慢而影响网络路由的一致性,因此要仔细设计动态路由算法,以发挥其优势。常用的动态路由算法可分为两类∶距离-向量路由算法和链路状态路由算法。

2. 距离-向量路由算法 (按照最短距离更新路由表)

在距离-向量路由算法(向量就是指一组距离)中,所有结点都定期地将它们的整个路由选择表传送给所有与之直接相邻的结点。这种路由选择表包含∶

● 每条路径的目的地(另一结点)。

● 路径的代价(也称距离)。

注意∶这里的距离是一个抽象的概念,如RIP就将距离定义为"跳数"。跳数指从源端口到达目的端口所经过的路由器个数,每经过一个路由器,跳数加1。

在这种算法中,所有结点都必须参与距离向量交换,以保证路由的有效性和一致性,也就是说,所有的结点都监听从其他结点传来的路由选择更新信息,其规则如下∶

1)将相邻路由器的路由表中到达目的网络的距离+1(或者为延迟),并将其下一跳路由器更改为该相邻路由器。

2)将以上修改的表与自身的路由表进行比对,如果没有,则直接加入,如何有,则取最小者。

距离-向量路由算法的实质是:迭代计算一条路由中的站段数或延迟时间,从而得到到达一个目标的最短(最小代价)通路。它要求每个结点在每次更新时都将它的全部路由表发送给所有相邻的结点。显然,更新报文的大小与通信子网的结点个数成正比,大的通信子网将导致很大的更新报文。由于更新报文发给直接邻接的结点,所以所有结点都将参加路由选择信息交换。基于这些原因,在通信子网上传送的路由选择信息的数量很容易变得非常大。 最常见的距离-向量路由算法是 RIP 算法,它采用"跳数"作为距离的度量。

3. 链路状态路由算法

链路状态路由算法要求每个参与该算法的结点都具有完全的网络拓扑信息,它们执行下述两项任务。第一,主动测试所有邻接结点的状态。两个共享一条链接的结点是相邻结点,它们连接到同一条链路,或者连接到同一广播型物理网络。第二,定期地将链路状态传播给所有其他结点(或称路由结点)。典型的链路状态算法是 OSPF 算法。

在一个链路状态路由选择中,一个结点检查所有直接链路的状态,并将所得的状态信息发送给网上的所有其他结点,而不是仅送给那些直接相连的结点。每个结点都用这种方式从网上所有其他的结点接收包含直接链路状态的路由选择信息。每当链路状态报文到达时,路由结点便使用这些状态信息去更新自己的网络拓扑和状态"视野图",一旦链路状态发生变化,结点就对更新的网络图利用 Djkstra 最短路径算法重新计算路由,从单一的源出发计算到达所有目的结点的最短路径。

链路状态路由算法主要有三个特征∶

1)向本自治系统中所有路由器发送信息,这里使用的方法是洪范法,即路由器通过所有输出端口向所有相邻的路由器发送信息。而每个相邻路由器又将此信息发往其所有相邻路由器(但不再发送给刚刚发来信息的那个路由器)。这样,最终整个区域中的所有路由器都得到了这个消息的副本。

2)发送的信息是与路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。所谓"链路状态":是说明本路由器与哪些路由器相邻及该链路的"度量"。对于 OSPF 算法,链路状态的"度量"主要用来表示费用、距离、时延、带宽等。

3)只有当链路状态发生变化时,路由器才向所有路由器发送此信息。

由于一个路由器的链路状态只涉及相邻路由器的连通状态,而与整个互联网的规模并无直接关系,因此链路状态路由算法可以用于大型的或路由信息变化聚敛的互联网环境。

链路状态路由算法的主要优点是,每个路由结点都使用同样的原始状态数据独立地计算路径,而不依赖中间结点的计算;链路状态报文不加改变地传播,因此采用该算法易于查找故障。 当一个结点从所有其他结点接收到报文时,它可以在本地立即计算正确的通路,保证一步汇聚。 最后,由于链路状态报文仅运载来自单个结点关于直接链路的信息,其大小与网络中的路由结点数目无关,因此链路状态算法比距离-向量算法有更好的规模可伸展性。

距离-向量路由算法与链路状态路由算法的比较∶

Ø 在距离-向量路由算法中,每个结点仅与它的直接邻居交谈,它为它的邻居提供从自己到网络中所有其他结点的最低费用估计。

Ø 在链路状态路由算法中,每个结点通过广播的方式与所有其他结点交谈,但它仅告诉它们与它直接相连的链路的费用。相较之下,距离-向量路由算法有可能遇到路由环路等问题。

4. 层次路由

当网络规模扩大时,路由器的路由表成比例地增大。这不仅会消耗越来越多的路由器缓冲区空间,而且需要用更多CPU时间来扫描路由表,用更多的带宽来交换路由状态信息。因此路由选择必须按照层次的方式进行。

因特网将整个互联网划分为许多较小的自治系统(注意一个自治系统中包含很多局域网), 每个自治系统有权自主地决定本系统内应采用何种路由选择协议。如果两个自治系统需要通信,那么就需要一种在两个自治系统之间的协议来屏蔽这些差异。据此,因特网把路由选择协议划分为两大类∶

1)一个自治系统内部所使用的路由选择协议称为内部网关协议(IGP),也称域内路由选择, 具体的协议有 RIP 和 OSPF 等。

2)自治系统之间所使用的路由选择协议称为外部网关协议(EGP),也称城间路由选择,用在不同自治系统的路由器之间交换路由信息,并负责为分组在不同自治系统之间选择最优的路径。具体的协议有BGP。

使用层次路由时,OSPF将一个自治系统再划分为若干区域(Area),每个路由器都知道在本区域内如何把分组路由到目的地的细节,但不用知道其他区域的内部结构。采用分层次划分区域的方法虽然会使交换信息的种类增多,但也会使 OSPF 协议更加复杂。 但这样做却能使每个区域内部交换路由信息的通信量大大减小,因而使 OSPF 协议能够用于规模很大的自治系统中。

三. IPv4

1. IPv4 分组

IPv4 即现在普遍使用的IP(版本 4)。

IP定义数据传送的基本单元——IP分组及其确切的数据格式。IP也包括一套规则,指明分组如何处理、错误怎样控制。特别是 IP 还包含非可靠投递的思想,以及与此关联的分组路由选择的思想。

1.IPv4分组的格式

一个IP分组由首部和数据部分组成。首部前一部分的长度固定,共20B,是所有IP分组必须具有的。在首部固定部分的后面是一些可选字段,其长度可变,用来提供错误检测及安全等制。IP数据报的格式如图4.3 所示。

IP首部的部分重要字段含义如下∶

1)版本。指IP 的版本,目前广泛使用的版本号为 4。

2)首部长度。占4位,首部长度字段所表示数的单位是32位字(1个32位长就是4个字节,即一个字节等于8位)。首先,IP首部的固定长度是20字节,此时不使用任何选项(即可选字段)。因此首部长度字段最小值为5(二进制表示为0101),.而当首部长度为最大值1111时(即十进制数为15),就表示首部长度最大值为15个32位字长,即60B/字节(15×4B)。位可以表示的最大十进制数是 15。以32位为单位,最大值为 60B。最常用的首部长度是20B。 每次增加或者减少必须以4个字节位单位,不够则填充。

3)总长度。占16 位。指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 216-1=65535B。以太网帧的最大传送单元(MTU)为1500B,因此当一个P数据报封装成帧时,数据报的总长度(首部加数据)一定不能超过下面的数据链路层的MTU 值。

4)标识。占16 位。它是一个计数器,每产生一个数据报就加1,并赋值给标识字段。但它并不是"序号"(因为IP是无连接服务)。当一个数据报的长度超过网络的MTU 时,必须分片,此时每个数据报片都复制一次标识号,以便能正确重装成原来的数据报。

5)标志。占3位。目前只有前两位有意义。标志字段的最低位为MF,MF=1表示后面还有分片,MF=0表示最后一个分片。标志字段中间的一位是DF,只有当DF=0时才允许分片。

6)片偏移。占 13 位。它指出较长的分组在分片后,某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位,即每个分片的长度一定是 8B(64位)的整数倍。

7)生存时间(TTL)。占8位。数据报在网络中可通过的路由器数的最大值,标识分组在网络中的寿命,以确保分组不会永远在网络中循环。路由器在转发分组前,先把TTL减1。每经过一个路由器,TTL就减1。 若 TTL 被减为0,则该分组必须丢弃。

8)协议。占8位。指出此分组携带的数据使用何种协议,即分组的数据部分应交给哪个传输层协议,如TCP、UDP等。其中值为6表示 TCP,值为17表示UDP。

9)首部校验和。占16 位。IP数据报的首部校验和只校验分组的首部,而不校验数据部分。

10)源地址字段。占4B,标识发送方的IP地址。

11)目的地址字段。占4B,标识接收方的 IP 地址。

注意∶在 IP数据报首部中有三个关于长度的标记,一个是首部长度、一个是总长度、一个是片偏移,基本单位分别为:4B、IB、8B(这个一定要记住).题目中经常会出现这几个长度之间的加减运算。另外,读者要熟悉IP数据报首部的各个字段的意义和功能,但不需要记忆 IP数据报的首部,正常情况下如果需要参考首部,题目都会直接给出。第5章学到的TCP、UDP的首部也是一样的。

2.IP 数据报分片

一个数据链路层数据报能承载的最大数据量称为最大传送单元(MTU)。因为IP数据报被封装在数据链路层数据报中,因此数据链路层的 MTU 严格地限制着 IP 数据报的长度,而且在 IP 数据报的源与目的地路径上的各段链路可能使用不同的数据链路层协议,有不同的 MTU。例如, 以太网的 MTU 为 1500B,而许多广域网的 MTU 不超过 576B。当IP 数据报的总长度大于链路 MTU时,就需要将IP 数据报中的数据分装在两个或多个较小的IP数据报中,这些较小的数据报称为片。

片在目的地的网络层被重新组装。目的主机使用IP首部中的标识、标志和片偏移字段来完成对片的重组。创建一个IP数据报时,源主机为该数据报加上一个标识号。当一个路由器需要将一个数据报分片时,形成的每个数据报(即片)都具有原始数据报的标识号。当目的主机收到来自同一发送主机的一批数据报时,它可以通过检查数据报的标识号来确定哪些数据报属于同一个原始数据报的片。IP首部中的标志位有3 比特,但只有后2 比特有意义,分别是 MF 位(More Fragment)和DF位(Don’tFragment)。只有当DF=0时,该P数据报才可以被分片。MF则用来告知目的主机该IP 数据报是否为原始数据报的最后一个片。当MF=1时,表示相应的原始数据报还有后续的片;当 MF =0时,表示该数据报是相应原始数据报的最后一个片。目的主机在对片进行重组时,使用片偏移字段来确定片应放在原始IP数据报的哪个位置。

IP分片涉及一定的计算。例如,一个长4000B 的IP数据报(首部 20B,数据部分3980B)到达一个路由器,需要转发到一条 MTU为 1500B的链路上。这意味着原始数据报中的398OB数据必须被分配到3个独立的片中(每片也是一个IP 数据报)。

假定原始数据报的标识号为77, 那么分成的3片如图44所示。可以看出,由于偏移值的单位是8B,所以除最后一个片外,其他所有片中的有效数据载荷都是8的倍数。

3.同络层转发分组的流程

网络层的路由器执行的分组转发算法如下∶

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

2)若网络N与此路由器直接相连,则把数据报直接交付给目的主机 D,这称为路由器的(有)直接交付;否则是(无)间接交付,执行步骤 3)。

3)若路由表中有目的地址为D的(有)特定主机路由(对特定的目的主机指明一个特定的路由,通常是为了控制或测试网络,或出于安全考虑才采用的),则把数据报传送给路由表中所指明的下一跳路由器;否则,(无)执行步骤 4)。

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

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

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

注意∶得到下一跳路由器IP地址后并不是直接将该地址填入待发送的数据报,而是将该IP地址转换成 MAC地址(通过ARP),将其放到MAC帧首部中,然后根据这个MAC地址找到下一跳路由器。在不同网络中传送时,MAC 帧中的源地址和目的地址要发生变化,但是网桥在转发帧时,不改变帧的源地址,请注意区分

2. IPv4地址与 NAT

1.IPv4地址 (网络层的寻址方式)

连接到因特网上的每台主机(或路由器)都分配一个32 比特的全球唯一标识符,即IP地址。传统的IP地址是分类的地址,分为A、B、C、D、E 五类。

无论哪类IP地址,都由网络号和主机号两部分组成。即 IP地址::={<网络号>,<主机号>}。 其中网络号标志主机(或路由器)所连接到的网络。一个网络号在整个因特网范围内必须是唯一的。主机号标志该主机(或路由器)。一台主机号在它前面的网络号所指明的网络范围内必须是唯一的。由此可见,一个IP地址在整个因特网范围内是唯一的。 分类的IP 地址如图4.5 所示。

1). A类,B类,C类地址的网络号字段分别位1个,2个和3个字节长,而在网络号字段的最前面有1-3位的类别位。其数值分别规定为0,10,110

2). A类,B类,C类地址的主机号字段分别位3个,2个和1个字节长,

3). A,B,C,D,E类地址,前面的1的个数分为为0,1,2,3,4

4). 形如127.xx.yy.zz的IP地址,都作为保留地址,用于回路测试

为了便于书写,可用等效的10进制数字表示IP地址,每8位为1组,并在这些数字中间加上一个点,这就叫做点分十进制记法。

在各类 IP 地址中,有些IP地址具有特殊用途,不用做主机的IP地址∶

● 主机号全为0表示本网络本身,如 202.98.174.0。

●主机号全为1表示本网络的广播地址,又称直接广播地址,如202.98.174.255。

● 127.0.0.0保留为环回自检(LoopbackTest)地址,此地址表示任意主机本身,目的地址为环回地址的 IP 数据报永远不会出现在任何网络上。

● 32 位全为 0,即 0.0.0.0 表示本网络上的本主机。

●32 位全为1,即255.255.255.255 表示整个TCP/IP网络的广播地址,又称受限广播地址。

实际使用时,由于路由器对广播域的隔离,255.255.255.255 等效为本网络的广播地址。 常用的三种类别 IP 地址的使用范围见表。

在表中:

A类地址可用的网络数为27-2,减2 的原因是∶ 第一,网络号字段全为0的IP 地址是保留地址,意思是"本网络";第二,网络号为 127的 IP地址是环回自检地址。

B类地址 的可用网络数为214-1,的原因是 128.0 这个网络号是不可指派的。

C类地址的可用网络数为 221-1,原因是网络号为192.0.0 的网络是不可指派的。

IP 地址有以下重要特点∶

1)每个IP地址都由网络号和主机号两部分组成,因此IP 地址是一种分等级的地址结构。

分等级的好处是∶

①IP地址管理机构在分配IP地址时只分配网络号(第一级),而主机号 (第二级)则由得到该网络的单位自行分配,方便了 IP 地址的管理;

②路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目标主机号),从而减小了路由表所占的存储空间。

2)IP地址是标志一台主机(或路由器)和一条链路的接口。当一台主机同时连接到两个网络时,该主机就必须同时具有两个相应的IP 地址,每个IP地址的网络号必须与所在网络的网络号相同,且这两个IP地址的网络号是不同的。因此IP网络上的一个路由器必然至少应具有两个IP地址(路由器每个端口必须至少分配一个IP 地址)。

3)一个网络是指具有相同网络号net-id的主机的集合,因此用转发器或桥接器(网桥等)连接的若干LAN 仍然是同一个网络(同一个广播域),那么该LAN 中所有主机的IP 地址的网络号必须相同,但主机号必须不同。

4)在IP地址中,所有分配到网络号的网络(无论是LAN 还是WAN)都是平等的。

5)在同一个局域网上的主机或路由器的IP 地址中的网络号必须是一样的。路由器总是具有两个或两个以上的IP地址,路由器的每个端口都有一个不同网络号的IP地址。

2.网络地址转换 (将一个私有地址映射为 NAT路由器中的 公有地址:端口号)

网络地址转换(NAT)是指通过将专用网络地址(如 Intranet)转换为公用地址(如 Intermet), 从而对外隐藏内部管理的IP地址。它使得整个专用网只需要一个全球 IP地址就可以与因特网连通,由于专用网本地IP地址是可重用的,所以NAT大大节省了IP地址的消耗。同时,它隐藏了内部网络结构,从而降低了内部网络受到攻击的风险。

此外,为了网络安全,划出了部分IP地址为私有IP地址。私有IP地址只用于LAN,不用于WAN 连接(因此私有IP地址不能直接用于Internet,必须通过网关利用NAT 把私有IP地址转换为 Internet 中合法的全球IP地址后才能用于Intemet),并且允许私有IP地址被LAN重复使用。这有效地解决了IP 地址不足的问题。私有 IP 地址网段如下∶

A类∶ 1 个A类网段,即 10.0.0.0~10.255.255.255。 主机数16777216.

B类∶16 个B类网段,即172.16.0.0~172.31.255.255。 主机数1048576.

C类∶256 个C类网段,即192.168.0.0~192.168.255.255。 主机数65536.

在因特网中的所有路由器,对目的地址是私有地址的数据报一律不进行转发。这种采用私有IP地址的互联网络称为专用互联网或本地互联网。私有IP地址也称可重用地址。

使用NAT时需要在专用网连接到因特网的路由器上安装NAT软件(装有NAT软件的路由器即为NAT路由器),NAT路由器至少有一个有效的外部全球地址。使用本地地址的主机和外界通信时,NAT路由器使用NAT转换表将本地地址转换成全球地址,或将全球地址转换成本地地址。NAT转换表中存放着{本地IP地址∶端口)到{全球IP地址∶ 端口}的映射。通过{ip地址∶端口}这样的映射方式,可让多个私有IP地址映射到同一个全球 IP 地址。


下面以宿舍共享宽带上网为例进行说明。假设某个宿舍办理了2Mbis的电信宽带,那么这个宿舍就获得了一个全球IP地址(如138.76.29.7),而宿舍内4台主机使用私有地址(如192.168.0.0 网段)。宿舍的网关路由器应该开启NAT功能,并且某时刻路由器上的NAT 转换表见表4.2。那么,当路由器从LAN端口收到源IP及源端口号为192.168.0.2∶2233 的数据报时,就将其映射成 138.76.29.7∶5001,然后从NAT转换表WAN 端口发送到因特网上。当路由器从WAN端口收到目的WAN端LAN 端 IP及目的端口号为138.76.29.7∶5060的数据报时,就将其映射成 192.168.0.3∶1234,然后从LAN 端口发送给相应的本地主机。这样,只需要一个全球地址,就可以让多台主机同时访问因特网。

注意∶普通路由器在转发IP数据报时,不改变其源 IP地址和目的IP地址。而NAT路由器在转发IP数据报时,一定要更换其IP地址(转换源IP地址或目的IP地址)。普通路由器仅工作在网络层,而NAT路由器转发数据报时需要查看和转换传输层的端口号。

3. 子网划分与子网掩码、CIDR

1.子网划分

两级 IP 地址的缺点∶

Ø IP 地址空间的利用率有时很低。

每一个A类地址网路可连接的主机数超过100万,每一个B类地址网络可连接的主机数超过6万。有的单位申请到一个B类地址,但所连接的的主机数并不多,可是又不愿意申请一个足够使用的C类地址,理由是考虑到单位今后的发展,因此造成了IP的浪费。

Ø 给每个物理网络分配一个网络号会使路由表变得太大而使网络性能变坏。

如果给每一个物理网络(一台主机)都分配一个网络号,那么路由器的路由表项目数也就越来越多。这不仅会使得路由器需要更多的存储空间(成本增加),还会使得查找路由时耗费更多的时间,同时由于路由器之间路由信息的定时交换,使得整个路由器和互联网的性能下降。

Ø 两级的IP地址不够灵活。

如果一个单位需要在新的地点马上开通一个新的网络,但在申请到一个IP地址之前,新增加的网络不可能连接到互联网上工作。

为解决上述问题,从1985年起,在IP地址中又增加了一个"子网号字段",使两级IP地址变成了三级IP地址。 这种做法称为子网划分。这样还可以减少广播域的大小,子网划分已成为因特网的正式标准协议。

总之,当没有划分子网时,IP地址是两级结构<网络号,主机号>。划分子网之后,IP地址变成了三级结构(<网络号>,<子网号,主机号>)。划分子网只是把IP地址的主机号这部分再进行划分,而不改变IP地址原来的网络号。

子网划分的基本思路如下∶

● 子网划分纯属一个单位内部的事情。单位对外仍然表现一个网络。

● 从主机号借用若干位作为子网号(subnet-id),当然主机号也就相应减少了相同的位数。三级IP地址的结构如下∶IP地址 :: ={<网络号>,<子网号>,<主机号>}。

● 凡是从其他网络发送给本单位某台主机的IP数据报,仍然是根据IP数据报的目的网络号, 先找到连接到本单位网络上的路由器。然后该路由器在收到 IP 数据报后,按目的网络号和子网号找到目的子网。最后把IP 数据报直接交付给目的主机。

注意∶

1)划分子网只是把IP地址的主机号这部分进行再划分,而不改变IP地址原来的网络号。因此,从一个IP地址本身或IP数据报的首部,无法判断源主机或目的主机所连接的网络是否进行了子网划分。

2)RFC 950规定,对分类的IPv4地址进行子网划分时,子网号不能为全1或全0。但随着 CIDR(无分类编址) 的广泛使用,现在全1和全0的子网号也可使用,但一定要谨慎使用,要弄清你的路由器所用的路由选择软件是否支持全 0或全1的子网号。

3)不论是分类的IPV4 地址还是 CIDR,其子网中的主机号为全0或全1的地址都不能被指派。子网中主机号全0的地址为子网的网络号,主机号全1的地址为子网的广播地址。

2.子网掩码

对于上图,假定一个数据报(目的地址为145.13.3.10)已经到达路由器R1,那么这个路由器如何把它转发到子网145.13.3.0?

为了告诉主机或路由器对一个A类、B类、C类网络是否进行了进行了子网划分,就要使用子网掩码来表达对原网络中主机号的借位。

子网掩码是一个与IP地址相对应的、长32bit的二进制串,它由一串1和跟随的一串0组成。其中,1对应于IP地址中的网络号及子网号,而0对应于主机号。计算机只需将IP地址和其对应的子网掩码逐位"与"(逻辑AND运算),就可得出相应子网的网络地址。

现在的因特网标准规定∶所有的网络都必须使用子网掩码。如果一个网络未划分子网,那么就采用默认子网掩码。A、B、C类地址的默认子网掩码分别为255.0.0.0(0xFF000000)、255.255.0.0(0xFFFF0000)、255.255.255.0(0xFFFFFF00)。(对应网络号,A类地址在前8位,B类地址在前16位,C类地址在前24位)

例如,某主机的IP地址 192.168.5.56,子网掩码为255.255.255.0,进行逐位"与"运算后,得出该主机所在子网的网络号为 192.168.5.0。

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

在使用子网掩码的情况下∶

1)一台主机在设置 IP 地址信息的同时,必须设置子网掩码。

2)同属于一个子网的所有主机及路由器的相应端口,必须设置相同的子网掩码。

3)路由器的路由表中,所包含信息的主要内容必须有:目的网络地址、子网掩码、下一跳地址。

使用子网掩码时路由器的分组转发算法如下∶

1)从收到的分组的首部提取目的IP 地址,记为 D。

2)先判断是否为直接交付。对路由器直接相连的网络逐个进行检查∶用各网络的子网掩码和D逐位相"与",看结果是否和相应的网络地址匹配。若匹配,则将分组直接交付,否则间接交付,执行步骤 3。

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

4)对路由表中的每一行(目的网络地址、子网掩码、下一跳地址)中的子网掩码和 D逐位 相"与",其结果为N。若N与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行步骤 5。

5)若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行步骤6.。

6)报告转发分组出错。

3.无分类域间路由选择(CIDR)

无分类域间路由选择是在变长子网掩码的基础上提出的一种消除传统A、B、C类网络划分,并且可以在软件的支持下实现超网构造的一种IP地址的划分方法。

例如,如果一个单位需要2000个地址,那么就给它分配一个2048地址的块(8个连续的C 类网络),而不是一个完全的B类地址。这样可以大幅度提高IP地址空间的利用率,减小路由器的路由表大小,提高路由转发能力。CIDR (Classless Inter-Domain Routing, “sider”)的主要特点如下∶

1)消除了传统A、B、C 类地址及划分子网的概念,因而可以更有效地分配 IPv4 的地址空间。CIDR使用"网络前缀"的概念代替子网络的概念。

因此,IP地址的无分类两级编址为: IP ::= {<网络前缀>,<主机号>}。

CIDR 还使用"斜线记法"(或称 CIDR 记法),即IP地址 / 网络前缀所占位数。

其中, 网络前缀所占位数对应于网络号的部分,等效于子网掩码中连续 1 的部分。例如,对于 128.14.32.5/20这个地址,它的掩码是20个连续的1和后续12个连续的0,通过逐位相"与"的方法可以得到该地址的网络前缀(或直接截取前20 位):

CIDR虽然不使用子网,但仍然使用"掩码"—词。"CIDR不使用子网"是指CIDR并没有在32位地址中指明若干位作为子网字段。但分配到一个CIDR地址块的组织,仍可以在本组织内根据需要划分出一些子网。例如,某组织分配到地址块/20,就可以再继续划分为8个子网(从主机号中借用3位来划分子网),这时每个子网的网络前缀就变成了23 位。全 0和全1的主机号地址一般不使用。

2)将网络前缀都相同的连续IP地址组成"CIDR地址块"。一个CIDR地址块可以表示很多地址,这种地址的聚合称为路由聚合,或称构成超网。路由聚合使得路由表中的一个项目可以表示多个原来传统分类地址的路由,有利于减少路由器之间的路由选择信息的交换,从而提高网络性能。

例如,在如图 4.6 所示的网络中,如果不使用路由聚合,那么 R1的路由表中需要分别有到网络1和网络2的路由表项。不难发现,网络1和网络2的网络前缀在二进制表示的情况下,前 16位都是相同的,第17位分别是0和1,并且从RI到网络1和网络2的路由的下一跳皆为R2。 若使用路由聚合,在R1看来,网络1和网络2可以构成一个更大的地址块206.1.0.0/16,到网络 1和网络2的两条路由就可以聚合成一条到 206.1.0.0/16 的路由。

CIDR地址块中的地址数一定是2的整数次幂,实际可指派的地址数通常为2N-2,N表示主机号的位数,主机号全0代表网络号,主机号全1为广播地址。网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP 地址中,划分子网使网络前缀变长。

CIDR 的优点在于网络前缀长度的灵活性。由于上层网络的前缀长度较短,因此相应的路由表的项目较少。而内部又可采用延长网络前缀的方法来灵活地划分子网。

最长前缀匹配(最佳匹配):使用 CIDR 时,路由表中的每个项目由"网络前缀"和"下一跳地址"组成。在查找路由表时可能会得到不止一个匹配结果。此时,应当从匹配结果中选择具有最长网络前缀的路由(两个地址的网路前缀要完全一样),因为网络前缀越长,其地址块就越小,因而路由就越具体。

CIDR 查找路由表的方法∶为了更加有效地查找最长前缀匹配,通常将无分类编址的路由表存放在一种层次式数据结构中,然后自上而下地按层次进行查找。这里最常用的数据结构就是二叉线索。


4. ARP、DHCP 与 ICMP

1.IP地址与硬件地址

IP 地址是网络层使用的地址,它是分层次等级的。

硬件地址是数据链路层使用的地址(如MAC地址),它是平面式的。

在网络层及网络层之上使用IP地址,IP地址放在IP数据报的首部, 而 MAC 地址放在 MAC帧的首部。通过数据封装,把IP数据报分组封装为 MAC帧后,数据链路层看不见数据报分组中的IP 地址。

由于路由器的隔离,IP网络中无法通过广播方式依靠MAC地址来完成跨网络的寻址,因此在IP 网络的网络层只使用IP地址来完成寻址。寻址时,每个路由器依据其路由表(依靠静态路由或动态路由协议生成)选择到目标网络(即主机号全为0的网络地址)需要转发到的下一跳(路由器的物理端口号或下一网络地址),而IP分组通过多次路由转发到达目标网络后,改为在目标 LAN 中通过数据链路层的MAC地址以广播方式寻址。这样可以提高路由选择的效率。

1)在IP 层抽象的互联网上只能看到IP数据报。

2)虽然在IP 数据报首部中有完整的源IP地址和目的IP地址,但路由器只根据目的IP地址的网络号进行路由选择。

3)在局域网的数据链路层,只能看见 MAC帧。而通过路由器转发IP分组时,此IP分组在每个网络中都被路由器解封装和重新封装。因此IP数据报在被路由器转发时,其数据链路层封装所使用的 MAC地址是不断改变的。这也决定了无法使用MAC地址跨网络通信。

4)尽管互联在一起的网络的硬件地址体系各不相同,但IP层抽象的互联网却屏蔽了下层这些复杂的细节。只要我们在网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机与主机或路由器之间的通信。

注意∶路由器由于互联多个网络,因此它不仅有多个IP 地址,也有多个硬件地址。

2.地址解析协议(ARP — Address Resolution Protocol)

无论网络层使用什么协议,在实际网络的链路上传送数据帧时,最终必须使用硬件地址。所以需要一种方法来完成IP地址到MAC地址的映射,这就是地址解析协议(Address Resolution Protocol,ARP)。每台主机都设有一个 ARP高速缓存,用来存放本局域网上各主机和路由器的IP 地址到 MAC 地址的映射表,称 ARP表。使用 ARP来动态维护此 ARP表。

ARP的作用:从网络层使用的IP地址解析出数据链路层使用的硬件地址(MAC地址)。

ARP高速缓存(ARP cache):存放最近获得的IP地址到MAC地址的映射,以减少ARP广播的数量。

ARP请求分组:包含发送方的硬件地址、发送发IP地址、目标方硬件地址(未知时为0)、目标方IP地址。广播发送(当无法直到对方硬件地址)

ARP响应分组:包含发送方硬件地址、发送发IP地址、目标放硬件地址、目标放IP地址。(普通单播发送,对方发来信息的时候就在ARP高速缓存中记录下其IP地址与硬件地址的映射)

ARP 工作在网络层,其工作原理如下∶

1、主机 A欲向本局域网上的某台主机B发送IP数据报时,先在其 ARP高速缓存中查看有无主机B的IP地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该MAC 帧发往此硬件地址。如果没有,那么就通过使用目的MAC地址为 FF-FF-FF-FF-FF-FF 的帧来封装并广播ARP请求分组,使同一个局域网里的所有主机收到ARP请求。

2、主机B收到该ARP请求后,向主机A发出响应ARP分组,分组中包含主机B的IP与MAC 地址的映射关系,主机A在收到后将此映射写入ARP缓存,然后按查询到的硬件地址发送 MAC帧。同时主机B也将主机A的地址映射写入到自己的ARP高速缓存中。

ARP高速缓存中每一个映射地址都谁只有生存时间,凡是超过生存时间的就会从高速缓存区中删除掉。假使主机B的网络适配器换掉并重新更换了一个,那么由于主机A中的ARP高速缓存区中对于主机B的地址映射没有删除或者更改,就会无法再找到主机B了。

ARP由于看到了"IP地址,所以它工作在网络层,而NAT 路由器由于"看到了"端口,所以它工作在传输层。对于某个协议工作在哪个层次,读者应该能通过协议的工作原理进行猜测。

以上是解决了同一局域网上的路由器和主机的IP地址与硬件地址的映射问题,如果所要找的主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于本局域网上的某个路由器的硬件地址。然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。 剩下的工作就由下一个网络来做,尽管 ARP请求分组是广播发送的,但ARP响应分组是普通的单播,即从一个源地址发送到一个目的地址。

ARP的 4 种典型情况总结如下∶

Ø 发送方和接受方都是同一个局域网上的主机。

1)发送方是主机时,要把 IP 数据报发送到本网络上的另一台主机。这时用ARP找到目的主 机的硬件地址。

Ø 发送发和接收方不是同一个局域网上的主机,中间只隔了一个路由器。

2)发送方是主机时,要把IP数据报发送到另一个网络上的一台主机。这时用ARP找到本网络上的一个路由器的硬件地址,剩下的工作由这个路由器来完成。

3)发送方是路由器时,要把IP数据报转发到本网络上的一台主机。这时用ARP找到目的主机的硬件地址。

Ø 发送发和接收方不是同一个局域网上的主机,中间只隔了多个路由器。

4)发送方是路由器时,要把IP 数据报转发到另一个网络上的一台主机。这时用ARP找到本网络上的一个路由器的硬件地址,剩下的工作由找到的这个路由器完成。

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

由于全世界存在各式各样的网路,要想这些异构网络相机通信,如果使用硬件地址通信,那么就需要非常复杂的硬件地址转换工作,而由用户来完成这项工作几乎是不可能的事情。所以使用IP编制来解决这个复杂的问题。并且从 IP 地址到硬件地址的解析(ARP)是由计算机软件自动进行的,主机的用户并不知道这种地址解析过程。只要主机或路由器和本网络上的另一个已知IP 地址的主机或路由器进行通信,ARP 就会自动地将这 个 IP 地址解析为数据链路层所需要的硬件地址。

​ RARP:逆地址解析协议。

3.动态主机配置协议(DHCP — Dynamic Host Configuration Protocol)

动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)常用于给主机动态地分配 IP 地址,它提供了即插即用(可插拔式)的联网机制,这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与。DHCP 是应用层协议,它是基于UDP 的。

DHCP的工作原理如下∶使用客户/服务器方式。需要IP地址的主机在启动时就向DHCP服务器广播发送发现报文,这时该主机就成为DHCP客户。本地网络上所有主机都能收到此广播报文,但只有DHCP服务器才回答此广播报文。DHCP服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SOtCPphy-1634207060363)(file:///C:/Users/17575/AppData/Local/Temp/msohtmlclip1/01/clip_image039.jpg)]
务器的IP地址池中取一个地址分配给该计算机。DHCP服务器的回答报文称为提供报文。

DHCP服务器聚合DHCP客户端的交换过程如下∶

1)DHCP客户机广播"DHCP发现"消息,试图找到网络中的DHCP服务器,以便从DHCP服务器获得一个 IP地址。

2)DHCP服务器收到"DHCP发现"消息后,向网络中广播"DHCP提供"消息,其中包括提供DHCP客户机的IP地址和相关配置信息。

3)DHCP客户机收到"DHCP提供"消息,如果接收 DHCP 服务器所提供的相关参数,那么通过广播"DHCP请求"消息向DHCP服务器请求提供IP地址。

4)DHCP 服务器广播"DHCP确认"消息,将IP地址分配给 DHCP客户机。 DHCP 允许网络上配置多台 DHCP 服务器,当 DHCP客户机发出 DHCP请求时,有可能收到多个应答消息。这时,DHCP客户机只会挑选其中的一个,通常挑选最先到达的。

DHCP服务器分配给DHCP客户的IP地址是临时的,因此 DHCP客户只能在一段有限的时间内使用这个分配到的 IP 地址。DHCP 称这段时间为租用期。租用期的数值应由 DHCP服务器 自己决定,DHCP 客户也可在自己发送的报文中提出对租用期的要求。

DHCP是应用层协议,因为它是通过客户/服务器方式工作的,DHCP客户端向DHCP服务器请求服务。读者在后面的学习中会了解到,应用层协议有两种工作方式∶客户服务器方式和P2P 方式,而其他层次的协议是没有这两种工作方式的。

DHCP的客户端和服务器端需要通过广播方式来进行交互,原因是在DHCP执行初期,客户端不知道服务器端的 IP 地址,而在执行中间,客户端并未被分配IP地址,从而导致两者之间的通信必须采用广播的方式。采用 UDP而不采用TCP的原因也很明显∶TCP需要建立连接,如果连对方的IP 地址都不知道,那么更不可能通过双方的套接字建立连接。

4.网际控制报文协议(ICMP— Internet Control Message Protocol)

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

ICMP 报文的种类有两种,即 ICMP 差错报告报文和ICMP 询问报文。

ICMP 差错报告报文:用于目标主机或到目标主机路径上的路由器向源主机报告差错和异常情况。

作用:当主机1发送IP数据报给主机2的途中或到达主机2后,由于该IP数据出现以下五种差错,那么主机2或者发送途中的路由器会发送一个ICMP差错报文给主机1,告诉它发送失败的原因。

共有以下 5 种类型∶

1)终点不可达。当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。

2)源点抑制。当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。 (流量控制)

3)时间超过。当路由器收到生存时间(TTL)为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。

4)参数问题。当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。

5)改变路由(重定向)。路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。

不应发送 ICMP差错报告报文的几种情况如下∶

1)对ICMP差错报告报文不再发送 ICMP 差错报告报文。

2)对第一个分片的数据报片的所有后续数据报片都不发送ICMP 差错报告报文。 (后面的分片差错信息大概率和第一个分片一样)

3)对具有多播地址的数据报,都不发送ICMP差错报告报文。

4)对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文。

ICMP 询问报文有4种类型∶ 回送请求和回答报文、时间戳请求和回答报文、掩码地址请求和回答报文、路由器询问和通告报文,最常用的是前两类。

1)回送请求和回答报文:测试目的站是否可达以及了解其相关状态

2)时间戳请求和回答报文:用于时钟同步和时间测量。

作用:主机与主机、主机与路由器之间通过互相发送ICMP询问报文,对方在收到后会发送一个针对该询问的ICMP应答报文。

ICMP 的两个常见应用是分组网间探测 PING(用来测试两台主机之间的连通性)和 Traceroute (UNIX中的名字,在 Windows 中是 Tracert,可以用来跟踪分组经过的哪些路由)。其中PING使用了 ICMP回送请求和回答报文,Traceroute(Tracert)使用了ICMP 时间超过报文。

注意∶ PING工作在应用层,它直接使用网络层的ICMP,而未使用传输层的TCP或 UDP。 Traceroute/Tracert 工作在网络层。

四. Ipv6

1. IPv6 的主要特点

解决"IP地址耗尽"问题的措施有以下三种∶

①采用无类别编址 CIDR,使IP地址的分配更加合理;

②采用网络地址转换(NAT)方法以节省全球IP地址;

③采用具有更大地址空间的新版本的 IPv6。

其中前两种方法只是延长了IPv4 地址分配完毕的时间,只有第三种方法从根本上解决了IP 地址的耗尽问题。

IPv6 的主要特点如下∶

1)更大的地址空间。IPv6将地址从IPv4的32位增大到了128位。IPv6的字节数(16B)是 IPv4 字节数(4B)的平方。

2)扩展的地址层次结构。

3)灵活的首部格式。

4)改进的选项。

5)允许协议继续扩充。

6)支持即插即用(即自动配置)。

7)支持资源的预分配。

8)IPv6 只能在主机分片,是端到端的,传输路径中的路由器不能分片,所以从一般意义上说,IPv6 不允许分片(不允许类似 IPv4 的路由分片)。

9)IPv6 首部长度必须是 8B的整数倍,而IPv4 首部是 4B 的整数倍。

10)增大了安全性。身份验证和保密功能是 IPv6 的关键特征。

然IPv6与IPv4不兼容,但总体而言它与所有其他的因特网协议兼容,包括TCP、UDP、 ICMP、IGMP、OSPF、BGP和 DNS,只是在少数地方做了必要的修改(大部分是为了处理长的地址)。IPv6 相当好地满足了预定的目标,主要体现在∶

1)首先也是最重要的,IPv6 有比 IPv4长得多的地址。IPv6 的地址用 16个字节表示,地址空间是IPv4 的296倍,从长远来看,这些地址是绝对够用的。

2)简化了IP分组头,它包含8个域(IPv4是12个域)。这一改变使得路由器能够更快地处理分组,从而可以改善吞吐率。

3)更好地支持选项。这一改变对新的分组首部很重要,因为一些从前必要的段现在变成了可选段。此外,表示选项的方式的改变还能加快分组的处理速度。

与IPV4相比,IPV6对首部中的某些字段进行了如下的更改:

​ \1. 取消了首部长度字段,因为它的首部长度是固定的(40字节)

​ \2. 取消了服务类型字段,因为优先级和流标号字段实现了服务类型字段的功能。

​ \3. 取消了总长度字段,改用有效载荷长度字段。

​ \4. 取消了标识、标志和片偏移字段,因为这些功能已经包含在分片扩展首部中。

​ \5. 把TTL字段改为跳数限制字段,但作用是一样的(名称与作用更加一致)

​ \6. 取消了协议字段,改用下一个首部字段。

​ \7. 取消了检验和字段,这样就加快了路由器处理数据报的速度。(在数据链路层对检测有差错的帧就丢弃。在运输层,当使用UDP协议,若检测出有差错的用户数据就丢弃;当使用TCP时,对检测出有差错的报文段就重传,直到正确传送到目的进程为止。即数据链路层和传输层已经进行了差错检验,那么就可以将网络层的差错检验精简掉,以增加路由器处理数据包的速度。)

​ \8. 取消了选项字段,而用扩展首部来实现选项功能。

2. IPv6 地址

IPv6 数据报的目的地址可以是以下三种基本类型地址之一∶

1)单播。单播就是传统的点对点通信。

2)多播。多播是一点对多点的通信,分组被交付到一组计算机的每台计算机。

3)任播。这是IPv6 增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一台计算机,通常是距离最近的一台计算机。

IPv4 地址通常使用点分十进制表示法。如果 IPv6 也使用这种表示法,那么地址书写起来将会相当长。在IPv6 标准中指定了一种比较紧凑的表示法,即把地址中的每4位用一个十六进制数表示,并用冒号分隔每 16 位,如4BF5∶AAl2∶0216∶FEBC∶BA5F∶039A∶BE9A∶2170。

通常可以把IPv6地址缩写成更紧凑的形式。当16 位域的开头有一些0时,可以采用一种缩写表示法,但在域中必须至少有一个数字。例如,可以把地址4BF5∶0000000∶BA5F∶039A∶000A∶2176 缩写为4BF5∶0∶0∶0∶BA5F∶39A∶A∶2176。

当有相继的0值域时,还可以进一步缩写。这些域可以用双冒号缩写(∶)。当然,双冒号表示法在一个地址中仅能出现一次,因为0值域的个数没有编码,需要从指定的总的域的个数来推算。这样一来,前述地址可被更紧凑地书写成 4BF5 ::BA5F∶39A∶A∶2176。

IPv6 扩展了IPv4 地址的分级概念,它使用以下3个等级∶

第一级(顶级)指明全球都知道的公共拓扑;第二级(场点级)指明单个场点;第三级指明单个网络接口。

IPv6 地址采用多级体 系主要是为了使路由器能够更快地查找路由。

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

IPv4 向 IPv6 过渡可以采用双协议栈和隧道技术两种策略∶

双协议栈技术是指在一台设备上同时装有 IPv4和 IPv6 协议栈,那么这台设备既能和IPv4 网络通信,又能和IPv6 网络通信。如果这台设备是一个路由器,那么在路由器的不同接口上分别配置了IPv4地址和 IPv6 地址,并很可能分别连接了IPv4 网络和IPv6 网络;如果这台设备是一台计算机,那么它将同时拥有 IPv4地 址和IPv6 地址,并具备同时处理这两个协议地址的功能。

隧道技术是将整个IPv6 数据报封装到 IPv4 数据报的数据部分,使得 IPv6 数据报可以在IPv4 网络的隧道中传输。

五. 路由协议

路由收敛:所谓收敛,是指当路由环境发生变化后,各路由器调整自己的路由表以适应网络拓扑结构的变化,最终达到稳定状态(路由表与网络拓扑状态保持一致)。收敛越快,路由器就能越快适应网络拓扑结构的变化。

1. 自治系统

自治系统 (Autonomous System, AS) :单一技术管理下的一组路由器,这些路由器使用一种自治系统内部的路由选择协议和共同的度量来确定分组在该自治系统内的路由,同时还使用一种自治系统之间的路由选择协议来确定分组在自治系统之间的路由。

可以把整个互联网划分成许多较小的自治系统,一个自治系统内的所有网络都由一个行政单位(如一家公司、 一所大学、 一个政府部门等)管辖,一个自治系统的所有路由器在本自治系统内都必须是连通的,对其它的自治系统表现为一个单一的和一致的路由选择策略。

2. 域内路由与域间路由

自治系统内部的路由选择称为域内路由选择,自治系统之间的路由选择称为域间路由选择。因特网有两大类路由选择协议。

1. 内部网关协议 (Interior Gateway Protocol, IGP)

内部网关协议即在一个自治系统内部使用的路由选择协议,它与互联网中其他自治系统选用什么路由选择协议无关。 目前这类路由选择协议使用得最多, 如 RIP 和 OSPF。

2. 外部网关协议 (External Gateway Protocol, EGP)

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

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

3. 内部网关协议—路由信息协议(RIP — Routing Information Protocol)

路由信息协议 (Routing Information Protocol, RIP)是内部网关协议 (IGP) 中最先得到广泛应用的协议。RIP是一种分布式的基于距离向量的路由选择协议,其最大优点就是简单。

1.RIP 规定

1)网络中的每个路由器都要维护从它自身到其他每个目的网络的距离记录(因此这是一组距离,称为距离向量)。

2)距离也称跳数(Hop Count),规定从一个路由器到直接连接网络的距离(跳数)为1。而每经过一个路由器,距离(跳数)加1。

3)RIP认为好的路由就是它通过的路由器的数目少,即优先选择跳数少的路径。

4)RIP允许一条路径最多只能包含 15个路由器(即最多允许15 跳)。因此距离等于16时,它表示网络不可达。可见 RIP 只适用于小型互联网。距离向量路由可能会出现环路的情况,规定路径上的最高跳数的目的:是为了防止数据报不断循环在环路上,减少网络拥塞的可能性。

5)RIP默认在任意两个使用 RIP 的路由器之间每30秒广播一次RIP路由更新信息,以便自动建立并维护路由表(动态维护)。

6)在 RIP中不支持子网掩码的RIP广播,所以RIP中每个网络的子网掩码必须相同。但在新的 RIP2 中,支持变长子网掩码和 CIDR。

2. RIP 的特点(注意与 OSPF的特点比较)

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

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

3)按固定的时间间隔交换路由信息,如每隔 30 秒。

RIP 通过距离向量算法来完成路由表的更新。最初,每个路由器只知道与自己直接相连的网络。通过每30秒的RIP广播,相邻两个路由器相互将自己的路由表发给对方。于是经过第一次 RIP广播,每个路由器就知道了与自己相邻的路由器的路由表(即知道了距离自己跳数为1的网络的路由)。同理,经过第二次RIP广播,每个路由器就知道了距离自己跳数为2的网络的路由 …………………………………………

因此,经过若干RIP广播后,所有路由器都最终知道了整个IP网络(一个自治系统内)的路由表,成为RIP最终是收敛的。通过RIP收敛后,每个路由器到每个目标网络的路由都是距离最短的(即跳数最少,最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。

3.距离向量算法

每个路由表项目都有三个关键数据∶<目的网络N,距离d,下一跳路由器X>。对于每个相邻路由器发送过来的 RIP 报文,执行如下步骤∶

1)对地址为X的相邻路由器发来的 RIP报文,先修改此报文中的所有项目∶把"下一跳" 字段中的地址都改为X,并把所有"距离"字段的值加 1。

2)对修改后的 RIP 报文中的每个项目,执行如下步骤∶

​ ① 当原来的路由表中没有目的网络N时,把该项目添加到路由表中。

② 当原来的路由表中有目的网络 N,且下一跳路由器的地址是X时,用收到的项目替换原路由表中的项目。

③ 当原来的路由表中有目的网络N,且下一跳路由器的地址不是X时,如果收到的项目中的距离d小于路由表中的距离,那么就用收到的项目替换原路由表中的项目;否则什么也不做。

1) 如果180秒(RIP默认超时时间为180秒)还没有收到相邻路由器的更新路由表,那么把此相邻路由器记为不可达路由器,即把距离设置为16(距离为16表示不可达)。

4)返回。

RIP 最大的优点是实现简单、开销小、收敛过程较快。RIP 的缺点如下∶

1)RIP 限制了网络的规模,它能使用的最大距离为 15(16表示不可达)。

2)路由器之间交换的是路由器中的完整路由表,因此网络规模越大,开销也越大。

3)网络出现故障时,会出现慢收敛现象(即需要较长时间才能将此信息传送到所有路由器),俗称"坏消息传得慢",使更新过程的收敛时间长。

RIP 是应用层协议,它使用 UDP传送数据(端口 520)。RIP 选择的路径不一定是时间最短的,但一定是具有最少路由器的路径。因为它是根据最少跳数进行路径选择的。

4. 内部网关协议—开放最短路径优先(OSPF— Open Shortest Path Forst)协议

1.OSPF协议的基本特点

开放最短路径优先(OSPF)协议是使用分布式链路状态路由算法的典型代表,也是内部网关协议(IGP)的一种。(使用了dijkstra提出的最短路径算法SPF)

OSPF与RIP相比有以下 4点主要区别∶

1)OSPF向本自治系统中的所有路由器发送信息,这里使用的方法是洪泛法(查看4.2.3)。而RIP仅向自己相邻的几个路由器发送信息。

2)发送的信息是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。“链路状态"说明本路由器和哪些路由器相邻及该链路的"度量”(或代价)。而在 RIP 中,发送的信息是本路由器所知道的全部信息,即整个路由表。

3)只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息,并且更新过程收敛得快,不会出现 RIP"坏消息传得慢"的问题。而在 RIP中,不管网络拓扑是否发生变化,路由器之间都会定期交换路由表的信息。

4)OSPF是网络层协议,它不使用UDP或 TCP,而直接用IP数据报传送(其IP数据报首部的协议字段为 89)。而RIP是应用层协议,它在传输层使用UDP。

除以上区别外,OSPF 还有以下特点∶

1)OSPF对不同的链路可根据 IP分组的不同服务类型(TOS)而设置成不同的代价。因此, OSPF 对于不同类型的业务可计算出不同的路由,十分灵活。

2)如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。 这称为多路径间的负载平衡。 (这个牛

计算机网络 - 网络层相关推荐

  1. 无连接可靠传输_计算机网络-网络层和传输层

    计算机网络-网络层和传输层 网络层概述 面向连接的服务,即虚电路(virtual circuit) TCP/IP采用数据报服务,无连接的服务,因为网络层是整个互联网的核心,因此应当让网络层尽可能简单. ...

  2. 计算机网络——网络层路由协议、IP组播、移动 IP、路由器

    文章目录 前言 一.RIP 协议与距离向量算法 1.RIP 协议 2.距离向量算法 二.OSPF 协议与链路状态算法 1.OSPF 协议 2.链路状态算法 三.BGP 协议和三种路由协议的比较 1.B ...

  3. 计算机网络-网络层 笔记

    前言:今天听闫乐林老师讲了计算机网络的课,自我感觉真的特别棒,就感觉像是把知识揉碎了喂我们,每个知识都会用生活上的例子,来帮助我们理解.现在再来写篇笔记回顾一下,如果能帮到大家就更好了.如有不恰当部分 ...

  4. 计算机网络---网络层实验

    文章目录 计算机网络---网络层实验 一.实验目的 二.实验环境和任务 三.实验步骤及实验结果记录 四.实验结果分析和总结 计算机网络-网络层实验 一.实验目的 理解通信子网的完整概念,掌握网络层的作 ...

  5. 计算机网络网络层 习题答案

    计算机网络网络层 习题答案 1. 考虑使用32比特主机地址的某数据报网络.假定一台路由器具有4条链路,编号为0~3,分组能被转发到如下的各链路接口: a. 提供一个具有4个表项的转发表,使用最长前缀匹 ...

  6. 【王道】计算机网络网络层(三)

    王道考研计算机网络网络层 网络层 1.1.网络层功能 1.2.IP数据报格式 1.2.1.TCP/IP协议栈 1.2.2.IP数据报格式 1.2.3.IP数据报分片 1.最大传送单元MTU 2.IP数 ...

  7. 计算机网络rip路由表的题目,计算机网络-网络层-练习题

    <计算机网络-网络层-练习题>由会员分享,可在线阅读,更多相关<计算机网络-网络层-练习题(5页珍藏版)>请在人人文库网上搜索. 1.1 下面有关虚电路和数据报的特性,正确的是 ...

  8. 计算机网络网络层重要概念

    本文主要介绍计算机网络OSI模型第三层--网络层 1.VLAN:即虚拟局域网 (Virtual LAN),是由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段具有某些共同的需求. 2.广播风暴: ...

  9. 计算机网络-网络层(网络层功能概述,异构网络互联,路由与转发,SDN基本概念)

    文章目录 1. 网络层功能概述 2. 异构网络互联 3. 路由与转发 4. SDN基本概念 SDN控制平面 1. 网络层功能概述 网络层的主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供 ...

  10. 计算机网络——网络层——思维导图

    -------- 思维导图下载地址 -------- 网络层的功能 1.1. 异构网络互联 1.1.1. 将两个以上的计算机网络,通过一定的方法,用一种或多种通信处理设备(即中间设备)相互联接起来,以 ...

最新文章

  1. 比解决问题更重要的,是找到正确的问题
  2. mysql事物日志工具_MySQL——常用工具和日志
  3. 在eclipse中,怎么改变字体大小?
  4. android旋转动画的两种实现方式
  5. Go编译exe程序时指定程序图标
  6. (75)Xilinx Slice组成结构有哪些?
  7. 定义变量和常量的规范 c语言,C语言编程规范教材及练习(标识符命名与定义 变量 宏、常量 表的达式).pptx...
  8. 《Effective C#》快速笔记(三)- 使用 C# 表达设计
  9. presto array_join函数
  10. VB6.0鼠标注册详细教程
  11. 吃透空洞卷积(Dilated Convolutions)
  12. 使用plupload压缩图片
  13. 还在背面试题?听小米面试官怎么说?【面试官教你如何对线面试官】
  14. 浅显解释 人工智能 vs 机器学习
  15. 数字逻辑第三章(集成门与触发器)
  16. pdf怎么压缩文件到最小?如何将pdf压缩到指定大小?压缩pdf文件大小怎么压缩?如何压缩pdf大小?
  17. UR机器人通信端口和协议
  18. Numpy中 tile函数的用法
  19. 限制允许某些IP访问服务器
  20. f2fs系列文章fsck(四)

热门文章

  1. 推荐几款适合孩子玩的编程游戏
  2. ChatGPT这是要抢走我的饭碗?我10年硬件设计都有点慌了
  3. 微信支付SDK(python版)
  4. 【CloudCompare教程】001:CloudCompare中文版下载与安装图文教程
  5. 如何通过cmd开一个本地服务器
  6. Linux服务器使用Less查看日志文件
  7. FPGA的常用开发工具
  8. nn.Bilinear讲解
  9. 分布式事务解决方案及实现
  10. linux系统用户密码忘了怎么办,忘记了Linux账户密码怎么办?