目录
Ⅳ.地址解析协议ARP(Address Resolution Protocol)
②转发等价类FEC(Forwarding Equivalence Class)
1.网络层提供的两种服务
- 在计算机网络领域,网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”)曾引起了长期的争论。
- 争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统?
Ⅰ.—种观点:让网络负责可靠交付
- 这种观点认为,应借助于电信网的成功经验,让网络负责可靠交付,计算机网络应模仿电信网络,使用面向连接的通信方式。
- 通信之前先建立虚电路(Virtual Circuit),以保证双方通信所需的一切网络资源。
- 如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点,不丢失、不重复。
虚电路服务
发送给
的所有分组都沿着同一条虚电路传送
虚电路是逻辑连接
- 虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接。
- 请注意,电路交换的电话通信是先建立了一条真正的连接。
- 因此分组交换的虚连接和电路交换的连接只是类似,但并不完全一样。
Ⅱ.另一种观点:网络提供数据报服条
- 互联网的先驱者提出了一种崭新的网络设计思路。网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
- 网络在发送分组时不需要先建立连接。每一个分组(即IP数据报)独立发送,与其前后的分组无关(不进行编号)。
- 网络层不提供服务质量的承诺。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限。
尽最大努力交付
- 由于传输网络不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)。
- 如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责可靠交付(包括差错处理、流量控制等)。
- 采用这种设计思路的好处是:网络的造价大大降低,运行方式灵活,能够适应多种应用。
- 互连网能够发展到今日的规模,充分证明了当初采用这种设计思路的正确性。
数据报服务
发送给
的分组可能沿着不同路径传送
虚电路服务与数据报服务的对比
虚电路服务与数据报服务的对比 对比的方面 虚电路服务 数据报服务 思路 可靠通信应当由网络来保证 可靠通信应当由用户主机来保证 连接的建立 必须有 不需要 终点地址 仅在连接建立阶段使用,每个分组使用短的虚电路号 每个分组都有终点的完整地址 分组的转发 属于同一条虚电路的分组均按照同一路由进行转发 每个分组独立选择路由进行转发 当结点出故障时 所有通过出故障的结点的虚电路均不能工作 出故障的结点可能会丢失分组,一些路由可能会发生变化 分组的顺序 总是按发送顺序到达终点 到达终点时不一定按发送顺序 端到端的差错处理和流量控制 可以由网络负责,也可以由用户主机负责 由用户主机负责
2.网际协议IP
▲ 网际协议IP是TCP/IP体系中两个最主要的协议之一。
▲ 与IP协议配套使用的还有三个协议:
- 地址解析协议ARP (Address Resolution Protocol)
- 网际控制报文协议ICMP (Internet Control Message Protocol)
- 网际组管理协议IGMP (Internet Group Management Protocol)
网际层的IP协议及配套协议
Ⅰ.虚拟互连网络
将网络互连并能够互相通信,会遇到许多问题需要解决,如:
- 不同的寻址方案
- 不同的最大分组长度
- 不同的网络接入机制
- 不同的超时控制
- 不同的差错恢复方法
- 不同的状态报告方法
- 不同的路由选择技术
- 不同的用户接入控制
- 不同的服务(面向连接服务和无连接服务)
- 不同的管理与控制方式等
如何将异构的网络互相连接起来?
①使用一些中间设备进行互连
■ 将网络互相连接起来要使用一些中间设备。
■ 中间设备又称为中间系统或中继(relay)系统。
■ 有以下五种不同的中间设备:
- 物理层中继系统:转发器(repeater)。
- 数据链路层中继系统:网桥或桥接器(bridge)。
- 网络层中继系统:路由器(router)。
- 网桥和路由器的混合物:桥路器(brouter)。
- 网络层以上的中继系统:网关(gateway)。
②使用路由器
- 当中继系统是转发器或网桥时,一般并不称之为网络互连,因为这仅仅是把一个网络扩大了,而这仍然是一个网络。
- 网关由于比较复杂,目前使用得较少。
- 网络互连都是指用路由器进行网络互连和路由选择。
- 由于历史的原因,许多有关TCP/IP的文献将网络层使用的路由器称为网关。
互连网络与虚拟互连网络
虚拟互连网络的意义
- 所谓虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用IP协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络。
- 使用IP协议的虚拟互连网络可简称为IP网。
- 使用虚拟互连网络的好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节。
- 如果在这种覆盖全球的IP网的上层使用TCP协议,那么就是现在的互联网(Internet)。
互联网可以由多种异构网络互连组成。
从网络层看IP数据报的传送
- 如果我们只从网络层考虑问题,那么IP数据报就可以想象是在网络层中传送。
Ⅱ.分类的IP地址
■ 在TCP/IP体系中,IP地址是一个最基本的概念。
■ 本部分重点学习:
- IP地址及其表示方法
- 常用的三种类别的IP地址
①IP地址及其表示方法
我们把整个因特网看成为一个单一的、抽象的网络。
地址就是给每个连接在互联网上的主机(或路由器)分配一个在全世界范围是唯一的32位的标识符。
地址现在由互联网名字和数字分配机构ICANN (Internet Corporation for AssignedNames and Numbers)进行分配。
IP地址的编址方法
- 分类的IP地址。这是最基本的编址方法,在1981年就通过了相应的标准协议。
子网的划分。这是对最基本的编址方法的改进,其标准[RFC 950]在1985年通过。
构成超网。这是比较新的无分类编址方法。1993年提出后很快就得到推广应用。
分类IP地址
- 将lP地址划分为若干个固定类。
- 每一类地址都由两个固定长度的字段组成,其中一个字段是网络号net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号host-id,它标志该主机(或路由器)。主机号在它前面的网络号所指明的网络范围内必须是唯一的。
- 由此可见,一个IP地址在整个互联网范围内是唯一的。
- 这种两级的P地址结构如下:
- 这种两级的IP地址可以记为:
各类IP地址的网络号字段和主机号字段
IPv4的特殊地址-私有地址/内部地址
■ IETF分别从A、B、C三类地址中取出一段地址范围保留用作内部网络地址,它们分别是:
10.0.0.0 ~10.255.255.255
172.16.0.0~172.31.255.255
192.168.0.0~192.168.255.255
■ 这些地址范围是专门用来标识内部网络的,不能用来访问Internet,因为Internet上路由器不会转发目标地址在上述三个范围内的数据包。
■ 使用:ipconfig 查看本机的IPv4地址
点分十进制记法
举例:
②常用的三种类别的IP地址
IP地址的指派范围 网络类别 最大可指派的网络数 第一个可指派的网络号 最后一个可指派的网络号 每个网络中最大主机数 A 126( -2)
1 126 16777214 B 16383( -1)
128.1 191.255 65534 C 2097151( -1)
192.0.1 223.255.255 254
一般不使用的特殊的IP地址
网络号 主机号 源地址使用 目的地址使用 代表的意思 0 0 可以 不可 在本网络上的本主机(见6.6DHCP协议) 0 host-id 可以 不可 在本网络上的某台主机host-id 全1 全1 不可 可以 只在本网络上进行广播(各路由器均不转发) net-id 全1 不可 可以 对net-id上的所有主机进行广播 127 非全0或全1的任何数 可以 可以 用作本地软件环回测试之用
IP地址的一些重要特点
⑴ IP地址是一种分等级的地址结构。分两个等级的好处是:
- 第一,IP地址管理机构在分配IP地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配,这样就方便了IP地址的管理。
- 第二,路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。
⑵ 实际上IP地址是标志一个主机(或路由器)和一条链路的接口。
- 当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络号net-id必须是不同的。这种主机称为多归属主机(multihomed host)。
- 由于一个路由器至少应当连接到两个网络(这样它才能将I数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的IP地址。
⑶ 用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号net-id.
⑷ 所有分配到网络号net-id的网络,无论是范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的。
在同一个局域网上的主机或路由器的P地址中的网络号必须是一样的。图中的网络号就是P地址中的net-id
- 路由器总是具有两个或两个以上的IP地址。
- 路由器的每一个接口都有一个不同网络号的P地址。
两个路由器直接相连的接口处,可指明也可不指明IP地址。如指明IP地址,则这一段连线就构成了一种只包含一段线路的特殊“网络”。现在常不指明IP地址。
Ⅲ.IP地址与硬件地址
■ IP地址与硬件地址是不同的地址。
■ 从层次的角度看,
- 硬件地址(或物理地址)是数据链路层和物理层使用的地址。
- IP地址是网络层和以上各层使用的地址,是一种逻辑地址(称IP地址是逻辑地址是因为IP地址是用软件实现的)。
IP地址与硬件地址的区别
IP地址放在IP数据报的首部,而硬件地址则放在MAC帧的首部。
通信的路径: →经过
转发→再经过
转发→
在IP层抽象的互联网上只能看到IP数据报。图中的 →
表示从源地址
到目的地址
。两个路由器的IP地址并不出现在IP数据报的首部中。
路由器只根据目的站的P地址的网络号进行路由选择。
在链路上看MAC帧的流动
在具体的物理网络的链路层只能看见MAC帧而看不见IP数据报
IP层抽象的互联网屏蔽了下层很复杂的细节。
在抽象的网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机和主机或主机和路由器之间的通信。
主机
与
通信中使用的IP地址与硬件地址HA
在网络层写入IP数据报首部的地址 在数据链路层写入MAC帧首部的地址 源地址 目的地址 源地址 目的地址 从 到
从 到
从 到
Ⅳ.地址解析协议ARP(Address Resolution Protocol)
■ 通信时使用了两个地址:
- IP地址(网络层地址)
- MAC地址(数据链路层地址)
地址解析协议ARP 的作用
已经知道了一个机器(主机或路由器)的IP地址,找出其相应的硬件地址
ARP作用:从网络层使用的P地址,解析出在数据链路层使用的硬件地址。
地址解析协议ARP要点
■ 不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。
■ 每一个主机都设有一个ARP高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的IP地址到硬件地址的映射表。
<lP address ; MAC address ;TTL> TTL (Time To Live):地址映射有效时间。
■ 当主机A欲向本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。
- 如有,就可查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址。
- 如没有,ARP进程在本局域网上广播发送一个ARP请求分组。收到ARP响应分组后,将得到的地址到硬件地址的映射写入ARP高速缓存。
■ ARP请求分组:包含发送方硬件地址/发送方IP地址/目标方硬件地址(未知时填0)/目标方IP地址。
■ 本地广播ARP请求(路由器不转发ARP请求)。■ ARP响应分组:包含发送方硬件地址/发送方IP地址/目标方硬件地址/目标方IP地址。
■ ARP分组封装在物理网络的帧中传输。
主机A 广播发送ARP请求分组 ![]()
主机B向A 发送ARP响应分组
ARP高速缓存的作用
- 存放最近获得的IP地址到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编址把这个复杂问题解决了。连接到互联网的主机只需各自拥有一个唯一的 IP地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为上述的调用ARP的复杂过程都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。
- 因此,在虚拟的 IP网络上用 IP地址进行通信给广大的计算机用户带来了很大的方便。
Ⅴ.IP数据报的格式
- 一个IP数据报由首部和数据两部分组成。
- 首部的前一部分是固定长度,共20字节,是所有 IP数据报必须具有的。
- 在首部的固定部分的后面是一些可选字段,其长度是可变的。
首部的前一部分是固定长度,共20字节,是所有P数据报必须具有的。
可选字段,其长度是可变的
①IP数据报首部的固定部分中的各字段
版本 占4位,指IP协议的版本。
目前的 IP协议版本号为4(即 IPv4)。
首部长度 占4位,可表示的最大数值是15个单位(一个单位为4字节)
因此IP的首部长度的最大值是60字节。
区分服务 占8位,用来获得更好的服务。
在旧标准中叫做服务类型,但实际上一直未被使用过。
1998年这个字段改名为区分服务。
只有在使用区分服务(DiffServ)时,这个字段才起作用。
在一般的情况下都不使用这个字段
总长度 占16位,指首部和数据之和的长度,
单位为字节,因此数据报的最大长度为65535字节。
总长度必须不超过最大传送单元MTU。
标识(identification) 占16位,它是一个计数器,用来产生 IP数据报的标识。 标志(flag) 占3位,目前只有前两位有意义。
标志字段的最低位是 MF(More Fragment)。
MF=1表示后面 “还有分片”。MF =0表示最后一个分片。
标志字段中间的一位是DF (Don't Fragment)。
只有当DF=0时才允许分片。
片偏移 占13位,指出:较长的分组在分片后某片在原分组中的相对位置。
片偏移以8个字节为偏移单位。生存时间 占8位,记为TTL (Time To Live),
指示数据报在网络中可通过的路由器数的最大值。
协议 占8位,指出此数据报携带的数据使用何种协议,
以便目的主机的IP层将数据部分
上交给那个处理过程首部检验和 占16位,只检验数据报的首部,不检验数据部分。这里不采用CRC检验码而采用简单的计算方法。
源地址和目的地址 各占4字节
协议
IP数据报分片
- 一数据报的总长度为3820字节,其数据部分的长度为3800字节(使用固定首部),需要分片为长度不超过1420字节的数据报片。
- 因固定首部长度为20字节,因此每个数据报片的数据部分长度不能超过1400字节。
- 于是分为3个数据报片,其数据部分的长度分别为1400、1400和1000字节。
- 原始数据报首部被复制为各数据报片的首部,但必须修改有关字段的值。
总长度 标识 MF DF 片偏移 原始数据报 3820 12345 0 0 0 数据报片1 1420 12345 1 0 0 数据报片2 1420 12345 1 0 175 数据报片3 1020 12345 0 0 350
IP协议支持多种协议,
IP数据报可以封装多种协议PDU。
IP数据报首部检验和的计算采用16位二进制反码求和算法
②IP数据报首部的固定部分中的各字段
- IP 首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。
- 选项字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目。
- 增加首部的可变部分是为了增加 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。
- 实际上这些选项很少被使用。
IP数据报实例
- 该主机所在网络的网关路由器的 MAC 地址是(50:2b:73:d4:30:7d) 。
- 该数据报文是由 IP(172.27.18.2)发给IP(31.13.68.16),IP数据报长度(20),数据报文总长度(40)。0x0010---00 28
- 该数据报文传输层协议(TCP),源端口(58329),目的端口(443(SSL)) 。
Ⅵ.IP层转发分组的流程
- 假设:有四个A类网络通过三个路由器连接在一起。每一个网络上都可能有成千上万个主机。
- 可以想像,若按目的主机号来制作路由表,每一个路由表就有4万个项目,即4万行(每一行对应于一台主机),则所得出的路由表就会过于庞大。
- 但若按主机所在的网络地址来制作路由表,那么每一个路由器中的路由表就只包含4个项目(每一行对应于一个网络),这样就可使路由表大大简化。
在路由表中,对每一条路由,最主要的是(目的网络地址,下一跳地址)
查找路由表
根据目的网络地址就能确定下一跳路由器,这样做的结果是:
- IP数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)。
- 只有到达最后一个路由器时,才试图向目的主机进行直接交付。
特定主机路由
- 虽然互联网所有的分组转发都是基于目的主机所在的网络,但在大多数情况下都允许有这样的特例,即为特定的目的主机指明一个路由。
- 采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。
默认路由(default route)
- 路由器还可采用默认路由以减少路由表所占用的空间和搜索路由表所用的时间。
- 这种转发方式在一个网络只有很少的对外连接时是很有用的。
- 默认路由在主机发送IP数据报时往往更能显示出它的好处。
- 如果一个主机连接在一个小网络上,而这个网络只用一个路由器和互联网连接,那么在这种情况下使用默认路由是非常合适的。
默认路由举例
只要目的网络不是
和
,就一律选择默认路由,
把数据报先间接交付路由器,让
再转发给下一个路由器。
必须强调指出
- IP 数据报的首部中没有地方可以用来指明“下一跳路由器的IP地址”。
- 当路由器收到待转发的数据报,不是将下一跳路由器的IP地址填入IP数据报,而是送交下层的网络接口软件。
- 网络接口软件使用ARP负责将下一跳路由器的IP地址转换成硬件地址,并将此硬件地址放在链路层的MAC帧的首部,然后根据这个硬件地址找到下一跳路由器。
路由器分组转发算法
①从数据报的首部提取目的主机的IP地址D,得出目的网络地址为N。
②若网络N与此路由器直接相连,则把数据报直接交付目的主机D;否则是间接交付,执行③。
③若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行④。
④若路由表中有到达网络N的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行⑤。
⑤若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行⑥。
⑥报告转发分组出错。
关于路由表
- 路由表没有给分组指明到某个网络的完整路径。
- 路由表指出,到某个网络应当先到某个路由器(即下一跳路由器)。
- 在到达下一跳路由器后,再继续查找其路由表,知道再下一步应当到哪一个路由器。
- 这样一步一步地查找下去,直到最后到达目的网络。
3.划分子网和构造超网
Ⅰ.划分子网
①从两级IP地址到三级IP地址
■ 在ARPANET的早期,IP地址的设计确实不够合理:
IP地址空间的利用率有时很低。
给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。
两级的IP地址不够灵活。
三级IP地址
- 从1985年起在IP地址中又增加了一个“子网号字段”,使两级的IP地址变成为三级的IP地址。
- 这种做法叫做划分子网(subnetting) 。
- 划分子网已成为互联网的正式标准协议。
划分子网的基本思路
- 划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
- 从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位。
IP地址 ::={ <网络号>,<子网号>,<主机号>} (4-2)
- 凡是从其他网络发送给本单位某个主机的IP数据报,仍然是根据IP数据报的目的网络号net-id,先找到连接在本单位网络上的路由器。
- 然后此路由器在收到IP数据报后,再按目的网络号net-id 和子网号subnet-id找到目的子网。
- 最后就将IP数据报直接交付目的主机。
划分为三个子网后对外仍是一个网络
划分子网后变成了三级结构
- 当没有划分子网时,IP地址是两级结构。
- 划分子网后IP地址就变成了三级结构。
- 划分子网只是把IP地址的主机号host-id这部分进行再划分,而不改变IP地址原来的网络号net-id。
■ 优点
- 减少了IP地址的浪费
- 使网络的组织更加灵活
- 更便于维护和管理
■ 划分子网纯属一个单位内部的事情,对外部网络透明,对外仍然表现为没有划分子网的一个网络。
②子网掩码
从一个IP数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。
使用子网掩码(subnet mask)可以找出IP地址中的子网部分。
规则:
- 子网掩码长度=32位
- 某位=1:IP地址中的对应位为网络号和子网号
- 某位=0:IP地址中的对应位为主机号
IP地址的各字段和子网掩码
(IP地址)AND(子网掩码)=网络地址
默认子网掩码 A类地址
网络地址 网络号 主机号为全 0 默认子网掩码
255.0.0.0
1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8个1 24个0
B类地址
网络地址 网络号 主机号为全 0 默认子网掩码
255.255.0.0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16个1 16个0
C类地址
网络地址 网络号 主机号为全 0 默认子网掩码
255.255.255.0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
子网掩码是一个重要属性
- 子网掩码是一个网络或一个子网的重要属性。
- 路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。
- 路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。
- 若一个路由器连接在两个子网上就拥有两个网络地址和两个子网掩码。
子网划分方法
- 有固定长度子网和变长子网两种子网划分方法。
- 在采用固定长度子网时,所划分的所有子网的子网掩码都是相同的。
- 虽然根据已成为互联网标准协议的 RFC 950文档,子网号不能为全1或全0,但随着无分类域间路由选择CIDR的广泛使用,现在全1和全0的子网号也可以使用了,但一定要谨慎使用,确认你的路由器所用的路由选择软件是否支持全 0 或全 1 的子网号这种较新的用法。
- 划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数。
【例4-2】已知IP地址是141.14.72.24,子网掩码是255.255.192.0 。试求网络地址。
【例4-3】上例中,若子网掩码改为255.255.224.0,试求网络地址,讨论所得结果。
Ⅱ.使用子网时分组的转发
- 在不划分子网的两级IP地址下,从IP地址得出网络地址是个很简单的事。
- 但在划分子网的情况下,从IP地址却不能唯一地得出网络地址来,这是因为网络地址取决于那个网络所采用的子网掩码,但数据报的首部并没有提供子网掩码的信息。
- 因此分组转发的算法也必须做相应的改动。
在划分子网情况下路由器转发分组的算法
①从收到的分组的首部提取目的IP地址D。
②先用各网络的子网掩码和D逐位相 “与”,看是否和相应的网络地址匹配。若匹配,则将分组直接交付。否则就是间接交付,执行③ 。
③若路由表中有目的地址为D的特定主机路由,则将分组传送给
指明的下一跳路由器;否则,执行④。
④对路由表中的每一行,将子网掩码和D逐位相 “与”。若结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行⑤。
⑤若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行⑥。
⑥报告转发分组出错。
【例4-4】已知互联网和路由器 中的路由表。主机
向
发送分组。试讨论
收到
向
发送的分组后查找路由表的过程。
主机 要发送分组给
要发送的分组的目的P地址:128.30.33.138
因此H首先检查主机128.30.33.138是否连接在本网络上
如果是,则直接交付;
否则,就送交路由器R,并逐项查找路由表。
主机 首先将
本子网的子网掩码255.255.255.128
与分组的IP地址128.30.33.138 逐比特相“与” (AND 操作)
因此 必须把分组传送到路由器
,然后逐项查找路由表
路由器 收到分组后就用路由表中第1个项目的子网掩码和128.30.33.138逐比特AND操作
Ⅲ.无分类编址CIDR(构造超网)
①网络前缀
划分子网在一定程度上缓解了互联网在发展中遇到的困难。然而在1992年互联网仍然面临三个必须尽早解决的问题:
- B类地址在1992年已分配了近一半,眼看就要在1994年3月全部分配完毕!
- 互联网主干网上的路由表中的项目数急剧增长(从几千个增长到几万个)。
- 整个IPv4的地址空间最终将全部耗尽。
IP编址问题的演进
- 1987年,RFC 1009 就指明了在一个划分子网的网络中可同时使用几个不同的子网掩码。
- 使用变长子网掩码 VLSM (Variable Length Subnet Mask)可进一步提高IP地址资源的利用率。
- 在VLSM的基础上又进一步研究出无分类编址方法,它的正式名字是无分类域间路由选择CIDR(Classless Inter-Domain Routing)。
CIDR 最主要的特点
- CIDR 消除了传统的A类、B类和C类地址以及划分子网的概念,因而可以更加有效地分配IPv4的地址空间。
- CIDR 使用各种长度的 “网络前缀” (network-prefix)来代替分类地址中的网络号和子网号。
- IP地址从三级编址(使用子网掩码)又回到了两级编址。
无分类的两级编址
- 无分类的两级编址的记法是:
- CIDR 使用 “斜线记法” (slash notation),它又称为CIDR 记法,即在IP地址面加上一个斜线“P,然后写上网络前缀所占的位数(这个数值对应于三级编址中子网掩码中1的个数)。例如:220.78.168.0/24
CIDR地址块
■ CIDR 把网络前缀都相同的连续的IP地址组成 “CIDR地址块” 。
■ 128.14.32.0/20表示的地址块共有212个地址(因为斜线后面的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的主机号地址一般不使用。
128.14.32.0/20表示的地址( 个地址)
![]()
路由聚合(route 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。此掩码可表示为:
- 网络前缀的后面加一个星号*的表示方法,如 00001010 00*,在星号*之前是网络前缀,而星号*表示IP地址中的主机号,可以是任意值。
常用的 CIDR 地址块
CIDR 前缀长度 点分十进制 包含的地址数 相当于包含分类的网络数 /13 255.248.0.0 512K 8个 B类 或 2048个C类 /14 255.252.0.0 256K 4个 B类 或 1024个C类 /15 255.254.0.0 128K 2个 B类 或 512个C类 /16 255.255.0.0 64K 1个 B类 或 256个C类 /17 255.255.128.0 32K 128个C类 /18 255.255.192.0 16K 64个C类 /19 255.255.224.0 8K 32个C类 /20 255.255.240.0 4K 16个C类 /21 255.255.248.0 2K 8个C类 /22 255.255.252.0 1K 4个C类 /23 255.255.254.0 512 2个C类 /24 255.255.255.0 256 1个C类 /25 255.255.255.128 128 1/4个C类 /26 255.255.255.192 64 1/4个C类 /27 255.255.255.224 32 1/8个C类
构成超网
前缀长度不超过 23 位的 CIDR地址块都包含了多个C类地址。
这些 C类地址合起来就构成了超网。
CIDR地址块中的地址数一定是2的整数次幂。
网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网是使网络前缀变长。
CIDR的一个好处是:可以更加有效地分配IPv4的地址空间,可根据客户的需要分配适当大小的 CIDR地址块。
CIDR地址块划分举例
这个 ISP 共有64个 C类网络。如果不采用CIDR技术,则在与该ISP的路由器交换路由信息的每一个路由器的路由表中,就需要有64个项目。但采用地址聚合后,只需用路由聚合后的1个项目 206.0.64.0/18就能找到该ISP。
②最长前缀匹配
- 使用CIDR时,路由表中的每个项目由 “网络前缀” 和 “下一跳地址” 组成。在查找路由表时可能会得到不止一个匹配结果。
- 应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配(longest-prefix matching)。
- 网络前缀越长,其地址块就越小,因而路由就越具体(more specific) 。
- 最长前缀匹配又称为最长匹配或最佳匹配。
最长前缀匹配举例
选择两个匹配的地址中更具体的一个,即选择最长前缀的地址。
③使用二叉线索查找路由表
- 当路由表的项目数很大时,怎样设法减小路由表的查找时间就成为一个非常重要的问题。
- 为了进行更加有效的查找,通常是将无分类编址的路由表存放在一种层次的数据结构中,然后自上而下地按层次进行查找。这里最常用的就是二叉线索(binary trie)。
- IP地址中从左到右的比特值决定了从根结点逐层向下层延伸的路径,而二叉线索中的各个路径就代表路由表中存放的各个地址。
- 为了提高二叉线索的查找速度,广泛使用了各种压缩技术。
用5个前缀构成的二叉线索
从二叉线索的根节点自顶向下的深度最多有32层,每一层对应于IP地址中的一位。一个IP地址存入二叉线索的规则很简单。先检查IP地址左边的第一位,如为0,则第一层的节点就在根节点的左下方;如为1,则在右下方。然后再检查地址的第二位,构造出第二层的节点。依此类推,直到唯一前缀的最后一位。
4.网际控制报文协议ICMP
- 为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP (InternetControl Message Protocol)。
- ICMP是互联网的标准协议。
- ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。
- 但ICMP不是高层协议(看起来好像是高层协议,因为ICMP报文是装在IP数据报中,作为其中的数据部分),而是IP层的协议。
ICMP 报文的格式
Ⅰ.ICMP 报文的种类
- ICMP报文的种类有两种,即ICMP 差错报告报文和ICMP询问报文。
- ICMP报文的前4个字节是统一的格式,共有三个字段:即类型、代码和检验和。接着的4个字节的内容与ICMP的类型有关。
①ICMP 差错报告报文共有4种
- 终点不可达
- 时间超过
- 参数问题
- 改变路由(重定向)(Redirect)
ICMP差错报告报文的数据字段的内容
不应发送ICMP差错报告报文的几种情况
- 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
- 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
- 对具有多播地址的数据报都不发送 ICMP 差错报告报文。
- 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文。
②ICMP 询问报文有两种
- 回送请求和回答报文
- 时间戳请求和回答报文
下面的几种ICMP报文不再使用:
- 信息请求与回答报文
- 掩码地址请求和回答报文
- 路由器询问和通告报文
- 源点抑制报文
Ⅱ.ICMP的应用举例
PING (Packet InterNet Groper)
- PING用来测试两个主机之间的连通性。
- PING使用了ICMP回送请求与回送回答报文。
- PING是应用层直接使用网络层ICMP的例子,它没有通过运输层的TCP或UDP。
PING 的应用举例
用PING测试主机的连通性
Traceroute的应用举例
- 在 Windows操作系统中这个命令是tracert。
- 用来跟踪一个分组从源点到终点的路径。
- 它利用IP数据报中的TTL字段和 ICMP时间超过差错报告报文实现对从源点到终点的路径的跟踪。
ICMP 的应用举例
用tracert命令获得到目的主机的路由信息
5.互联网的路由选择协议
Ⅰ.有关路由选择协议的几个基本概念
①理想的路由算法
- 算法必须是正确的和完整的。
- 算法在计算上应简单。
- 算法应能适应通信量和网络拓扑的变化,这就是说,要有自适应性。
- 算法应具有稳定性。
- 算法应是公平的。
关于“最佳路由”
■ 不存在一种绝对的最佳路由算法。
■ 所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。
■ 实际的路由选择算法,应尽可能接近于理想的算法。
■ 路由选择是个非常复杂的问题
- 它是网络中的所有结点共同协调工作的结果。
- 路由选择的环境往往是不断变化的,而这种变化有时无法事先知道。
从路由算法的自适应性考虑
- 静态路由选择策略——即非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。
- 动态路由选择策略——即自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大。
②分层次的路由选择协议
互联网采用分层次的路由选择协议。这是因为:
- 互联网的规模非常大。如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,处理起来也太花时间。而所有这些路由器之间交换路由信息所需的带宽就会使互联网的通信链路饱和。
- 许多单位不愿意外界了解自己单位网络的布局细节和本部门所采用的路由选择协议(这属于本部门内部的事情),但同时还希望连接到互联网上。
自治系统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。
自治系统和内部网关协议、外部网关协议
自治系统之间的路由选择也叫做 域间路由选择(interdomain routing),在自治系统内部的路由选择叫做 域内路由选择(intradomain routing) 。
指出两点
- 互联网的早期RFC文档中未使用 “路由器” 而是使用 “网关” 这一名词。但是在新的 RFC文档中又使用了 “路由器” 这一名词。应当把这两个术语当作同义词。
- IGP 和 EGP是协议类别的名称。但 RFC在使用EGP这个名词时出现了一点混乱,因为最早的一个外部网关协议的协议名字正好也是EGP.因此在遇到名词EGP时,应弄清它是指旧的协议EGP还是指外部网关协议EGP这个类别。
Ⅱ.内部网关协议RIP
①工作原理
- 路由信息协议 RIP(Routing Information Protocol)是内部网关协议 IGP 中最先得到广泛使用的协议。
- RIP 是一种分布式的、基于距离向量的路由选择协议。
- RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。
“距离”的定义
- 从一个路由器到直接连接的网络的距离定义为 1。
- 从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1 。
- RIP协议中的 “距离” 也称为 “跳数” (hopcount),因为每经过一个路由器,跳数就加1。
- 这里的 “距离” 实际上指的是 “最短距离”。
- RIP 认为一个好的路由就是它通过的路由器的数目少,即 “距离短”。
- RIP允许一条路径最多只能包含15个路由器。
- “距离” 的最大值为16时即相当于不可达。可见RIP只适用于小型互联网。RIP不能在两个网络之间同时使用多条路由。RIP选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。
RIP协议的三个特点
- 仅和相邻路由器交换信息。
- 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
- 按固定的时间间隔交换路由信息,例如,每隔30秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。
路由表的建立
- 路由器在刚刚开始工作时,只知道到直接连接的网络的距离(此距离定义为1)。它的路由表是空的。
- 以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。
- 经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。
- RIP协议的收敛(convergence)过程较快。“收敛” 就是在自治系统中所有的结点都得到正确的路由选择信息的过程。
②距离向量算法
路由器收到相邻路由器(其地址为X)的一个RIP报文:
(1)先修改此RIP报文中的所有项目:把“下一跳”字段中的地址都改为X,并把所有的“距离”字段的值加1。
(2)对修改后的RIP报文中的每一个项目,重复以下步骤:
若项目中的目的网络不在路由表中,则把该项目加到路由表中。
否则
若下一跳字段给出的路由器地址是同样的,则把收到的项目替换原路由表中的项目。
否则
若收到项目中的距离小于路由表中的距离,则进行更新,否则,什么也不做。
(3)若3分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为16(表示不可达)。
(4)返回。
- 距离向量算法的基础就是 Bellman-Ford算法(或 Ford-Fulkerson 算法)。
- 这种算法的要点是这样的:设X是结点A到B的最短路径上的一个结点。若把路径A→B拆成两段路径A→X和X→B,则每一段路径A→X和X一B也都分别是结点A到X和结点X到B的最短路径。
路由器之间交换信息与路由表更新
- RIP 协议让互联网中的所有路由器都和自己的相邻路由器不断交换路由信息,并不断更新其路由表,使得从每一个路由器到每一个目的网络的路由都是最短的(即跳数最少)。
- 虽然所有的路由器最终都拥有了整个自治系统的全局路由信息,但由于每一个路由器的位置不同,它们的路由表当然也应当是不同的。
【例4-5】已知路由器 有表 4-9(a) 所示的路由表。现在收到相邻路由器
发来的路由更新信息,如表4-9(b)所示。试更新路由器
的路由表。
【例】路由表更新
③RIP2协议的报文格式
RIP2报文
- RIP2报文由首部和路由部分组成。
- RIP2报文中的路由部分由若干个路由信息组成。每个路由信息需要用20个字节。地址族标识符(又称为地址类别)字段用来标志所使用的地址协议。
- 路由标记填入自治系统的号码,这是考虑使RIP有可能收到本自治系统以外的路由选择信息。
- 再后面指出某个网络地址、该网络的子网掩码、下一跳路由器地址以及到此网络的距离。
- 一个RIP报文最多可包括25个路由,因而RIP报文的最大长度是4+20×25= 504字节。如超过,必须再用一个RIP报文来传送。
- RIP2具有简单的鉴别功能。
■ 若使用鉴别功能,则将原来写入第一个路由信息(20个字节)的位置用作鉴别。■ 在鉴别数据之后才写入路由信息,但这时最多只能再放入24个路由信息。
好消息传播得快,坏消息传播得慢
- RIP协议特点:好消息传播得快,坏消息传播得慢。
- RIP存在的一个问题:当网络出现故障时,要经过比较长的时间(例如数分钟)才能将此信息传送到所有的路由器。
RIP协议的优缺点
优点:
- 实现简单,开销较小。
缺点:
- RIP限制了网络的规模,它能使用的最大距离为15(16表示不可达)。
- 路由器之间交换的路由信息 是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。
- “坏消息传播得慢”,使更新过程的收敛时间过长。
Ⅲ.内部网关协议OSPF
- 开放最短路径优先 OSPF(Open Shortest PathFirst)是为克服RIP的缺点在1989年开发出来的。
- OSPF的原理很简单,但实现起来却较复杂。
①OSPF协议的基本特点
- “开放” 表明OSPF协议不是受某一家厂商控制,而是公开发表的。
- “最短路径优先” 是因为使用了Dijkstra 提出的最短路径算法SPF
- 采用 分布式的链路状态协议(link state protocol)。
- 注意:OSPF只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。
三个要点
- 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。
- 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。
“链路状态” 就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”(metric)。
- 只有当链路状态发生变化时,路由器才用 洪泛法 向所有路由器发送此信息。
链路状态数据库(link-state database)
由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。
这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)。
OSPF的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。
OSPF 的更新过程收敛得快是其重要优点。
OSPF的区域(area)
- 为了使OSPF 能够用于规模很大的网络,OSPF将一个自治系统再划分为若干个更小的范围,叫做区域。
- 每一个区域都有一个32位的区域标识符(用点分十进制表示)。
- 区域也不能太大,在一个区域内的路由器最好不超过200个。
OSPF划分为两种不同的区域
- 划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少了整个网络上的通信量。
- 在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况。
- OSPF使用层次结构的区域划分。在上层的区域叫做主干区域(backbone area)。
- 主干区域的标识符规定为0.0.0.0。主干区域的作用是用来连通其他在下层的区域。
主干路由器
区域边界路由器
OSPF直接用IP数据报传送
- OSPF 不用UDP而是直接用IP数据报传送。
- OSPF构成的数据报很短。这样做可减少路由信息的通信量。
- 数据报很短的另一好处是可以不必将长的数据报分片传送。
- 但分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传。
OSPF的其他特点
- OSPF 对不同的链路可根据IP分组的不同服务类型TOs而设置成不同的代价。因此,OSPF对于不同类型的业务可计算出不同的路由。
- 如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。这叫做多路径间的负载平衡。
- 所有在OSPF路由器之间交换的分组都具有鉴别的功能。
- 支持可变长度的子网划分和无分类编址CIDR。
- 每一个链路状态都带上一个32位的序号,序号越大状态就越新。
OSPF分组
②OSPF的五种分组类型
- 类型1,问候(Hello)分组。
- 类型2,数据库描述(Database Description)分组。
- 类型3,链路状态请求(Link State Request)分组。
- 类型4,链路状态更新(Link State Update)分组,用洪泛法对全网更新链路状态。
- 类型5,链路状态确认(Link State Acknowledgment)分组。
OSPF的基本操作
OSPF使用可靠的洪泛法发送更新分组
OSPF的其他特点
- OSPF 还规定每隔一段时间,如30分钟,要刷新一次数据库中的链路状态。
- 由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF协议要比距离向量协议RIP好得多。
- OSPF 没有 “坏消息传播得慢” 的问题,据统计,其响应网络变化的时间小于100 ms。
指定的路由器
多点接入的局域网采用了指定的路由器(designated router)的方法,使广播的信息量大大减少。
指定的路由器代表该局域网上所有的链路向连接到该网络上的各路由器发送状态信息。
Ⅳ.外部网关协议BGP
- BGP是不同自治系统的路由器之间交换路由信息的协议。
- BGP较新版本是2006年1月发表的BGP-4(BGP 第4个版本),即RFC 4271 ~4278。
- 可以将BGP-4简写为BGP。
BGP使用环境不同
■ 互联网的规模太大,使得自治系统之间路由选择非常困难。对于自治系统之间的路由选择,要寻找最佳路由是很不现实的。
- 当一条路径通过几个不同AS时,要想对这样的路径计算出有意义的代价是不太可能的。
- 比较合理的做法是在AS之间交换“可达性”信息。
■ 自治系统之间的路由选择必须考虑有关策略。
■ 因此,边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。
BGP发言人
- 每一个自治系统的管理员要选择至少一个路由器作为该自治系统的 “BGP发言人”(BGP speaker)。
- 一般说来,两个BGP发言人都是通过一个共享网络连接在一起的,而BGP发言人往往就是BGP边界路由器,但也可以不是BGP边界路由器。
BGP交换路由信息
- 一个BGP发言人与其他自治系统中的BGP发言人要交换路由信息,就要先建立TCP连接,然后在此连接上交换 BGP报文以建立BGP会话(session),利用BGP会话交换路由信息。
- 使用TCP连接能提供可靠的服务,也简化了路由选择协议。
- 使用TCP连接交换路由信息的两个BGP发言人,彼此成为对方的邻站(neighbor)或对等站(peer).
BGP发言人和自治系统AS的关系
AS的连通图举例
- BGP所交换的网络可达性的信息就是要到达某个网络所要经过的一系列AS。
- 当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各AS的较好路由。
BGP发言人交换路径向量
BGP协议的特点
BGP协议交换路由信息的结点数量级是自治系统数的量级,这要比这些自治系统中的网络数少很多。
每一个自治系统中BGP发言人(或边界路由器)的数目是很少的。这样就使得自治系统之间的路由选择不致过分复杂。
BGP支持 CIDR,因此BGP的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
在BGP刚刚运行时,BGP的邻站是交换整个的BGP路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。
BGP-4共使用四种报文
打开(OPEN)报文,用来与相邻的另一个BGP发言人建立关系。
更新(UPDATE)报文,用来发送某一路由的信息,以及列出要撤消的多条路由。
保活(KEEPALIVE)报文,用来确认打开报文和周期性地证实邻站关系。
通知(NOTIFICATION)报文,用来发送检测到的差错。
BGP报文具有通用首部
Ⅴ.路由器的构成
■ 路由器是一种典型的网络层设备。
■ 路由器是互联网中的关键设备。
■ 路由器的主要作用是:
- 连通不同的网络。
- 选择信息传送的线路。选择通畅快捷的近路,能大大提高通信速度,减轻网络系统通信负荷,节约网络系统资源,提高网络系统畅通率,从而让网络系统发挥出更大的效益来。
①路由器的结构
- 路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。也就是说,将路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。
- 下一跳路由器也按照这种方法处理分组,直到该分组到达终点为止。
- 路由器的转发分组正是网络层的主要工作。
典型的路由器的结构
■ 整个的路由器结构可划分为两大部分:
- 路由选择部分
- 分组转发部分
■ 路由选择部分
- 也叫做控制部分,其核心构件是路由选择处理机。
- 路由选择处理机的任务是根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。
分组转发部分由三部分组成:
- 交换结构(switching fabric):又称为交换组织,其作用是根据转发表(forwarding table)对分组进行处理。
- 一组输入端口
- 一组输出端口
(请注意:这里的端口就是硬件接口)
“转发”和“路由选择”的区别
- “转发”(forwarding)就是路由器根据转发表将用户的IP数据报从合适的端口转发出去。
- “路由选择”(routing)则是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由。
- 路由表是根据路由选择算法得出的。而转发表是从路由表得出的。
- 在讨论路由选择的原理时,往往不去区分转发表和路由表的区别。
输入端口对线路上收到的分组的处理
路由器的输入端口里面装有物理层、数据链路层和网络层的处理模块。
数据链路层剥去帧首部和尾部后,将分组送到网络层的队列中排队等待处理。这会产生一定的时延。
输入端口中的查找和转发功能在路由器的交换功能中是最重要的。
输出端口将交换结构传送来的分组发送到线路
- 输出端口里面装有物理层、数据链路层和网络层的处理模块。
- 输出端口从交换结构接收分组,然后把它们发送到路由器外面的线路上。
- 在网络层的处理模块中设有一个缓冲区(队列)。当交换结构传送过来的分组的速率超过输出链路的发送速率时,来不及发送的分组就必须暂时存放在这个队列中。
- 数据链路层处理模块将分组加上链路层的首部和尾部,交给物理层后发送到外部线路。
分组丢弃
- 若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃。
- 路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。
②交换结构
■ 交换结构是路由器的关键构件。
■ 正是这个交换结构把分组从一个输入端口转移到某个合适的输出端口。
■ 实现交换有多种方法。常用交换方法有三种:
通过存储器
- 当路由器的某个输入端口收到一个分组时,就用中断方式通知路由选择处理机。然后分组就从输入端口复制到存储器中。
- 路由器处理机从分组首部提取目的地址,查找路由表,再将分组复制到合适的输出端口的缓存中。
- 若存储器的带宽(读或写)为每秒M个分组,那么路由器的交换速率(即分组从输入端口传送到输出端口的速率)一定小于
。
通过总线
- 数据报从输入端口通过共享的总线直接传送到合适的输出端口,而不需要路由选择处理机的干预。
- 因为每一个要转发的分组都要通过这一条总线,因此路由器的转发带宽就受总线速率的限制。
- 现代的技术已经可以将总线的带宽提高到每秒吉比特的速率,因此许多的路由器产品都采用这种通过总线的交换方式。
通过纵横交换结构(crossbar switch fabric)
- 这种交换结构常称为互连网络(interconnection network)。它有2N条总线,可以使N个输入端口和N个输出端口相连接。
- 当输入端口收到一个分组时,就将它发送到与该输入端口相连的水平总线上。
- 若通向所要转发的输出端口的垂直总线是空闲的,则在这个结点将垂直总线与水平总线接通,然后将该分组转发到这个输出端口。
- 但若该垂直总线已被占用(有另一个分组正在转发到同一个输出端口),则后到达的分组就被阻塞,必须在输入端口排队。
6.IPv6
- IP是互联网的核心协议。
- 互联网经过几十年的飞速发展,到2011年2月,IPv4的32位地址已经耗尽。
- ISP已经不能再申请到新的IP地址块了。
- 我国在2014- 2015年也逐步停止了向新用户和应用分配IPv4地址。
- 解决IP地址耗尽的根本措施就是采用具有更大地址空间的新版本的IP,即IPv6。
Ⅰ.lPv6的基本首部
■ IPv6仍支持无连接的传送,但将协议数据单元PDU称为分组。为方便起见,本书仍采用数据报这一名词。
■ 所引进的主要变化如下:
- 更大的地址空间。IPv6将地址从IPv4的32位增大到了128位。
- 扩展的地址层次结构。
- 灵活的首部格式。IPv6定义了许多可选的扩展首部。
- 改进的选项。IPv6允许数据报包含有选项的控制信息,其选项放在有效载荷中。
- 允许协议继续扩充。
- 支持即插即用(即自动配置)。因此IPv6不需要使用DHCP。
- 支持资源的预分配。IPv6支持实时视像等要求,保证一定的带宽和时延的应用。
- lPv6首部改为8字节对齐。首部长度必须是8字节的整数倍。原来的IPv4首部是4字节对齐。
lPv6数据报的一般形式
lPv6数据报由两大部分组成:
- 基本首部(base header)
- 有效载荷(payload)。有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部(extension header),再后面是数据部分。
lPv6数据报的基本首部
- IPv6将首部长度变为固定的40字节,称为基本首部。
- 把首部中不必要的功能取消了,使得IPv6首部的字段数减少到只有8个。
IPv6对首部中的某些字段进行了如下的更改:
- 取消了首部长度字段,因为首部长度是固定的40字节;
- 取消了服务类型字段;
- 取消了总长度字段,改用有效载荷长度字段;
- 把TTL字段改称为跳数限制字段;
- 取消了协议字段,改用下一个首部字段;
- 取消了检验和字段;
- 取消了选项字段,而用扩展首部来实现选项功能。
版本(version) 4位。它指明了协议的版本,对IPv6该字段总是6。
通信量类(traffic class) 8位。这是为了区分不同的IPv6数据报的类别或优先级。目前正在进行不同的通信量类性能的实验。
流标号(flow label) 20位。“流”是互联网络上从特定源点到特定终点的一系列数据报,“流”所经过的路径上的路由器都保证指明的服务质量。所有属于同一个流的数据报都具有同样的流标号。
有效载荷长度(payload length) 16位。它指明IPv6数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷之内),其最大值是64 KB。
下一个首部(next header) 8位。它相当于IPv4的协议字段或可选字段。
跳数限制(hop limit) 8位。源站在数据报发出时即设定跳数限制。路由器在转发数据报时将跳数限制字段中的值减1。当跳数限制的值为零时,就要将此数据报丢弃。
源地址 128位。是数据报的发送站的IP地址。
目的地址 128位。是数据报的接收站的IP地址。
lPv6的扩展首部
- IPv6把原来IPv4首部中选项的功能都放在扩展首部中,并将扩展首部留给路径两端的源站和目的站的主机来处理。
- 数据报途中经过的路由器都不处理这些扩展首部(只有一个首部例外,即逐跳选项扩展首部)。
- 这样就大大提高了路由器的处理效率。
六种扩展首部
在RFC 2460中定义了六种扩展首部:
- 逐跳选项
- 路由选择
- 分片
- 鉴别
- 封装安全有效载荷
- 目的站选项
每一个扩展首部都由若干个字段组成,它们的长度也各不相同。但所有扩展首部的第一个字段都是8位的“下一个首部”字段。此字段的值指出了在该扩展首部后面的字段是什么。
Ⅱ.lPv6的地址
IPv6数据报的目的地址可以是以下三种基本类型地址之一:
- 单播(unicast):传统的点对点通信。
- 多播(multicast):一点对多点的通信。
- 任播(anycast):这是IPv6增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一个,通常是距离最近的一个。
结点与接口
■ IPv6将实现IPv6的主机和路由器均称为结点。
■ 一个结点就可能有多个与链路相连的接口。
■ IPv6地址是分配给结点上面的接口的。
- 一个接口可以有多个单播地址。
- 其中的任何一个地址都可以当作到达该结点的目的地址。即一个结点接口的单播地址可用来唯一地标志该结点。
冒号十六进制记法
- 在IPv6中,每个地址占128位,地址空间大于
。
- 为了使地址再稍简洁些,IPv6使用冒号十六进制记法(colon hexadecimal notation,简写为colon hex)。
- 每个16位的值用十六进制值表示,各值之间用冒号分隔。例如:
68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF
- 在十六进制记法中,允许把数字前面的0省略。例如把0000中的前三个0省略,写成1个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
- CIDR的斜线表示法仍然可用。
- 例如:60位的前缀 12AB00000000CD3可记为:12AB:0000:0000:CD30:0000:0000:0000:0000/60
或 12AB::CD30:0:0:0:0/60(零压缩)
或 12AB:0:0:CD30::/60(零压缩)
lPv6地址分类
地址类型 二进制前缀 解释 未指明地址 00...0(128位),可记为::/128。
- 这是16字节的全0地址,可缩写为两个冒号“::”。
- 这个地址只能为还没有配置到一个标准的IP地址的主机当作源地址使用。
- 这类地址仅此一个。
环回地址 00...1(128位),可记为::1/128。
- 即 0:0:0:0:0:0:0:1(记为::1) 。
- 作用和IPv4的环回地址一样。
- 这类地址也是仅此一个。
多播地址 11111111(8),可记为FF00::/8。
- 功能和IPv4的一样。
- 这类地址占IPv6地址总数的1/256。
本地链路单播地址 1111111010(10位),可记为FE80::/10。
- 有些单位的网络使用 TCP/IP协议,但并没有连接到互联网上。连接在这样的网络上的主机都可以使用这种本地地址进行通信,但不能和互联网上的其他主机通信。
- 这类地址占IPv6地址总数的1/1024。
全球单播地址 (除上述四种外,所有其他的二进制前缀)
- lPv6的这一类单播地址是使用得最多的一类。
- 曾提出过多种方案来进一步划分这128位的单播地址。
- 根据2006年发布的草案标准 RFC4291的建议,IPv6单播地址的划分方法非常灵活。
Ⅲ.从IPv4向IPv6过渡
■ 向IPv6过渡只能采用逐步演进的办法,同时,还必须使新安装的IPv6系统能够向后兼容:
lPv6系统必须能够接收和转发IPv4分组,并且能够为IPv4分组选择路由。
■ 两种向IPv6过渡的策略:
- 使用双协议栈
- 使用隧道技术
双协议栈
- 双协议栈(dual stack)是指在完全过渡到IPv6之前,使一部分主机(或路由器)装有两个协议栈,一个lPv4和一个IPv6。
- 双协议栈的主机(或路由器)记为IPv6/IPv4,表明它同时具有两种IP地址:一个IPv6地址和一个IPv4地址。
- 双协议栈主机在和IPv6主机通信时是采用IPv6地址,而和IPv4主机通信时就采用IPv4地址。
- 根据DNS返回的地址类型可以确定使用IPv4地址还是lPv6地址。
隧道技术
- 在IPv6数据报要进入IPv4网络时,把IPv6数据报封装成为IPv4数据报,整个的IPv6数据报变成了IPv4数据报的数据部分。
- 当IPv4数据报离开IPv4网络中的隧道时,再把数据部分(即原来的IPv6数据报)交给主机的IPv6协议栈。
Ⅳ.ICMPv6
- IPv6也不保证数据报的可靠交付,因为互联网中的路由器可能会丢弃数据报。
- 因此IPv6也需要使用ICMP来反馈一些差错信息。新的版本称为ICMPv6。
- 地址解析协议ARP 和 网际组管理协议IGMP协议 的功能都已被合并到ICMPv6中。
ICMPv6报文的分类
- ICMPv6 是面向报文的协议,它利用报文来报告差错,获取信息,探测邻站或管理多播通信。
- ICMPv6 还增加了几个定义报文的功能及含义的其他协议。
7.IP多播
Ⅰ.IP多播的基本概念
■ IP多播(multicast,以前曾译为组播)已成为互联网的一个热门课题。
■ 目的:更好第支持一对多通信。
■ 一对多通信:一个源点发送到许多个终点。
- 例如,实时信息的交付(如新闻、股市行情等),软件更新,交互式会议及其他多媒体通信。
多播可大大节约网络资源
采用单播方式,向90台主机传送同样的视频节目需要发送90个单播
采用多播方式,只需发送一次到多播组。路由器复制分组。局域网具有硬件多播功能,不需要复制分组。 当多播组的主机数很大时(如成千上万个),采用多播方式就可明显地减轻网络中各种资源的消耗。
IP多播
- 在互联网上进行多播就叫做IP多播。
- 互联网范围的多播要靠路由器来实现。
- 能够运行多播协议的路由器称为多播路由器(multicast router)。当然它也可以转发普通的单播lP数据报。
- 从1992年起,在互联网上开始试验虚拟的多播主干网MBONE(Multicast Backbone On theInterNEt)。现在多播主干网已经有了相当大的规模。
多播IP地址
- IP多播所传送的分组需要使用多播IP地址。
- 在多播数据报的目的地址写入的是多播组的标识符。
- 多播组的标识符就是IP地址中的D类地址(多播地址)。
- 每一个D类地址标志一个多播组。
- 多播地址只能用于目的地址,不能用于源地址。
多播数据报
- 多播数据报和一般的IP数据报的区别就是它使用D类IP地址作为目的地址,并且首部中的协议字段值是2,表明使用网际组管理协议IGMP。
- 多播数据报也是“尽最大努力交付”,不保证一定能够交付多播组内的所有成员。
- 对多播数据报不产生ICMP差错报文。因此,若在PING命令后面键入多播地址,将永远不会收到响应。
Ⅱ.在局域网上进行硬件多播
- 互联网号码指派管理局 IANA 拥有的以太网地址块的高24位为00-00-5E。
- 因此TCP/IР协议使用的以太网多播地址块的范围是
从 00-00-5E-00-00-00
到 00-00-5E-FF-FF-FF
- 不难看出,在每一个地址中,只有23位可用作多播。
- D类IP地址可供分配的有28位,在这28位中的前5位不能用来构成以太网硬件地址。
D类地址与以太网多播地址的映射关系
由于多播IP地址与以太网硬件地址的映射关系不是唯一的,因此收到多播数据报的主机,还要在IP层利用软件进行过滤,把不是本主机要接收的数据报丢弃。
Ⅲ.网际组管理协议IGMP和多播路由选择协议
①IP多播需要两种协议
- 为了使路由器知道多播组成员的信息,需要利用网际组管理协议IGMP (Internet Group Management Protocol)。
- 连接在局域网上的多播路由器还必须和互联网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组成员。这就需要使用多播路由选择协议。
IGMP使多播路由器 知道 多播组成员信息
IGMP 的使用范围
IGMP并非在互联网范围内对所有多播组成员进行管理的协议。
IGMP不知道IP多播组包含的成员数,也不知道这些成员都分布在哪些网络上。
IGMP协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机(严格讲,是主机上的某个进程)参加或退出了某个多播组。
多播路由选择协议比单播路由选择协议复杂得多。
多播路由选择协议更为复杂
- 多播转发必须动态地适应多播组成员的变化(这时网络拓扑并未发生变化)。请注意,单播路由选择通常是在网络拓扑发生变化时才需要更新路由。
- 多播路由器在转发多播数据报时,不能仅仅根据多播数据报中的目的地址,而是还要考虑这个多播数据报从什么地方来和要到什么地方去。
- 多播数据报可以由没有加入多播组的主机发出,也可以通过没有组成员接入的网络。
②网际组管理协议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之间随机选择发送响应所需经过的时延。对应于最小时延的响应最先发送。
- 同一个组内的每一个主机都要监听响应,只要有本组的其他主机先发送了响应,自己就可以不再发送响应了。
③多播路由选择
- 多播路由选择协议尚未标准化。
- 一个多播组中的成员是动态变化的,随时会有主机加入或离开这个多播组。
- 多播路由选择实际上就是要找出以源主机为根结点的多播转发树。
- 在多播转发树上的路由器不会收到重复的多播数据报。
- 对不同的多播组对应于不同的多播转发树。
- 同一个多播组,对不同的源点也会有不同的多播转发树。
多播路由选择协议在转发多播数据报时使用三种方法:
洪泛与剪除
隧道技术(tunneling)
基于核心的发现技术
洪泛与剪除
- 这种方法适合于较小的多播组,而所有的组成员接入的局域网也是相邻接的。
- 一开始,路由器转发多播数据报使用洪泛的方法(这就是广播)。
- 为了避免兜圈子,采用了叫做反向路径广播RPB(Reverse Path Broadcasting)的策略。
RPB的要点
- 路由器收到多播数据报时,先检查它是否是从源点经最短路径传送来的。
- 若是,就向所有其他方向转发刚才收到的多播数据报(但进入的方向除外),否则就丢弃而不转发。
- 如果存在几条同样长度的最短路径,那么只能选择一条最短路径,选择的准则就是看这几条最短路径中的相邻路由器谁的IP地址最小。
- 最后就得出了用来转发多播数据报的多播转发树,以后就按这个多播转发树转发多播数据报。避免了多播数据报的兜圈子,同时每一个路由器也不会接收重复的多播数据报。
- 如果在多播转发树上的某个路由器发现它的下游树枝(即叶节点方向)已没有该多播组的成员,就应把它和下游的树枝一起剪除。
- 当某个树枝有新增加的组成员时,可以再接入到多播转发树上。
反向路径广播RPB和剪除
隧道技术(tunneling)
隧道技术适用于多播组的位置在地理上很分散的情况。
基于核心的发现技术
- 这种方法对于多播组的大小在较大范围内变化时都适合。
- 这种方法是对每一个多播组 G 指定一个核心(core)路由器,给出它的IP单播地址。
- 核心路由器按照前面讲过的方法创建出对应于多播组G的转发树。
几种多播路由选择协议
- 距离向量多播路由选择协议 DVMRP (Distance Vector Multicast Routing Protocol)
- 基于核心的转发树 CBT (Core Based Tree)
- 开放最短通路优先的多播扩展 MOSPF (Multicast Extensions to OSPF)
- 协议无关多播-稀疏方式 PIM-SM(Protocol Independent Multicast-Sparse Mode)
- 协议无关多播-密集方式 PIM-DM(Protocol Independent Multicast-Dense Mode)
8.虚拟专用网VPN和网络地址转换NAT
Ⅰ.虚拟专用网VPN
- 由于IP地址的紧缺,一个机构能够申请到的IP地址数往往远小于本机构所拥有的主机数。
- 考虑到互联网并不很安全,一个机构内也并不需要把所有的主机接入到外部的互联网。
- 假定在一个机构内部的计算机通信也是采用TCP/IP协议,那么从原则上讲,对于这些仅在机构内部使用的计算机就可以由本机构自行分配其IP地址。
本地地址与全球地址
- 本地地址——仅在机构内部使用的IP地址,可以由本机构自行分配,而不需要向互联网的管理机构申请。
- 全球地址——全球唯一的IP地址,必须向互联网的管理机构申请。
- 问题:在内部使用的本地地址就有可能和互联网中某个IP地址重合,这样就会出现地址的二义性问题。
- 解决:RFC 1918指明了一些专用地址(private address)。专用地址只能用作本地地址而不能用作全球地址。在互联网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。
RFC 1918指明的专用P地址
三个专用IP地址块:
(1) 10.0.0.0 到 10.255.255.255
A类,或记为10.0.0.0/8,它又称为24位块(2) 172.16.0.0 到 172.31.255.255
B类,或记为172.16.0.0/12,它又称为20位块(3) 192.168.0.0 到 192.168.255.255
C类,或记为192.168.0.0/16,它又称为16位块
专用网
- 采用这样的专用IP地址的互连网络称为专用互联网或本地互联网,或更简单些,就叫做专用网。
- 因为这些专用地址仅在本机构内部使用。专用IP地址也叫做可重用地址(reusable address)。
虚拟专用网VPN
- 利用公用的互联网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网 VPN (Virtual Private Network)。
- “专用网” 是因为这种网络是为本机构的主机用于机构内部的通信,而不是用于和网络外非本机构的主机通信。
- “虚拟”表示“好像是”,但实际上并不是,因为现在并没有真正使用通信专线,而VPN只是在效果上和真正的专用网一样。
虚拟专用网VPN构建
- 如果专用网不同网点之间的通信必须经过公用的互联网,但又有保密的要求,那么所有通过互联网传送的数据都必须加密。
- 一个机构要构建自己的 VPN就必须为它的每一个场所购买专门的硬件和软件,并进行配置,使每一个场所的VPN系统都知道其他场所的地址。
用隧道技术实现虚拟专用网
内联网intranet和外联网extranet
它们都是基于TCP/IP协议的。
由部门A和B的内部网络所构成的虚拟专用网VPN又称为内联网(intranet),表示部门A和B都是在同一个机构的内部。
一个机构和某些外部机构共同建立的虚拟专用网VPN又称为外联网(extranet)。
远程接入 VPN
- 远程接入VPN(remote access VPN)可以满足外部流动员工访问公司网络的需求。
- 在外地工作的员工拨号 接入互联网,而驻留在员工PC机中的VPN软件 可在员工的PC机和公司的主机之间 建立 VPN隧道,因而外地员工与公司通信的内容是保密的,员工们感到好像就是使用公司内部的本地网络。
Ⅱ.网络地址转换NAT
■ 问题:在专用网上 使用专用地址的主机 如何与 互联网上的主机 通信(并不需要加密)?
解决:
- 再申请一些全球IP地址。但这在很多情况下是不容易做到的。
- 采用网络地址转换 NAT。这是目前使用得最多的方法。
■ 网络地址转换 NAT (Network AddressTranslation)方法于1994年提出。
■ 需要在专用网连接到互联网的路由器上安装NAT 软件。装有NAT 软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。■ 所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和互联网连接。
网络地址转换的过程
- 内部主机A用本地地址
和互联网上主机B通信所发送的数据报必须经过NAT路由器。
- NAT路由器将数据报的源地址
转换成全球地址
,并把转换结果记录到NAT地址转换表中,目的地址
保持不变,然后发送到互联网。
- NAT路由器收到主机B发回的数据报时,知道数据报中的源地址是
而目的地址是
。
- 根据NAT转换表,NAT路由器将目的地址
转换为
,转发给最终的内部主机A。
- 可以看出,在内部主机与外部主机通信时,在NAT路由器上发生了两次地址转换:
离开专用网时:替换源地址,将内部地址替换为全球地址;
进入专用网时:替换目的地址,将全球地址替换为内部地址;
NAT地址转换表举例 方向 字段 旧的IP地址 新的IP地址 出 源IP地址 192.168.0.3 172.38.1.5 入 目的IP地址 172.38.1.5 192.168.0.3 出 源IP地址 192.168.0.7 172.38.1.6 入 目的IP地址 172.38.1.6 192.168.0.7
网络地址转换NAT
当NAT路由器具有 n 个全球IP地址时,专用网内最多可以同时有 n 台主机接入到互联网。这样就可以使专用网内较多数量的主机,轮流使用NAT路由器有限数量的全球IP地址。
通过NAT路由器的通信必须由专用网内的主机发起。专用网内部的主机不能充当服务器用,因为互联网上的客户无法请求专用网内的服务器提供服务。
网络地址与端口号转换NAPT
- 为了更加有效地利用NAT路由器上的全球IP地址,现在常用的NAT转换表把运输层的端口号也利用上。这样,就可以使多个拥有本地地址的主机,共用一个NAT路由器上的全球IP地址,因而可以同时和互联网上的不同主机进行通信。
- 使用端口号的NAT叫做网络地址与端口号转换NAPT(Network Address and Port Translation),而不使用端口号的NAT就叫做传统的NAT(traditional NAT)。
NAPT地址转换表
NAPT地址转换表举例 方向 字段 旧的IP地址和端口号 新的IP地址和端口号 出 源IP地址:TCP源端口 192.168.0.3:30000 172.38.1.5:40001 出 源IP地址:TCP源端口 192.168.0.4:30000 172.38.1.5:40002 入 目的IP地址:TCP目的端口 172.38.1.5:40001 192.168.0.3:30000 入 目的IP地址:TCP目的端口 172.38.1.5:40002 192.168.0.4:30000
NAPT把专用网内不同的源IP地址,都转换为同样的全球IP地址。
但对源主机所采用的TCP端口号(不管相同或不同),则转换为不同的新的端口号。因此,当NAPT路由器收到从互联网发来的应答时,就可以从IP数据报的数据部分找出运输层的端口号,然后根据不同的目的端口号,从 NAPT转换表中找到正确的目的主机。
9.多协议标记交换 MPLS
- IETF于1997年成立了MPLS工作组,开发出一种新的协议——多协议标记交换MPLS(MultiProtocol Label Switching)。
- “多协议” 表示在 MPLS的上层可以采用多种协议,例如:IP,IPX;可以使用多种数据链路层协议,例如:PPP,以太网,ATM等。
- “标记” 是指每个分组被打上一个标记,根据该标记对分组进行转发。
为了实现交换,可以利用面向连接的概念,使每个分组携带一个叫做标记(label)的小整数。当分组到达交换机(即标记交换路由器)时,交换机读取分组的标记,并用标记值来检索分组转发表。这样就比查找路由表来转发分组要快得多。
MPLS特点
■ MPLS并没有取代IP,而是作为一种IP增强技术,被广泛地应用在互联网中。
■ MPLS具有以下三个方面的特点:
- (1)支持面向连接的服务质量;
- (2)支持流量工程,平衡网络负载;
- (3)有效地支持虚拟专用网VPN。
Ⅰ.MPLS的工作原理
①基本工作过程
■ IР分组的转发
- 在传统的IP网络中,分组每到达一个路由器后,都必须提取出其目的地址,按目的地址查找路由表,并按照“最长前缀匹配”的原则找到下一跳的IP地址(请注意,前缀的长度是不确定的)。
- 当网络很大时,查找含有大量项目的路由表要花费很多的时间。
- 在出现突发性的通信量时,往往还会使缓存溢出,这就会引起分组丢失、传输时延增大和服务质量下降。
MPLS协议的基本原理
- 在MPLS域的入口处,给每一个IP数据报打上固定长度“标记”,然后对打上标记的IP数据报用硬件进行转发。
- 采用硬件技术对打上标记的IP数据报进行转发就称为标记交换。
- “交换”也表示在转发时不再上升到第三层查找转发表,而是根据标记在第二层(链路层)用硬件进行转发。
- MPLS域(MPLS domain)是指该域中有许多彼此相邻的路由器,并且所有的路由器都是支持MPLS技术的标记交换路由器 LSR (Label Switching Router)。
- LSR同时具有标记交换和路由选择这两种功能,标记交换功能是为了快速转发,但在这之前LSR需要使用路由选择功能构造转发表。
MPLS的基本工作过程
⑴ MPLS域中的各LSR使用专门的标记分配协议LDP交换报文,并找出标记交换路径LSP。各LSR根据这些路径构造出分组转发表。
⑵ 分组进入到MPLS域时,MPLS 入口结点把分组打上标记,并按照转发表将分组转发给下一个LSR。给IP数据报打标记的过程叫做分类(classification)。
⑶ 一个标记仅仅在两个标记交换路由器LSR之间才有意义。分组每经过一个LSR,LSR就要做两件事:
①是转发, ②是更换新的标记,即把入标记更换成为出标记。这就叫做标记对换(label swapping)。
转发表 入接口 入标记 出接口 出标记 0 3 1 1
项目含义:从入接口0收到一个入标记为3的IP数据报,转发时,应当把该IP数据报从出接口1转发出去,同时把标记对换为1。 ⑷ 当分组离开MPLS域时,MPLS 出口结点把分组的标记去除。再以后就按照一般分组的转发方法进行转发。
上述的这种“由入口LSR确定进入MPLS域以后的转发路径”称为显式路由选择(explicit routing),它和互联网中通常使用的“每一个路由器逐跳进行路由选择”有着很大的区别。 ②转发等价类FEC(Forwarding Equivalence Class)
- MPLS有个很重要的概念就是转发等价类FEC(Forwarding Equivalence Class)。
- “转发等价类”就是路由器按照同样方式对待的分组的集合。
“按照同样方式对待” 表示:从同样接口转发到同样的下一跳地址,并且具有同样服务类别和同样丢弃优先级等。
- 划分FEC的方法不受什么限制,这都由网络管理员来控制,因此非常灵活。
- 入口结点并不是给每一个分组指派一个不同的标记,而是将属于同样FEC的分组都指派同样的标记。
- FEC和标记是一一对应的关系。
FEC用于负载平衡
流量工程
网络管理员采用自定义的FEC就可以更好地管理网络的资源。
这种均衡网络负载的做法也称为流量工程TE(Traffic Engineering)或通信量工程。
Ⅱ.MPLS首部的位置与格式
- MPLS并不要求下层的网络都使用面向连接的技术。
- 下层的网络并不提供打标记的手段,而IPv4数据报首部也没有多余的位置存放MPLS标记。
- 这就需要使用一种封装技术:在把IP数据报封装成以太网帧之前,先要插入一个MPLS首部。
- 从层次的角度看,MPLS首部就处在第二层和第三层之间。
MPLS首部的格式
“给IP数据报打上标记”其实就是在 以太网的帧首部 和 IР数据报的首部 之间插入一个4字节的MPLS首部。 MPLS首部共包括以下四个字段:
- 标记值(占20位)。可以同时容纳高达
个流(即1048576个流)。实际上几乎没有哪个MPLS 实例会使用很大数目的流,因为通常需要管理员人工管理和设置每条交换路径。
- 试验(占3位)。目前保留用作试验。
- 栈S(占1位)。在有 “标记栈” 时使用。
- 生存时间TTL(占8位)。用来防止MPLS分组在MPLS域中兜圈子。