PPP点对点传输协议

PPP协议

PPP是一种网络中最为基础的协议。PPP协议(Point-to-Point Protocol)是一种数据链路层协议,它是为在同等单元之间传输数据包这样的简单链路而设计的。这种链路提供全双工操作,并按照顺序传递数据包。设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。

PPP协议是目前使用最广泛的数据链路层协议,用户使用拨号电话接入因特网时一般都使用PPP协议,只支持全双工。

PPP协议应满足的要求
  • 简单:对于链路层的帧,无需纠错,无需序号,无需流量控制
  • 封装成帧:帧定界符
  • 透明传输:与帧定界符一样比特组合的数据应该如何处理:异步线路用字节填充,同步线路用比特填充
  • 多种网络层协议:封装的IP数据报可以采用多种协议
  • 多种类型链路:串行/并行,同步/异步,电/光。。
  • 差错检测:通过加入FCS字段检测差错,错就丢弃
  • 检测连接状态:链路是否正常工作
  • 最大传送单元:数据部分最大长度MTU
  • 网络层地址协商:知道通信双方的网络层地址
  • 数据压缩协商
封装成帧

在一段数据的前后部分添加首部和尾部,这样就构成了一个帧。 帧的数据部分有一个最大传送上限(MTU),接收端在收到物理层上交的比特流之后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。

首部和尾部包含很多控制信息,他们的一个重要作用:帧定界(确定帧的界限)帧的开始和结束由帧的定界符确定。

帧同步: 接收方应当能从接收到的二进制比特流中区分出帧的起始和终止。

组帧的四种方法:

  1. 字符计数法:帧首部使用一个计数字段(第一个字节,八位)来标明帧内字符数。

  2. 字符(节)填充法:给数据中和首部尾部重复的字段前面填充上转义字符。

  3. 零比特填充法:只要连续发送五个1,立即填入一个0;接收端找到标志字段确定边界后,用硬件对比特流进行扫描,发现连续5个1时删除后面的0(常用)。

  4. 违规编码法 :用“高-高”、“低-低”来定界帧的起始和终止(常用)。

    在这里插入图片描述

透明传输

**透明传输指不管所传数据是什么样的比特组合,都应当能够在链路上传输。**因此链路层就“看不见”有什么妨碍数据传输的东西。

当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使接收方不会将这样的数据误认为是某种控制信息。这样才能保住数据链路层的传输是透明的。

PPP协议包括以下三个部分:
  1. PPP的扩展协议,一个将IP数据报封装到串行链路的方法。
  2. 链路控制协议LCP(Link Control Protocol):**建立并维护数据链路连接(身份验证)**它用于对封装格式选项的自动协商,建立和终止连接,探测链路错误和配置错误。
  3. 针对不同网络层协议的一族网络控制协议NCP(Network Control Protocol): PPP协议规定了针对每一种网络层协议都有相应的网络控制协议,并用它们来管理各个协议不同的需求。

PPP协议默认是不进行认证配置参数选项的协商,它只作为一个可选的参数,当点对点线路的两端需要进行认证时才需配置。

LCP

LCP是PPP协议的一个子集。为了能适应复杂多变的网络环境,PPP协议提供了一种链路控制协议来配置和测试数据通信链路,它能用来协商PPP协议的一些配置参数选项;处理不同大小的数据帧;检测链路环路、一些链路的错误;终止一条链路。

NCP

网络控制协议(NCP)根据不同的网络层协议可提供一族网络控制协议,常用的有提供给TCP/IP网络使用的IPCP网络控制协议和提供给SPX/IPX网络使用的IPXCP网络控制协议等,但最为常用的是IPCP协议。当点对点的两端进行NCP参数配置协商时,主要是用来获得通信双方的网络层地址。

在这里插入图片描述

AT中的PPP拨号:
AT+XIIC=1
PPP帧格式:

PPP是一种面向字节的协议

在这里插入图片描述

在这里插入图片描述

  • PPP的flag字段恒为0x7E
  • 地址(adress)字段恒为0xFF
  • 控制(control)字段恒为0x03
  • 协议(protocol)字段表示PPP报文中封装的payload(data字段)的类型,如果为0x0021,则表示PPP封装的IP报文,0x002B表示IPX报文,0x0029表示AppleTalk报文,这几种都属于PPP的数据报文;如果为0xC021则表示PPP的LCP报文(用来协商连接),如果为0x8021则表示PPP的NCP报文(用来协商封装的三层协议),这些属于PPP的控制报文
  • FCS 检验帧

0xc023表示PAP协议认证报文,0xc223表示CHAP协议认证报文。

紧接在起始标志字节后的一个字节是地址域,该字节为0xFF。

PPP协议是被运用在点对点的链路上的特殊性,它不像广播或多点访问的网络那样,需要标识通信的对方。因为点对点的链路就可以唯一标识对方,因此使用PPP协议互连的通信设备的两端无须知道对方的数据链路层地址,所以该字节已无任何意义,按照协议的规定将该字节填充为全1的广播地址。

PPP链路的建立:

在这里插入图片描述

  • 在Link Dead阶段,PPP链路进行初始化,当物理层接口联通后,状态自动进入到Link Establishment阶段。
  • 进入到Link Establishment阶段,通信双方互相发送LCP报文,进行参数协商,如果参数协商失败,则会回退到Link Dead阶段。如果参数协商成功,并且双方需要认证,则进入到authentication阶段,如果不需要认证,则会直接进入到Network Layer Protocol阶段。
  • 在Authentication阶段,通信双方会进行认证。
  • 在Network Layer Protocol阶段,双方会再次进行协商,这次协商主要协商网络层参数,比如发送自己的IP地址、子网掩码等信息,看是否存在IP地址冲突或者不属于一个网段等情况。如果参数协商一致,那么此时就可以进行正常的数据包传送了。
  • 在Link Termination阶段,代表PPP链接终止,除了Link Dead阶段之外,任何协商过程失败都会进入这一阶段,而如果处于Network Layer Protocol阶段,管理员手动关闭了链路,也会进入这一状态。

PPP协议特点

主要特点:
  • 点对点协议,既支持异步链路,也支持同步链路。
  • PPP是面向字节的。
PPP不采用序号和确认机制的原因:

第一, 若使用能够实现可靠传输的数据链路层协议(如HDLC),开销就要增大。**在数据链路层出现差错的概率不大时,**使用比较简单的PPP协议较为合理。

第二, 在因特网环境下,PPP的信息字段放入的数据是IP数据报。假定我们采用了能实现可靠传输但十分复杂的数据链路层协议,然而当数据帧在路由器中从数据链路层上升到网络层后,仍有可能因网络授拥塞而被丢弃。因此,数据链路层的可靠传输并不能保证网络层的传输也是可靠的。

第三, PPP协议在帧格式中有帧检验序列FCS字段。对每一个收到的帧,PPP都要使用硬件进行CRC检验。若发现有差错,则丢弃该帧(一定不能把有差错的帧交付给上一层)。端到端的差错检测最后由高层协议负责。因此,PPP协议可保证无差错接受。

PPP协议适用于用户使用拨号电话线接入因特网的情况。

PPP协议状态图

PPP协议状态机概览

在这里插入图片描述

  1. 在上图的链接建立阶段,PPP使用LCP报文来协商连接(一种发送配置请求,然后接收响应的简单“握手”过程),该阶段主要是发送一些配置报文来配置数据链路,这些配置的参数不包括网络层协议所需的参数。协商中双方获得当前点对点连接的状态配置等,之后的“鉴别”阶段使用哪种鉴别方式也在这个协商中确定下来。
  2. 鉴别阶段是可选的,如果链接协商阶段并没有设置鉴别方式,则将忽略本阶段直接进入“网络”阶段。鉴别阶段使用链接协商阶段确定下来的鉴别方式来为连接授权,以起到保证点对点连接安全,防止非法终端接入点对点链路的功能。

链路质量的检测也会在这个阶段同时发生,但协议规定不会让链路质量的检测无限制的延迟验证过程

常用的鉴别认证方式有CHAP和PAP方式

CHAP

**由一端定期发起挑战“challenge”,**收到“challenge”的一端将收到的“challenge”报文中的密钥使用之前双发协商好的一种算法加密后再把结果发回发起端,这种算法应该是结果唯一(不同输入必得到不同输出)且不可逆(由输出无法得到输入)的,发起端也使用该算法计算后验证结果是否正确来为对端授权认证。

PAP

直接由被验证方将自己的用户名和密码明文方式发送给对端,由对端对用户名和密码验证来决定是否认证成功。所以,比较而言,CHAP是一种相对更安全一些的验证方式。

网络阶段

PPP两端双方向的鉴权方式可以不同,即A端为B端鉴权时使用PAP方式(B发送自己的用户名和密码给请A认证),而同时B端使用CHAP方式为A端鉴权(B向A发起CHAP挑战),是完全可以的。

如果鉴别阶段成功,则PPP状态机进入 “网络”阶段。这个阶段主要是使用NCP报文来协商将PPP封装怎样的网络层的问题。NCP报文及协商流程和LCP极为相似

经过网络阶段后,PPP状态机进入OPEN打开状态,在这个状态下,PPP链路上的三层数据报文即可正常通信了。

一旦任何一端收到LCP或NCP的链路关闭报文(一般而言协议是不要求NCP有关闭链路的能力的,因此通常情况下关闭链路的数据报文是在LCP协商阶段或应用程序会话阶段发出的)、授权失败、链路质量检测失败、物理层无法检测到载波、管理人员对该链路进行关闭操作,都会将该条链路终止,从而终止PPP会话。

LCP协议

LCP是Link Control Protocol(链路控制协议)的简称,它是PPP协议的一个子集。为了能适应复杂多变的网络环境,PPP协议提供了一种链路控制协议来配置和测试数据通信链路,它能用来协商PPP协议的一些配置参数选项;处理不同大小的数据帧;检测链路环路、一些链路的错误;终止一条链路。

此外还提供协商封装格式的可选选项,具体包括以下内容:

  • 验证----验证过程要求主叫方输入身份信息,让被叫方验证是否建立这个呼叫。
  • 压缩-----减少帧中的数据量从而提高效率。
  • 差错检测-----用Quality选项来检测链路质量,进行差错检测 。
  • 多连接----多链路捆绑,在一条链路负载达到一定数值的情况下,启用第二条链路。多条链路间可实现负载均衡。
  • PPP回拨----允许路由器作为回叫服务器。客户端发起初始的呼叫并请求回叫。初始呼叫被终止,回叫服务器根据配置回叫客户端。这种机制增强了安全性。
LCP报文详解

LCP报文主要分为:

  • 链路配置报文,主要用来建立和配置一条链路;
  • 链路终止报文,主要用来终止一条链路;
  • 链路维护报文,主要用来维护和调试链路。
链路配置报文

链路配置报文主要用来建立和配置一条链路,包括:Config-Request、Config-Ack、Config-Nak和Config-Reject四种报文。

链配置报文与其它两类报文有着明显的区别,它主要是用来协商链路的配置参数选项的,因此这种报文的数据域还要携带许多配置参数选项的,而另外两类报文中部分报文的格式会稍有不同(请参见RFC1661),下图表明了数据配置选项的报文格式:

img

类型域1字节长;长度域1字节,表示当前LCP配置选项的总长度(类型域 + 长度域 + 数据域)。

链路终止报文

链路终止报文主要用来终止一条链路,分为Terminate-Request和Terminate-Reply两种报文。

LCP报文中提供了一种机制来关闭一个点对点的连接,想要关断链路的一端A会持续发送Terminate-Request报文,直到收到一个Terminate-Reply为止。接收端B一旦收到了一个Terminate-Request报文后,必须回应一个Terminate-Reply报文,同时等待对端A先将链路断开后,再完成本端的所有断开的操作。

LCP的链路终止报文的数据域与链路配置报文的数据域不一样,链路终止报文中无需携带各配置参数选项。对于链路终止报文也同样需要ID一致,当接收到Terminate-Reply报文才会做链路终止操作。

链路维护报文

除上述两种报文类型以外,剩余的所有报文类型均归属链路维护报文。

(1)当接收端发现LCP报文的代码域code是一个不合法的值时,将会向发送端回应一个Code-Reject报文,在回应报文中会将所拒绝报文的全部内容附加上(注:code只有在LCP协议头中才存在)。

(2)当接收端发现所接收到的PPP数据帧的协议域Protocol是一个不合法的值时,将会向发送端回应一个Protocol-Reject报文,发送端收到该拒绝报文后将停止发送该种协议类型的数据报文了(注:Protocol只有在PPP协议头中才存在)。

Protocol-Reject报文只能在LCP的状态机处于Opened状态时才可被处理,而在其它状态接收到该报文将被丢弃。在Protocol-Reject报文的数据域内将携带所拒绝报文的协议类型和报文内容。

(3)Echo-Request报文和Echo-Reply报文主要用来检测双向链路上自环的问题,除此之外还可附带做一些链路质量的测试和其它功能。当LCP状态机处于Opened状态时,如果接收到了Echo-Request,就需向对端回送一个Echo-Reply报文。否则在其它LCP状态下,该类型的报文会被丢弃。

这种类型数据报文的长度域后不是直接跟数据域,而是要插入4个字节的Magic-Number(魔术字),该魔术字是在LCP的Config-Request的配置参数选项协商时获得的。

NCP协议

NCP协议的数据报文是在网络阶段被交换的,在这个阶段所需的一些配置参数选项协商完后,就可以进行网络层的通信,也即是在点对点的链路上可以开始传送网络层的数据报文了。

NCP协议主要包括IPCP、IPXCP等

IPCP控制协议

IPCP控制协议主要是负责完成IP网络层协议通信所需配置参数的选项协商,负责建立,使能和中止IP模块。IPCP在运行的过程当中,主要是完成点对点通信设备的两端动态的协商IP地址。IPCP包在PPP没有达到网络层协议阶段以前不能进行交换,如果有IPCP包在到达此阶段前到达会被抛弃。

img

HDLC协议

概念

高级数据链路控制协议,是一个在同步网上传输数据、面向比特的数据链路层协议。

数据报文可透明传输,用于实现透明传输的“0比特插入法”易于硬件实现

采用全双工通信,所有帧采用CRC检验,对信息帧进行顺序编号,可防止漏收或重份,传输可靠性搞。

HDLC帧格式

在这里插入图片描述

HDLC的站

主站

主要功能是发送命令(包括数据信息)帧、接收响应帧,并负责对整个链路的控制系统的初启、流程的控制、差错检验或恢复等。

从站

主要功能是接收由主站发来的命令帧,向主站发送响应帧,并且配合主站参与差错恢复等链路控制。

复合站

主要功能是既能发送、又能接收命令帧和响应帧,并且负责整个链路的控制。

三种数据操作方式
  1. 正常响应方式
  2. 异步平衡方式
  3. 异步响应方式

PPP协议和HDLC协议的异同

相同:
  1. 只支持全双工
  2. 都可以实现透明传输
  3. 都可以实现差错检测,但不纠正差错
不同:

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值