PPP的帧:
网络协议的三要素是语法、语义与时序
语法、语义与时序是网络协议组成的三要素。其中,语法是指用户数据与控制信息的结构和格式;语义,即需要发出何种控制信息,以及完成的动作与做出的:响应;时序是对实践实现顺序的详细的说明。
他们之间的关系是bai:相互的关系du更是并列的关系,语法,语意与时序,三个协议是不可缺少的,缺少任何一个都无法形成网络协议。
协议是一个规则术语,用于描述进程之间的信息交换。在计算机网络中,两个通信实体位于不同的地理位置,其上的两个进程彼此通信。它们需要协调它们的行动,并通过交换信息实现同步,而交换信息必须按照先前商定的程序进行。
语义:指定通信各方相互“什么,也就是说,确定协议元素的类型,例如指定通信各方希望发送什么控制信息,它们执行什么操作,以及它们返回什么响应。
语法:指定通信双方如何交谈,即确定协议元素的格式,如数据和控制信息的格式。
时序:规定了信息交流的次序。
网络及协议:
1.简介
PPP 是为了在点对点物理链路(例如RS232串口链路、电话ISDN 线路等)上传输OSI 模型中的网络层报文而设计的,它改进了之前的一个点对点协议–SLIP 协议–只能同时运行一个网络协议、无容错控制、无授权等许多缺陷,PPP 是现在最流行的点对点链路控制协议。这种连接提供了同时的双向的全双工操作,并且假定数据包是按顺序投递的。PPP连接提供了一种广泛的解决办法,方便地将多种多样不同的值作为最大接收单元的值。 填充域 在传输中,信息域可能会由附加任意数目的字节填充至最大接收单元长度。这由每个协议负责将信息域和填充域区分开来。
PPP 协议概览
标准的HDLC 封装只支持高层的IP 协议,不支持其他高层协议。思科对标准帧协议进行了改进,增加了协议域字段,来支持多种网络层协议。
思科改进的HDLC 可用于在思科的设备之间进行点到点连接。当连接非思科的设备时,PPP 是比较可行的,因为所有厂家实现的PPP 都是相同的。
应用层
表示层
会话层 OSI
传输层
网络层
数据链路层
物理层
TCP/IP 协议族
应用层
传输层
网络层
物理层
PPP协议和大多数硬件兼容,且PPP协议能够承载多种三层协议的数据。
PPP是一种数据链路层协议,遵循HDLC(高级数据链路控制协议)族的一般报文格式。PPP是为了在点对点物理链路(例如RS232串口链路、电话ISDN线路等)上传输OSI 模型中的网络层报文而设计的,它改进了之前的一个点对点协议–SLIP协议–只能同时运行一个网络协议、无容错控制、无授权等许多缺陷,PPP是现在最流行的点对点链路控制协议。
PPP协议主要包括三部分:LCP(Link Control Protocol)链路控制协议、NCP(Network Control Protocol)网络控制协议和PPP的扩展协议(如Multilink Protocol)。
PPP协议默认是不进行认证配置参数选项的协商,它只作为一个可选的参数,当点对点线路的两端需要进行认证时才需配置。
LCP是PPP协议的一个子集。为了能适应复杂多变的网络环境,PPP协议提供了一种链路控制协议来配置和测试数据通信链路,它能用来协商PPP协议的一些配置参数选项;处理不同大小的数据帧;检测链路环路、一些链路的错误;终止一条链路。
网络控制协议(NCP)根据不同的网络层协议可提供一族网络控制协议,常用的有提供给TCP/IP网络使用的IPCP网络控制协议和提供给SPX/IPX网络使用的IPXCP网络控制协议等,但最为常用的是IPCP协议。当点对点的两端进行NCP参数配置协商时,主要是用来获得通信双方的网络层地址。
PPP协议格式
上图中PPP的flag字段恒为0x7f,地址(adress)字段恒为0xff,控制(control)字段恒为0x03.协议(protocol)字段表示PPP报文中封装的payload(data字段)的类型,如果为0x0021,则表示PPP封装的IP报文,0x002B表示IPX报文,0x0029表示AppleTalk报文,这几种都属于PPP的数据报文;如果为0xC021则表示PPP的LCP报文(用来协商连接),如果为0x8021则表示PPP的NCP报文(用来协商封装的三层协议),这些属于PPP的控制报文。
0xc023表示PAP协议认证报文,0xc223表示CHAP协议认证报文。
紧接在起始标志字节后的一个字节是地址域,该字节为0xFF。
我们熟知网络是分层的,且对等层之间进行相互通信,而下层为上层提供服务。当对等层进行通信时首先需获知对方的地址,而对不同的网络,在数据链路层则表现为需要知道对方的MAC地址、X.21地址、ATM地址等;在网络层则表现为需要知道对方的IP地址、IPX地址等;而在传输层则需要知道对方的协议端口号。例如如果两个以太网上的主机希望能够通信的话,首先发送端需获知对端的MAC地址。
但由于PPP协议是被运用在点对点的链路上的特殊性,它不像广播或多点访问的网络那样,需要标识通信的对方。因为点对点的链路就可以唯一标识对方,因此使用PPP协议互连的通信设备的两端无须知道对方的数据链路层地址,所以该字节已无任何意义,按照协议的规定将该字节填充为全1的广播地址。
PPP协议状态机
PPP协议状态机如下图所示:
1、在上图的链接建立阶段,PPP使用LCP报文来协商连接(一种发送配置请求,然后接收响应的简单“握手”过程,不做过多介绍,感兴趣可以去细读RFC1661),该阶段主要是发送一些配置报文来配置数据链路,这些配置的参数不包括网络层协议所需的参数。协商中双方获得当前点对点连接的状态配置等,之后的“鉴别”阶段使用哪种鉴别方式也在这个协商中确定下来。
2、鉴别阶段是可选的,如果链接协商阶段并没有设置鉴别方式,则将忽略本阶段直接进入“网络”阶段。鉴别阶段使用链接协商阶段确定下来的鉴别方式来为连接授权,以起到保证点对点连接安全,防止非法终端接入点对点链路的功能。
链路质量的检测也会在这个阶段同时发生,但协议规定不会让链路质量的检测无限制的延迟验证过程。
常用的鉴别认证方式有CHAP和PAP方式。
CHAP方式的原理是:
由一端定期发起挑战“challenge”,收到“challenge”的一端将收到的“challenge”报文中的密钥使用之前双发协商好的一种算法加密后再把结果发回发起端,这种算法应该是结果唯一(不同输入必得到不同输出)且不可逆(由输出无法得到输入)的,发起端也使用该算法计算后验证结果是否正确来为对端授权认证。
一个常用的方案实例是:发起端发送随机长度及内容的字符串加上自己的用户名作为“密钥”发送出来,接受到“challenge”的一方将收到的字符串和与对方用户名相对应的本端用户的密码使用MD5算法计算后发回,然后发起端将收到的计算结果和本端MD5计算该随机字符串加自己密码的结果相对照,如果双发一致,则认证成功。
PAP方式简单很多,原理:
直接由被验证方将自己的用户名和密码明文方式发送给对端,由对端对用户名和密码验证来决定是否认证成功。所以,比较而言,CHAP是一种相对更安全一些的验证方式。
需要注意的是,PPP两端双方向的鉴权方式可以不同,即A端为B端鉴权时使用PAP方式(B发送自己的用户名和密码给请A认证),而同时B端使用CHAP方式为A端鉴权(B向A发起CHAP挑战),是完全可以的。
3、如果鉴别阶段成功,则PPP状态机进入“网络”阶段。这个阶段主要是使用NCP报文来协