Linux PPP 数据收发流程
Linux PPP 数据收发流程
转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd
作者联系方式:李先静<xianjimli at hotmail dot com>
更新时间:2007-5-4
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/IP协议层。
网络协议是分层实现的,上层一般只需要知道其直接下层,只有在极少数据情况才使用间接下层的接口。比如,彩信、浏览器和邮件等应用程序使用socket接口编程,它们只需要知道TCP/IP协议,而无需要知道PPP协议的存在。这种分层设计简化了协议的实现和应用程序的开发。
问题来了:PPP协议不只是提供了简单的数据链路层功能,它还提供了诸如鉴权(如PAP/CHAP),数据压缩/解压(如CCP)和数据加密/解密(如ECP)等扩展功能。应用程序要求使用透明化,不关心这些扩展功能的存在,而反过来,PPP协议处理模块本身又无法处理这些策略性的东西,因为它不知道用户名/密码,不知道是否要进行压缩,不知道是否要进行加密。
怎么办?如何在对应用程序透明的情况下使用扩展功能呢?上帝说,这个问题必须解决!于是pppd就出现了。pppd是一个后台服务进程(daemon),是一个用户空间的进
相关文档:
wine 一个1.1版本的搜狗浏览器:
$ ln -s
文件夹路径/SogouExplorer/ .wine/drive_c/Program\ Files/SogouExplorer
$ wine "C:\Program
Files\SogouExplorer\SogouExplorer.exe" -proxy
PID:8
PORT:8081
CPORT:8082
PAC:http://127.0.0.1:8082/proxy.pac?t=1349
RET:SUCCESS
即
可在 Fi ......
练手, 第一个字符驱动.
用模块加载方法
华清远见<嵌入式linux设备驱动开发详解>的代码拿来改的.
编译过程发现很多错误.
最后发现 这本书带的驱动代码都是基于linux2.4的...目前我用的linux2.6, 代码部分需要做修改.
我的板子是 友善之臂的 2410. vmware+ubuntu nfs交叉编译
首先
lin ......
1.时间表示
在程序当中,我们经常要输出系统当前的时间,比如我们使用date命令的输出结果.这个时候我们可以使用下面两个函数:
#include <sys/time.h>
time_t time(time_t *tloc);
char *ctime(const time_t *clock);
time函数返回从1970年1月1日0 ......
<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
A:link { so-language: zxx }
-->
当今,
Linux
桌面到宣传与普及应该进入一个新时期。何故?
今年
4
月
29
日,
Ubuntu
10.04
发布是在
Linux
桌面发展历史上的一个 ......