网络层提供的两种服务
争论:网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”),实质是在计算机通信中,可靠交付应当由网络还是端系统负责
- 电信网(电话服务)的成功经验:网络用面向连接的通信方式负责可靠交付。因电话机没有差错处理能力。因此电信网必须使用昂贵的程控交换机(其软件也非常复杂)负责可靠地传送话音信号,
- 互联网的设计思路:计算机网络的端系统有很强的差错处理能力。网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。“数据报”(datagram)是互联网的设计者最初使用的名词,其实数据报(或 IP 数据报)就是“分组”。
网络在发送分组时不需要先建立连接。每一个分组独立发送,与其前后的分组无关(不进行编号)。网络层不提供服务质量的承诺,所传送的分组可能出错、丢失、重复和失序,也不保证分组交付的时限。这就使网络中的路由器比较简单,且价格低廉 (与电信网的交换机相比较)。如果主机中的进程之间的通信需要是可靠的, 就由网络的主机中的运输层负责(包括差错处理、流量控制等)。好处是:网络造价大大降低,运行方式灵活,能够适应多种应用。
OSI 体系的支持者曾极力主张在网络层使用可靠传输的虚电路服务,也曾推出过虚电路服务的标准—ITU-T 的 X.25 建议书。但现在 X.25 早已成为历史了。
对比的方面 | 虚电路服务 | 数据报服务 |
---|---|---|
思路 | 可靠通信应当由网络来保证 | 可靠通信应当由用户主机来保证 |
连接的建立 | 必须有 | 不需要 |
终点地址 | 仅在连接建立阶段使用,每个分组使用短的虚电路号 | 每个分组都有终点的完整地址 |
分组的转发 | 属于同一条虚电路的分组均按照同一路由进行转发 | 每个分组独立选择路由进行转发 |
当结点出故障时 | 所有通过出故障的结点的虚电路均不能工作 | 出故障的结点可能会丢失分组, 一些路由可能会发生变化 |
分组的顺序 | 总是按发送顺序到达终点 | 到达终点的时间不一定按发送顺序 |
端到端的差错处理和流量控制 | 可以由网络负责,也可以由用户主机负责 | 由用户主机负责 |
网际协议 IP
网际协议 IP 又称为 Kahn-Cerf 协议,因为是 Robert Kahn 和 Vint Cerf 二人共同研发的。严格来说,这里所讲的是 IP 的第 4 个版本, 应记为 IPv4。(版本 1 ~ 3 和版本 5 都未曾使用过)。
由于网际协议 IP 是用来使互连起来的许多计算机网络能够进行通信的,因此 TCP/IP 体系中的网络层常常被称为网际层(internet layer), 或 IP 层。
与 IP 协议配套使用的还有三个协议:
- 地址解析协议 ARP (Address Resolution Protocol)
- 网际控制报文协议 ICMP (Internet Control Message Protocol)
- 网际组管理协议 IGMP (Internet Group Management Protocol)
虚拟互连网络
让大家都使用相同的网络是不现实的。没有单一的网络能够适应所有用户的需求。网络技术不断发展,制造厂家也要经常推出新的网络,因此在市场上总是有很多种不同性能、不同网络协议的网络。
四种网络中间设备:
工作层次 | 设备 | 描述 |
---|---|---|
物理层 | 转发器(repeater) | 又被中继器或放大器,负责物理层的数据中继,实现电气信号的“再生”。用于互连两个相同类型的网段,主要功能是延伸网段和改变传输媒体,从而实现信息位的转发。它本身不执行信号的过滤功能。以太网上的主机之间的距离不能太远(例如,10BASE-T 以太网的两台主机之间的距离不超过 200 米),否则主机发送的信号经过铜线的传输就会衰减到使 CSMA/CD 协议无法正常工作。在过去广泛使用粗缆或细缆以太网时,常使用工作在物理层的转发器来扩展以太网的地理覆盖范围。两个网段可用一个转发器连接起来。IEEE 802.3 标准还规定,任意两个站之间最多可以经过三个电缆网段。但随着双绞线以太网成为以太网的主流类型,扩展以太网的覆盖范围已很少使用转发器了。 |
物理层 | 集线器 | 一种特殊的转发器。每个接口仅仅简单地转发比特,不进行碰撞检测。任一时刻只能由两台计算机之间进行通信。若两个接口同时有信号输入(即发生碰撞),那么所有的接口都将收不到正确的帧。使用集线器可以在物理层扩展以太网(扩展后的以太网仍然是一个网络),它采用共享带宽的工作方式,附接端口的所有计算机采用CSMA/CD方式竞争带宽的使用, 不具有类似于交换机的"记忆"和"学习"能力。它发送数据时采用广播方式发送,把数据包发送到与之相连的所有节点。 |
数据链路层 | 网桥(bridge) | 又称为桥接器,在数据链路层扩展以太网。网桥收到帧时,并不是向所有的接口转发,而是根据此帧的目的 MAC 地址,查找网桥中的地址表,然后确定将该帧转发到哪一个接口,或者是把它丢弃(即过滤)。网桥互连两个独立的、仅在低两层实现上有差异的子网。 将两个局域网(LAN)连起来,根据MAC地址(物理地址)来转发帧,使本地通信限制在本网段内,并转发相应的信号至另一网段。通常用于联接数量不多的、同一类型的网段。网桥的存储和转发功能与中继器相比,克服了物理限制,这意味着构成lan的数据站总数和网段数很容易扩充。网桥纳入存储和转发功能可使其适应于连接使用不同mac协议的两个lan。因而构成一个不同lan混连在一起的混合网络环境。网桥的中继功能仅仅依赖于mac帧的地址,因而对高层协议完全透明。网桥将一个较大的lan分成段,有利于改善可靠性、可用性和安全性。主要缺点是:由于网桥在执行转发前先接收帧并进行缓冲,会引入更多时延。由于网桥不提供流控功能,因此在流量较大时有可能使其过载,从而造成帧的丢失。 |
网络层 | 路由器(router) | 讨论网络互连时,都是指用路由器进行网络互连和路由选择 |
网络层以上 | 网关(gateway) | 用网关连接两个不兼容的系统需要在高层进行协议的转换,由于比较复杂,目前使用得较少 |
路由器其实就是一台专用计算机,用来在互联网中进行路由选择。由于历史的原因,许多有关 TCP/IP 的文献曾经把网络层使用的路由器称为网关。
许多计算机网络通过一些路由器进行互连。由于参加互连的计算机网络都使用相同的网际协议 IP,可以把互连以后的计算机网络看成一个虚拟互连网络(internet)。各种物理网络的异构性本来是客观存在的,但利用 IP 协议就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。这种使用 IP 协议的虚拟互连网络可简称为 IP 网。当 IP 网上的主机进行通信时,它们看不见互连的各网络的具体异构细节(如具体的编址方案、路由选择协议,等等)。如果在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就是现在的互联网(Internet)。
分类的 IP 地址
有关 IP 最重要的文档就是互联网的正式标准 RFC 791。
IP 地址及其表示方法
整个的互联网就是一个单一的、抽象的网络。IP 地址就是给互联网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的 32 位的标识符。IP 地址现在由互联网名字和数字分配机构 ICANN (Internet Corporation for Assigned Names and Numbers)进行分配。
IP 地址的编址方法共经过了三个历史阶段。
编址方法 | 文档 | 备注 |
---|---|---|
分类的 IP 地址 | 1981 年通过了相应的标准协议。 | 最基本的编址方法 |
子网的划分 | 1985 年,RFC 950 | 对最基本的编址方法的改进。 |
构成超网 | 1993 年 | 比较新的无分类编址方法。1提出后很快就得到推广应用。 |
所谓“分类的 IP 地址”就是将 IP 地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成。可以记为:IP 地址 ::= { <网络号>, <主机号>}
- 第一个字段是网络号(net-id),它标志主机(或路由器)所连接到的网络。一个网络号在整个互联网范围内必须是唯一的。
- 第二个字段是主机号(host-id),它标志该主机(或路由器)。一台主机号在它的网络范围内必须是唯一的。
类 | 头几位 | 网络号位数 | 网络数 | 地址数 | 起始 | 结尾 |
---|---|---|---|---|---|---|
A | 0 | 8 | 128 (27) | 231 | 0.0.0.0 | 127.255.255.255 |
B | 10 | 16 | 16,384 (214) | 230 | 128.0.0.0 | 191.255.255.255 |
C | 110 | 24 | 2,097,152 (221) | 229 | 192.0.0.0 | 223.255.255.255 |
D (multicast) | 1110 | not defined | not defined | 228 | 224.0.0.0 | 239.255.255.255 |
E (reserved) | 1111 | not defined | not defined | 228 | 240.0.0.0 | 255.255.255.255 |
最长前缀匹配
在使用 CIDR 时,由于采用了网络前缀这种记法,路由表中每个项目由“网络前缀”和“下一跳地址”组成。但是在查找路由表时可能会得到不止一个匹配结果。此时应当从匹配结果中选择具有最长网络前缀的路由。这叫做最长前缀匹配(longest-prefix matching),这是因为网络前缀越长,其地址块就越小,因而路由就越具体(more specific)。最长前缀匹配又称为最长匹配或最佳匹配。
47 .( 9 分)假设 lnternet 的两个自治系统构成的网络如题 47 图所示,自治系统 AS1 由路由器R1 连接两个子网构成;自治系统 AS2 由路由器 R2 、 R3 互联并连接 3 个子网构成。各子网地址、 R2 的接口名、 R1 与 R3 的部分接口 IP 地址如题 47 图所示。
(1)假设路由表结构如下表所示。请利用路由聚合技术,给出 R2 的路由表,要求包括到达题 47 图中所有子网的路由,且路由表中的路由项尽可能少。
目的网络 | 下一跳 | 接口 |
---|
194.17.20.128/25 和 194.17.21.0/24 的最大共同前缀为:11000010.00010001.0001010 ,即 194.17.20.0/23
十进制 | 二进制 |
---|---|
194.17.20.128/25 | 11000010.00010001.00010100.10000000 |
194.17.21.0/24 | 11000010.00010001.00010101.00000000 |
(2)若 R2 收到一个目的 IP 地址为 194.17.20.200 的 IP 分组, R2 会通过哪个接口转发该 IP分组?
IP 地址与硬件地址
主机的 IP 地址与硬件地址的区别:从层次的角度看,物理地址是数据链路层和物理层使用的地址,而 IP 地址是网络层和以上各层使用的地址,是一种逻辑地址(称 IP 地址为逻辑 地址是因为 IP 地址是用软件实现的)。
在局域网中,由于硬件地址已固化在网卡上的 ROM 中,因此常常将硬件地址称为物理地址。因为在局域网的 MAC 帧中的源地址和目的地址都是硬件地址,因此硬件地址又称为 MAC 地址。
MAC 帧在传送时使用的源地址和目的地址都是硬件地址,这两个硬件地址都写在 MAC 帧的首部中。 连接在通信链路上的设备(主机或路由器)在收到 MAC 帧时,根据 MAC 帧首部中的硬件地址决定收下或丢弃。只有在剥去 MAC 帧的首部和尾部后把 MAC 层的数据上交给网络层后,网络层才能在 IP 数据报的首部中找到源 IP 地址和目的 IP 地址。
几个要点:
- 在 IP 层抽象的互联网上只能看到 IP 数据报。虽然 IP 数据报经过路由器转发时,首部中的源地址和目的地址始终不变。数据报中间经过的路由器的 IP 地址并不出现在 IP 数据报的首部中。
- 虽然在 IP 数据报首部有源站 IP 地址,但路由器只根据目的站的 IP 地址的网络号进行路由选择。
- 在局域网的链路层,只能看见 MAC 帧。IP 数据报被封装在 MAC 帧中。MAC 帧 在不同网络上传送时,其 MAC 帧首部中的源地址和目的地址要发生变化。路由器收到MAC 帧后,在数据链路层,要丢弃原来的 MAC 帧的首部和尾部。在转发时,要重新添加上 MAC 帧的首部和尾部。这时首部中的源地址和目的地址分别 便成为 HA4 和 HA5。MAC 帧的首部的这种变化,在上面的 IP 层上是 看不见的。
- 尽管互连在一起的网络的硬件地址体系各不相同,但 IP 层抽象的互联网却屏蔽了下层这些很复杂的细节。只要我们在网络层上讨论问题,就能够使用统一的、抽象的 IP 地 址研究主机和主机或路由器之间的通信。
地址解析协议 ARP
地址解析协议 ARP 用来根据机器的 IP 地址找出其相应的硬件地址。
网络层使用的是 IP 地址,但在实际网络的链路上传送数据帧时,最终还是必须使用该网络的硬件地址。但 IP 地址和硬件地址之间由于格式不同而不存在简单的映射关系。网络上会需要新增或撤走主机,网络适配器也会使主机的硬件地址改变。
使用抽象的 IP 地址,而不直接使用硬件地址进行通信的意义:虽然在网络链路上传送的帧最终是按照硬件地址找到目的主机的,但由于全世界各式各样的网络使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,由用户或用户主机来完成这项工作几乎是不可能的事。但 IP 编址把这个复杂问题解决了。连接到互联网的主机只需各自拥有一个唯一的 IP 地址,相互的通信就像连接在同一个网络上那样简单方便,在虚拟的 IP 网络上用 IP 地址进行通信给广大的计算机用户带来很大的方便。
每一台主机都设有一个 ARP 高速缓存(ARP cache),里面有本局域网上的各主机和路由器的 IP 地址到硬件地址的映射表,这个映射表还经常动态更新。 当主机 A 要向本局域网上的某台主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。如有,就将其对应的硬件地址写入 MAC 帧,然后通过局域网把该 MAC 帧发往此硬件地址。 若无,原因可能是主机 B 才入网,或是主机 A 刚刚加电,其高速缓存还是空的,则主机 A 就自动运行 ARP, 找出主机 B 的硬件地址 :
- ARP 进程在本局域网上广播发送一个 ARP 请求分组。主要内容是:“我的 IP 地址是 209.0.0.5,硬件地址是 00-00-C0-15-AD-18。我想知道 IP 地址为 209.0.0.6 的主机的硬件地址。
- 在本局域网上的所有主机上运行的 ARP 进程都收到此 ARP 请求分组。
- 主机 B 的IP 地址与 ARP 请求分组中要查询的 IP 地址一致,收下这个 ARP 请求分组,并向主机 A 发送 ARP 响应分组,ARP 响应分组的主要内容是:“我的 IP 地址是 209.0.0.6,我的硬件地址是 08-00-2B-00-EE-0A。”,同时主机 B 还将把主机 A 的这一地址映射写入自己的 ARP 高速缓存中。 虽然 ARP 请求分组是广播发送的,但 ARP 响应分组是普通的单播,即从一个源地址发送到一个目的地址 .其余所有主机不理睬这个 ARP 请求分组。
- 主机 A 收到主机 B 的 ARP 响应分组后,就在其 ARP 高速缓存中写入主机 B 的 IP 地址到硬件地址的映射。
ARP 对保存在高速缓存中的每一个映射地址项目都设置生存时间(例如,10 ~ 20 分钟)。凡超过生存时间的项目就从高速缓存中删除掉。设想 A 的 ARP 高速缓存里保存有 B 的硬件地址。但 B 的网络适配器坏了,更换了一块,因此硬件地址就改变了。A 在其 ARP 高速缓存中查找到 B 原先的硬件地址,向 B 发送数据帧,由于该硬件地址已经失效了,因此 A 无法找到主机 B。但是过了一段不长的生存时间,A 的 ARP 高速缓存中已经删除了 B 原先的硬件地址,于是 A 重新广播发送 ARP 请求分组,又找到了 B 。
注意:ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。如果所要找的主机和源主机不在同一个局域网上,就无法解析出硬件地址。实际上主机 H1 也不需要知道远程主机 H2 的硬件地址:IP 数据报首先需要通过同一个局域网上的路由器 R1 转发。因此 H1 需要把 R1 的 IP 地址解析为硬件地址,R1从转发表找出了下一跳路由器 R2, 同时使用 ARP 解析出 R2的 硬件地址,于是 IP 数据报按照该硬件地址转发到路由器 R2。R2 用类似方法解析出目的主机 H2 的硬件地址,使 IP 数据报最终交付主机 H2。
从 IP 地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 协议就会自动地把这个 IP 地址解析为链路层所需要的硬件地址。
使用 ARP 的四种典型情况 :
-
主机把 IP 数据报发送到同一个网络上的另一台主机。此时 H1 发送 ARP 请求分组,找到目的主机 H2的硬件地址。
-
主机要把 IP 数据报发送到另一个网络上的一台主机。此时 H1 发送 ARP 请求分组,找到网 1 上的一个路由器 R1 的硬件地址。剩下的工作由路由器 R1 来完成。
-
路由器,要把 IP 数据报转发到同一个网络上 的主机。这时 R1 发送 ARP 请求分组,找到目的主机 H3的硬件地址。
-
发送方是路由器,要把 IP 数据报转发到网 3 上的一台主机。H4与 R1 不是连接在同一个网络上。这时 R1 发送 ARP 请求分组,找到连接在网 2 上的一个路由器 R2 的硬件地址。剩下的工作由这个路由器 R2 来完成
(3) R1 与 R2 之间利用哪个路由协议交换路由信息?该路由协议的报文被封装到哪个协议的分组中进行传输?
网际控制报文协议 ICMP
互联网的路由选择协议
外部网关协议 BGP
边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。BGP 采用了**路径向量(path vector)**路由选择协议,
在不同自治系统 AS 之间的路由选择不能使用内部网关协议的原因:
- 互联网的规模太大,使得 AS 之间路由选择非常困难。目前在互联网的主干网路由器中,一个路由表的项目数早已超过了 5 万个网络前缀。如果使用链路状态协议,则每一个路由器必须维持一个很大的链路状态数据库,用 Dijkstra 算法计算最短路径时花费的时间也太长。另外,由于自治系统 AS 各自运行自己选定的内部路由选择协议,并使用本 AS 指明的路径度量,因此,当一条路径通过几个不同 AS 时,要想对这样的路径计算出有意义的代价,用“代价”作为度量来寻找最佳路由也是很不现实的。比较合理的做法是在自治系统之间交换“可达性”信息(即“可到达”或“不可到达”)。例如,告诉相邻路由器:“到达目的网络 N 可经过自治系统 ASx”
- AS 之间的路由选择必须考虑有关策略,应当允许使用多种路由选择策略。包括政治、安全或经济方面的考虑。例如,我国国内的站点在互相传送数据报时不应经过国外兜圈子,特别是,不要经过某些对我国的安全有威胁的国家。有的路径的使用代价很高或很不安全。还有一种情况,如自 AS1 要发送数据报给 AS2,本来最好是经过 AS3。但 AS3 不愿意让这些数据报通过本自治系统的网络。这些策略都是由网络管理人员对每一个路由器进行设置的,但其并不是自治系统之间的路由选择协议本身。其他策略的例子,如:“仅在到达下列这些地址时才经过 ASx”,“ASx 和 ASy 相比时应优先通过 ASx”,等等。显然,使用这些策略是为了找出较好的路径而不是最佳路径。
在配置 BGP 时,每一个自治系统的管理员要选择至少一个路由器作为该自治系统的 “BGP 发言人”。一般说来,两个 BGP 发言人都是通过一个共享网络连接在一起的,而 BGP 发言人往往就是 BGP 边界路由器,但也可以不是。 一个 BGP 发言人与其他 AS 的 BGP 发言人要交换路由信息,就要先建立 TCP 连接 (端口号为 179),然后在此连接上交换 BGP 报文以建立 BGP 会话,利用 BGP 会话交换路由信息,如增加了新的路由,或撤销过时的路由,以及报告出差错的情况等等。使用 TCP 连接能提供可靠的服务,也简化了路由选择协议。使用 TCP 连接交换路由信息的两 个 BGP 发言人,彼此成为对方的邻站或对等站。每一个 BGP 发言人除了必须运行 BGP 协议外,还必须运行该自治 系统所使用的内部网关协议,如 OSPF 或 RIP。
边界网关协议 BGP 所交换的网络可达性的信息就是要到达某个网络(用网络前缀表示)所要经过的一系列自治系统。各 BGP 发言人就根据所采用的策略从收到的路由信息中找出到达各自治系统的较好路由。
当前互联网的多级结构的网络拓扑决定了 BGP 路由选择协议的特点。 一个 BGP 发言人交换路径向量的例子:自治系统 AS2 的 BGP 发言人通 知主干网的 BGP 发言人:“要到达网络 N1, N2, N3 和 N4 可经过 AS2。”主干网在收到这个通知后,就发出通知:“要到达网络 N1, N2, N3 和 N4 可沿路径(AS1, AS2)。”同理,主干网还 可发出通知:“要到达网络 N5, N6和 N7 可沿路径(AS1, AS3)。”
BGP 协议交换路由信息的结点数量级是自治系统个数的量级, 这要比这些自治系统中的网络数少很多。要在许多自治系统之间寻找一条较好的路径,就是要寻找正确的 BGP 发言人(或边界路由器),这样就使得自治系统之间的路由选择不致过分复杂。 BGP 支持无分类域间路由选择 CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的自治系统序列。
使用路径向量避免产生兜圈子的路由:如果一个 BGP 发言人收到了其他 BGP 发言人发来的路径通知,就检查本自治系统是否在此通知的路径中。如果在这条路径中,就不能采用这条路径(因为会兜圈子)。
在 BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销方面都有好处。
在 RFC 4271 中规定了 BGP-4 的四种报文:
-
OPEN(打开)报文,用来与相邻的另一个 BGP 发言人建立关系,使通信初始化。
-
UPDATE(更新)报文,用来通告某一路由的信息,以及列出要撤销的多条路由。 (
-
KEEPALIVE(保活)报文,用来周期性地证实邻站的连通性。
-
NOTIFICATION(通知)报文,用来发送检测到的差错。
-
若两个邻站属于两个不同 AS,而其中一个邻站打算和另一个邻站定期地交换路由信 息,这就应当有一个商谈的过程(因为很可能对方路由器的负荷已很重因而不愿意再加重负担)。因此,一开始向邻站进行商谈时就必须发送 OPEN 报文。
-
如果邻站接受这种邻站关系,就用 KEEPALIVE 报文响应。这样,两个 BGP 发言人的邻站关系就建立了。 一旦邻站关系建立了,就要继续维持这种关系。双方中的每一方都需要确信对方是存在的,且一直在保持这种邻站关系。为此,这两个 BGP 发言人彼此要周期性地交换 KEEPALIVE 报文(一般每隔 30 秒)。KEEPALIVE 报文只有 19 字节长(只用 BGP 报文的 通用首部),因此不会造成网络上太大的开销。
-
UPDATE 报文是 BGP 协议的核心内容。BGP 发言人可以用 UPDATE 报文撤销它以前曾经通知过的路由,也可以宣布增加新的路由。撤销路由可以一次撤销许多条,但增加新路由时,每个更新报文只能增加一条。
BGP 可以很容易地解决距离向量路由选择算法中的“坏消息传播得慢”这一问题。当 某个路由器或链路出故障时,由于 BGP 发言人可以从不止一个邻站获得路由信息,因此很容易选择出新的路由。距离向量算法往往不能给出正确的选择,是因为这些算法不能指出哪些邻站到目的站的路由是独立的。
BGP 报文的格式:四种类型的 BGP 报文具有同样的通用首部,其长度 为 19 字节。通用首部分为三个字段。标记(marker)字段为 16 字节长,用来鉴别收到的 BGP 报文(这是假定将来有人会发明出合理的鉴别方案)。当不使用鉴别时,标记字段要置为全 1。长度字段指出包括通用首部在内的整个 BGP 报文以字节为单位的长度,最小值是 19, 最大值是 4096。类型字段的值为 1 到 4,分别对应于上述四种 BGP 报文中的一种。 OPEN 报文共有 6 个字段,即版本(1 字节,现在的值是 4)、本自治系统号(2 字节, 使用全球唯一的 16 位自治系统号,由 ICANN 地区登记机构分配)、保持时间(2 字节,以 秒计算的保持为邻站关系的时间)、BGP 标识符(4 字节,通常就是该路由器的 IP 地址)、 可选参数长度(1 字节)和可选参数。
虚拟专用网 VPN 和网络地址转换 NAT
虚拟专用网 VPN
由于 IP 地址的紧缺,一个机构能够申请到的 IP 地址数往往远小于本机构所拥有的主机数。
考虑到互联网并不很安全,一个机构内也并不需要把所有的主机接入到外部的互联网。假定在机构内部的计算机通信也是采用 TCP/IP 协议,那计算机就可以由本机构自行分配其仅在本机构有效的 IP 地址(称为本地地址),而不需要向互联网的管理机构申请全球地址。为了避免地址的二义性问题,RFC 1918 指明了一些专用地址(private address),只能用于一个机构的内部通信。在互联网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。
三个专用地址块分别相当于一个 A 类网络、16 个连续的 B 类网络和 256 个连续的 C 类网络。
A 类地址本已用完, 10.0.0.0 本是分配给 ARPANET 的。但由于其已经关闭停运,因此这个地址就用作专用地址。
IP 地址范围 | CIDR 记法 | 位块 |
---|---|---|
10.0.0.0 - 10.255.255.255 | 10.0.0.0/8 | 24位块 |
172.16.0.0 - 172.31.255.255 | 172.16.0.0/12 | 20位块 |
192.168.0.0 - 192.168.255.255 | 192.168.0.0/16 | 16位块 |
采用这样的专用 IP 地址的互连网络称为专用互联网或本地互联网。专用 IP 地址也叫做可重用地址 (reusable address)。
有时一个机构分布范围很广的许多部门之间通信可以有两种方法:
- 租用电信公司的通信线路为本机构专用。由于线路的租金太高,一般难于承受。
- 利用公用的互联网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网 VPN (Virtual Private Network)。“虚拟”表示“并没有真正使用通信专线,只是在效果上和真正的专用网一样。
如果专用网不同网点之间的通信必须经过公用的互联网,但又有保密的要求,那么所有通过互联网传送的数据都必须加密。
一个机构要构建自己的 VPN 就必须为它的每一个场所购买专门的硬件和软件,并进行配置,使每一个场所的 VPN 系统都知道其他场所的地址。
使用 IP 隧道技术实现虚拟专用网。:假定某个机构在两个相隔较远的场所建立了专用网 A 和 B,其网络地址分别为专用地 址 10.1.0.0 和 10.2.0.0。现在这两个场所需要通过公用的互联网构成一个 VPN。 则每一个场所至少要有一个路由器具有合法的全球 IP 地址。
场所 A 的主机 X 要和另一个场所 B 的主机 Y 通信过程:
- 主机 X 向主机 Y 发送的 IP 数据报先作为本机构的内部数据报发送到与互联网连接的路由器 R1。
- R1 收到内部数据报后,发现其目的网络必须通过互联网才能到达,就把整个的内部数据报进行加密,然后重新加上数据报的首部,封装成为在互联网上发送的外部数据报,其源地址是路由器 R1 的全球地址,而目的地址是路由器 R2 的全球地址。
- 路由器 R2收到数据报后将其数据部分取出进行解密,恢复出原来的内部数据报(目的地址是 10.2.0.3),交付主机 Y。
数据报从 R1 传送到 R2 可能要经过互联网中的很多个网络和路由器。但从逻辑上看,在 R1 到 R2 之间好像是一条直通的点对点链路,“隧道”就是这个意思。
内联网 VPN、外联网 VPN、远程接入 VPN
- 内联网:场所 A 和 B 都属于同一个机构,则由场所 A 和 B 的内部网络所构成的虚拟专用网 VPN 又称为(intranet 或 intranet VPN,即内联网 VPN),
- 外联网:有时一个机构的 VPN 需要有某些外部机构参加进来。这样的 VPN 就称为外联网(extranet 或 extranet VPN,即外联网 VPN)。
- 远程接入 VPN (remote access VPN):有的公司有很多流动员工在外地工作,但没有部门。公司和他们可能需要一起开视频会议。远程接入 VPN 可以满足这种需求。在外地工作的员工通过拨号接入互联网,员工个人电脑中的 VPN 软件可以个人电脑和公司的主机之间建立 VPN 隧道,因而外地员工与公司通信的内容也是保密的,员工们感到好像就是使用公司内部的本地网络。
内联网和外联网都采用了互联网技术,即都是基于 TCP/IP 协议的。
网络地址转换 NAT
在专用网内部的一些主机本来已经分配到了本地 IP 地址(即仅在本专用网内使用的专用地址),又想和互联网上的主机通信(并不需要加密),除了设法再申请一些全球 IP 地址外。还可以采用 网络地址转换 NAT (Network Address Translation) 。 这种方法是在 1994 年提出的。需要在专用网连接到互联网的路由器上安装 NAT 软件。NAT 路由器至少有一个有效的外部全球 IP 地址。这样,使用本地地址的主机在和外界通信时,都要在 NAT 路由器上将其本地地址转换成全球 IP 地址。
NAT 路由器的工作原理:
- 专用网 192.168.0.0 内所有主机的 IP地址都是本地 IP 地址 192.168.x.x。
- NAT 路由器有一个全球 IP 地址 172.38.1.5。
- NAT 路由器收到从专用网内部的主机 A 发往互联网上主机 B 的 IP 数据报:而目的 IP 地址是 213.18.2.4。NAT 路由器把 IP 数据报的源 IP 地址 192.168.0.3 换为新的源 IP 地址 172.38.1.5 转发出去。
- 当 B 给 A 发送应答时,IP 数据报的目的 IP 地址是 NAT 路由器的 IP 地址 172.38.1.5。B 并不知道 A 的专用地址 192.168.0.3。实际上,即使知道了,也不能使用,因为互联网上的路由器都不转发目 的地址是专用网本地 IP 地址的 IP 数据报。
- 当 NAT 路由器收到互联网上的主机 B 发来的 IP数据报时,通过 NAT 地址转换表,就把 IP 数据报上的旧的目的 IP 地址 172.38.1.5,转换为 192.168.0.3 。
表 4-11 给出了 NAT 地址转换表的举例。表中的前两行数据对应于图 4-60 中所举的例 子。第一列“方向”中的“出”表示离开专用网,而“入”表示进入专用网。表中后两行数 据(图 4-60 中没有画出对应的 IP 数据报)表示专用网内的另一主机 192.168.0.7 向互联网发 送了 IP 数据报,而 NAT 路由器还有另外一个全球 IP 地址 172.38.1.6。