admin管理员组

文章数量:1601544

4 网络层

4.1 网络层功能

​ 互联网在网络层的设计思路是,向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。也就是说,所传送的分组可能出错、丢失、重复、失序或超时,这就使得网络中的路由器比较简单,而且价格低廉。

4.1.1 异构网络互联

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

  • 物理层中继系统:转发器,集线器。
  • 数据链路层中继系统:网桥或交换机。
  • 网络层中继系统:路由器。
  • 网络层以上的中继系统:网关。

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

​ TCP/IP体系在网络互连上采用的做法是在网络层采用标准化协议,但相互连接的网络可以是异构的。

​ 上图表示用许多计算机网络通过一些路由器进行互连。由于参加互连的计算机网络都使用相同的IP协议,因此可以把互连后的网络视为如图(b)所示的一个虚拟IP网络。

​ IP网络:是通过IP协议使性能各异的网络在网络层上看起来好像是一个统一的网络。

4.1.2 路由转发

​ 路由器主要完成两个功能:一是路由选择(确定哪一条路径);二是分组转发(当一个分组到达时所采取的动作)。

  • 路由选择:指按照复杂的分布式算法,根据从各相邻路由器所得到的关于整个网络拓扑的变化情况,动态地改变所选择的路由。
  • 分组转发:指路由器根据转发表将用户的IP数据报从合适的端口转发出去。

​ 路由表是根据路由选择算法得出的,而转发表是从路由表得出的。转发表的结构应当使查找过程最优化,路由表则需要对网络拓扑变化的计算最优化。在讨论路由选择的原理时,往往不去区分转发表和路由表,而是笼统地使用路由表一词。

4.1.3 SDN基本概念

​ 网络层的主要任务是转发和路由选择。可以将网络层抽象地划分为数据平面(也称转发层面)和控制平面,转发是数据平面实现的功能,而路由选择是控制平面实现的功能。

数据平面:数据平面对于数据处理过程中各种具体处理转发过程。数据平面执行的主要功能是根据转发表进行转发,这是路由器的本地动作。

控制平面:控制平面用于控制和管理网络协议的运行,比如OSPF协议、RIP协议、BGP协议。用于实现路由选择,控制数据报沿着从源主机到目的主机的端到端路径中路由器之间的路由方式。时间长,通常软件解决。

软件定义网络(SDN)是近年流行的一种创新网络架构,它采用集中式的控制平面分布式的数据平面,两个平面相互分离,控制平面利用控制-数据接口对数据平面上的路由器进行集中式控制,方便软件来控制网络。

​ 在网络的控制平面有一个逻辑上的远程控制器(可以由多个服务器组成)。远程控制器掌握各主机和整个网络的状态,为每个分组计算出最佳路由,通过Openflow协议(也可以通过其他途径)将转发表(在SDN中称为流表)下发给路由器。

路由器的工作很单纯,即收到分组、查找转发表、转发分组。

​ SDN的可编程性通过为开发者们提供强大的编程接口,使得网络具有很好的编程性。

  • 北向接口:对上层应用的开发者,SDN提供的编程接口称为北向接口。北向接口提供了一系列丰富的API,开发者可以在此基础上设计自己的应用,而不必关心底层的硬件细节。
  • 南向接口:SDN控制器和转发设备建立双向会话的接口称为南向接口,通过不同的南向接口协议(如Openflow),SDN控制器就可兼容不同的硬件设备,同时可以在设备中实现上层应用的逻辑。
  • 东西向接口:SDN控制器集群内部控制器之间的通信接口称为东西向接口,用于增强整个控制平面的可靠性和可拓展性。

SDN优点

  • 全局集中式控制和分布式高速转发,既利于控制平面的全局优化,又利于高性能的网络转发。
  • 灵活可编程与性能的平衡,控制和转发功能分离后,使得网络可以由专有的自动化工具以编程方式配置。
  • 降低成本,控制和数据平面分离后,尤其是在使用开放的接口协议后,就实现了网络设备的制造与功能软件的开发相分离,从而有效降低了成本。

SDN的问题

  • 安全风险,集中管理容易受攻击,如果崩溃,整个网络会受到影响。
  • 瓶颈问题,原本分布式的控制平面集中化后,随着网络规模扩大,控制器可能成为网络性能的瓶颈。
4.1.4 拥塞控制

拥塞:在通信子网中,因出现过量的分组而引起网络性能下降的现象称为拥塞。

​ 例如,某个路由器所在链路的带宽为 R R R B/S,如果IP分组只从它的某个端口进入,那么其速率为rinB/s。当rin=R时,并非好事。

​ 当分组到达路由器的速率接近R时,平均时延急剧增加,并且会有大量的分组被丢弃(路由器端口的缓冲区是有限的),整个网络的吞吐量会骤降,源与目的地之间的平均时延也会变得近乎无穷大。

判断网络是否拥塞方法:观察网络的吞吐量与网络负载的关系

  • 轻度拥塞状态:随着网络负载的增加,网络的吞吐量明显小于正常的吞吐量。
  • 拥塞状态:网络的吞吐量随着网络负载的增大而下降。
  • 死锁状态:网络的负载继续增大,而网络的吞吐量下降到零。

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

流量控制和拥塞控制的区别:

流量控制往往是指在发送端和接收端之间的点对点通信量的控制。流量控制所要做的是抑制发送端发送数据的速率,以便使接收端来得及接收。

拥塞控制必须确保通信子网能够传送待传送的数据,是一个全局性的问题,涉及网络中所有的主机、路由器及导致网络传输能力下降的所有因素。

拥塞控制的方法

  • 开环控制:在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞。
    这是一种静态的预防方法。一旦整个系统启动并运行,中途就不再需要修改。
    开环控制手段包括确定何时可接收新流量、何时可丢弃分组及丢弃哪些分组,确定何种调度策略等。所有这些手段的共性是,在做决定时不考虑当前网络的状态
  • 闭环控制。事先不考虑有关发生拥塞的各种因素,采用监测网络系统去监视,及时检测哪里发生了拥塞,然后将拥塞信息传到合适的地方,以便调整网络系统的运行,并解决出现的问题。
    闭环控制是基于反馈环路的概念,是一种动态的方法。

4.2 路由算法和路由协议

4.2.1 静态路由与动态路由

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

  • 静态路由算法(又称非自适应路由算法)。指由网络管理员手工配置的路由信息。
    当网络的拓扑结构或链路的状态发生变化时,网络管理员需要手工去修改路由表中相关的静态路由信息。它不能及时适应网络状态的变化,对于简单的小型网络,可以采用静态路由。
  • 动态路由算法(又称自适应路由算法)。指路由器上的路由表项是通过相互连接的路由器之间彼此交换信息,然后按照一定的算法优化出来的,而这些路由信息会在一定时间间隙里不断更新,以适应不断变化的网络,随时获得最优的寻路效果。
4.2.2 距离-向量路由算法
  1. 距离向量算法

    ​ 常见的距离-向量路由算法是RIP算法每个路由器定期与所有相邻路由器交换整个路由表,更新路由项。

    ​ 这种路由表包含:①每条路径的目的地(另一结点)。②路径的代价(也称距离)。

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

    • 更新路由表的情况:

      • 被通告一条新的路由,该路由在本结点的路由表中不存在,此时本地系统加入这条新的路由。

      • 路由信息有一条较短的距离,发来的路由信息中有一条到达某个目的地的路由,该路由与当前使用的路由相比,有较短的距离。此时,就用经过发送路由信息的结点的新路由替换路由表中到达那个目的地的现有路由。

    ​ 距离-向量路由算法的实质是,迭代计算一条路由中的站段数或延迟时间,从而得到到达一个目标的最短(最小代价)通路。

    • 问题:大的通信子网导致大的更新报文,路由信息变得很大。

    距离-向量路由算法中,路由器只掌握物理相连的邻居及链路费用

  2. RIP(路由信息协议) 封装UDP 应用层协议 只适用于小互联网

    RIP是一种分布式的基于距离向量的路由选择协议,其最大优点就是简单。

    • 协议规定

      • 1)网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录(距离向量)

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

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

      • 4)RIP允许一条路径最多只能包含15个路由器(即最多允许15跳)距离等于16时,表示网络不可到达

      • 5)RIP默认在任意两个使用RIP的路由器之间每30s广播一次RIP路由更新信息,动态维护路由表

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

    • RIP报文格式

      ​ RIP报文由首部和路由部分组成。

    • RIP的特点

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

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

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

    • 距离向量算法:每个路由表项目都有三个关键数据: < 目的网络 N ,距离 d ,下一跳路由器地址 X > <目的网络N,距离d,下一跳路由器地址X> <目的网络N,距离d,下一跳路由器地址X>

      • 1)对地址为X的相邻路由器发来的报文,修改此报文中的所有项目【'下一跳’的地址都改为X,把所有’距离’的值+1

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

        • ①当原来的路由表中没有目的网络N,则把该项目添加到路由表中
        • ②当原来的路由表中有目的网络N,且下一跳路由器地址【是X】时,用收到的项目替换原路由表中的项目
        • ③当原来的路由表中有目的网络N,且下一跳路由器地址【不是X】,若收到的项目中的距离d<路由表中的距离,用收到的项目替换原路由表中的项目,否则什么也不做
      • 3)如果180s(默认超时时间是180s)没有收到相邻路由器的更新路由表,把此相邻路由器记为不可达路由,把距离置为16

      • 4)返回

      例:已知路由器R6有表a所示的路由表。现在收到相邻路由器R4发来的路由更新信息,如表b所示。试更新路由器R6的路由表。

      先把表b中的距离都加1,并把下一跳路由器都改为R4。得出表c。

      把这个表的每一行和表a进行比较。

      • 第一行在表a中没有,因此要把这一行添加到表a中。
      • 第二行的Net2在表a中有,且下一跳路由器也是R4。因此要更新(距离增大了)。
      • 第三行的Net3在表a中有,但下一跳路由器不同。于是就要比较距离。新的路由信息的距离是2,小于原来表中的4,因此要更新。

      这样,得出更新后的R6的路由表如表d所示。

      在更新完路由后,每一个路由器到每一个目的网络的路由都是最短的

    • RIP优点:实现简单、开销小、收敛过程较快

      收敛:路由器刚开始工作时,只知道直接连接的网络的距离(距离为1),接着每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。

      经过若干次更新后,所有路由器最终都会知道到达本自治系统任何一个网络的最短距离和下一跳路由器的地址,即“收敛”。

    • RIP缺点:好消息传得快,坏消息传得慢

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

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

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

      慢收敛例子:

      ​ 现在假定路由器R1,到网1的链路出了故障,R1无法到达网1。于是路由器R1把到网1的距离改为16(表示到网1不可达),因而在R1的路由表中的相应项目变为“1,16,直接”。但是,很可能要经过30秒钟后R1才把更新信息发送给R2。然而R2可能已经先把自己的路由表发送给了R1,其中有“1,2,R1”这一项。

      ​ R1收到R2的更新报文后,误认为可经过R2到达网1,于是把收到的路由信息“1,2,R,”修改为:“1,3,R2”,表明“我到网1的距离是3,下一跳经过R2”,并把更新后的信息发送给R2。
      ​ 同理,R2接着又更新自己的路由表为“1,4,R1”,以为“我到网1距离是4,下一跳经过R1”。
      ​ 这样的更新一直继续下去,直到R1和R2到网1的距离都增大到16时,R1和R2才知道原来网1是不可达的。RIP协议的这一特点叫做:好消息传播得快,而坏消息传播得慢。网络出故障的传播时间往往需要较长的时间(例如数分钟)。这是RIP的一个主要缺点。

4.2.3 链路状态路由算法
  1. 链路状态路由算法

    • 链路状态路由算法要求每个参与该算法的结点都具有完全的网络拓扑信息,它们执行下述两项任务。

      • 第一,主动测试所有邻接结点的状态。两个共享一条链接的结点是相邻结点,它们连接到同一条链路,或者连接到同一广播型物理网络。

      • 第二,定期地将链路状态传播给所有其他结点(或称路由结点)。

    ​ 典型的链路状态算法是OSPF算法

    • 特征

      • 向本自治系统中所有路由器发送信息(洪泛法)。

        洪泛法,即路由器通过所有端 口向所有相邻的路由器发送信息。

        设路由器R用洪泛法发出链路状态更新分组。图中用一些小的箭头表示更新分组。第一次先发给相邻的三个路由器。这三个路由器将收到的分组再进行转发时,要将其上游路由器除外。可靠的洪泛法是在收到更新分组后要发送确认(收到重复的更新分组只需要发送一次确认)。图中的空心箭头表示确认分组。

      • 发送的信息是与路由器相邻的所有路由器的链路状态。

        OSPF算法中,链路状态的“度量”主要用来表示费用、距离、时延、带宽等。

      • 只有链路状态发生变化,才向所有路由器发送信息。

    • 优点

      • 每个路由结点使用同样的原始状态数据独立的计算路径。

      • 链路状态不加改变的传播,该算法易于查找故障。

      • 仅运载来自单个结点关于直接链路的信息,其大小与网络中的路由结点数目无关,有更好的规模可伸展性。

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

    链路状态路由算法中,所有路由器掌握完整的网络拓扑和链路费用信息。

  2. OSPF(开放最短路径优先)协议 网络层协议 封装IP

    • OSPF特点

      • 1)OSPF对不同的链路可根据IP分组的不同服务类型(TOS)而设置成不同的代价。因此,OSPF对于不同类型的业务可计算出不同的路由,十分灵活。
      • 2)如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。这称为多路径间的负载平衡。
      • 3)所有在OSPF路由器之间交换的分组都具有鉴别功能,因而保证了仅在可信赖的路由器之间交换链路状态信息。
      • 4)支持可变长度的子网划分和无分类编址CIDR。
      • 5)每个链路状态都带上一个32位的序号,序号越大,状态就越新。
    • OSPF与RIP的区别

    RIPOSPF
    工作层次应用层 基于UDP网络层 基于IP
    转发范围相邻路由器整个本自治系统(洪泛法)
    发送内容整个路由表相邻路由器链路状态
    何时发送定期交换 收敛慢链路状态改变(洪泛法) 收敛快
    • OSPF报文格式

      OSPF直接用IP数据报传送,工作在网络层。

    • OSPF的基本工作原理

      为了使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干个更小的范围,叫做区域(area)。每一个区域都有一个32位的区域标识符(用点分十进制表示)。

      ​ 划分区域后,洪泛法交换链路状态信息的范围局限于每一个区域,减少网络的通信量。在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况。每个区域路由器应不超200个。

      ​ OSPF采用层次结构的区域划分,使每个区域能够与其他区域通信。

      • 在上层的区域叫做主干区域backbone area)。主千区域的标识符规定为0.0.0.0。主干区域的作用是用来连通其他在下层的区域

      • 从其他区域来的信息都由区域边界路由器(area border router)进行概括。如路由器R3,R4和R7。

      • 在主干区域内的路由器叫做主干路由器(backbone router),如R3,R4,R5,R6和R7。

      • 在主干区域内需要一个路由器和本自治系统外的其他自治系统交换路由信息。这样的路由器叫做自治系统边界路由器,如R6。

        ​ 采用层次划分后,使每一个区域内部交换路由信息的通信量大大减小,因而使OSPF协议能够用于规模很大的自治系统中。

    • OSPF分组类型

      • 1)问候分组,用来发现和维持邻站的可达性。
      • 2)数据库描述分组,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
      • 3)链路状态请求分组,向对方请求发送某些链路状态项目的详细信息。
      • 4)链路状态更新分组,用洪泛法对全网更新链路状态。
      • 5)链路状态确认分组,对链路更新分组的确认。

      ​ 通常每隔10秒,每两个相邻路由器要交换一次问候分组,以便知道哪些站可达。路由器刚开始工作时,OSPF让每个路由器使用数据库描述分组和相邻路由器交换本数据库中已有的链 路状态摘要信息。然后,路由器使用链路状态请求分组,向对方请求发送自己所缺少的某些链路 状态项目的详细信息。经过一系列的这种分组交换,就建立了全网同步的链路数据库。

    • OSPF链路状态路由算法

      • 1.每个路由器发现它的邻居结点【HELLO问候分组】,并了解邻居节点的网络地址。

      • 2.设置到它的每个邻居的成本度量metric。

      • 3.构造【DD数据库描述分组】,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。

      • 4.如果DD分组中的摘要自己都有,则邻站不做处理;如果有没有的或者是更新的,则发送【LSR链路状态请求分组】请求自己没有的和比自己更新的信息。

      • 5.收到邻站的LSR分组后,发送【LSU链路状态更新分组】进行更新。

      • 6.更新完毕后,邻站返回一个【LSAck链路状态确认分组】进行确认。

      只要一个路由器的链路状态发生变化

      • 5.泛洪发送【LSU链路状态更新分组】进行更新。

      • 6.更新完毕后,其他站返回一个【LSAck链路状态确认分组】进行确认。

      • 7.使用Dijkstra根据自己的链路状态数据库构造到其他节点间的最短路径。

      OSPF算法例子:

      因特网中的一个自治系统的内部结构如下图所示。路由选择协议采用OSPF协议时,计算R6的关于网络N1、N2、N3、N4的路由表。

      根据Dijkstra算法,得出以下路径表格,其中主意,经过N3网络路径代价未增加。

      R1R2R3R4R5N1N2N3N4
      第1轮66
      第2轮614678
      第3轮77614678
      第4轮776146101078

      路由表如下:

4.2.4 层次路由
  1. 层次路由

    网络规模扩大,路由器的路由表成比例地增大。这样会消耗大量资源,因此路由选择应按照层次的方式进行。

    因特网将整个互联网划分为许多较小的自治系统(AS)(注意一个自治系统中包含很多局域网)。

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

    ​ 每个自治系统有权自主地决定本系统内应采用何种路由选择协议。如果两个自治系统需要通信,那么就需要一种在两个自治系统之间的协议来屏蔽这些差异。因此将选择协议分为以下两种类型:

    • 内部网关协议(IGP):也称域内路由选择,指一个自治系统内部所使用的路由选择协议,具体的协议有RIP和OSPF等。
    • 外部网关协议(EGP):也称域间路由选择,指自治系统之间所使用的路由选择协议,在不同自治系统的路由器之间交换路由信息,并负责为分组在不同自治系统之间选择最优的路径。具体的协议有BGP。

    使用层次路由时,OSPF将一个自治系统再划分为若干区域(Area),每个路由器都知道在本区域内如何把分组路由到目的地的细节,但不用知道其他区域的内部结构。因而使OSPF协议能够用于规模很大的自治系统中。

  2. BGP(外部网关协议) 应用层 TCP封装

    ​ 边界网关协议(Border Gateway Protocol,BGP)是不同自治系统的路由器之间交换路由信息的协议,是一种外部网关协议。

    • 目的:力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子)

    • 困难

      • 互联网的规模太大,使得自治系统AS之间路由选择非常困难
      • 自治系统AS之间的路由选择必须考虑有关策略。
    • 交换过程

      BGP所交换的网络可达性的信息就是要到达某个网络所要经过的一系列AS

      当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各AS的较好路由。

    • BGP的工作原理

      • 每一个自治系统的管理员要选择至少一个路由器(可多个)作为该自治系统的"BGP发言人”

      • 一个BGP发言人与其他自治系统中的BGP发言人要交换路由信息,就要先建立TCP连接

      • 然后在此连接上交换BGP报文以建立BGP会话,再利用BGP会话交换路由信息

      • 当所有BGP发言人都相互交换网络可达性的信息后,各BGP发言人就可找出到达各个自治系统的比较好的路由

      BGP发言人交换路径向量

      自治系统AS2的BGP发言人通知主干网的BGP发言人:“要到达网络N1,N2,N3和N4可经过AS2。”主干网在收到这个通知后,就发出通知:“要到达网络N1,N2,N3和N4可沿路径(AS1,AS2)。”同理,主干网还可发出通知:“要到达网络N5,N6和N可沿路径(AS1,AS3)。”

    • BGP报文格式

    • 特点

      1)BGP协议交换路由信息的结点数量级是自治系统的数量级,比这些自治系统中的网络数少很多

      2)每一个自治系统中BGP发言人(或边界路由器)的数目是很少的,这样自治系统之间的路由选择不会很复杂

      3)BGP支持CIDR,BGP的路由表包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列

      4)在BGP刚运行时,BGP的邻站交换整个BGP路由表。但以后只需要在发生变化时更新有变化的部分

    • BGP-4的四种报文

      • 打开(Open)报文。用来与相邻的另一个BGP发言人建立关系。
      • 更新(Update)报文。用来发送某一路由的信息,以及列出要撤销的多条路由。
      • 保活(Keepalive)报文。用来确认打开报文并周期性地证实邻站关系。
      • 通知(Notification)报文。用来发送检测到的差错。

​ RIP、OSPF与BGP的比较如表所示。

协议RIPOSPFBGP
类型内部内部外部
路由算法距离-向量链路状态路径-向量
传递协议应用层 UDP网络层 IP应用层 TCP
路径选择跳数最少代价最低较好,非最佳
交换结点和本结点相邻的路由器网络中的所有路由器和本结点相邻的路由器
交换内容自己的整个路由表与本路由器相邻的所有路由器的链路状态首次:整个路由表
非首次:有变化的部分

4.3 IPv4

4.3.1 IPv4分组
  1. IPv4分组的格式

​ 一个IP分组由首部和数据部分组成。首部长度20B固定,后面有可选字段,长度可变。

  • 版本:指IP协议的版本,目前广泛使用的版本号为4。

  • 首部长度:单位是4B,最小为5,表示20B,最大是15,表示60B。

  • 区分服务:指示期望获得哪种类型的服务。

  • 总长度:首部+数据,单位是1B

  • 标识:16位,用于IP分片,同一数据报的分片使用同一标识。

  • 标志:3位,只有后两位有意义,中间位DF,DF=1,禁止分片;DF=0,允许分片。最低位MF,MF=1,后面“还有分片”;MF=0,代表最后一片/没分片。

  • 片偏移:指出较长分组分片后,某片在原分组中的相对位置;以8B位单位。除了最后一个分片,每个分片数据部分长度一定是8B的整数倍。

  • 生存时间(TTL):IP分组的保质期。经过一个路由器-1变成0则丢弃。

  • 协议:数据部分的协议,占8位。

    协议名ICMPIGMPTCPEGPIGPUDPIPv6ESPOSPF
    字段值1268917415089
  • 首部检验和:16位,只检验首部。

  • 源IP地址和目的IP地址:32位。

  • 可选字段:0~40B,用来支持排错测量以及安全等措施

  • 填充:全0,把首部补成4B的整数倍

总长度片偏移首部长度
长度1B8B4B
  1. IP数据报分片

最大传送单元(MTU):一个链路层数据报能承载的最大数据量。以太网的MTU是1500字节

​ 当IP数据报的总长度大于链路MTU时,就需要将IP数据报中的数据分装在多个较小的IP数据报中,这些较小的数据报称为。 片在目的地的网络层被重新组装。

​ IP分片利用首部的标识、标志和片偏移三部分完成。

  • 标识:创建IP数据报时,源主机为其加一个标识号,同一个数据报分片后,每片具有相同的标识。
  • 标志:共3位,只有后两位有意义,
    • 中间位DF(Don’t Fragment),DF=1,禁止分片;DF=0,允许分片。
    • 最低位MF(More Fragment),MF=1,后面“还有分片”;MF=0,代表最后一片/没分片。
  • 片偏移:指出数据报分片后某片在原分组中的相对位置,以8B位单位。除了最后一个分片,每个分片数据部分长度一定是8B的整数倍。

如上图所示,一个长4000B的IP数据报(首部20B,数据报部分3980B)到达路由器后,需要在以太网转发(MTU = 1500B)。需要将3980B数据分片,前2片,每片有效数据部分1480B,首部20B;后一片数据部分为1020B=(3980-1480-1480)B,首部20B。

每一片的DF都为0,表示都允许分片。前两片MF=1,表示并非最后一片;最后一片MF=0,表示为最后一片。

第一片片偏移为0,第二片片偏移为首位数据地址/8=1480/8=185;第三片片偏移=2960/8=370。

4.3.2 IPv4地址与NAT
  1. IPv4地址

    ​ 连接到因特网的每台主机都分配一个32比特的全球唯一标识符,即IP地址。IP地址由互联网名字和数字地址分配机构ICANN进行分配。

    IP地址由网络号和主机号组成。
    I P 地址 : : = { < 网络号 > , < 主机号 > } IP地址::=\{<网络号>,<主机号>\} IP地址::={<网络号>,<主机号>}
    网络号标志主机(或路由器)所连接到的网络。一个网络号在整个因特网唯一。

    主机号标志该主机(或路由器)自身。一台主机号在相同网络号范围是唯一的。

    ​ IPv4被分为了5类地址,分别适用于不同规模的网络。

    网络类型网络号用途
    A类前8位,第1位为0(1-126)用于大型网络
    B类前16位,前2位为10(128-191)用于中等规模网络
    C类前24位,前3位为110(192~223)用于小型网络
    D类开头1110(224-239)多播地址,用于向多个目标发送数据
    E类开头1111(240-255)保留地址,目前还没有被使用

    ​ 某些IP地址有着特殊用途,不能做主机IP地址。

    • 主机号全为0表示本网络本身,如202.98.174.0。
    • 主机号全为1表示本网络的广播地址,又称直接广播地址,如202.98.174.255。
    • 127.×.×.×保留为环回自检(Loopback Test)地址,此地址表示任意主机本身,目的地址为环回地址的P数据报永远不会出现在任何网络上。
    • 32位全为0,即0.0.0.0表示本网络上的本主机
    • 32位全为1,即255.255.255.255表示整个TCP/P网络的广播地址,又称受限广播地址。实际使用时,由于路由器对广播域的隔离,255.255.255.255等效为本网络的广播地址
    网络类别最大可用网络数第一个可用的网络号最后一个可用的网络号网络中最大主机数
    A27-21126224-2
    B214128.0191.255216-2
    C221192.0.0223.255.25528-2

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

    网络号主机号作为源地址作为目的地址用途
    全0全0可以不可以本网范围内表示主机,路由表中用于表示默认路由
    (表示整个Internet网络)
    全0特定值可以不可以表示本网内某个特定主机
    全1全1不可以可以本网广播地址(路由器不转发)
    特定值全0不可以不可以网络地址,表示一个网络
    特定值全1不可以可以直接广播地址,对特定网络上的所有主机进行广播
    127任何数
    非全0/1
    可以可以用于本地软件环回测试,称为环回地址

    IP地址特点

    • IP地址是一种分等级的地址结构。其好处如下:

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

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

    • IP地址是标志一台主机(或路由器)和一条链路的接口。

    当一台主机同时连接到两个网络时,该主机就必须同时具有两个相应的IP地址,每个IP地址的网络号必须与所在网络的网络号相同,且这两个IP地址的主机号是不同的。

    IP网络上的一个路由器必然至少应具有两个IP地址(路由器每个端口必须至少分配一个IP地址)。

    • 用网桥连接的若干LAN仍然是同一个网络(同一个广播域),因此该LAN中所有主机的IP地址的网络号必须相同,但主机号必须不同。

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

    • 在同一个局域网上的主机或路由器的IP地址中的网络号必须是一样的。

    由于广泛使用无分类IP地址进行路由选择,这种传统分类的IP地址已成为历史。

  2. 网络地址转换(NAT)

    网络地址转换(NAT)是指通过将专用网络地址(如Intranet)转换为公用地址(如Internet),从而对外隐藏内部管理的IP地址。其优势如下:

    • 它使得整个专用网只需要一个全球IP地址就可以与因特网连通。
    • 由于专用网本地IP地址是可重用的,所以NAT大大节省了IP地址的消耗。
    • 它隐藏了内部网络结构,从而降低了内部网络受到攻击的风险

    为了网络安全,划出了部分IP地址为私有IP地址。其特点如下:

    • 私有IP只用于LAN,不用于WAN连接。因此私有IP地址不能直接用于Internet,必须通过网关利用NAT把私有IP地址转换为Internet中合法的全球IP地址后才能用于Internet。

    • 私有IP地址被LAN重复使用。有效地解决了P地址不足的问题。

    私有IP地址网段如下:

    • A类:1个A类网段,即10.0.0.0~10.255.255.255。
    • B类:16个B类网段,即172.16.0.0~172.31.255.255。
    • C类:256个C类网段,即192.168.0.0~192.168.255.255。

    ​ 在因特网中的所有路由器,对目的地址是私有地址的数据报一律不进行转发。

    ​ 这种采用私有 IP地址的互联网络称为专用互联网本地互联网。私有IP地址也称可重用地址

    ​ 使用NAT时需要在专用网连接到因特网的路由器上安装NAT软件,NAT路由器至少有一个有效的外部全球IP地址。使用本地地址的主机和外界通信时,NAT路由器使用NAT转换表进行本地IP地址和全球IP地址的转换。

    ​ NAT转换表存放着 { 本地 I P 地址:端口 } \{本地IP地址:端口\} {本地IP地址:端口} { 全球 I P 地址:端口 } \{全球IP地址:端口\} {全球IP地址:端口}的映射。该端口号是逻辑上的端口。

    例,一个宿舍办理了电信宽带,拥有了一个全球IP:138.76.29.7;宿舍内4台主机有了私有地址:192.168.0.0网段。宿舍网关开启NAT功能,NAT表如上图所示。

    当路由器LAN端收到源IP为192.168.0.2,2233时,将其映射为138.76.29.7,5001,从WAN口发至因特网。

    当路由器从WAN端收到目的地址为138.76.29.7,5060的数据报时,将其映射成192.168.0.3,1234,然后从LAN端口发送给相应的本地主机。

NAT工作原理

  • ①假设用户主机10.0.0.1(随机端口3345)向Web服务器128.119.40.186(端口80)发送请求。
  • ②NAT路由器收到IP分组后,为该IP分组生成一个新端口号5001,将IP分组的源地址更改为138.76.29.7(即NAT路由器的全球IP地址),将源端口号更改为5001。NAT路由器在NAT转换表中增加一个表项。
  • ③Web服务器并不知道刚抵达的IP分组已被NAT路由器进行了改装,更不知道用户的专用地址,它响应的IP分组的目的地址是NAT路由器的全球IP地址,目的端口号是5001。
  • ④响应分组到达NAT路由器后,通过NAT转换表将IP分组的目的IP地址更改为10.0.0.1,将目的端口号更改为3345。

普通路由器在转发P数据报时,不改变其源P地址和目的P地址。而NAT路由器在转发IP数据报时,一定要更换其IP地址(转换源P地址或目的IP地址)。

普通路由器仅工作在网络层,而NAT路由器转发数据报时需要查看和转换传输层的端口号

4.3.3 子网划分与子网掩码、CIDR
  1. 子网划分

    由于两级IP地址有以下缺点,于是在IP增加子网号段

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

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

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

    子网划分:增加子网号段,使两级IP变成三级IP地址。基本思路如下:

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

    • 从主机号借位作为子网号;三级IP地址结构如下:
      I P 地址 = { < 网络号 > , < 子网号 > , < 主机号 > } IP地址=\{<网络号>,<子网号>,<主机号>\} IP地址={<网络号>,<子网号>,<主机号>}

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

    性质

    • 子网中的主机号为全0或全1的地址都不能被指派

    • 子网中的主机号全0的地址为子网的网络号,主机号全1的地址为子网的广播地址

  2. 子网掩码

    ​ 为了告诉主机或路由器对网络进行了子网划分,使用子网掩码来表达对原网络中主机号的借位

    子网掩码是一个与IP地址相对应的、长32bit的二进制串,它由一串1和跟随的一串0组成。1对应于IP地址中的网络号及子网号,而0对应于主机号。

    ​ 规定所有网络必需使用子网掩码,不划分采用默认子网掩码:

    • A类:255.0.0.0
    • B类:255.255.0.0
    • C类:255.255.255.0

    注意:

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

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

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

  3. 无分类编址CIDR

    无分类域间路由选择CIDR是在变长子网掩码的基础上提出的一种消除传统A、B、C类网络划分,并且可以在软件的支持下实现超网构造的一种IP地址的划分方法。 IP地址结构如下:
    I P : : = { < 网络前缀 > , < 主机号 > } IP::=\{<网络前缀>,<主机号>\} IP::={<网络前缀>,<主机号>}
    ​ CIDR地址块中的地址数一定是2的整数次幕,实际可指派的地址数通常为2N-2;N表示主机号的位数,主机号全0代表网络号,主机号全1为广播地址。

    CIDR记法:IP地址后加上“/”,然后写上网络前缀(可以任意长度)的位数。

    例如,对于128.14.32.5/20这个地址,它的掩码是20个连续的1和后续12个连续的0,通过逐位相“与”的方法可以得到该地址的网络前缀(或直接截取前20位):

    构成超网:将多个子网聚合成一个较大的子网,叫做构成超网,或路由聚合。

    ​ 路由聚合使得路由表中的一个项目可以表示多个原来传统分类地址的路由,有利于减少路由器之间的信息的交换,从而提高网络性能。

    ​ 方法:将网络前缀缩短(所有网络地址取交集)。

    例如,网络1的地址块是206.1.0.0/17;网络2的地址块是206.1.128.0/17。

    可以看出两个网络前16位相同,第17位分别是0和1,因此可以聚合成更大地址块206.1.0.0/16。

    如果不使用路由聚合,那么R1的路由表中需要分别有到网络1和网络2的路由表项。聚合后,到网络1和网络2的两条路由就可以聚合成一条到206.1.0.0/16的路由。

    最长前缀匹配:使用CIDR时,查找路由表可能得到几个匹配结果(跟网络掩码按位相与),应选择具有最长网络前缀的路由。前缀越长,地址块越小,路由越具体。

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

  4. 网络层转发分组的过程

​ 分组转发都是基于目的主机所在网络的,这是因为互联网上的网络数远小于主机数,可以极大地压缩转发表的大小。当分组到达路由器后,路由器根据目的IP地址的网络前缀来查找转发表,确定下一跳应当到哪个路由器。

​ 在转发表中,每条路由必须有下面两条信息:
( 目的地址,下一跳地址 ) (目的地址,下一跳地址) (目的地址,下一跳地址)
​ 这样,IP数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次间接交付),当到达最后一个路由器时,才试图向目的主机进行直接交付。

​ 采用CIDR编址时,如果一个分组在转发表中可以找到多个匹配的前缀,那么应当选择前缀最长的一个作为匹配的前缀,称为最长前缀匹配。

​ 为了更快地查找转发表,可以按照前缀的长短排序,将前缀最长的排在第1行,按前缀长度的降序排列。这样,从第1行最长的开始查找,只要检索到匹配的,就不必再继续查找。

​ 此外,转发表中还可以增加两种特殊的路由:

  • 主机路由:对特定目的主机的IP地址专门指明一个路由,以方便网络管理员控制和测试网络。若特定主机的IP地址是a.b.c.d,则转发表中对应项的目的网络是a.b.c.d/32。
    /32表示的子网掩码没有意义,但这个特殊的前缀可以用在转发表中。

  • 默认路由:用特殊前缀0.0.0.0/0表示默认路由,全0掩码和任何目的地址进行按位与运算,结果必然为全0,即必然和转发表中的0.0.0.0/0相匹配。只要目的网络是其他网络(不在转发表中),就一律选择默认路由。

    分组转发算法如下:

    1)从收到的IP分组的首部提取目的主机的IP地址D(即目的地址)。

    2)若查找到特定主机路由(目的地址为D),就按照这条路由的下一跳转发分组;否则从转发表中的下一条(即按前缀长度的顺序)开始检查,执行步骤3)。

    3)将这一行的子网掩码与目的地址D进行按位与运算。若运算结果与本行的前缀匹配,则查找结束,按照“下一跳”指出的进行处理(或者直接交付本网络上的目的主机,或通过指定接口发送到下一跳路由器)。否则,若转发表还有下一行,则对下一行进行检查,重新执行步骤3)。否则,执行步骤4)。

    4)若转发表中有一个默认路由,则把分组传送给默认路由;否则,报告转发分组出错。

4.3.4 ARP、DHCP与ICMP
  1. IP地址与硬件地址

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

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

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

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

    ​ 2)虽然在IP数据报首部中有源IP地址,但路由器只根据目的IP地址进行转发。

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

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

  2. 地址解析协议(ARP)

    ​ 无论网络层使用什么协议,在实际网络的链路上传送数据帧时,最终必须使用硬件地址

    ​ **地址解析协议(ARP)**作用是完成IP地址到MAC地址的映射。

    ARP表:局域网上各主机和路由器的IP地址到MAC地址的映射表,称ARP表。使用ARP来动态维护ARP表。

    工作原理

    • 主机A欲向本局域网上的某台主机B发送IP数据报时,先在其ARP高速缓存中查看有无主机B的IP地址。

      • 如果有,就可查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址。
      • 如果没有,那么就通过使用目的MAC地址为FFFF-FF-FF-FF-FF的帧来封装并广播ARP请求分组(广播发送),使同一个局域网里的所有主机都收到此ARP请求。
    • 主机B收到该ARP请求后,向主机A发出ARP响应分组(单播发送),分组中包含主机B的IP与MAC地址的映射关系,主机A收到ARP响应分组后就将此映射写入ARP缓存,然后按查询到的硬件地址发送MAC帧。

      ARP由于“看到了”IP地址,所以它工作在网络层,而NAT路由器由于“看到了”端口,所以它工作在传输层

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

    • 发送方是主机(如H1),要把IP数据报发送到本网络上的另一台主机(如H2)。这时H1在网1用ARP找到目的主机H2的硬件地址。
    • 发送方是主机(如H1),要把IP数据报发送到另一个网络上的一台主机(如H3)。这时H1用ARP找到与网1连接的路由器R1的硬件地址,剩下的工作由R1来完成。
    • 发送方是路由器(如R1),要把IP数据报转发到与R1连接的网络(网2)上的一台主机(如H3)。这时R1在网2用ARP找到目的主机H3的硬件地址。
    • 发送方是路由器(如R1),要把IP数据报转发到网3上的一台主机(如H4)。这时R1在网2用ARP找到与网2连接的路由器R2的硬件地址,剩下的工作由R2来完成。

    从IP地址到硬件地址的解析是自动进行的,主机的用户并不知道这种地址解析过程

  3. 动态主机配置协议(DHCP)

    动态主机配置协议(Dynamic Host Configuration Protocol, DHCP)常用于给主机动态分配IP地址

    工作原理应用层协议,使用客户/服务器方式,客户端和服务端通过广播方式进行交互,基于UDP

    • 1)需要IP地址的主机在启动时向DHCP服务器广播发送发现报文,这时该主机成为DHCP客户

    • 2)本地网络上所有主机都能收到此广播报文,但只有DHCP服务器才回答此广播报文。DHCP服务器先在其数据库中查找该计算机的配置信息

    • 3)若找到,则返回找到的信息。若找不到,则从服务器的IP地址池中取一个地址分配给该计算机。DHCP服务器的回答报文叫做提供报文

    ​ DHCP服务器与客户端交换过程

    • 1)DHCP客户机广播DHCP发现”消息,试图找到网络中的DHCP服务器,以便从DHCP服务器获得一个IP地址。源地址为0.0.0.0,目的地址为255.255.255.255。
    • 2)DHCP服务器收到“DHCP发现”消息后,广播DHCP提供”消息,其中包括提供给DHCP客户机的IP地址。源地址为DHCP服务器地址,目的地址为255.255.255.255。
    • 3)DHCP客户机收到“DHCP提供”消息,如果接受该IP地址,那么就广播“DHCP请求”消息向DHCP服务器请求提供IP地址。源地址为0.0.0.0,目的地址为255.255.255.255。
    • 4)DHCP服务器广播DHCP确认”消息,将IP地址分配给DHCP客户机。源地址为DHCP服务器地址,目的地址为255.255.255.255。
    客户端 服务器 DHCP发现 DHCP提供 DHCP请求 DHCP确认 客户端 服务器

    DHCP特点

    • DHCP允许网络上配置多台DHCP服务器,当DHCP客户机发出“DHCP发现”消息时,有可能收到多个应答消息。这时,DHCP客户机只会挑选其中的一个,通常挑选最先到达的。
    • DHCP服务器分配给DHCP客户的IP地址是临时的,因此DHCP客户只能在一段有限的时间内使用这个分配到的IP地址。DHCP称这段时间为租用期。租用期的数值应由DHCP服务器自己决定,DHCP客户也可在自己发送的报文中提出对租用期的要求。
    • DHCP的客户端和服务器端需要通过广播方式来进行交互,原因是在DHCP执行初期,客户端不知道服务器端的IP地址,而在执行中间,客户端并未被分配IP地址,从而导致两者之间的通信必须采用广播的方式。采用UDP而不采用TCP的原因也很明显:TCP需要建立连接,如果连对方的IP地址都不知道,那么更不可能通过双方的套接字建立连接。
    • DHCP是应用层协议,因为它是通过客户/服务器模式工作的,DHCP客户端向DHCP服务器请求服务,而其他层次的协议是没有这两种工作方式的。
  4. 网际控制报文协议(ICMP)

    网际控制报文协议(Internet Control Message Protocol,ICMP)提高IP数据报交付成功的机会。

    ​ ICMP是网络层协议。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。

    ​ ICMP分为两类,即ICMP差错报告报文ICMP询问报文

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

      ICMP差错报告报文可分为以下5类:

      • 终点不可达。当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。
      • 源点抑制。当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文。
      • 时间超过。当路由器收到生存时间(TTL)为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。
      • 参数问题。当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
      • 改变路由(重定向)。路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。

      ICMP差错报告报文格式如下:

      ​ 把收到的需要进行差错报告的IP数据报首部数据字段的前8个字节提取出来,作为ICMP报文的数据字段。再加上相应的ICMP差错报告报文的前8个字节,就构成了ICMP差错报告报文

      ​ 提取收到的数据报的数据字段前8个字节是为了得到运输层的端口号(对于TCP和UDP)以及运输层报文的发送序号(对于TCP)。

      ​ 整个ICMP报文作为IP数据报的数据字段发送给源点。

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

      • 1)对ICMP差错报告报文不再发送ICMP差错报告报文。
      • 2)对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文。
      • 3)对具有组播地址的数据报都不发送ICMP差错报告报文。
      • 4)对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文。
    • ICMP询问报文:共有以下几类,常用的是前两类。

      • 回送请求和回答报文:主机或路由器向特定目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。测试目的站是否可达以及了解其相关状态
      • 时间戮请求和回答报文:请主机或路由器回答当前的日期和时间。用来进行时钟同步和测量时间。
      • 掩码地址请求和回答报文
      • 路由器询问和通告报文

      PING:测试两个主机之间的连通性,使用了ICMP回送请求和回答报文。工作在应用层。

      Traceroute: 跟踪一个分组从源点到终点的路径, 使用了ICMP时间超过差错报告报文; 工作在网络层。

协议工作层次功能
ARP网络层IP到MAC地址的映射
DHCP应用层;基于UDP;客户/服务器模式动态分配IP地址
ICMP网络层;基于IP检测网络连通性和故障诊断

4.4 IPv6

4.4.1 IPv6的主要特点
  1. 解决IP地址耗尽问题措施有以下三种:

    • ①采用无类别编址CIDR,使IP地址的分配更加合理;
    • ②采用网络地址转换(NAT)方法以节省全球IP地址;
    • ③采用具有更大地址空间的新版本的IPv6。

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

  2. IPv6特点如下:

    • 1)更大的地址空间。IPv6将地址从IPv4的32位增大到了128位。IPv6的字节数(16B)是IPv4字节数(4B)的平方。
    • 2)扩展的地址层次结构。
    • 3)灵活的首部格式。
    • 4)改进的选项。
    • 5)允许协议继续扩充。
    • 6)支持即插即用(即自动配置)。
    • 7)支持资源的预分配。
    • 8)IPν6只有在包的源结点才能分片,是端到端的,传输路径中的路由器不能分片,所以从一般意义上说,IPv6不允许分片(不允许类似IPv4的路由分片)。
    • 9)IPv6首部长度必须是8B的整数倍,而IPv4首部是4B的整数倍。
    • 10)增大了安全性。身份验证和保密功能是PV6的关键特征。
  3. IPv6数据报格式

    IPv6数据报由两大部分组成,即基本首部(base header)和后面的有效载荷(payload)。

    有效载荷允许有零个或多个扩展首部(extension header),再后面是数据部分。但所有的扩展首部并不属于IPv6数据报的首部。

    与IPv4的首部区别有:

    • 取消了首部长度字段,因为它的首部长度是固定的(40字节)。
    • 取消了服务类型字段,因为优先级和流标号字段实现了服务类型字段的功能。
    • 取消了总长度字段,改用有效载荷长度字段。
    • 取消了标识、标志和片偏移字段,因为这些功能已包含在分片扩展首部中。
    • 把TTL字段改称为跳数限制字段,但作用是一样的(名称与作用更加一致)。
    • 取消了协议字段,改用下一个首部字段。
    • 取消了检验和字段,这样就加快了路由器处理数据报的速度。我们知道,在数据链路层对检测出有差错的帧就丢弃。在运输层,当使用UDP时,若检测出有差错的用户数据报就丢弃。当使用TCP时,对检测出有差错的报文段就重传,直到正确传送到目的进程为止。因此在网络层的差错检测可以精简掉。
    • 取消了选项字段,而用扩展首部来实现选项功能。

    把首部字段不必要功能取消后,使得IPv6首部字段减少到8个,首部结构如下。

    • 版本:指明了协议版本,字段是6。

    • 通信量类:区分数据报的类别和优先级。

    • 流标号:“流”是互联网络上从特定源点到特定终点的一系列数据报。所有属于同个流的数据报都具有同样的流标号。

    • 有效载荷长度:指明数据报扩展首部加数据长度,最大值是64K。

    • 下一个首部:有扩展首部时,标识下一个扩展首部;没有扩展首部时,指出数据应交付的上层协议。

    • 跳数限制:相当于IPv4的TTL,最大为255。

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

    每个扩展首部都由若干个字段组成,它们的长度也各不同。但所有扩展首部的第一个字段都是8位的“下一个首部”字段。此字段的值指出了在该扩展首部后面的字段是什么。当使用多个扩展首部时,应按以上的先后顺序出现。高层首部总是放在最后面。

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

    • 单播。单播就是传统的点对点通信。
    • 多播。多播是一点对多点的通信,分组被交付到一组计算机的每台计算机。
    • 任播。这是Pν6增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一台计算机,通常是距离最近的一台计算机。
  2. IPv6地址表示

    ​ 在IPV6标准中指定了一种比较紧凑的表示法,即把地址中的每4位用一个十六进制数表示,并用冒号分隔每16位,如4BF5:AA12:0216:FEBC:BA5F:039A:BE9A:2170。

    ​ 当16位域的开头有一些0时,可以采用一种缩写表示法,但在域中必须至少有一个数字。例如,可以把地址4BF5:0000:0000:0000:BA5F:039A:000A:2176缩写为4BF5:0:0:0:BA5F:39A:A:2176。

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

  3. IPv6分级

    IPv6扩展了IPv4地址的分级概念,为了使路由器能够更快地查找路由。它使用以下3个等级:

    • 第一级(顶级)指明全球都知道的公共拓扑
    • 第二级(场点级)指明单个场点
    • 第三级指明单个网络接口
  4. IPv4向IPv6过渡

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

    ​ 过渡方法有以下两种:

    • 双栈协议:双协议栈技术就是指在一台设备上同时启用IPv4协议栈和IPv6协议栈。这样的话,这台设备既能和IPv4网络通信,又能和IPv6网络通信。

      如果这台设备是一个路由器,那么这台路由器的不同接口上,分别配置了IPv4地址和IPv6地址,并很可能分别连接了IPv4网络和IPv6网络。

      如果这台设备是一个计算机,那么它将同时拥有IPv4地址和IPv6地址,并具备同时处理这两个协议地址的功能。

    • 隧道技术

      通过使用互联网络的基础设施在网络之间传递数据的方式。使用隧道传递的数据(或负载)可以是不同协议的数据顿或包。隧道协议将其它协议的数据顿或包重新封装然后通过隧道发送

4.5 IP组播

4.5.1 组播的概念

​ 为了能够支持像视频点播和视频会议这样的多媒体应用,网络必须实施某种有效的组播机制。

组播:是让源计算机一次发送的单个分组可以抵达用一个组地址标识若干目标主机,并被它们正确接收。

​ 组播基于UDP协议。当主机想利用组播将单个数据发送给一组主机,源主机把数据发给一个组播地址,组播地址可以标识一组地址。网络把这个数据的副本投递给该组中的每台主机。主机可以同时属于多个组。

​ 在IPv4中,每个组播组都有一个D类地址,要给该组发送的计算机使用这个地址作为目标地址。

​ 主机使用**IGMP(因特网组管理协议)**加入组播组。

​ 主机组播时仅发送一份数据,只有数据在传送路径出现分岔时才将分组复制后继续转发。因此,对发送者而言,数据只需发送一次就可发送到所有接收者,大大减轻了网络的负载和发送者的负担。组播需要路由器的支持才能实现,能够运行组播协议的路由器称为组播路由器

4.5.2 IP组播地址

​ IP组播使用D类地址格式。D类地址的前四位是1110,因此D类地址范围是224.0.0.0~239.255.255.255。每个D类IP地址标志一个组播组。

  • 特点:

    1)组播数据报也是“尽最大努力交付”,不提供可靠交付,应用于UDP。

    2)组播地址只能用于目的地址,不能用于源地址

    3)对组播数据报不产生ICMP差错报文。若在PING命令后面键入组播地址,将永远不会收到响应

    4)并非所有的D类地址都可作为组播地址

  • IP组播可以分为两种:

    • 一种只在本局域网上进行硬件组播
    • 另一种则在因特网的范围内进行组播

    在因特网上进行组播的最后阶段,还是要把组播数据报在局域网上用硬件组播交付给组播组的所有成员。

  • 硬件组播

    ​ 组播IP地址也需要相应的组播MAC地址在本地网络中实际传送帧。IANA拥有的以太网组播MAC地址的范围是从01-00-5E-00-00-00到01-00-5E-7F-FF-FF。不难看出,在每个地址中,只有23位可用作组播。这只能和D类IP地址中的23位有一一对应关系。

    ​ D类IP地址可供分配的有28位,可见在这28位中,前5位不能用来构成以太网的硬件地址,如图所示。

    ​ 收到多播数据报的主机,还要在IP层利用软件进行过滤,把不是本主机要接收的数据报丢弃。

4.5.3 IGMP与组播路由算法
  1. IGMP网际组管理协议 网络层协议 基于IP

    • 目的:IGMP协议让组播路由器知道本局域网上是否有主机(的进程)参加或退出了某个组播组。

    • 工作阶段:

      • 1、某主机要加入组播组,向组播地址发送IGMP报文,声明自己要加入组播

        本地组播路由器收到报文,转发给因特网其他组播路由器

      • 2、本地组播路由器周期性探询本地局域网上的主机,以便知道这些主机是否还是组播组的成员。

        只要有一个主机对某个组响应,那么组播路由器就认为这个组是活跃的;如果经过几次探询后没有一个主机响应,组播路由器就认为本网络上的没有此组播组的主机,因此就不再把这组的成员关系发给其他的组播路由器。

      组播路由器知道的成员关系只是所连接的局域网中有无组播组的成员。

  2. 组播路由选择协议

    • 目的:组播路由选择协议目的是找出以源主机为根节点的组播转发树

    • 组播转发树

      • 组播路由协议目的是找出以源主机为根节点的组播转发树。

      • 构造树可以避免在路由器之间兜圈子。

      • 在组播转发树上的路由器不会收到重复的组播数据报

      • 对不同的多播组对应于不同的多播转发树;同一个多播组,对不同的源点也会有不同的多播转发树。

    • 算法:

      • 基于链路状态的路由选择
      • 基于距离-向量的路由选择
      • 协议无关的组播(PIM)

4.6 移动IP

4.6.1 移动IP的概念
  1. 定义

    移动IP技术是指移动站以固定的网络IP地址实现跨越不同网段的漫游功能,并保证基于网络IP的网络权限在漫游过程中不发生任何改变。移动IP的目标是把分组自动地投递给移动站

  2. 移动IP定义了三种功能实体:移动节点、本地代理(也称归属代理)和外地代理。

    • 移动节点:具有永久IP地址的移动站。
    • 归属代理(本地代理):通常就是连接在归属网络(原始连接到的网络)上的路由器。
    • 永久地址(归属地址/主地址):移动站点在归属网络中的原始地址。
    • 外部代理(外地代理):通常就是连接在被访网络(移动到另一地点所接入的网络)上的路由器。
    • 转交地址(辅地址):可以是外部代理的地址或动态配置的一个地址。
4.6.2 移动IP通信过程
  1. 移动IP相关概念的应用

    ​ 在移动IP中,每个移动站都有一个原始地址,即永久地址(或归属地址)移动站原始连接的网络称为归属网络。永久地址和归属网络的关联是不变的。归属代理通常是连接到归属网络上的路由器,然而它实现的代理功能是在应用层完成的。

    ​ 当移动站移动到另一地点,所接入的外地网络也称被访网络。被访网络中使用的代理称为外地代理,它通常是连接在被访网络上的路由器

    ​ 外地代理有两个重要功能:①要为移动站创建一个临时地址,称为转交地址。转交地址的网络号显然和被访网络一致。②及时把移动站的转交地址告诉其归属代理

    ​ 用一个通俗的例子来描述移动IP的通信原理。例如,在以前科技不那么发达的年代,本科毕业时都将走向各自的工作岗位。由于事先并不知道自己未来的准确通讯地址,那么怎样继续和同学们保持联系呢?实际上也很简单。彼此留下各自的家庭地址(即永久地址)。毕业后若要和某同学联系,只要写信寄到该同学的永久地址,再请其家长把信件转交即可。

  2. 移动IP通信过程

    • A刚进入外部网络:
      • 1.获得外部代理转交地址(外部代理广播报文)。
      • 2.移动节点通过外部代理发送注册报文归属代理(包含永久地址&转交地址)。
      • 3.归属代理接收请求,并将移动节点的永久地址和转交地址绑定(以后到达该归属代理的数据报且要发往移动节点的数据报将被封装并以隧道方式发给转交地址),并返回一注册响应报文。
      • 4.外部代理接收注册响应,并转发给移动节点。
    • A移动到了下一个网络:
      • 1.在新外部代理登记注册一个转交地址。
      • 2.新外部代理给本地代理发送新的转交地址(覆盖旧的)
      • 3.通信
    • A回到了归属网络:
      • 1.A向本地代理注销转交地址
      • 2.按原始TCP/IP方式通信。

4.7 网络层设备

4.7.1 冲突域和广播域
  1. 冲突域

    冲突域是指连接到同一物理介质上的所有结点的集合,这些结点之间存在介质争用的现象。

    在OSI参考模型中,冲突域被视为第1层概念,像集线器、中继器等简单无脑复制转发信号的第1层设备所连接的结点都属于同一个冲突域,也就是说它们不能划分冲突域。而第2层(网桥、交换机)、第3层(路由器)设备都可以划分冲突域。

  2. 广播域

    广播域是指接收同样广播消息的结点集合。也就是说,在该集合中的任何一个结点发送一个广播帧,其他能收到这个帧的结点都被认为是该广播域的一部分。

    在OSI参考模型中,广播域被视为第2层概念,像第1层(集线器等)、第2层(交换机等)设备所连接的结点都属于同一个广播域。而路由器,作为第3层设备,则可以划分广播域,即可以连接不同的广播域。

    通常所说的局域网(LAN)特指使用路由器分割的网络,也就是广播域。

4.7.2 路由器的组成和功能
  1. 定义

    ​ 路由器是一种具有多个输入输出端口的专用计算机,其任务是连接不同的网络(连接异构网络)并完成路由转发。在多个逻辑网络(即多个广播域)互连时必须使用路由器。

  2. 路由器转发

    • 当源主机要向目标主机发送数据报时,路由器先检查源主机与目标主机是否连接在同一个网络上。
    • 如果源主机和目标主机在同一个网络上,那么直接交付而无须通过路由器。
    • 如果源主机和目标主机不在同一个网络上,那么路由器按照转发表(路由表)指出的路由将数据报转发给下一个路由器,这称为间接交付。
  3. 路由器结构

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

    • 路由选择:根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表

    • 交换结构:根据转发表(路由表得来)对分组进行转发

    • 分组转发:若收到RIP/OSPF分组等,则把分组送往路由选择处理机;若收到数据分组,则查找转发表并输出

    • 输入端口:输入端口中的查找和转发功能在路由器的交换功能中是最重要的。当一个分组正在查找转发表时,后面又紧跟着从这个输入端口收到另一个分组。

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

      路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。

4.7.3 路由表与路由转发

​ 路由表根据路由选择算法得出的,主要用途是路由选择,总用软件来实现。

​ 标准的路由表有4个项目:目的网络IP地址、子网掩码、下一跳IP地址、接口。

​ 上图为一个简单的网络拓扑,R1的路由表如下图所示。

​ 转发表由路由表得来,可以用软件实现,也可以用特殊的硬件来实现。转发表必须包含完成转发功能所必需的信息,在转发表的每一行必须包含从要到达的目的网络到输出端口和某些MAC地址信息的映射。

​ 为了减少转发表的重复项目,可以使用一个默认路由代替所有具有相同“下一跳” 的项目,并将默认路由设置得比其他项目的优先级低,如下图所示。

  • 转发和路由选择的区别
    • “转发”是路由器根据转发表把收到的P数据报从合适的端口转发出去,它仅涉及一个路由器。
    • “路由选择”则涉及很多路由器,路由表是许多路由器协同工作的结果。这些路由器按照复杂的路由算法,根据从各相邻路由器得到的网络拓扑的变化情况,动态改变所选择的路由,并由此构造出整个路由表。

注意,在讨论路由选择的原理时,往往不去区分转发表和路由表的区别,但要注意路由表不等于转发表。分组的实际转发是靠直接查找转发表,而不是直接查找路由表。

本文标签: 知识点王道计算机网络网络