ppp拨号过程

摘要
    本文主要介绍了嵌入式Linux系统下使用pppd 2.4.4来进行PPP拨号需要使用的脚本是如何配置的,配置项的含义,同时也说明了如何来配置参数,实现ppp拨号上网。

一.问题提出
    嵌入式Linux操作系统下,如果要进行PPP连接,就需要配置拨号要使用的连接脚本。这些脚本参数就决定了PPPD的行为,会对PPP连接产生很大的影响。所以需要对这些脚本的参数以及具体含义有所了解。

二.解决思路
和PPP连接关系密切的有两个脚本是chat和options两个脚本。其中,chat脚本是用来进行AT呼叫和控制的脚本,而options脚本就影响PPP连接的。

1.  CHAT脚本
   一个简单的chat脚本有下面的结构:
""              AT
OK             ATDT  dialnumber
CONNECT      ""
一个chat脚本都是由字符串对来组成的。前面的字符串都是期望获取的串,紧跟的是发送的字符串。这个脚本每一项的具体含义是这样的:
1)    MODEM期望空字符串。这句话的意思直接理解就是MODEM不管收到什么字符串,先发出字符串AT;
2)    期望收到“OK”字符串,然后发送字符串“ATDT dialnumber”
3)    如果收到“CONNECT”,就不再发送,认为数据链路已建立连接。
  这样的chat脚本是最简单的,如果需要进行超时控制,就可以加入如下字段:
TIMEOUT 10
如果要增加对特殊情况的处理,就加入下面字段:
        ABORT           BUSY          
        ABORT           NO ANSWER 
        ABORT           RINGING
这三行语句的意思是:如果收到字符串“BUSY”、“NO ANSWER”、“RINGING”就退出执行。
所以在考虑到各种特殊情况下,配置一个PPP连接的CHAT脚本就可以像下面这样:
TIMEOUT         30
ABORT           BUSY          
ABORT           NO ANSWER 
ABORT           RINGING
""              AT
OK              ATDT*99***1#
CONNECT         

2.OPTIONS脚本
OPTIONS脚本的内容,为PPP连接指定了连接使用的设备、使用的控制字符传输速率、指定了硬件加速、溢出控制等。
例如下面的options脚本:
ttyS0 ----  指定连接使用的设备,例如:ttyS0、ttyS1等
57600 ----  设置连接使用的控制字符传输速率,可以设置为57600、115200等
debug ----  如果需要加入调试信息,就加入参数debug
logfile /var/ ppplog ----  将连接过程中的信息输入到某个文件中
mtu 1500
-detach
noipdefault ----  不使用默认IP就可以加入参数noipdefault
defaultroute
usepeerdns ----  使用服务器端协商的DNS就可以设置参数usepeerdns
lcp-echo-failure 4 ----  当连续4次没有收到发出的LCP回声请求时,就认为服务器端已不再响应,就 退出执行。这里的失败次数可以灵活来决定。
-ccp ----  不使用压缩控制协议
-vj ----  关掉式IP头压缩
-chap ----  不使用chap鉴权
-mschap-v2 ----  不使用mschap鉴权
user
hide-password
connect "/usr/bin/chat -v -t6 -f /var/ chat" ----  制定了要使用的chat脚本的位置。加上参数-v 告诉 chat命令将其所有的输出/入拷贝到系统记录里(通常是 /var/log/messages)。-t 6 指定了执行chat该命令的时间为6s。chat脚本的位置可以位于/etc/目录下,也可以位于/var下,这个可以更加需要灵活设置。
persist --- 永久链接(自动重拨)
crtscts ---  告诉ppp使用modem的硬件流量控制
modem ---  使ppp使用DCD信号来判断连接是否正常,有无掉线现象
deflate ---  使pppd使用defalte压缩方式
idle ---  设置了一个时间限制,当在300秒的时间内没有数据传送,就断开连接
lock ---  则创建一个锁定文件,其他程序在发现存在这个文件后,就能得知相应的串口已经被使用。
demond ---  参数告诉pppd停留在后台,监视网络数据,一旦有要求就立即进行连网,超时后就断开连接,但pppd仍然停留在后台等待下次数据传送

其他的参数具体含义可以参照参考PPPD2.4.4 中options.c中注释:

/*
 * Option variables and default values.
 */
int debug = 0;  /* Debug flag */
int kdebugflag = 0;  /* Tell kernel to print debug messages */
int default_device = 1; /* Using /dev/tty or equivalent */
char devnam[MAXPATHLEN]; /* Device name */
bool nodetach = 0;  /* Don't detach from controlling tty */
bool updetach = 0;  /* Detach once link is up */
int maxconnect = 0;  /* Maximum connect time */
char user[MAXNAMELEN]; /* Username for PAP */
char passwd[MAXSECRETLEN]; /* Password for PAP */
bool persist = 0;  /* Reopen link after it goes down */
char our_name[MAXNAMELEN]; /* Our name for authentication purposes */
bool demand = 0;  /* do dial-on-demand */
char *ipparam = NULL; /* Extra parameter for ip up/down scripts */
int idle_time_limit = 0; /* Disconnect if idle for this many seconds */
int holdoff = 30;  /* # seconds to pause before reconnecting */
bool holdoff_specified; /* true if a holdoff value has been given */
int log_to_fd = 1;  /* send log messages to this fd too */
bool log_default = 1; /* log_to_fd is default (stdout) */
int maxfail = 10;  /* max # of unsuccessful connection attempts */
char linkname[MAXPATHLEN]; /* logical name for link */
bool tune_kernel;  /* may alter kernel settings */
int connect_delay = 1000; /* wait this many ms after connect script */
int req_unit = -1;  /* requested interface unit */
bool multilink = 0;  /* Enable multilink operation */
char *bundle_name = NULL; /* bundle name for multilink */
bool dump_options;  /* print out option values */
bool dryrun;   /* print out option values and exit */
char *domain;  /* domain name set by domain option */
int child_wait = 5;  /* # seconds to wait for children at exit */

 

3. 鉴权脚本
    一般情况下,PPP连接是需要进行身份认证的。签权方式有两种,一种是PAP鉴权,另一种是CHAP鉴权。鉴权需要的用户名和密码是存放在PAP-secrets和chap-secrets脚本中,以如下方式存放:
Username * password
    需要进行鉴权时,通过在options脚本中指定鉴权方式为PAP或CHAP,PPP模块就会从PAP-secrets和chap-secrets脚本中读出用户名和密码,附加到PPP的鉴权包中,发送到服务器端进行身份认证。


4. PPP拨号过程与脚本之间的关系
  脚本设置成功以后,怎么和pppd2.4.4一起工作呢?这个需要从pppd程序的主函数入手。
这个过程是这样的:
  Pppd程序启动以后,就会按照pathname.h中所指定的文家位置去寻找options脚本文件。这个可以按照需要指定文件的位置,确保pppd能够准确找到该文件。
  Pppd找到options文件后,按顺序读入参数行。在这里,就可以获取系统要使用的是哪个设备来进行联网、设备的速率是多少。
  Pppd 将配置的参数解析为程序当中的全局变量标识符,进行pppd连接控制。



ppp拨号的几点建议 
1、脚本有修改或者拨号失败,最好先重启一下模块再运行新的脚本。  
2、要有modem选项,否则可能会接收返回乱码。  
3、最好在模块注册上网络后再进行拨号,如果在log看到拨号失败,是因为还没注册上网络。  
4、options文件里的选项先全注释掉,里面是优先的设置,可能会有影响,没有就不用管。  
5、在没有设置认证方式时可以拨通,设置了认证方式后不能拨通,解决办法:设置pap认证方式时,要在pap-secrets添加入相应的用户名密码,并在pppd的选项中添加auth和user card;同样,chap认证方式时,要在chap-secrets添加相应的用户名密码,并在pppd选项中添加noauth和user card。 
6、要注意的细节问题:使用shell脚本来拨号和配置pppd时候,不能在pppd的选项中用“#”作注释或者留空行,即要保持pppd的选项配置连续,否则脚本会运行失败。 
7、如果仍然ppp拨号不成功,可尝试不用shell脚本来运行,而可以直接在/etc/ppp/peers目录下新建文档cmnet作为pppd的选项,然后在终端下输入~#pppd call cmnet命令来启动拨号,具体可以参见peers目录下的cmnet文档。



参考 http://blog.csdn.net/memoryjs/article/details/7946878(涉及内核编译ppp)

http://wenku.baidu.com/link?url=mMwr1Yo7lvoNqlAulVMqumFkftUZbv3ZpAjcMiPBSYSIAcI8xH941PYxEx9CbK7M47RvPTJJyLNu9n3JXctHsn0dQmmcQur5ir2kb4jpIqm(联通、电信、移动,手机卡配置脚本的细微不同,及AT命令详解)

http://wenku.baidu.com/link?url=rqy68_pHa9wyD6V9X5IxeItXrsQSlpY8o8s597padk8GL7PD3My6XjZdS7hUb9H9pLUW4Ng3LjIA_M3fdLgP_LiFSt78eUonSYbjL5bibLa(ppp拨号流程及建议)

http://linux.chinaunix.net/techdoc/system/2009/07/17/1124824.shtml(其他方式进行ppp拨号)

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
4G PPP拨号协议是指在4G网络中使用点对点协议(PPP)来进行拨号连接的一种协议。PPP是一种数据链路层协议,用于在计算机网络中建立和维护数据传输连接。 通过4G PPP拨号协议,用户可以使用智能手机、平板电脑等终端设备,通过4G网络进行上网。拨号过程主要分为以下几步: 首先,用户在终端设备中选择拨号连接并输入运营商提供的接入号码和身份验证信息。身份验证信息可以是用户名密码等。 然后,终端设备将拨号请求发送到4G网络,经过无线基站等设备传输到运营商的接入服务器。接入服务器根据用户的身份验证信息进行认证,确认用户的合法性。 接下来,接入服务器分配一个唯一的IP地址给用户设备,作为用户在4G网络中的标识。 一旦身份验证成功,并且IP地址分配完成,用户设备就可以通过4G网络与互联网进行数据传输。PPP协议负责在用户设备和运营商的服务器之间建立点对点的连接,并提供数据传输的可靠性和安全性。 在数据传输过程中,用户设备可以发送和接收各种类型的数据,如网页浏览、视频播放、文件下载等。PPP协议会处理数据的分组、传输错误的检测和纠正,确保数据在传输过程中的完整性和准确性。 最后,当用户不再需要网络连接时,可以断开拨号连接,使用4G网络资源的同时减少费用。 总结来说,4G PPP拨号协议是一种在4G网络中使用PPP协议进行拨号连接的方式,通过该协议用户可以方便地在终端设备上通过4G网络上网,并进行数据传输和通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值