android 上网流程 ppp,Android/Linux ppp拨号流程
发布日期:2021-06-24 17:29:38 浏览次数:2 分类:技术文章

本文共 2061 字,大约阅读时间需要 6 分钟。

PPP协议及工作流程

1. ppp协议介绍

PPP(Point- to-Point Protocol点到点协议)是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。这种链路提供全双工操作,并按照顺序传递数据包。设计目的主要是用来通 过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。

主要特点:

链路控制协议 LCP(Link Control Protocol);

网络控制协议 NCP(Network Control Protocol);

认证协议:口 令验证协议PAP(Password Authentication Protocol)和挑战握手验证协议CHAP(Challenge-Handshake Authentication Protocol)。

2. ppp通信建立:

ba112a65deb4c4628e1d69d3f7f93e19.png0da3349abe7ad671ed4b3fea8f513b3b.png

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

2.LCP协商过 后就到了Establish阶段,开始PAP或CHAP认证。PAP为两次握手认证,口令为明文。PAP认证过程如下:发送用户名同口令到认证方,认证方 查看是否有此用户,口令是否正确,然后发送相应的响应。CHAP为三次握手认证,口令为密文(密钥)CHAP认证由认证方发送一些随机产生的报文,交给被 认证,被认证方用自己的口令字用MD5算法进行加密,传回密文,认证方用自己保存的口令字及随机报文用MD5算法加密,比较二者的密文,根据比较结果返回 响应的响应。

3.认证成功即进 行Network阶段协商(NCP),在IP接入中主要是IPCP协商(如IP地址和DNS地址的协商等)。任何阶段的协商失败都将导致链路的拆除。

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

3. ppp协议栈

主要负责PPP层数据的封装、压缩与解压缩.另外,它还对普通数据包和Ppp过程的数据包进行了分流,将普通数据包提交到TCP/IP协议栈,而将Ppp过程的数据包放到/dev/ppp设备队列中,等待Pppd去收取并处理.

4. ppp架构框图

PPP 协议之下是以太网和串口等物理层,之上是IP协议等网络层。这里,对于下层,我们只讨论串口的情况,对于上层,我们只讨论TCP/IP的情况。发送 时,TCP/IP数据包经过PPP打包之后经过串口发送。接收时,从串口上来的数据经PPP解包之后上报给TCP/IP协议层。linux下ppp框架结构如下图:

c57b89d3d7e42cc98f5f951e9a92bcc3.png

4.1 pppd数据传输

应用程序通过socket 接口发送TCP/IP数据包,这些TCP/IP数据包流经PPP协议处理模块,然后通过串口发送出去。

pppd在make_ppp_unit函数调用ioctrl(PPPIOCNEWUNIT)创建一个网络接口(如ppp0),内核中的PPP协议模块在处理PPPIOCNEWUNIT时,调用register_netdev向内核注册ppp的网络接口,该网络接口的传输函数指向ppp_start_xmit。

当应用程序发送数据时,内核根据IP地址和路由表,找到ppp网络接口,然后调用ppp_start_xmit函数,此时控制就转移到PPP协议处理模块了。ppp_start_xmit调用函数ppp_xmit_process去发送队列中的所有数据包,ppp_xmit_process又调用ppp_send_frame去发送单个数据包, ppp_send_frame根据设置,调用压缩等扩展处理之后,又经ppp_push调用pch->chan->ops->start_xmit发送数据包。

pch->chan->ops->start_xmit是什么?它就是具体的传输方式了,比如说对于串口发送方式,则是ppp_async.c: ppp_asynctty_open中注册的ppp_async_send函数,ppp_async_send经ppp_async_push函数调用tty->driver->write把数据发送串口。

4.2 Pppd 控制协议数据流程

pppd是一个用户空间的后台服务进程(daemon。pppd实现了所有鉴权、压缩/解压和加密/解密等扩展功能的控制协议。pppd只是一个普通的用户进程,pppd与内核中的PPP协议处理模块之间通过设备文件(/dev/ppp)进行通信。pppd有一个辅助工具chat,用来与GSM模组建立会话。它向串口发送AT命令,建立与GSM模组的会话,以便让PPP协议可以在串口上传输数据包。

参考文献:

https://www.cnblogs.com/newjiang/p/7625499.html

https://blog.csdn.net/eydwyz/article/details/54602459

https://www.cnblogs.com/ljf181275034/articles/3293040.html

转载地址:https://blog.csdn.net/weixin_34163020/article/details/117739408 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:android air开发环境,Airtest环境安装
下一篇:signature=af9494ddbc0c0c740be2201f4177de9c,石墨烯晶界的力學與熱學性質之研究

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月22日 20时45分04秒