fcs是什么意思的缩写(「干货」你不得不知道的华为认证PPP与PPOE基础知识分享)

PPP协议的基本概念


PPP是点对点协议的缩写,中文翻译成点对点协议。与以太网协议一样,PPP也是一种数据链路层协议。以太网协议定义了以太网帧的格式,PPP协议也定义了自己的帧格式,称为PPP帧。


PPP的前身是SLIP(串行线路互联网协议)和CSLIP(压缩Slip)。前两个协议现在基本上已经不用了,但是PPP自从上世纪90年代被提出来之后,一直被广泛使用。以太网协议作用于以太网接口和以太网链路,PPP协议作用于串行接口和串行链路。串行接口有很多种,例如,EIA RS-232-C接口、EIARS-422接口、EIA RS-423接口、ITU-T V.35接口等。这是一些常见的串行接口,它们都可以支持PPP协议。


其实任何串口只要能支持全双工通信,都可以支持PPP协议。此外,PPP协议对串行接口的信息传输速率没有特别的规定,只要求串行链路两端的串行接口保持相同的速率。我们将支持和运行PPP协议的串行接口统称为PPP接口。


前面说过,PPP协议的中文表达是点对点协议,现在我们来解释一下点对点,或者说P2P的含义。我们知道,使用以太网协议(一种数据链路层协议)建立的第2层网络可以包含多个(两个或更多)接口。例如,图12-1所示的网络包含两个二层网络(二层网络A和二层网络B),每个二层网络都是一个以太网,每个二层网络都包含许多以太网接口。每个二层网络中不同的以太网接口可以通过交互式以太网帧实现二层通信。


所以我们也称以太网为多接入网,意思是这样的网络可以包含多个(两个或两个以上)接口,网络内任意两个接口可以在第二层互相通信。




PPP协议建立的第二层网络称为PPP网络。一个PPP网络只包含两个PPP接口,连接这两个接口的链路称为PPP link。这两个接口通过交互PPP帧来实现第2层通信。


例如,图12-2所示的网络包含三个第2层网络,第2层网络A是一个以太网,第2层网络B是一个PPP网络,第2层网络C是另一个PPP网络。因为一个PPP网络只包含两个PPP接口,每个接口简称为“点”,所以一个PPP网络通常被称为“点对点网络”或“P2P网络”。




在图12-2中,路由器A有两个接口,一个是以太网,另一个是PPP。图12-3显示了图12-2中路由器A的基本工作过程。如图12-3所示,路由器A的以太网端口从以太网链路接收到一个以太网帧后,会从以太网帧中提取IP报文,然后将IP报文传送到PPP接口。


接口会将IP消息封装到PPP帧中,然后将PPP帧发送到PPP链路。另一方面,在从PPP链路接收到一个PPP帧后,路由器A的PPP接口将提取PPP帧中的IP消息,然后将IP消息传送到以太网端口。以太网端口会将IP消息封装成以太网帧,然后将以太网帧发送到以太网链路。




在图12-2中,路由器B有两个接口,都是PPP接口。图12-4显示了图12-2中路由器B的基本工作过程。如图12-4所示,路由器B的PPP接口Intf-1从PPP链路接收到一个PPP帧后,会提取PPP帧中的IP报文,然后将IP报文转发给PPP接口Intf-2。


Intf-2会将IP消息封装到PPP帧中,然后将PPP帧发送到PPP链路。另一方面,在从PPP链路接收到PPP帧后,路由器B的PPP接口Intf-2将从PPP帧中提取IP消息,然后将IP消息传送到PPP接口Intf-1。Intf-1会将IP消息封装成PPP帧,然后将PPP帧发送到PPP链路。




从上面的描述可以看出,PPP接口是数据链路层(第二层)通信的端点,所以我们也说PPP接口是第三层接口。认识到这一点非常重要。


需要注意的是,PPP还包含几个附属协议,也称为成员协议。PPP的成员协议主要包括一个叫做LCP(链路控制协议)的链路控制协议和一系列叫做NCP(网络控制协议)的网络控制协议。


此外,PPP协议没有规定PPP链路的长度。PPP链路常用于WAN连接:PPP技术被称为一种WAN技术。


PPP帧格式


图12-5显示了PPP帧的格式,以下是对PPP帧格式中各字段含义的描述。




fcs是什么意思

(1)标志





该字段的长度为8位,其值固定为0x7e。该字段标记PPP帧的开始或结束;它标志着当前PPP帧的开始和上一个PPP帧的结束。


注意,在PPP帧的信息字段中不允许0x7e,因为这将导致PPP帧的接收方错误地将此0x7e视为标志。那么,如果一个PPP帧需要在信息字段中包含0x7e呢?在这种情况下,必须传输信息字段中的0x7e。关于如何进行& # 34;“处理的意思,我们这里不描述了。简而言之,经过“转移”过程,0x7e在信息领域不再可能。


(2)地址





该域的长度为8位,其值固定为0xff。注意这个字段不是MAC地址,但是有广播地址的意思,意思是“所有接口”。


PPP帧在单个PPP链路上从一个接口移动到另一个接口,因此PPP帧不像以太网帧那样包含源MAC地址和目的MAC地址的信息。其实PPP接口根本不需要自己的MAC地址,MAC地址对PPP接口来说毫无意义。


(3)控制





该域的长度为8位,其值固定为0x03。该字段没有特殊功能。至于它的值为什么固定在0x03,这里就不解释了。


(4)协议





该字段的长度为16位,其值决定了信息字段包含何种协议消息。该字段的功能类似于以太网帧中的类型字段。


图12-5显示了对应于不同协议字段值的不同协议的例子。例如,当协议字段的值为0xc021时,表示信息字段为LCP报文;当协议字段的值为0x8021时,表示信息字段是IPCP报文。IPCP是一种网络控制协议(NCP)。具体地,当协议字段的值为0x0021时,表示信息字段是IP消息。


(5)信息





该字段是PPP帧的有效载荷数据,长度可变。例如,当协议字段的值为0xc021时,表示该字段是LCP报文;当协议字段的值为0x8021时,表示该字段是IPCP报文。具体地,当协议字段的值为0x0021时,表示该字段是IP消息。


(6) FCS





该字段的长度为16位,用于PPP帧的错误检查。这里不描述验证的方法和过程。顺便说一下,FCS是帧校验和的缩写。


PPP的基本工作流程


PPP协议是点对点协议,只涉及PPP链路两端的两个接口。当我们分析讨论其中一个接口时,习惯上称这个接口为本地接口或本地接口,而另一个接口则称为对面接口或远程接口,或者简称为Peer。


通过串行链路连接的本地接口和对端接口不能在加电后立即开始向对方发送带有IP报文等网络层数据单元的PPP帧。


本地接口和对端接口在开始向对方发送携带IP报文等网络层数据单元的PPP帧之前,必须经过一系列复杂的协商过程(甚至可能包括认证过程),这也被称为PPP的基本工作流程,如图12-6所示。该字段的功能类似于以太网帧中的类型字段。




从图12-6可以看出,PPP的基本工作流程由五个阶段组成,分别是链路死阶段(即链路断开阶段)、链路建立阶段(即链路建立阶段)、认证阶段(即认证阶段)、网络层协议阶段(即网络层协议阶段)和链路终止阶段(即链路终止阶段)。


PPP基本工作流程的第一阶段是链接失效阶段。现阶段PPP接口的物理层功能还没有进入正常状态。只有本地接口和对端接口的物理层功能处于正常状态,PPP才能进入下一个工作阶段,即链路建立阶段。当本地接口和对端接口的物理层功能处于正常状态时,PPP会自动进入链路建立阶段。在这个阶段,本地接口和对端接口将互相发送带有LCP消息的PPP帧。简单来说,这个阶段就是互相LCP消息的阶段。通过LCP报文的交互,本地接口会和对端接口协商一些基本的重要参数,保证PPP链路能够正常工作。


例如,本地接口与对面接口协商参数MRU(最大接收单位)。所谓的MRU是PPP帧中信息字段允许的最大长度(字节数)。如果由于某种原因,本地接口要求接收到的PPP帧的信息字段长度不能超过1 800字节(即本地接口的MRU为1 800),而对端接口发送了一个信息字段为2000字节的PPP帧,那么在这种情况下,本地接口就不能正确接收和处理信息字段为2 000字节的PPP帧,通信就会失败。


因此,为了避免这种情况,本地接口和对端接口必须在链路建立阶段就参数MRU进行协商并达成一致。之后,本地接口不会发送信息字段超过对方MRU的PPP帧,对方接口也不会发送信息字段超过本地MRU的PPP帧。


在链路建立阶段,本地接口和对端接口还必须约定是直接进入网络层协议阶段,还是先进入认证阶段再进入网络层协议阶段。如果需要进入身份验证阶段,还必须就使用什么身份验证协议进行身份验证达成一致。


如果PPP的链路建立阶段成功完成,PPP协议双方不需要认证,或者双方成功完成认证阶段,那么PPP将自动进入网络层协议阶段。在网络层协议阶段,PPP协议双方会先通过NCP(NetworkControl Protocol,网络控制协议)协议协商网络层协议的参数,达成一致后,双方才能在PPP链路上传输携带相应网络层协议数据单元的PPP帧。


有很多情况会导致PPP进入链路终止阶段,比如无法成功完成认证阶段,比如链路信号质量差,比如需要网络管理员主动关闭链路等等。


PPP的链路建立阶段


LCP协议是PPP协议的主要成员协议之一。在PPP的链路建立阶段,本地接口和对端接口总是发送带有LCP消息的PPP帧。LCP消息的格式如图12-7所示。




我们从图12-7中可以看出,如果PPP帧的协议字段的值是0xc021,则意味着PPP帧的信息字段的内容是LCP消息。LCP消息包含四个字段,即代码字段、标识符字段、长度字段和数据字段。在LCP消息中,Code字段可以采用不同的值来区分不同类型的LCP消息。例如,如果Code字段的值为1,则意味着这是一个配置请求消息;如果Code字段的值为2,则表示这是一个Configure-Ack消息;如果Code字段的值为3,则意味着这是一个Configure-Nak消息,依此类推。从图12-7中我们可以看到有11种类型的LCP消息。


LCP报文中的标识字段用于匹配本地接口发送的LCP报文和对端接口发送的响应报文。LCP消息中的长度字段指示LCP消息的总长度(即代码字段、标识符字段、长度字段和数据字段的长度之和)。不同的LCP报文类型,LCP报文中数据字段的内容和长度会有所不同。


在这11条LCP消息中,我们将提取Configure-Request消息(配置请求消息)进行分析和描述,因为该消息在链路建立阶段起主导作用。


如图12-8所示,在链路建立阶段,本地接口和对端接口都必须向对方发送至少一个Configure-Request消息,其中包含发送方所有配置参数的期望值。


如果对方对自己发送的Configure-Request消息响应Configure-Ack消息,则意味着对方已经认识到其所有配置参数的期望值;如果对方对自己发送的Configure-Request消息响应Configure-Nak消息,则意味着对方否定了自己对部分或全部配置参数的期望值,这也意味着必须修改自己对相应配置参数的期望值,然后向对方重新发送Configure-Request消息,等待对方新的响应。这个过程可以重复。


最终,如果双方都收到了对方发送的Configure-Ack消息,则意味着双方已经就配置参数达成一致,这也标志着链路建立阶段的成功结束。




图12-9显示了配置请求消息的格式。注意,配置请求消息是11个LCP消息之一,并且代码字段的值为1。配置请求消息的数据字段总共可以包含多达八个配置选项,并且每个配置选项实际上是要协商的配置参数。每个配置选项包括三个字段,即类型字段、长度字段和数据字段。


如图12-9所示,如果Type字段的值为1,说明配置选项是关于参数MRU的;如果Type字段的值为2,则表示配置选项与异步控制字符映射表的参数相关;如果类型字段的值为3,则表示配置选项与认证协议的参数相关...如果Type字段的值为8,则表示配置选项与地址和控制字段压缩参数相关。




让我们来看看配置选项MRU。如图12-10所示,MRU配置选项的Type字段值为1,length字段值为4(表示MRU配置选项总长度为4字节,其中Type字段占1字节,Length字段本身占1字节,Data字段占2字节),Data字段值为MRU参数。


例如,如果数据字段的值为1800,则意味着发送配置请求消息的接口的MRU为1800字节,即发送配置请求消息的接口希望对端接口不要发送信息字段超过1800字节的PPP帧;如果数据字段的值为2 000,则意味着发送配置请求消息的接口的MRU为2000字节,即发送配置请求消息的接口希望对端接口不要发送信息字段超过2000字节的PPP帧。




让我们看一下配置选项身份验证协议。如图12-11所示,认证协议配置选项的类型字段的值是3,长度字段的值可以是4或5。如果数据字段的前两个字节的值是0xc023,则长度字段的值是4;如果数据字段的前两个字节的值为0xc223,则长度字段的值为5。


另一方面,如果数据字段的前两个字节的值为0xc023,则表示发送该配置请求消息的接口希望在PPP的认证阶段使用PAP协议认证对端接口;如果数据字段的前两个字节的值为0xc223,则表明发送此配置请求消息的接口希望在PPP的身份验证阶段通过CHAP协议验证对方接口。


当数据字段的前两个字节的值为0xc023时,数据字段的总长度只有两个字节。当数据字段的前两个字节的值为0xc223时,数据字段的总长度为3个字节,其中最后一个字节的值用来表示CHAP协议需要采用的加密算法(例如,如果该字节的值为5,则表示CHAP协议中的加密算法应该采用MD5。MD是Message Digest的简称,我们就不描述MD5加密算法了)。




需要注意的是,关于配置选项认证协议的PPP接口协商结果不一定是对称的。协商的结果可能是这个接口会认证另一个接口,而另一个接口不会认证这个接口;或者,该接口不会对另一个接口进行身份验证,但另一个接口会对该接口进行身份验证;或者,这个接口将认证另一个接口,而另一个接口也将认证这个接口;或者,此接口不会验证另一个接口,而另一个接口也不会验证此接口。


此外,此接口用来认证另一个接口的认证协议可以与另一个接口用来认证此接口的协议相同或不同(例如,此接口使用PAP协议来认证另一个接口,而另一个接口使用CHAP协议来认证此接口)。


另外,需要注意的是,在PPP的链路建立阶段,总共有八个配置选项需要协商(注意:本质上只有七个,因为其中一个是预留的),这八个选项同时包含在同一个Configure-Request消息中进行协商,如图12-9所示。


如果一些配置选项没有出现在配置请求消息中,这意味着这些配置选项是“默认值& # 34;。例如,如果本地接口发送的配置请求消息不包含MRU配置选项,则表明本地接口的MRU为1500字节(注:PPP协议规定的MRU默认值为1500字节)。


例如,如果本地接口发送的Configure-Request消息不包含配置选项身份验证协议,则意味着本地接口不会对相对接口进行身份验证。


PPP身份验证阶段


如果PPP的链路建立阶段成功结束,某个接口要求对端接口进行认证,或者双方都要求对端接口进行认证,那么PPP将进入认证阶段(即认证阶段)。


认证阶段涉及到两个认证协议,PAP和CHAP,它们都是PPP协议的成员协议。这里我们以PAP协议为例,简单描述一下PPP的认证阶段。


我们先来看看PAP报文的格式,如图12-12所示。从图12-12可以看出,当PPP帧的协议字段值为0xc023时,PPP帧的信息字段为PAP报文。PAP消息的代码字段用于区分PAP消息的类型。


如果代码字段的值为1,则表明PAP消息是认证请求消息;如果Code字段的值为2,则表明PAP消息是Authenticate-Ack消息;如果代码字段的值是3,则表明PAP消息是一个Authenticate-Nak消息。




让我们来看看认证请求消息的格式,如图12-13所示。我们可以从图12-13中看到,在Authenticate-Request消息中有两个字段,一个是Peer-ID字段,另一个是密码字段。


Peer-ID字段的内容实际上是用户名,Password字段的内容实际上是用户名对应的密码。这里将不描述Authenticate-Ack消息和Authenticate-Nak消息的格式。




如图12-14所示,如果在PPP的链路建立阶段,接口B发送给接口A的Configure Request消息指示接口B将对A进行PAP认证,接口B收到来自接口A的Configure-Ack消息,那么在下一个认证阶段,B作为认证方将对A作为被认证方进行PAP认证。


在认证开始时,A将向B发送包含用户名和密码的Authenticate-Request消息。在接收到来自A的Authenticate-Request消息后,B将从Authenticate-Request消息中提取A提供的用户名和密码,并在自己的用户列表中查找A提供的用户名。如果B在自己的用户列表中找不到A提供的用户名,B将向A响应Authenticate-Nak消息,这意味着认证失败。


如果B可以在自己的用户列表中找到A提供的用户名,但是用户列表中对应用户的密码与A提供的密码不一致,那么B仍然会向A回复Authenticate-Nak消息,表示认证失败。只有当A提供的用户名和密码与B的用户列表中的对应条目完全匹配时,B才会向A响应一个Authenticate Ack消息,这也表示A已经成功通过了B的认证。




需要指出的是,在PAP认证过程中,用户名和密码只能以明文形式包含在Authenticate-Request消息中,存在很大的安全风险。[/s2/]当被认证方向认证方发送PAP的Authenticate-Request消息时,用户名和密码信息很容易被泄露。相比之下,CHAP认证和认证时,相关的认证信息可以以密文的形式包含在CHAP消息中,因此其安全级别远高于PAP认证。


想了解更多华为认证的技术干货,请关注微信官方账号【即Networker训练营】

您可以还会对下面的文章感兴趣

使用微信扫描二维码后

点击右上角发送给好友