网站大量收购闲置独家精品文档,联系QQ:2885784924

ppp pppd chat关系及数据收发流程.pdf

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

ppp/pppd/chat关系及数据收发流程

参考:李先静xianjimliathotmaildotcom

一、协议相关介绍

PPP(Point-to-PointProtocol点到点协议)是为在同等单元之间传输数据包这样的简单链路

设计的链路层协议。这种链路提供全双工操作,并按照顺序传递数据包。设计目的主要是用

来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简

单连接的一种共通的解决方案。

链路控制协议LCP(LinkControlProtocol);

网络控制协议NCP(NetworkControlProtocol);

认证协议:口令验证协议PAP(PasswordAuthenticationProtocol)和挑战握手验证协议CHAP

(Challenge-HandshakeAuthenticationProtocol)。

1

LCP协商,协商内容包括除RFC1661中所定义的选项之外,还要考虑PPPOA和PPPOE协

议中规定的内容。

LCP协商过后就到了Establish阶段,开始PAP或CHAP认证。PAP为两次握手认证,口令

为明文。PAP认证过程如下:发送用户名同口令到认证方,认证方查看是否有此用户,口令

是否正确,然后发送相应的响应。CHAP为三次握手认证,口令为密文(密钥)CHAP认证

由认证方发送一些随机产生的报文,交给被认证,被认证方用自己的口令字用MD5算法进

行加密,传回密文,认证方用自己保存的口令字及随机报文用MD5算法加密,比较二者的

密文,根据比较结果返回响应的响应。

认证成功即进行Network阶段协商(NCP),在IP接入中主要是IPCP协商(如IP地址和

DNS地址的协商等)。任何阶段的协商失败都将导致链路的拆除。

协商成功,则链路建立成功,可以开始传输网络层数据报文。

PPPoE(PPPoverEthernet),PPPoA(PPPoverATM)

二、应用关系

IP协议等网络层TCP/IP

PPP协议(PPPD协助)PPP

以太网和串口等物理层串口

pppd是一个后台服务进程(daemon),是一个用户空间的进程,所以把策略性的内容从内核

的PPP协议处理模块移到pppd中是很自然的事了。pppd实现了所有鉴权、压缩/解压和加

密/解密等扩展功能的控制协议。

pppd是一个普通的用户进程,pppd与内核中的PPP协议处理模块之间采用最传统的内核空

间与用户空间之间通信方式:设备文件;设备文件名是/dev/ppp。通过read系统调用,pppd

可以读取PPP协议处理模块的数据包,当然,PPP协议处理模块只会把应该由pppd处理的

数据包发给pppd。通过write系统调用,pppd可以把要发送的数据包传递给PPP协议处理

模块。通过ioctrl系统调用,pppd可以设置PPP协议的参数,可以建立/关闭连接。

在pppd里,每种协议实现都在独立的C文件中,它们通常要实现protent接口,该接口主

要用于处理数据包,和fsm_callbacks接口,该接口主要用于状态机的状态切换。数据包的

接收是由main.c:get_input统一处理的,然后根据协议类型分发到具体的协议实现上。而数

据包的发送则是协议实现者根据需要调用output函数完成的。

chat是pppd所带一个辅助工具。chat用来与GSM模组建立会话。它的实现比较简单,它向

串口发送AT命令,建立与GSM模组的会话,以便让PPP协议可以在串口上传输数据包。

2

三、数据收发流程

应用程序通过socket接口发送TCP/IP数据包,这些TCP/IP数据包如何流经PPP协议处理

模块,然后通过串口发送出去呢?pppd在make_ppp_unit函数中调用

ioctrl(PPPIOCNEWUNIT)创建一个网络接口(如ppp0),内核中的PPP协议模块

文档评论(0)

343906985 + 关注
实名认证
内容提供者

一线教师,有丰富的教学经验

1亿VIP精品文档

相关文档