1 / 5
文档名称:

PPP数据收发流程.docx.docx

格式:docx   页数:5页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

PPP数据收发流程.docx.docx

上传人:ying_zhiguo02 2016/6/10 文件大小:0 KB

下载得到文件列表

PPP数据收发流程.docx.docx

相关文档

文档介绍

文档介绍:PPP ( Point- to-Point )提供了一种标准的方法在点对点的连接上传输多种协议数据包,它最常见的用途可能是传统的拨号上网了( 据说现在的宽带接入也有采用 PPPOE 方式的)。在 Linux Mobile Phone 上,网络应用程序使用 PPP 作为与 GSM 模组之间的通信协议,最近遇到了一点关于 PPP 的麻烦,所以花了点时间去研究它。 PPP 协议肯定不是最复杂的网络协议, 不过 pppd 、 chat 、 tty、 socket 、 ccp 、 chap 、 pap 、 eap 、 ecp 、 ipcp 和很多其它概念搅在一起之后,谁都会被搞得晕头转向。我关心的其实是 PPP 协议中各个实体之间的协作关系,而不是协议的状态转换或者服务的配置,由于没有找到这方面的资料,只好去读 RFC ,内核、 pppd 和一些网络工具的代码。 PPP 协议提供两个实体之间的数据链路连接的建立、维持和释放,负责流量和差错控制等等功能,所以它应该是属于数据链路层协议的。 PPP 协议之下是以太网和串口等物理层, 之上是 IP 协议等网络层。这里, 对于下层, 我们只讨论串口的情况,对于上层,我们只讨论 TCP/IP 的情况。发送时, TCP/IP 数据包经过 PPP 打包之后经过串口发送。接收时,从串口上来的数据经 PPP 解包之后上报给 TCP/I P 协议层。网络协议是分层实现的, 上层一般只需要知道其直接下层, 只有在极少数据情况才使用间接下层的接口。比如,彩信、浏览器和邮件等应用程序使用 socket 接口编程,它们只需要知道 TCP/IP 协议,而无需要知道 PPP 协议的存在。这种分层设计简化了协议的实现和应用程序的开发。问题来了: PPP 协议不只是提供了简单的数据链路层功能,它还提供了诸如鉴权(如 PAP/CHAP) ,数据压缩/ 解压(P) 和数据加密/ 解密(如 ECP )等扩展功能。应用程序要求使用透明化,不关心这些扩展功能的存在,而反过来, PPP 协议处理模块本身又无法处理这些策略性的东西,因为它不知道用户名/ 密码,不知道是否要进行压缩,不知道是否要进行加密。怎么办?如何在对应用程序透明的情况下使用扩展功能呢?上帝说,这个问题必须解决!于是 pppd 就出现了。 pppd 是一个后台服务进程(daemon) ,是一个用户空间的进程,所以把策略性的内容从内核的 PPP 协议处理模块移到 pppd 中是很自然的事了。 pppd 实现了所有鉴权、压缩/ 解压和加密/ 解密等扩展功能的控制协议。 pppd 只是一个普通的用户进程,它如何扩展 PPP 协议呢?这就是 pppd 与内核中的 PP P 协议处理模块之间约定了,它们之间采用了最传统的内核空间与用户空间之间通信方式:设备文件。设备文件名是/dev /ppp 。通过 read 系统调用, pppd 可以读取 PPP 协议处理模块的数据包, 当然, PPP 协议处理模块只会把应该由 pppd 处理的数据包发给 pppd 。通过 write 系统调用, pppd 可以把要发送的数据包传递给 PPP 协议处理模块。通过 ioctrl 系统调用, ppp d 可以设置 PPP 协议的参数,可以建立/ 关闭连接。在 pppd 里, 每种协议实现都在独立的 C 文件中, 它们通常要