计算机网络-PPP点对点协议

weblog Md 574 0 0

《计算机网络 第七版 谢希仁》

[TOC]

  在通信线路质量较差的年代,在数据链路层使用可靠传输协议曾经是一种好办法。因此,能实现可靠传输的高级数据链路控制HDLC (High-level Data Link Control)就成为当时比较流行的数据链路层协议。但现在HDLC 已很少使用了。对千点对点的链路,简单得多的点对点协议PPP (Point-to-Point Protocol)则是目前使用得最广泛的数据链路层协议。

一、PPP 协议的特点

  我们知道,互联网用户通常都要连接到某个ISP 才能接入到互联网。PPP 协议就是用户计算机和ISP 进行通信时所使用的数据链路层协议(图3-9) 。

PPP 协议应满足的需求

  (1) 简单IETF 在设计互联网体系结构时把其中最复杂的部分放在TCP 协议中,而网际协议IP 则相对比较简单,它提供的是不可靠的数据报服务。在这种情况下,数据链路层没有必要提供比IP 协议更多的功能。因此,对数据链路层的帧,不需要纠错,不需要序号,也不需要流量控制。IETF 把“简单”作为首要的需求。

  简单的设计还可使协议在实现时不容易出错,从而使不同厂商在协议的不同实现上的互操作性提高了。我们知道,协议标准化的一个主要目的就是提高协议的互操作性。

  总之,这种数据链路层的协议非常简单:接收方每收到一个帧,就进行CRC 检验。如CRC 检验正确,就收下这个帧;反之,就丢弃这个帧,其他什么也不做。

  (2) 封装成帧PPP 协议必须规定特殊的字符作为帧定界符(即标志一个帧的开始和结束的字符),以便使接收端从收到的比特流中能准确地找出帧的开始和结束位置。

  (3) 透明性PPP 协议必须保证数据传输的透明性。这就是说,如果数据中碰巧出现了和帧定界符一样的比特组合时,就要采取有效的措施来解决这个问题(见3.2.2 节)。

  (4) 多种网络层协议PPP 协议必须能够在在同一条物理链路上同时支持多种网络层协议(如IP 和IPX 等)的运行。当点对点链路所连接的是局域网或路由器时, PPP 协议必须同时支持在链路所连接的局域网或路由器上运行的各种网络层协议。

  (5) 多种类型链路除了要支持多种网络层的协议外, PPP 还必须能够在多种类型的链路上运行。例如,串行的(一次只发送一个比特)或并行的(一次并行地发送多个比特),同步的或异步的,低速的或高速的,电的或光的,交换的(动态的)或非交换的(静态的)点对点链路。

  这里特别要提到的是在1999 年公布的在以太网上运行的PPP, 即PPP over Ethernet, 简称为PPPoE [RFC 2516] ,这是PPP 协议能够适应多种类型链路的一个典型例子。PPPoE 是为宽带上网的主机使用的链路层协议。这个协议把PPP 帧再封装在以太网帧中(当然还要增加一些能够识别各用户的功能)。宽带上网时由于数据传输速率较高,因此可以让多个连接在以太网上的用户共享一条到ISP 的宽带链路。现在,即使是只有一个用户利用ADSL进行宽带上网(并不和其他人共享到ISP 的宽带链路),也是使用PPPoE 协议,见后面的3.6.4 节的讨论。

  (6) 差错检测(error detection) PPP 协议必须能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。若在数据链路层不进行差错检测,那么已出现差错的无用帧就还要在网络中继续向前转发,因而会白白浪费许多的网络资源。

  (7) 检测连接状态PPP 协议必须具有一种机制能够及时(不超过几分钟)自动检测出链路是否处千正常工作状态。当出现故障的链路隔了一段时间后又重新恢复正常工作时,就特别需要有这种及时检测功能。

  (8) 最大传送单元PPP 协议必须对每一种类型的点对点链路设置最大传送单元MTU 的标准默认值气这样做是为了促进各种实现之间的互操作性。如果高层协议发送的分组过长并超过MTU 的数值, PPP 就要丢弃这样的帧,并返回差错。需要强调的是, MTU是数据链路层的帧可以载荷的数据部分的最大长度,而不是帧的总长度。

  (9) 网络层地址协商PPP 协议必须提供一种机制使通信的两个网络层(例如,两个IP 层)的实体能够通过协商知道或能够配置彼此的网络层地址。协商的算法应尽可能简单,并且能够在所有的情况下得出协商结果。这对拨号连接的链路特别重要,因为如果仅仅在链路层建立了连接而不知道对方网络层地址,则还不能够保证网络层可以传送分组。

  (10) 数据压缩协商PPP 协议必须提供一种方法来协商使用数据压缩算法。但PPP协议并不要求将数据压缩算法进行标准化。

  在TCP/IP 协议族中,可靠传输由运输层的TCP 协议负责,因此数据链路层的PPP 协议不需要进行纠错,不需要设置序号,也不需要进行流量控制。PPP 协议不支待多点线路(即一个主站轮流和链路上的多个从站进行通信),而只支持点对点的链路通信。此外,PPP 协议只支持全双工链路。

PPP 协议的组成

  PPP 协议有三个组成部分:

  (1) 一个将IP 数据报封装到串行链路的方法。PPP 既支待异步链路(无奇偶检验的8 比特数据),也支持面向比特的同步链路。IP 数据报在PPP 帧中就是其信息部分。这个信息部分的长度受最大传送单元MTU 的限制。

  (2) 一个用来建立、配置和测试数据链路连接的链路控制协议LCP (Link ControlProtocol) 。通信的双方可协商一些选项。在RFC 1661 中定义了11 种类型的LCP 分组。

  (3) 一套网络控制协议NCP(Network Control Protocol)气其中的每一个协议支持不同的网络层协议,如IP 、OSI 的网络层、DECnet, 以及AppleTalk 等。

二、PPP 协议的帧格式

各字段的意义

  PPP 的帧格式如图3-10 所示。PPP 帧的首部和尾部分别为四个字段和两个字段。首部的第一个字段和尾部的第二个字段都是标志字段F (Flag) ,规定为Ox7E (符号“0x” 表示它后面的字符是用十六进制表示的。十六进制的7E 的二进制表示是01111110) 。标志字段表示一个帧的开始或结束。因此标志字段就是PPP 帧的定界符。连续两帧之间只需要用一个标志字段。如果出现连续两个标志字段,就表示这是一个空帧,应当丢弃。

  首部中的地址字段A 规定为OxFF (即11111111) ,控制字段C 规定为Ox03 (即00000011) 。最初曾考虑以后再对这两个字段的值进行其他定义,但至今也没有给出。可见这两个字段实际上并没有携带PPP 帧的信息。

  PPP 首部的第四个字段是2 字节的协议字段。当协议字段为Ox0021 时, PPP 帧的信息字段就是IP 数据报。若为OxC021, 则信息字段是PPP 链路控制协议LCP 的数据,而Ox8021 表示这是网络层的控制数据。

  信息字段的长度是可变的,不超过1500 字节。

  尾部中的第一个字段(2 字节)是使用CRC 的帧检验序列FCS 。

字节填充

  当信息字段中出现和标志字段一样的比特(Ox7E)组合时,就必须采取一些措施使这种形式上和标志字段一样的比特组合不出现在信息字段中。

  当PPP 使用异步传输时,它把转义符定义为Ox7D (即01111101) ,并使用字节填充,RFC 1662 规定了如下所述的填充方法:

  (1) 把信息字段中出现的每一个Ox7E 字节转变成为2 字节序列(Ox7D, Ox5E) 。
  (2) 若信息字段中出现一个Ox7D 的字节(即出现了和转义字符一样的比特组合),则把Ox7D 转变成为2 字节序列(Ox7D, Ox5D) 。
  (3) 若信息字段中出现ASCII 码的控制字符(即数值小千Ox20 的字符),则在该字符前面要加入一个Ox7D 字节,同时将该字符的编码加以改变。例如,出现Ox03 (在控制字符中是“传输结束“ETX) 就要把它转变为2 字节序列(Ox7D, Ox23) 。

  由千在发送端进行了字节填充,因此在链路上传送的信息字节数就超过了原来的信息字节数。但接收端在收到数据后再进行与发送端字节填充相反的变换,就可以正确地恢复出原来的信息。

零比特填充

  PPP 协议用在SONET/SDH 链路时,使用同步传输(一连串的比特连续传送)而不是异步传输(逐个字符地传送)。在这种情况下, PPP 协议采用零比特填充方法来实现透明传输。

  零比特填充的具体做法是:在发送端,先扫描整个信息字段(通常用硬件实现,但也可用软件实现,只是会慢些)。只要发现有5 个连续1 ,则立即填入一个0 。因此经过这种零比特填充后的数据,就可以保证在信息字段中不会出现6 个连续l 。接收端在收到一个帧时,先找到标志字段F 以确定一个帧的边界,接着再用硬件对其中的比特流进行扫描。每当发现5 个连续1 时,就把这5 个连续1 后的一个0 删除,以还原成原来的信息比特流(图3-11) 。这样就保证了透明传输:在所传送的数据比特流中可以传送任意组合的比特流,而不会引起对帧边界的错误判断。

三、PPP 协议的工作状态

  上一节我们通过PPP 帧的格式讨论了PPP 帧是怎样组成的。但PPP 链路一开始是怎样被初始化的?当用户拨号接入ISP 后,就建立了一条从用户个人电脑到ISP 的物理连接。这时,用户个人电脑向ISP 发送一系列的链路控制协议LCP 分组(封装成多个PPP 帧),以便建立LCP 连接。这些分组及其响应选择了将要使用的一些PPP 参数。接着还要进行网络层配置,网络控制协议NCP 给新接入的用户个人电脑分配一个临时的IP 地址。这样,用户个人电脑就成为互联网上的一个有IP 地址的主机了。

  当用户通信完毕时, NCP 释放网络层连接,收回原来分配出去的IP 地址。接着, LCP释放数据链路层连接。最后释放的是物理层的连接。

  上述过程可用图3-12 的状态图来描述。

  PPP 链路的起始和终止状态永远是图3-12 中的“链路静止”(Link Dead)状态,这时在用户个人电脑和ISP 的路由器之间并不存在物理层的连接。

  当用户个人电脑通过调制解调器呼叫路由器时(通常是在屏幕上用鼠标点击一个连接按钮),路由器就能够检测到调制解调器发出的载波信号。在双方建立了物理层连接后,PPP 就进入“链路建立“(Link Establish)状态,其目的是建立链路层的LCP 连接。

  这时LCP 开始协商一些配置选项,即发送LCP 的配置请求帧(Configure-Request) 。这是个PPP 帧,其协议字段置为LCP 对应的代码,而信息字段包含特定的配置请求。链路的另一端可以发送以下几种响应中的一种:

  • (1) 配置确认帧(Configure-Ack) 所有选项都接受。
  • (2) 配置否认帧(Configure-Nak) 所有选项都理解但不能接受。
  • (3) 配置拒绝帧(Configure-Reject) 选项有的无法识别或不能接受,需要协商。

  LCP 配置选项包括链路上的最大帧长、所使用的鉴别协议(authentication protocol) 的规约(如果有的话),以及不使用PPP 帧中的地址和控制字段(因为这两个字段的值是固定的,没有任何信息量,可以在PPP 帧的首部中省略这两个字节)。

  协商结束后双方就建立了LCP 链路,接着就进入“鉴别”(Authenticate)状态。在这一状态,只允许传送LCP 协议的分组、鉴别协议的分组以及监测链路质量的分组。若使用口令鉴别协议PAP (Password Authentication Protocol) ,则需要发起通信的一方发送身份标识符和口令。系统可允许用户重试若干次。如果需要有更好的安全性,则可使用更加复杂的口令握手鉴别协议CHAP (Challenge-Handshake Authentication Protocol) 。若鉴别身份失败,则转到“链路终止”(Link Terminate)状态。若鉴别成功,则进入“网络层协议”(Network-Layer Protocol)状态。

  在“网络层协议”状态, PPP 链路的两端的网络控制协议NCP 根据网络层的不同协议互相交换网络层特定的网络控制分组。这个步骤是很重要的,因为现在的路由器都能够同时支持多种网络层协议。总之, PPP 协议两端的网络层可以运行不同的网络层协议,但仍然可使用同一个PPP 协议进行通信。

  如果在PPP 链路上运行的是IP 协议,则对PPP 链路的每一端配置IP 协议模块(如分配IP 地址)时就要使用NCP 中支待IP 的协议一一IP 控制协议IPCP (IP Control Protocol) 。IPCP 分组也封装成PPP 帧(其中的协议字段为Ox8021) 在PPP 链路上传送。在低速链路上运行时,双方还可以协商使用压缩的TCP 和IP 首部,以减少在链路上发送的比特数。

  当网络层配置完毕后,链路就进入可进行数据通信的“链路打开”(Link Open)状态。链路的两个PPP 端点可以彼此向对方发送分组。两个PPP 端点还可发送回送请求LCP 分组(Echo-Request)和回送回答LCP 分组(Echo-Reply) ,以检查链路的状态。

  数据传输结束后,可以由链路的一端发出终止请求LCP 分组(Terminate-Request)请求终止链路连接,在收到对方发来的终止确认LCP 分组(Terminate-Ack)后,转到“链路终止”状态。如果链路出现故障,也会从“链路打开“状态转到“链路终止”状态。当调制解调器的载波停止后,则回到“链路静止”状态。

  图3-12 右方的灰色方框给出了对PPP 协议的几个状态的说明。从设备之间无链路开始,到先建立物理链路,再建立链路控制协议LCP 链路。经过鉴别后再建立网络控制协议NCP 链路,然后才能交换数据。由此可见, PPP 协议已不是纯粹的数据链路层的协议,它还包含了物理层和网络层的内容。


猜你喜欢
official 674 第七版谢希仁》 [TOC]一、数据链路和帧  我们在这里要明确一下,“链路”和“数据链路”并不是一回事。   所谓链路(link)就是从一个结到相邻结的一段物理线路(有线或无线),而
official 960 第七版谢希仁》 [TOC]  OSI的七层体系结构(图1-18(a))的概念清楚,理论也较完整,但它既复杂又不实用。TCP/IP体系结构则不同,但它现在却得到了非常广泛的应用。TCP
official 675 第七版谢希仁》 主要的名词: ISP(InternetServiceProvider)互联服务提供者IXP(InternetexchangePoint)互联交换 互联
official 733 第七版谢希仁》 [TOC]一、速率  我们知道,发送出的信号都是数字形式的。比特(bit)来源于binarydigit,意思是一个“二进制数字”,因此一个比特就是二进制数字中的一个
official 656 第七版谢希仁》 [TOC]一、数据通信系统的模型  一个数据通信系统可划分为三大部分,即源系统(或发送端、发送方)、传输系统(或传输)和目的系统(或接收端`接收方)。 源系统一般
official 575 的信息量的单位。技术中的速率指的是数据的传送速率,它也称为数据率(datarate)或比特率(bitrate)o速率是中最重要的一个性能指标。速率的单位是bit/s(比特每秒)(或b/s,
official 868 什么是就是为中进行数据交换而建立的规则、标准或约定的集合。有了才能实现不同设备、不同操作系统、不同软件之间的数据交换。我们常说的tcp和udp其实是操作系
official 929 第七版谢希仁》 [TOC]一、频分复用、时分复用和统时分复用  复用(multiplexing)是通信技术中的基本概念。在中的信道广泛地使用各种复用技术。下面信道复用技术进
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。