计算机网络第四章网络层

4.1网络层提供的服务

电信网的成功经验让网络负责可靠交付

  • 面向连接的通信方式
  • 建立虚电路(Virtual Circuit),以保证双方所需的一切网络资源
  • 如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点
虚电路服务


发送给的所有分组都沿着同一条虚电路传送

虚电路是逻辑连接
  • 虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接
  • 电路交换的电话通信是先建立了一条真正的连接。因此分组交换的连接和电路交换的连接只是类似,但并不完全一样
因特网采用的设计思路
  • 网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据数据报服务。
  • 网络在发送分组时不需要先建立连接。每一个分组(即IP数据报)独立发送,与其前后的分组无关(不进行编号)。
  • 网络层不提供服务质量的承诺。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限。
尽最大努力交付的好处
  • 由于传输网络不提供端到端的可靠性传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)
  • 如果主机(即端系统)中的进程之间的通信需要时可靠地,那么就由网络的主机中的运输城负责(包括差错处理、流量控制等)
  • 采用这种设计思路的好处;网络的造价大大降低,运行方式灵活,能够适应多种应用
  • 因特网能够发展到今日的规模,充分证明了当初采用这种设计思路的正确性

数据报服务


发送给的分组可能沿着不同路径传送

对比的方面 虚电路服务 数据报服务
思路 可靠通信应当由网络来保证 可靠通信应当由用户主机
连接的建立 必须有 不需要
终点地址 仅在连接建立阶段使用,每个分组使用短的虚电路号 每个分组都有终点的完整地址
分组的转发 主语同一条虚电路的分组均按照同路由进行转发 每个分组独立选择路由进行转发
当结点出故障时 所有通过故障的结点的虚电路均不能工作 出故障的结点可能会丢失分组,一些路由进行转发
分组的顺序 总是按照发送顺序到达终点 到达终点时不一定按发送顺序
端到端的差错处理和流量控制 可以由网络负责,也可以由用户主机负责 由用户主机负责

4.2网际协议IP

  • 网际协议IP是TCP/IP体系总两个最主要的协议之一。与IP协议配套使用的还有四个协议:
  • 地址解析协议ARP(Address Resolution Protocol)
  • 逆地址解析协议RARP(Reverse Address Resolution Protocol)
  • 网际控制报文协议ICMP(Internet Control Message Protocol)
  • 网际组管协议IGMP(Internet Group Management Protocol)
网际层的IP协议及配套协议

4.2.1虚拟互连网络

互连在一起的网络要进行通信,会遇到许多问题需要结局,如:

  • 不同的寻址方案
  • 不同的最大分组长度
  • 不同的网络接入机制
  • 不同的超时控制
  • 不同的差错恢复方法
  • 不同的状态报告方法
  • 不同的路由选择技术
  • 不同的用户接入控制
  • 不同的服务(面向连接服务和无连接服务)
  • 不同的管理与控制方式
网络互相连接起来要使用一些中间设备

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

  • 物理层中继系统:转发器(repeater)
  • 数据链路层中继系统:网桥或桥接器(bridge)
  • 网络层中继系统:路由器(router)
  • 网桥和路由器非混合物:桥路器(brouter)
  • 网络层以上的中继系统:网关(gateway)
网络互连使用路由器
  • 当中继系统是转发器或网桥时,一般并不称之为网络互连,因为这仅仅是把一个网络扩大了,而这仍然是一个网络
  • 网关由于比较复杂,目前使用得较少
  • 互联网都是指用路由去进行互连的网络
  • 由于历史的原因,许多有关TCP/IP的文献将网络层使用的路由器称为网关
互连网络与虚拟互连网络
虚拟互连网络的意义
  • 所谓虚拟互联网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用IP协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络
  • 使用IP协议的虚拟互连网络可简称为IP网
  • 使用虚拟互连网络的好处:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节
数据报在互联网中的传送

如果我们只从网络层看IP数据报的传送问题,那么数据报就可以想象是在挽留过层中传送

4.2.2分类的IP地址

1.IP地址及其表示方法
  • 整个因特网就是一个单一的、抽象的网络,IP地址就是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围的唯一32位标识符
  • IP地址现在由因特网名字与号码指派公司ICANN(Internet Corporation for Assigned Names andNumbers)进行分配
IP地址的编址方法
  • 分类的IP地址。这是最基本的编址方法,在1981年就通过了相应的标准协议
  • 子网的划分。这是对最基本的编址方法的改进,其标准[RFC 950]在1985年通过
  • 构件超网。这是比较新的无分类编址方法。1993年提出后很快就得到了推广应用
分类IP地址
  • 每一类地址都由两个固定长度的字段组成,其中一个字段是网络号(net-id),它标志主机(或路由器)所连接到网络,而另一个字段则是主机号(host-id),它标志该主机(或路由器)。
  • 两级IP地址可以记为:
    IP ::= { }
IP地址中的网络号字段和主机号字段
  • A类地址的网络号字段 net-id 为1字节
  • B类地址的网络号字段 net-id 为2字节
  • C类地址的网络号字段 net-id 为3字节
  • A类地址的主机号字段 host-id 为3字节
  • B类地址的主机号字段 host-id 为2字节
  • C类地址的主机号字段 host-id 为1字节
  • D类地址是多播地址
  • E类地址保留至今使用
点分十进制记法
2.常用的三种类别的IP地址
网络类别 最大网络数 第一个可用的网络号 最后一个可用的网络号 每个网络中最大的主机数
A 1 126 16,777,214
B 128.1 191.255 65534
C 192.0.1 223.255.255 254
IP地址的一些重要特点

(1)IP地址是一种分等级的地址结构。分两个等级的好处是:

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

(2)实际上IP地址是标志一个主机(或路由器)和一条链路的接口

  • 当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络号net-id必须是不同的。这种主机称为多归属主句(multihomed host)
  • 由于一个路由器至少应当连接到两个网络(这样它才能将IP数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的IP地址
    (3)用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号net-id
    (4)所有分配到网络号 net-id 的网络,范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的
互联网中的IP地址
  • 在同一个局域网上的主机或路由器的IP地址中的网络号(net-id)必须是一样的
  • 路由器总是具有两个或两个以上的IP地址。路由器的每一个接口都有一个不同网络号的IP地址
  • 两个路由直接相连的接口处,可指明也可不指明IP地址。如指明IP地址,则这一段连线就构成了一种只包含一段线路的特殊“网络”。现在长不指明IP地址
4.2.3IP地址与硬件地址
从协议栈的层次上看数据流动
从虚拟的IP层上看IP数据报的流动
在链路层看MAC帧的流动
  • 在IP层抽象的互联网上只能看到IP数据,->表示从源地址到目的地址
  • 两个路由器的IP地址并不出现在IP数据报的首部中,路由器只根据目的站的IP地址的网络号进行路由选择
  • 在具体的物理网络的链路层只能看见MAC帧而看不见IP数据报
  • IP层抽象的互联网屏蔽了下层很复杂的细节,在抽象的网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机和主机之间的通信。
4.2.5地址解析协议ARP和逆地址解析协议RARP
地址解析协议ARP
  • 不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址
  • 每一个主机都设有一个ARP高速缓存(ARP cache),里面有所在的局域网上的个主机和路由器的IP地址到硬件地址的映射表。
  • 当主机A欲向本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入MAC帧,然通过局域网将该MAC帧发往此硬件地址


ARP高速缓存的作用
  • 为了减少网络上的通信量,主机A在发送其ARP请求分组时,就将自己的IP地址到硬件地址的映射写入ARP请求分组。
  • 当主机B收到A的ARP请求分组时,就将主机A的这一地址映射写入主机B自己的ARP高速缓存中。这对主机B以后向A发送数据报时就更方便了
应当注意的问题
  • ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。
  • 如果所要找的主机和源主机不在同一局域网上,那么就要通过ARP找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。
  • 从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。
  • 只要主机或路由器要和本网络上的另一个已知IP地址的主机或路由器进行通信,ARP协议就会自动将该IP地址解析为链路层所需要的硬件地址
使用ARP的四种典型情况
  • 发送方式主机,要把IP数据报发送到本网络上的另一个主机。这时用ARP找到目的主机的硬件地址。
  • 发送方是主机,要把IP数据报发送到另一个网络上的一个主机。这时用ARP找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成
  • 发送方是路由器,要把IP数据报转发到本网络上的一个主机,这时用ARP找到目的主机的硬件地址。
  • 发送方是路由器,要把IP数据报转发到另一个网络上的一个主机,这时用ARP找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成
为什么我们不直接使用硬件地址进行通信?
  • 由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事。
  • 连接到因特网上的主机都拥有同一的IP地址,它们之间的通信就像连接在同一网络上那样简单方便,因为调用ARP来寻找某个路由器或主机的硬件地址都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。
逆地址解析协议RARP
  • 逆地址解析协议RARP使只知道自己硬件地址的主机能够知道其IP地址
  • 这种主机往往是无盘工作站。因此RARP协议目前已很少使用

4.2.5 IP数据报的格式

  • 一个IP数据报由首部和数据两部分组成
  • 首部的前一部分是固定长度,共20个字节,是所有IP数据报必须具有的
  • 在首部的固定部分的后面是一些可选字段,其长度是可变的
1.IP数据报首部的固定部分的各字段
  • 版本 —— 占4位,指IP协议的版本,目前的IP协议版本号为4(即IPV4)

  • 首部长度——占4位,可表示的最大数值是15个单位(一个单位为4字节),因此IP的首部长度的最大值是60字节

  • 区分服务——占8位,用来获得更好的服务,在旧版本中叫服务类型,但实际上一直未被使用过。1998年这个字段改名为区分服务。只有在使用区分服务(DiffServ)时,这个字段才起作用。在一般的情况下都不使用这个字段

  • 总长度——占16位指首部和数据之和的长度,单位为字节,因此数据报的最大长度为65535字节。总长度必须不超过最大传送单元MTU。

  • 标识(identification)——占16位,它是一个计数器,用来产生数据报的标识

  • 标志(flag)——占3位,目前只有前两位有意义。标志字段的最低位是MF(More Fragment)。MF=1标识后面“还有分片”。MF=0标识最后一个分片。标志字段中间的一位是DF(Don‘t Fragment),只有当DF=0时菜允许分片。

  • 片偏移 ——占12位,指出较长的你分组在分片后某片在原分组中的相对位置。片偏移以8个字节为偏移单位。

  • 生存时间——占8位,记为TTL(Time To Live),数据报在网络中可通过路由器数的最大值

  • 协议——占8位,指出此数据报携带的数据使用何种协议以便目的主机的IP层将数据部分上交给哪个处理过程


  • 首部校验和——占16位,只检验数据报的首部,不检验数据部分。这里不采用CRC校验码而采用简单的计算方法。


  • 源地址和目的地址各占4个字节

2.数据报首部的可变部分
  • IP首部的可变部分就是一个选项字段,用来支持拍错、测量以及安全等措施,内容很丰富。
  • 选项字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目
  • 增加首部的可变部分是为了增加IP数据报的功能,但这同时也使得IP数据报的首部长度称为可变的。这就增加了每一个路由器处理数据报的开销
  • 实际上这些选项很少被使用

4.2.6IP层转发分组的流程

  • 有四个A类网络通过三个路由器连接在一起。每一个网络上都可能有成千上万个主机
  • 可以想象,若按目的主机号来制作路由表,则所得出的路由表就会过于哦昂达
  • 但若按主机所在的网络地址来制作路由表,那么每一个路由器中的路由表就只包含4个项目。这样就可使路由表大大简化
查找路由表

根据目的网络地址就能确定下一跳路由器,这样做的结果是:

  • IP数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次间接交付)
  • 只有到达最后一个路由器时,才试图向目的主机进行直接交付
特定主机路由
  • 这种路由是为特定的目的主机指明一个路由
  • 采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由
默认路由
  • 路由器还可采用默认路由以减少路由表所占用的空间和搜索路由表所用的时间
  • 这种转发方式在一个网络只有很少的对外连接时是很有用的
  • 默认路由在主机发送IP数据报时往往更能显示出它的好处
  • 如果一个主机连接在一个小网络上,而这个网络只用一个路由器和因特网连接,那么在这猴子那个情况下使用默认路由是非常合适的


只要目的网络不是和,就一律选择默认路由,把数据报先间接交付路由器,让再转发给下一个路由器

必须强调指出

  • IP数据报的首部中没有地方可以用来指明“下一跳路由器的IP地址”
  • 当路由器收到带转发的数据报,不是讲下一跳路由器的IP地址填入IP数据报,而是送交给下层网络接口软件
  • 网络接口软件使用ARP负责将下一跳路由器的IP地址转换成硬件地址,并将此硬件地址放在链路层的MAC帧的首部,然后根据这个硬件地址找到下一跳路由器
分组转发算法
  • (1)从数据报的首部提取目的主机的IP地址D,得出目的网络地址为N
  • (2)若网络N与此路由器直接相连,则把数据直接交付目的主机D;否则是间接交付,执行(3)
  • (3)如路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)
  • (4)若路由表中有到达网络N的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)
  • (5)若路由器中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)
  • (6)报告转发分组出错

4.3划分子网和构造超网

4.3.1划分子网

1.从两级IP地址到三级IP地址
  • 在ARPANET的早期,IP地址的设计确实不够合理
    • IP地址空间的利用率有时很低
    • 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏
    • 两级的IP地址不够灵活
三级IP地址
  • 从1985年起在IP地址中又增加了一个“子网号字段”,使两级的IP地址变成三级的IP地址
  • 这种做法叫做划分子网(subnetting)。划分子网已成为因特网的正式标准协议
划分子网的基本思路
  • 划分子网纯属一个单位内部的事情。单位对外仍然表现出没有划分子网的网络
  • 从主机号借用若干个位作为子网号subnet-id,而主机号host-id也就相应减少了若干位
    IP地址 ::= {<子网号>,<子网号>,<子网号>}
  • 凡是从其他网络发送给本单位某个主机的IP数据报,仍然是根据IP数据报的目的网络号net-id,先找到连接在本单位网络上的路由器
  • 然后此路由器在收到IP数据报后,再按目的网络号net-id和子网号subnet-id找到目的子网
  • 最后就将IP数据报直接交付给目的主机
划分子网后变成了三级结构
  • 当没有划分子网时,IP地址是两级结构
  • 划分子网后IP地址就变成了三级结构
  • 划分子网只是把IP地址的主机号host-id这部分进行再划分,而不改变IP地址原来的网络号net-id
2.子网掩码
  • 从一个IP数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分
  • 使用子网掩码(subnet mask)可以找出IP地址中的子网部分
IP地址的各字段和子网掩码
(IP地址)AND(子网掩码)= 网络地址
默认子网掩码
子网掩码是一个重要属性
  • 子网掩码是一个网络或一个子网的重要属性
  • 路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器
  • 路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码
  • 若一个路由器连接在两个子网上就拥有两个网络地址和两个子网掩码

4.3.2使用子网掩码的分组转发过程

  • 在不划分子网的两级IP地址下,从IP地址得出网络地址是个很简单的事
  • 但在划分子网的情况下,从IP地址却不能唯一地得出网络地址来,这是因为网络地址取决于那个网络所采用的子网掩码,但数据报的首部并没有提供子网掩码的信息
  • 因此分组转发的算法也必须做出响应的改动
在划分子网的情况下路由器转发分组的算法

(1)从收到的分组的首部提取目的IP地址D
(2)先从各网络的子网掩码和D逐位相“与”,看是否和相应的网络地址匹配。若匹配,则将分组直接交付。否则就是间接交付,执行(3)
(3)若路由表中有目的地址为D的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行(4)
(4)对路由表中的每一行的子网掩码和D逐位相“与”,若其结果与该行的目的网络地址匹配,则将分组传送给该行的下一跳路由器;否则,执行(5)
(5)若路由表中有一个默认路由,则将分组穿传送给路由表中所指明的默认路由器,否则,执行(6)
(6)报告转发分组出错

例题,已知互联网路由器中的路由表。主机向发送分组。试讨论收到向发送的分组后查找路由表的过程





4.3.3无分类编址CIDR

1.网络前缀

划分子网在一定程度上缓解了因特网在发展中遇到的困难。然而在1992年因特网仍然面临三个必须尽早解决的问题这就是:

  • B类地址在1992年已分配完毕
  • 因特网主干网上的路由表中的项目数急剧增长(从几千个增长到几万个)
  • 整个IPv4的地址空间最终全部耗尽
IP编址问题的演进
  • 1987年,RFC1009就指明了在一个划分子网的网络中可同时使用几个不同的子网掩码。使用变长子网掩码VLSM(Variable Length Subnet Mask)可进一步提高IP地址资源的利用率
  • 在VLSM的基础上又进一步研究出无分类编址方法,它的正式名字是无分类域间路由选择CIDR(Classess Inter-Domain Routing)
CIDR最主要的特点
  • CIDR消除了传统的A类、B类和C类地址以及划分子网的换概念,因而可以更加有效地分配IPv4的地址空间
    CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号
  • IP地址从三级编址(使用子网掩码)又回到了两级编址
无分类的两级编址
  • 无分类的两级编址的记法是:
    IP地址 ::= {<网络前缀>,<主机号>}

  • CIDR还使用“斜线记法”(slash notation),它又称为CIDR记法,即在IP地址面加上一个斜线“/”,然后写上网络前缀所占的位数(这个数值对应于三级编址中子网掩码中1的个数)

  • CIDR把网络前缀都相同的连续的IP地址组成CIDR地址块

CIDR地址块
  • 128.14.32.0/20表示的地址块共有个地址(因为斜线后面的20是网络前缀的位数,所以这个地址的主机号是12位)
  • 这个地址块的起始位置是128.14.32.0
  • 在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/20地址块”
  • 128.14.32.0/20地址块的最小地址:128.14.32.0
  • 128.14.32.0/20地址块的最大地址:128.14.47.255
  • 全0和全1的主机号地址一般不使用


路由聚合(router aggregation)
  • 一个CIDR地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个)原来的传统分类地址的路由
  • 路由聚合也称为超网(supernetting)
  • CIDR虽然不使用子网了,但让然使用“掩码”这一名词(但不叫子网掩码)
  • 对于/20地址块,它的掩码是20个连续的1.斜线记法中的数字就是掩码中1的个数
CIDR记法的其他形式
  • 10.0.0.0/10可简写为10/10,也就是把点分十进制中地位连续的0省略
  • 10.0.0.0/10隐含地指出IP地址10.0.0.0的掩码是255.192.0.0.此掩码可表示为掩码中 有10个连续的1,即11111111 11000000 00000000 00000000
  • 网络前缀的后面加一个星号的表示方法,如00001010 00,在星号之前是网络前缀,而星号表示IP地址中的主机号,可以是任意值
构成超网
  • 前缀长度不超过23位的CIDR地址块都包含多个C类地址
  • 这些C类地址合起来就构成了超网
  • CIDR地址块中的地址数一定是2的整数次幂
  • 网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网是使网络前缀变长
CIDR地址块划分举例

这个ISP共有64个C类网络。如果不采用CIDR技术,则在与该ISP的路由器交换路由信息的每一个路由器的路由表中,就需要有64个项目。但采用地址聚合后,只需要路由聚合后的1个项目206.0.64.0/18就能找到该ISP

2.最长前缀匹配
  • 使用CIDR时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果
  • 应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配(longest-prefix matching)
  • 网络前缀越长,其地址块就越小,因而路由就越具体(more specific)
  • 最长前缀匹配又称为最长匹配或最佳匹配
最长前缀匹配举例

收到的分组的目的地址D=206.0.71.128,路由表中的项目:206.0.68.0/22(ISP)、206.0.71.128/25(四系)




3.使用二叉线索查找路由表
  • 当路由表的项目数很大时,怎么设法减小路由表的查找时间就成为一个非常重要的问题
  • 为了进行更有效的查找,通常是将无分类编址的路由表放在一种层次的数据结构中,然后自上而下地按层次进行查找。这里最常用的就是二叉线索(binary trie)
  • IP地址中从左到右的比特值决定了从根结点逐层向下层延伸的路径,而二叉线索中的各个路径就代表路由表中存放的各个地址
  • 为了提高二叉线索的查找速度,广泛使用了各种压缩技术
用5个前缀构成的二叉线索

4.4网际控制报文协议ICMP

  • 为了提高IP数据报交付成功地机会,在网际层使用了网际控制报文协议ICMP
  • ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告
  • ICMP不是高层协议,而是IP层的协议
  • ICMP报文作为IP层数据报的护具,加上数据报的首部,组成IP数据报发送出去
ICMP报文的格式
ICMP报文的类型
  • ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文

  • ICMP报文的前4个字节是同一的格式,共有三个字段:即类型、代码和校验和。接着4个字节的内容与ICMP的类型有关

  • 差错报告报文有五种:终点不可达,源点抑制(source quench),时间超过,参数问题,改变路由(重定向)(redirect)

  • 询问报文有两种:回送请求和回答报文,时间戳请求和回答报文

  • 信息请求与回答报文,掩码地址请求和回答报文,路由器询问和通告报文不再使用


ICMP差错报告报文的数据字段内容
不应发送ICMP差错报告的几种情况
  • 对ICMP差错报告不再发送ICMP差错报告报文
  • 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
  • 对具有多播地址的数据报都不发送ICMP差错报告报文
  • 对具有特殊地址(127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文

4.2.2 ICMP的应用举例

PING(Packet InterNet Groper)
  • PING用来测试两个主机之间的连通性
  • PING使用了ICMP回送请求与回送回答报文
  • PING是应用层直接使用网络层ICMP的例子,它没有通过运输层的TCP或UDP

4.5因特网的路由选择协议

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

1.理想的路由算法
  • 算法必须是正确的和完整的
  • 算法在计算上应简单
  • 算法应能适应通信量和网络拓扑的变化,这就是说,要有自适应性
  • 算法应是具有稳定性
  • 算法应是公平的
  • 算法应是最佳的
关于“最佳路由”
  • 不存在一种绝对的最佳路由算法
  • 所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已
  • 实际的路由选择算法,应尽可能接近于理想的算法
  • 路由选择是个非常复杂的问题
    • 它是网络中的所有结点共同协调工作的结果
    • 路由选择的环境往往是不断变化的,而这种变化有时无法事先知道
从路由算法的自适应性考虑
  • 静态路由选择策略——即非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化
  • 动态路由选择策略——即自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销比较大
2.分层次的路由选择协议
  • 因特网采用分层次的路由选择协议
  • 因特网的规模非常大。如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,处理起来也太花时间。而所有这些路由器之间交换信息所需的带宽就会使因特网的通信链路饱和
  • 许多单位不愿意外界了解自己单位网络的布局细节和本部门所采用的路由协议(这属于本部门内部的事情),但同时还希望连接到因特网上
自治系统AS(Autonomous System)
  • 自治系统AS的定义:在单一的技术管理下的一组路由器,而这些路由器使用一种AS内部的路由选择协议和共同的度量以确定分组在该AS内的路由,同时还使用一种AS之间的路由选择协议用以确定分组在AS之间的路由
  • 现在对自治系统AS的定义是强调下面的事实:尽管一个AS使用了多种内部路由选择协议和度量,但重要的是一个AS对其他AS表现出的是一个单一的和一致的路由选择策略
因特网有两大路由选择协议
  • 内部网关协议IGP(Interior Gateway Protocol)即在一个自治系统内部使用的路由选择协议。目前这类路由选择协议使用得最多,如RIP和OSPF协议
  • 外部网关协议EGP(External Gateway Protocol)若源站和目的站处在不同的自治系统中,当数据报传送到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议EGP。在外部网关协议中目前使用最多的是BGP-4
自治系统和内部网关协议、外部网关协议
image.png

自治系统之间的路由选择也叫做域间路由选择(Interdomain routing)
在自治系统内部的路由选择叫做域内路由选择(Interdomain routing)

两点
  • 因特网的早期RFC文档中未使用“路由器”而是使用“网关”这一名词。但是在新的RFC文档中又使用了“路由器”这一名词。应当把这两个属于当作同义词
  • IGP和EGP是协议类别的名称。但RFC在使用EGP这个名词时出现了一点混乱,因为最j一个外部网关协议的协议名字正好也是EGP。因此在遇到名词EGP时,应当弄清它时指旧的协议还是指外部网关协议EGP这个类别

内部网关协议IGP:具体的协议有多种,如RIP和OSPF等
外部网关协议EGP:目前使用的协议就是BGP

4.5.2内部网关协议RIP(Routing Information Protocol)

1.工作原理
  • 路由信息协议RIP是内部网关协议IGP中最先得到广泛使用的协议
  • RIP是一种分布式的基于距离向量的路由选择协议
  • RIP新协议要求网络中的每一个路由器都 要维护从它自己 到其他每一个目的目的网络的距离记录
“距离”的定义
  • 从一路由器到直接连接的网络的距离定义位1
  • 从一个路由器到非直接连接的网络的距离定义为所经过路由器数加1
  • RIP协议中的“距离”也称为“跳数”(hop count),因为没经过一个路由器,跳数就加1
  • 这里的“距离”实际指的是“最短距离”
  • RIP认为一个好的路由就是它通过的路由器的数目少,即“距离短”
  • “距离”的最大值为16时即相当于不可达。可见RIP只适用i于小型互联网
  • RIP不能在两个网络之间同时使用多条路由。RIP选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由
RIP协议的三个要点
  • 仅和相邻路由器交换信息
  • 交换的信息是当前本路由器所知道的全部信息,即自己的路由表
  • 按固定的时间间隔交换路由信息,例如,每隔30秒
路由表的建立
  • 路由器在刚刚开始工作时,只知道到直接连接的网络的距离(此距离定义为1)
  • 以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息
  • 经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址
  • RIP协议的收敛(convergence)过程较快,即在自治系统中所有的结点都得到正确的路由选择信息的过程
2.距离向量算法

收到相邻路由器(其地址为X)的一个RIP报文:
(1)先修改此RIP报文中的所有项目:把下一跳字段中的地址都改为X,并把所有的“距离”字段的值加1
(2)对修改后RIP报文中的每一个项目,重复以下步骤:
若项目中的目的e网络不在路由表中,则把该项目加到路由表中。
否则若下一跳字段给出的路由器地址时=是同样的,则把收到的项目替换原路由表中的项目
否则若收到项目中的距离小于路由表中的距离,则进行更新,>否则什么也不做
(3)若3分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为16(距离为16表示不可达)
(4)返回

路由器之间交换信息
  • RIP协议让互联网中所有的路由器都和自己相邻路由器不断交换路由信息,并不断更新其路由表,使得从每一个路由器到每一个目的网络的路由都是最短的(即跳数最少)
  • 虽然所有的路由器最终都拥有了整个自治系统的全局路由信息,但由于每一个路由器的位置不同,它们的路由表当然也应该是不同的
3 .RIP2 协议报文格式
RIP2 b的报文由首部和路由部分组成
  • RIP2 报文中的路由部分由若干个路由信息组成。每个路由信息需要20个字节。地址族标识符(又称为地址类别)字段用来标志所使用的地址协议
  • 路由标记填入自治系统的号码,这是考虑使RIP有可能收到本自治系统以外的路由选择信息。再后面指出某个网络地址、该网络的子网掩码、下一跳路由器以及到此网络的距离
RIP协议的优缺点
  • RIP存在的一个问题是当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器
  • RIP协议最大的优点就是实现简单,开销较小
  • RIP限制了网速的规模,它能使用的最大距离为15(16不可表达)
  • 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加

[图片上传失败...(image-5107e0-1561480127014)]




  • 这就是好消息传播得快,而快消息传播得慢。网络出故障得传播时间往往需要较长得时间(例如数分钟)。这是RIP的一个主要缺点

4.5.3 内部网关协议OSPF(Open Shortest Path First)

1.OSPF协议的基本特点
  • “开放”表明OSPF协议不是受某一家厂商控制,而是公开发表的
  • “最短路径优先”是因为使用了Dijkstra提出的最短路径算法SPF
  • OSPF只是一个协议的名字,它并表示其他的路由选择协议不是“最短路径优先”
  • 是分布式的链路状态协议
三个要点
  • 向本自治系统中所有路由器发送信息,这里使用的方法就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息
    • “链路状态”就是说明本路由器和哪些路由器相邻,以及该链路的“度量”(metric)
  • 只有当链路状态发生变化时,路由器才用洪泛法向所有的路由器发送此信息
链路状态数据库(link-state database)

由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库

  • 这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)
  • OSPF的链路状态数据库能较快地进行更新,使各个路由器能及时 更新其路由表。OSPF地更新过程收敛得快是其重要优点
OSPF的区域
  • 为了使OSPF能够用于规模很大得网络,OSPF将一个自治系统再划分为若干个更小得范围,叫作区域
  • 每一个区域都有一个32位得区域标识符(用于点分十进制表示)
  • 区域也不能太大,在一个区域内得路由器最好不超过200个
OSPF划分位两种不同的区域
划分区域
  • 划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少了整个网络上的通信量
  • 在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况
  • OSPF使用层次结构的区域划分。在上层的区域叫作主干区域(backbone area)。主干区域的标识符规定为0.0.0.0.主干区域的作用是用来连通其他在下层的区域
主干路由器
区域边界路由器

)

OSPF直接用IP数据包传送
  • OSPF不用UDP而是直接用IP数据包传送
  • 构成的数据包很短。这样做可减少路由信息的通信量
  • 数据包很短的另一个好处是可以不必将长的的数据报分片传送。分片传送的数据包只要丢失一个,就无法组装成原来的数据报,而整个数据报必须重传
OSPF的其他特点
  • OSPF对不同的链路可根据IP分组的不同服务类型TOS而设置成不同的代价。因此,OSFPF对于不同类型的业务可计算出不同的路由
  • 如果到同一个目的网络有多条相同代价的路径,那么可以将信号量分配给这几条路径。这叫作多路径间的负载平衡
  • 所有在OSPF路由器之间交换的分组都具有鉴别的功能
  • 支持可变长度的子网划分和无分类编址CIDR
  • 每一个链路状态都带上一个32位的序号,序号越大状态就越新
OSPF分组
2. OSPF的五种分组类型
  • 类型1,问候(Hello)分组
  • 类型2,数据库描述(Database Description)分组
  • 类型3,链路状态请求(Link State Update)分组
  • 类型4,链路状态更新(LInk State Update)分组,用洪泛法对全网更新链路状态
  • 类型5,链路状态确认(Link State Acknowledgment)分组
OSPF的基本操作
OSPF使用的是可靠的洪泛法
OSPF的其他特点
  • OSPF还规定每隔一段时间,如30分钟,要刷新一次数据库中的链路状态
  • 由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF协议要比距离向量协议RIP好得多
  • OSPF没有“坏消息传播得很慢得”问题,据统计,其响应网络变化得时间小于100ms
指定得路由器(designated router)
  • 多点接入得局域网采用了指定得路由器得方法,使广播得信息量大大减少
  • 指定得路由器代表该局域网上所有得链路向连接到该网络上得各路由器发送状态信息

4.5.4 外部网关协议BGP

  • BGP是不同自治系统得路由器之间交换路由信息得协议
  • BGP较新版本是2006年1月发表得BGP-4(BGP第四个版本),即RFC 4271~4278
  • 可以将BGP-4简写位BGP
BGP使用得环境却不同
  • 因特网得规模太大,使得自治系统之间路由选择非常困难。对于自治系统之间得路由选择,要寻找最佳路由是很不现实得
    • 当一条路径通过几个不同得AS时,要想对这样得路径计算出有意义得代价是不太可能的
    • 比较合理的做法是在AS之间交换“可达性”信息
  • 自治系统之间的路由选择必须考虑有关策略
  • 因此,边界网关协议BGP只能时力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由
BGP 发言人(BGP speaker)
  • 每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人”
  • 一般来说,两个BGP发言人都是通过一个共享网络连接在一起的,而BGP发言人往往就是BGP边界路由器,但也可以不是BGP边界路由器
BGP 交换路由信息
  • 一个BGP发言人与其他自治系统中的BGP发言人要交换路由信息,就要先建立TCP连接,然后在此连接上交换BGP报文以建立BGP会话,利用BGP会话交换路由信息
  • 使用TCP连接能提供可靠的服务,也简化了路由选择协议
  • 使用TCP连接交换路由信息的两个BGP发言人,彼此称为对方的邻站或对等站
BGP发言人和自治系统AS的关系
AS的连通图举例
  • BGP所交换的网络可达性的信息就是要到达某个网络所要经过的一系列AS
  • 当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从接到的路由信息中找出到达各AS的较好路由
BGP 发言人交换路径向量
  • 自治系统的 BGP发言人通知主干网络的BGPfayanren :“要到达网络,,和可经过00”

主干网还发出通知:要到达,和可延路径(,)

BGP协议的特点
  • BGP协议交换路由信息的结点数量级时自治系统的量级,这要比这些自治系统中的网络数少很多
  • 每一个自治系统中BGP发言人(或边界路由器)的数目是很少的。这样就使得自治系统之间的路由选择不致过分复杂
  • BGP支持CIDR,因此BGP的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列
  • 在BGP刚刚运行时,BGP的邻站是交换整个的BGP路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销方面很有好处
BGP-4 共使用四种报文

(1)打开(OPEN)报文,用来与相邻的另一个BGP发言人建立关系
(2)更新(UPDATE)报文,用来发送某一路由的信息,以及理出要撤销的多条路由
(3)保活(KEEPLIVE)报文,用来确认打开报文和周期性地证实邻站关系
(4)通知(NOTIFICATION)报文,用来发送检测到地差错

  • 在RFC 2918中增加了ROUTE-REFRESH报文,用来请求对等端重新通告
BGP报文具有通用的首部

4.5.6 路由器在网际互连中的作用

1.路由器的结构
  • 路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。也就是说,将路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器
  • 下一跳路由器也按照这种方法处理分组,知道该分组到达终点为止
典型的路由器的结构
“转发”和“路由选择”的区别
  • “转发”(forwarding)就是路由器根据转发表将用户的IP数据报从合适的端口转发出去
  • “路由选择”(routing)则是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化的情况,动态地改变所选择地路由
  • 路由表是根据路由选择算法得出的。而转发表是从路由表得出地
  • 在讨论路由选择地原理时,往往不去区分转发表和路由表地区别
输入端口对线路上收到地分组地处理
  • 数据链路层剥去帧首部和尾部后,将分组送到网络层地队列中排队等待处理。这会产生一定地时延


输出端口将交换结构传送来的分组发送到线路
  • 当交换结构传过来的分组先进行缓存。数据链路层处理模块将分组加上链路层的首部和尾部,交给物理层后发送到外部线路
分组丢弃
  • 若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减小到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃
  • 路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因
2.交换结构

4.6多播

4.6.1 IP多播的基本概念

多播可明显地减少网络中资源地消耗
IP多播地一些特点

(1)多播使用组地址——IP使用D类地址支持多播。多播地址只能用于目的地址,而不能用于源地址
(2)永久组地址——由因特网号码指派管理局IANA负责指派
(3)动态地组成员
(4)使用硬件进行多播

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

  • 因特网号码指派管理局IANA拥有地以太网地址块高24位为00-00-5E
  • 因此TCP/IP协议使用地以太网多播地址块地范围是:从00-00-5E-00-00-00到00-00-5E-FF-FF-FF
  • D类地址可供分配地有28为,在这28为中地前5为不能用来构成以太网硬件地址
D类IP地址与以太网多播地址映射关系

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

1.IP多播需要两种协议
  • 为了使路由器知道多播组成员的信息,需要利用网际组管理协议IGMP(Internet Group Management Protocol)
  • 连接在局域网上的多播路由器还必须和因特网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组成员。这就需要使用多播路由选择协议
IGMP使多播路由器知道多播组成员信息
IGMP的本地使用范围
  • IGMP并非在因特网范围内对所有多播组成员进行管理的协议
  • IGMP不知道IP多播组包含的成员数,也不知道这些成员都分布在哪些网络上
  • IGMP协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机(严格讲,是主机上的某个进程)参加或退出了某个多播组
多播路由选择协议比单播路由选择协议复杂得多
  • 多播转发必须动态地适应多播组成员的变化(这时网络拓扑并未发生变化)。请注意,单播路由选择通常是在网络拓扑发生变化时才需要更新路由
  • 多播路由器在转发多播数据报时,不能仅仅根据多播数据报中的目的地址,而是还要考虑这个多播数据报从什么地方来和要到什么地方去
  • 多播数据报可以由没有加入多播组的主机发出,也可以通过没有组成员接入的网络
2.网际组管理协议 IGMP
  • 1989年公布的RFC 1112(IGMPv1)早已成为了因特网的标准协议
  • 1997年公布的RFC 2236(IGMPv2。建议标准)对IGMPv1进行了更新
  • 2002年10月公布了RFC 3376(IGMPv3,建议标准),宣布RFC 2236(IGMPv2)是陈旧的
IGMP是整个网际协议IP的一个组成部分
  • 和ICMP相似,IGMP使用IP数据报传递其报文(即IGMP报文加上IP首部构成IP数据报),但它也向IP提供服务
  • 因此,我们不把IGMP看成是一个单独的协议,而是属于整个网际协议IP的一个组成成分
IGMP可分为两个阶段
  • 第一阶段:当某个主机加入新的多播组时,该地址应向多播组的多播地址发送IGMP报文,声明自己要成为改组的成员。本地的多播路由器收到IGMP报文后,将组成员关系转发给因特网上其他多播路由器
  • 第二阶段:因为组成员关系是动态地,因此本地多播路由器要周期性地探寻本地局域网上的主机,以便知道这些主机是否还继续是组的成员
  • 只要对某个组有一个主机响应,那么多播路由器就认为这个组是活跃的
  • 但一个组在经过几次的探寻后仍然没有一个主机响应,则不再将改组的成员关系转发给其他的多播路由器
IGMP采用的一些具体措施
  • 在主机和多播路由器之间的所有通信都是使用IP多播
  • 多播路由器在探询组成员关系时,只需要对所有的组发送一个请求信息的询问报文,而不需要对每一个组发送一个询问报文。默认的询问速率是没125秒发送一次
  • 当同一个网络上连接有几个多播路由器时,它们能够迅速和有效地选择其中的一个来探寻主机的成员关系
  • 在IGMP的询问报文中有一个数值N,它指明一个最长响应时间(默认值为10秒)。当收到询问时,主机在0到N之间随机选择发送响应需经过的时延。对应于最小时延的响应最先发送
  • 同一组内的每一个主机都要监听响应,只要有本组的其他主机先发送了响应,自己就可以不再发送响应了
3.多播路由选择
  • 多播
  • 路由选择协议尚未标准化
  • 一个多播组中的成员是动态变化的,随时会有主机加入或离开这个多播组
  • 多播路由选择实际上就是要找出以源主机为根结点的多播转发树
  • 在多播转发树上的路由器不会受到重复的多播数据报
  • 对不同的多播组对用不同的多播转发树。同一个多播组,对不同的源点也会有不同的多播转发树
转发多播数据报使用的方法

(1)洪泛与剪除

  • 这种方法适合较小的多播组,而所有的组成员接入的局域网也是想邻接的
  • 一开始,路由器转发多播数据报备用洪泛的方法(这就是广播)。为了避免兜圈子,采用了叫做反向路径广播ROB(Reverse Path Broadcasting)的策略
PRB的要点
  • 路由器收到多播数据报时,先检查是否从源点最短路径传送来的
  • 若是,就向所有其他方向转发刚才收到的多播数据报(但进入方向除外),否则就丢弃而不转发
  • 若果存在几条同样长度的最短路径,那么只能选择一条最短路径,选择的准则就是看这几条最短路径中的相邻路由器谁的IP地址最小
PRB和剪除

(2)隧道技术


(3)基于核心的发现技术

  • 这种方法对于多播组的大小在较大范围内变化时都适合
  • 这种方法是对每一个多播组G指定一个核心路由器,给出它的IP单播地址
  • 核心路由器按照前面讲过的方法创建出对应于多播组G的转发树
几种多播路由的选择协议

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

4.7.1虚拟专用网VPN

  • 本地地址——仅在机构内部使用的IP地址,可以由本机构自行分配,而不需要向因特网的管理机构申请
  • 全球地址——全球唯一的IP地址,必须向因特网的管理机构申请
RFC 1918指明的专用地址
用隧道技术实现虚拟专用网
内联网intranet和外联网extranet(都是基于TCP/IP协议)
远程接入VPN
  • 在外地工作的员工拨号接入因特网,而驻留在员工PC机中的VPN软件可在员工的PC机和公司的主机之间建立VPN隧道,因而外地员工与公司通信的内容是保密的,员工感到使用的好像就是公司内部的本地网络

4.7.2 网络地址转换NAT

  • 网络地址转换NAT方法于1994年提出
  • 需要在专用网连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球地址
  • 所有使用本地地址的主机和外界通信时都要是在NAT路由器上将其地址转换成才能和因特网连接
网络地址转换过程
  • 内部主机X用本地地址和因特网上的主机Y通信所发送的数据必须经过NAT路由器
  • NAT路由器将数据报的源地址转换成全球地址,但目的地址保持不变,然后发送到因特网
  • NAT路由器收到主句Y发回的数据报时,知道数据报中的源地址是而目的主机是
  • 根据NAT转换表,NAT路由器将目的主机转换为,转发给最终的内部主机X

557

https://wenku.baidu.com/view/99fe72f0a6c30c2258019ed6.html?from=search

你可能感兴趣的:(计算机网络第四章网络层)