免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3556 | 回复: 0
打印 上一主题 下一主题

PPP协议(二层协议) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-16 20:49 |只看该作者 |倒序浏览
PPP协议(二层协议)

PPP:点对点协议 (PPP:Point to Point Protocol)
一、PPP简介
点对点协议(PPP)为在点对点连接上传输多协议数据包提供了一个标准方法。PPP 最初设计是为两个对等节点之间的 IP 流量传输提供一种封装协议。在 TCP-IP 协议集中它是一种用来同步调制连接的数据链路层协议(OSI 模式中的第二层),替代了原来非标准的第二层协议,即 SLIP。除了 IP 以外 PPP 还可以携带其它协议,包括 DECnet 和 Novell 的 Internet 网包交换(IPX)。
PPP是一种数据链路层协议,遵循HDLC(高级数据链路控制协议)族的一般报文格式。PPP是为了在点对点物理链路(例如RS232串口链路、电话ISDN线路等)上传输OSI模型中的网络层报文而设计的,它改进了之前的一个点对点协议–SLIP协议–只能同时运行一个网络协议、无容错控制、无授权等许多缺陷,PPP是现在最流行的点对点链路控制协议。


上图中PPP的flag字段恒为0×7f,地址(adress)字段恒为0xff,控制(control)字段恒为0×03.协议(protocol)字段表示PPP报文中封装的payload(data字段)的类型,如果为0×0021,则表示PPP封装的IP报文,0×002B表示IPX报文,0×0029表示AppleTalk报文,这几种都属于PPP的数据报文;如果为0×8021则表示PPP的LCP报文(用来协商连接),如果为0xC021则属于PPP的NCP报文(用来协商封装的三层协议),这些属于PPP的控制报文。
PPP协议状态机如下图所示:
[/url]

在上图的链接建立阶段(建立),PPP使用LCP报文来协商连接(一种发送配置请求,然后接收响应的简单“握手”过程,不做过多介绍,感兴趣可以去细读
[url=http://www.ietf.org/rfc/rfc1661.txt]RFC1661

),协商中双方获得当前点对点连接的状态配置等,之后的“鉴别”阶段使用哪种鉴别方式也在这个协商中确定下来。
鉴别阶段是可选的,如果链接协商阶段并没有设置鉴别方式,则将忽略本阶段直接进入“网络”阶段。鉴别阶段使用链接协商阶段确定下来的鉴别方式来为连接授权,以起到保证点对点连接安全,防止非法终端接入点对点链路的功能。常用的鉴别认证方式有CHAP和PAP方式。
[/url]



CHAP方式的原理是由一端定期发起挑战“challenge”,收到“challenge”的一端将收到的“challenge”报文中的密钥使用之前双发协商好的一种算法加密后再把结果发回发起端,这种算法应该是结果唯一(不同输入必得到不同输出)且不可逆(由输出无法得到输入)的,发起端也使用该算法计算后验证结果是否正确来为对端授权认证。一个常用的方案实例是:发起端发送随机长度及内容的字符串加上自己的用户名作为“密钥”发送出来,接受到“challenge”的一方将收到的字符串和与对方用户名相对应的本端用户的密码使用MD5算法计算后发回,然后发起端将收到的计算结果和本端MD5计算该随机字符串加自己密码的结果相对照,如果双发一致,则认证成功。
另一种认证方式PAP方式相比就简单很多,直接由被验证方将自己的用户名和密码明文方式发送给对端,由对端对用户名和密码验证来决定是否认证成功。所以,比较而言,CHAP是一种相对更安全一些的验证方式。
需要注意的是,PPP两端双方向的鉴权方式可以不同,即A端为B端鉴权时使用PAP方式(B发送自己的用户名和密码给请A认证),而同时B端使用CHAP方式为A端鉴权(B向A发起CHAP挑战),是完全可以的。
如果鉴别阶段成功,则PPP状态机进入“网络”阶段。这个阶段主要是使用NCP报文来协商将PPP封装怎样的网络层的问题。NCP报文及协商流程和LCP极为相似,就不过多介绍了。
经过网络阶段后,PPP状态机进入OPEN打开状态,在这个状态下,PPP链路上的三层数据报文即可正常通信了。

二、ppp协议组成及协商过程
2.1. ppp 点到点协议:为在同等单元之间传输数据包这样简单的简单链路设计的链路层协议。
ppp协议设计目的:通过拨号或专线方式建立点到点发送数据,使其成为各种主机、网桥、路由器之间的简单连接。
2.2. PPP 协议中提供了一整套方案来解决链路建立、维护、拆除、上层协议协商、认证等问题。
2.3. PPP 协议包含这样几个部分:链路控制协议 LCP(Link Control Protocol);网络控制协议 NCP(Network Control Protocol);认证协议,最常用的包括口令验证协议 PAP(Password Authentication Protocol ) 和挑战-握手验证协议CHAP ( Challenge-Handshake Authentication Protocol)。
2.4. 一个典型的链路建立过程分为三个阶段:创建阶段、认证阶段和网络协商阶段。

阶段 1:创建 PPP 链路
LCP 负责创建链路。在这个阶段,将对基本的通讯方式进行选择。链路两端设备通过 LCP向对方发送配置信息报文(Configure Packets)。一旦一个配置成功信息包(Configure-Ack packet)被发送且被接收,就完成了交换,进入了 LCP 开启状态。
应当注意,在链路创建阶段,只是对验证协议进行选择,用户验证将在第 2阶段实现。

阶段 2:用户验证
在这个阶段,客户端会将自己的身份发送给远端的接入服务器。该阶段使用一种安全验证方式避免第三方窃取数据或冒充远程客户接管与客户端的连接。在认证完成之前,禁止从认证阶段前进到网络层协议阶段。如果认证失败,认证者应该跃迁到链路终止阶段。
在这一阶段里,只有链路控制协议、认证协议,和链路质量监视协议的 packets 是被允许的。在该阶段里接收到的其他的 packets 必须被静静的丢弃。
最常用的认证协议有口令验证协议(PAP)和挑战握手验证协议(CHAP)。
2.4.1.口令验证协议(PAB):明文验证,两次握手
   a.HOST明文发送用户名和密码给NAS
   b.NAS根据本端用户表(或Radius服务器)验证时候真确,真确返回ACK,否则返回NAK。
2.4.2.挑战-握手验证协议(CHAP):加密验证,三次握手
a.NAS发送随即报文(附带本端主机名)发送给HOST。
b.HOST接到报文后,根据报文中的主机名和本段用户查找用户口令,找到后利用报文ID,密码用MD5算法产生应答,然后将应答和主机名发送给NAS。
c.NAS通过本端的口令字密码和和随即保本用MD5得出结果与HOST应答比较后返回结果。

阶段 3:调用网络层协议
认证阶段完成之后,PPP 将调用在链路创建阶段(阶段 1)选定的各种网络控制协议(NCP)。选定的 NCP 解决PPP 链路之上的高层协议问题,例如,在该阶段 IP控制协议(IPCP)可以向拨入用户分配动态地址。
这样,经过三个阶段以后,一条完整的 PPP 链路就建立起来了。

三、ppp协议结构
3.1.ppp数据包格式为:| 协议码 | 载荷   |填充符
ppp主要有四类协议码:
   1 0x0001 - 0x3fff 网络层协议(ipv4,ipv6,ipx,appletalk)
   2 0x4001 - 0x7fff 无网络层协议参与的小载荷量传输(低整流量)
   3 0x8001 - 0xbfff 用于配置网络层的子协议(网络控制协议,如ipcp)
   4 0xc001 - 0xffff 用于建立ppp连接的子协议(链路层控制协议,如lcp,pap,chap)
3.2.ppp协议实现的结构

   网络应用程序
   ip/tcp协议栈
   ppp网络协议 -|
            |—— ppp内核实现
   ppp连线规程 -|
   调制解调器
   
   pppd 是应用进程,通过子符设备和ppp内核通信。
3.3. ppp收发数据过程
   a. 发送数据
       ppp 协议发送数据有两种途径:一种是网络协议栈发送 ,另一种是pppd直接发送控制协议数据
   b. 接收数据
       ppp连线规程解收到数据后,根据数据类型:如果是协商协议数据,则放到子符设备队列等待pppd读取;如果是网络层数据,则调用netif_rx入网络栈。



本文来自ChinaUnix博客,如果查看原文请点:[url]http://blog.chinaunix.net/u3/109487/showart_2150922.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP