拨号上网是使用ppp协议和ISP的服务器,网络知识总结三:链路层相关协议补充之PPP协议...

转载自文章:http://blog.csdn.net/windeal3203/article/details/51066331安全

PPP协议概述

PPP(Point-to-Point Protocol点到点协议)是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。这种链路提供全双工操做,并按照顺序传递数据包。

PPP协议支持如下功能:服务器

IP地址的动态分配和管理

同步或异步的物理层通讯

链路的配置、质量检测和纠错

多种配置参数选项的协商

PPP是目前使用最普遍的数据链路层协议,不论是低速的拨号猫链接仍是高速的光纤链路,都适用PPP协议。因特网用户一般都要链接到某个ISP 才能接入到因特网。 PPP协议就是用户计算机和ISP进行通讯时所使用的数据链路层协议。 ISP使用PPP协议为计算机分配一些网络参数(如IP地址、域名等)。网络

PPP协议是一个协议集,主要包含下面三部分session

LCP( Link Control Protocol)链路控制协议

NCP( Network Control Protocol)

PPP的扩展协议(如Multilink Protocol,

后面咱们会提到PPP链路创建过程当中涉及到了 认证, 但认证阶段使用到的CHAP/PAP等协议自己不属于PPP协议的范畴。(其实默认状况下“认证阶段”是缺省的,即PPP链路默认是不进行认证的)异步

PPP协议的六个阶段

1. 链路不可用阶段: 初始阶段

2. 链路创建阶段: LCP协商,(协商认证方式等)

3. 验证阶段: PAP/CHAP验证

**4. 网络层协议阶段:**NCP协商

5. PPP会话维持阶段: 维持PPP会话, 定时发送Echo Request报文,并等待Echo Reply报文

6. 网络终止阶段: 终止PPP会话,回到链路不可用阶段。ide

(一)PPP 帧

PPP帧从HDLC(High-level link Control)。

4206a3c9c578477e27f3f2f44983b495.png性能

Flag:标志位、用于标识帧的开始和结束

Addr:地址位,用于标识Station地址。PPP帧发源自HDLC帧,保留了此字段。对于PPP帧来讲,因为是点对点协议,不须要地址位。PPP帧的地址位恒为0xFF。(PPP协议被运用在点对点链路上,不须要知道对端的链路地址,由于点对点链路,如PPPoE帧头中,已经肯定了对端的地址)。

Control:在DHLC帧中,Control位用来标识帧的顺序和重传行为,但因为该功能在PPP协议中并无广泛实现,所以PPP帧中,Control值固定为)0x03.

Protocol:协议字段,标识所携带报文的类型。如0x0021时,表示PPP帧的信息字段是IP数据报文。不一样的Protocol标识Data字段的不一样含义。

ISO标准下 的协议域类型:

Protocol

对应的Data域的含义

0x0***-0x3***

网络层的数据报文

0x4***-0x7***

与NCP无关的第整流量

0x8***-0xb***

网络控制协议(NCP)的数据报文

0xc***-0xf***

链路控制协议(LCP)的数据报文

经常使用的几种Protocol取值:测试

Protocol

信息字段

0x0021

IP数据报

0x8021

网络控制数据NCP

0xC021

链路控制数据LCP

0xC023

安全性认证PAP

0xC223

安全性认证CHAP

+ Data: 信息字段,即PPP帧的负载(如LCP帧、NCP帧).信息域缺省时最大长度不能超过1500字节,其中包括填充域的内容

+ Pad: 填充字段

+ FCS:循环冗余码。 覆盖了两个Flag(不包括)之间的字段。spa

注:

因为Addr和Control字段在PPP帧中是固定值,在传输过程当中常用Address and Control Field Compression (ACFC)选项省略掉这两个字段。

拨号上网是使用ppp协议和ISP的服务器,网络知识总结三:链路层相关协议补充之PPP协议..._第1张图片

PPP工做流程

a) LCP协商阶段:建立链路完成链路的启动、测试、任选参数的协商和最终链路的断开

b)认证阶段: LCP向对端发送协商请求, 双方肯定链路的配置参数后,LCP向认证层发送Up事件。经常使用的认证协议有PAP(口令验证协议)和CHAP(挑战握手验证协议)。

c) NCP协商阶段(IPCP等协议):调用链路层建立阶段选定的网络控制层协议。主要包括动态分配IP地址功能等。经常使用的NCP协议有IPCP协议。

d)会话维持阶段:进行PPPoE心跳保活

**d)PPP正常终结:**NCP分别终结,而后LCP终结,最后物理层终结.net

1、 LCP 协商

LCP(Link Control Protocol)用来建立链路完成链路的启动、测试、任选参数的协商和最终链路的断开

LCP的操做只关注链接的两端,而不在意Mac层协议(如以太网协议、WIFI),也就是不须要考虑具体的传输媒介是什么。

LCP帧

LCP帧以PPP帧为基础。格式以下:

97f28ea373232849e6caa655f1aa8dd5.png

LCP帧有本身特有的四个字段:Code、Ident、Length、LCP Data。

另外,(PPP帧的)字段Protocol的值应为0xC021,标识该PPP帧为LCP帧。

+ Code: 表示LCP数据报文(Request或Reply)类型。 值以下:

Code

Description

Code

Description

0x01

configure-request

0x08

Protocol-REJECT

0x02

configure-ACK

0x09

echo-request

0x03

configure-NACK

0x0A

echo-reply

0x04

configure-REJECT

0x0B

discard-request

0x05

teminate-request

0x0C

identification

0x06

terminate-ACK

0x0D

Time-Remaining

0x07

code-REJECT

+ Ident:标识域。LCP报文的序列号,用于匹配Request和Reply报文。 由Request帧的发送者生成,在以后的序列帧中递增。对于应答报文(如ACK,NACK,REJECT应答报文, Ident帧的值是从Request报文中copy过来的。(由此,Request方能够经过Ident字段识别Rely的对应关系)。

+ Length: LCP报文的长度,以字节为单位。 Code+Ident+Length+LCP Data

+ LCP Data: LCP数据报文。

不一样类型的LCP帧的做用:

帧 类型

用途

configure 帧

对链路两端进行最基本的配置

Terminate帧

链路通讯完成时,对链路链接进行清理操做

echo 帧

用来确认一些操做, 一个活动的链路随时会发送echo帧

discard-request 帧

用于测量链路的性能

identification 帧 Time-Remaining帧

用于一些管理操做

总的来讲,LCP帧根据用途能够分为三大类, 链路配置报文,链路终止报文,链路维护报文:

(1). 链路配置报文:

包含Config-Request、Config-Ack、Config-Nak和Config-Reject四种报文。

当通讯双方须要创建链路时,双方都须要发送Config-Request报文并携带自已所但愿协商的配置参数选项。当接收方收到Config-Request报文时,会根据是否识别、承认Configure-Request报文中的配置参数来在剩下的三种配置报文中选择一种应答。 若是识别且承认所有参数,则应答Configure-ACK报文(携带所有配置参数); 若是识别,但只承认部分配置参数,则应答configure-NACK报文(携带不承认的配置参数); 若是不能识别全部的配置,则应答configure-Reject报文(携带所有报文)。

LCP的配置选项(配置报文的数据域),是一些TLV(Type、Length、Value)组。

(2). 链路终止报文:

包含Terminate-Request和Terminate-Reply两种报文。

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

(3). 链路维护报文:

链路维护报文中比较杂。好比,咱们须要定时进行PPP保活(确认当前PPP链路是否仍在活跃状态),则PPP链路双方分别发送Echo Request报文,若是对方回复了Echo Reply报文,则表示PPP链路仍在活跃状态。

LCP协商过程

ClientClientServerServerConfig-RequestConfig-AckConfig-RequestConfig-Ack

LCP 两端经过发送LCP Config-Request和Config-Ack交互协商选项。 LCP一方经过发送LCP Config-Request来向另外一方请求本身须要的LCP协商选项。若是Config-Request报文的接收方支持并接受这些选项则回复LCP Config-Ack报文。若是Config-Request部分(或者所有)不支持全部的LCP选项则回复其余报文。

(1)Config-ACK:若彻底支持对端的LCP选项,则回应Config-ACK报文,报文中必须彻底协带对端Request报文中的选项。

(2)Config-NAK:若支持对端的协商选项,但不承认该项协商的内容,则回应Config-NAK报文,在Config-NAK的选项中填上本身指望的内容,如:对端MRU值为1500,而本身指望MRU值为1492,则在Config-NAK报文中埴上本身的指望值1492。

(3)Config-Reject:若不能支持对端的协商选项,则回应Config-Reject报文,报文中带上不能支持的选项,如Windows拨号器会协商CBCP(被叫回呼),而ME60不支持CBCP功能,则回将此选项拒绝掉。

—-Config-request报文———

拨号上网是使用ppp协议和ISP的服务器,网络知识总结三:链路层相关协议补充之PPP协议..._第2张图片 

—-Config-Ack报文———

拨号上网是使用ppp协议和ISP的服务器,网络知识总结三:链路层相关协议补充之PPP协议..._第3张图片

二. 认证阶段

PPP认证,经常使用认证协议有PAP(口令验证协议)和CHAP(挑战握手验证协议)

会话双方经过LCP协商好的认证方法进行认证,若是认证经过了,才能够进行下面的网络层的协商。认证过程在链路协商结束后就进行。

+ PAP验证: 两次握手,明文传输口令,安全性低

+ CHAP验证: 三次握手, 密文传输口令。

PAP验证过程

ClientClientServerServerRadiusRadiusAuth-ReqAuth-ReqAuth-AckAuth-ACK

CHAP验证过程:

ClientClientServerServerRadiusRadiusWaitChallenge(CHAP)ResponseResponseSuccessSuccess

三. NCP协商协议

NCP有不少种,如IPCP、BCP、IPv6CP,最为经常使用的是IPCP(Internet Protocol Control Protocol)协议。NCP的主要功能是协商PPP报文的网络层参数,如IP地址,DNS Server IP地址,WINS Server IP地址等。PPPoE用户主要经过IPCP来获取访问网络的IP地址或IP地址段。

NCP流程与LCP流程相似,用户与ME设备之间互相发送NCP Config-Request报文而且互相回应NCP Config-Ack报文后,标志NCP己协商完,用户上线成功,能够正常访问网络了。

NCP协商协议的基本流程以下:

ClientClientServerServerConfiguration-RequestConfiguration-ACKConfiguration-RequestConfiguration-ACK

用户和接入设备对IP服务阶段的一些要求进行屡次协商,以决定双方都可以接收的约定。

通LCP相似,当Request中的一些选项不被接收方接受时, 接收方不会回复Configuration-ACK报文,而是回复其余如Configuration-NACK报文。

NCP Configuration-Request报文

拨号上网是使用ppp协议和ISP的服务器,网络知识总结三:链路层相关协议补充之PPP协议..._第4张图片

NCP Configuration-NAK报文

拨号上网是使用ppp协议和ISP的服务器,网络知识总结三:链路层相关协议补充之PPP协议..._第5张图片

四. 会话维持(Session Keep-alive)

设备主动发送Echo Request进行PPPoE心跳保活,若3次未获得服务器的响应,则设备主动释放地址。发LCP Echo Request 的时候,魔术字字段要和以前通讯的Configure_Request使用的魔术字字段保持一致。

有些设备或终端不支持主动发送 Echo-Request 报文, 只能支持回应Echo-Reply报文。

五. 会话结束(Session Termination)

PPPoE 还有一个PADT(PPPOE Active Discovery Terminate)分组,它能够在会话创建后的任什么时候候发送,来终止PPPoE会话,也就是会话释放。它能够由主机或者接入集中器发送,目的地址填充为对端的以太网的MAC地址。

当对方接收到一个 PADT(PPPOE Active Discovery Terminate)分组,就再也不容许使用这个会话来发送PPP业务。PADT分组不须要任何标签,其CODE字段值为0xa7(PADT Code),SESSION-ID字段值为须要终止的PPP会话的会话标识号码。在发送或接收PADT后,即便正常的PPP终止分组也没必要发送。PPP对端应该使用PPP协议自身来终止PPPoE会话,可是当PPP不能使用时,可使用PADT。

你可能感兴趣的:(拨号上网是使用ppp协议和ISP的服务器,网络知识总结三:链路层相关协议补充之PPP协议...)