PPP协议与AT指令驱动4G模组

参考:https://mp.weixin.qq.com/s/pRC6agTOjs4QD2OD51zFgQ
https://mp.weixin.qq.com/s/aKdhjLsetDD_dZnXfTz20A
https://mp.weixin.qq.com/s/FAHGTcIPPBVlpuxeGzLF5Q

PPP协议详解

点对点协议(Point to Point Protocol,PPP)为在点对点连接上传输多协议数据包提供了一个标准方法。PPP 最初设计是为两个对等节点之间的 IP 流量传输提供一种封装协议。在 TCP-IP 协议集中它是一种用来同步调制连接的数据链路层协议(OSI模式中的第二层),替代了原来非标准的第二层协议,即 SLIP。除了 IP 以外 PPP 还可以携带其它协议,包括 DECnet 和 Novell 的 Internet 网包交换(IPX)。

在这里插入图片描述

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

  • (1)PPP具有动态分配IP地址的能力,允许在连接时刻协商IP地址;
  • (2)PPP支持多种网络协议,比如TCP/IP、NetBEUI、NWLINK等;
  • (3)PPP具有错误检测能力,但不具备纠错能力,所以ppp是不可靠传输协议;
  • (4)无重传的机制,网络开销小,速度快。
  • (5)PPP具有身份验证功能。
  • (6) PPP可以用于多种类型的物理介质上,包括串口线电话线移动电话光纤(例如SDH),PPP也用于Internet接入。

在这里插入图片描述

在这里插入图片描述

  • PPP采用7EH作为一帧的开始和结束标志(F);
  • 地址域(A)和控制域(C)取固定(A=FFH,C=03H) ;
  • 协议域(两个字节)取0021H表示IP分组,取8021H表示网络控制数据,取C021H表示链路控制数据;
  • 帧校验域(FCS)也为两个字节,它用于对信息域的校验。若信息域中出现7EH,则转换为(7DH,5EH)两个字符。当信息域出现7DH时,则转换为(7DH,5DH)。当信息流中出现ASCII码的控制字符(即小于20H),即在该字符前加入一个7DH字符。

封装:一种封装多协议数据报的方法。PPP 封装提供了不同网络层协议同时在同一链路传输的多路复用技术。PPP 封装精心设计,能保持对大多数常用硬件的兼容性,克服了SLIP不足之处的一种多用途、点到点协议,它提供的WAN数据链接封装服务类似于LAN所提供的封闭服务。所以,PPP不仅仅提供帧定界,而且提供协议标识和位级完整性检查服务。

链路控制协议(LCP):一种扩展链路控制协议,用于建立、配置、测试和管理数据链路连接。

网络控制协议(NCP):协商该链路上所传输的数据包格式与类型,建立、配置不同的网络层协议;

配置:使用链路控制协议的简单和自制机制。该机制也应用于其它控制协议,例如:网络控制协议(NCP)。

为了建立点对点链路通信,PPP 链路的每一端,必须首先发送 LCP 包以便设定和测试数据链路。在链路建立,LCP 所需的可选功能被选定之后,PPP 必须发送 NCP 包以便选择和设定一个或更多的网络层协议。一旦每个被选择的网络层协议都被设定好了,来自每个网络层协议的数据报就能在链路上发送了。

链路将保持通信设定不变,直到有 LCP 和 NCP 数据包关闭链路,或者是发生一些外部事件的时候(如,休止状态的定时器期满或者网络管理员干涉)。

应 用:假设同样是在Windows 98,并且已经创建好“拨号连接”。那么可以通过下面的方法来设置PPP协议:首先,打开“拨号连接”属性,同样选择“服务器类型”选项卡;然后,选择默认的“PPP:Internet,Windows NT Server,Windows 98”,在高级选项中可以设置该协议其它功能选项;最后,单击“确定”按钮即可。

特点

PPP协议是一种点——点串行通信协议。PPP具有处理错误检测、支持多个协议、允许在连接时刻协商IP地址、允许身份认证等功能,还有其他。PPP提供了3类功能:成帧;链路控制协议LCP;网络控制协议NCP。PPP是面向字符类型的协议。

PPP协议的帧格式
在这里插入图片描述
PPP是一种多协议成帧机制,它适合于调制解调器、HDLC位序列线路、SONET和其它的物理层上使用。它支持错误检测、选项协商、头部压缩以及使用HDLC类型帧格式(可选)的可靠传输。PPP提供了三类功能:

1 成帧:他可以毫无歧义的分割出一帧的起始和结束。

2 链路控制:有一个称为LCP的链路控制协议,支持同步和异步线路,也支持面向字节的和面向位的编码方式,可用于启动路线、测试线路、协商参数、以及关闭线路。链路控制协议LCP 建立点对点链路,是 PPP 中实际工作的部分。LCP 位于物理层的上方,负责建立、配置和测试数据链路连接。LCP 还负责协商和设置 WAN 数据链路上的控制选项,这些选项由 NCP 处理。

3 网络控制:具有协商网络层选项的方法,并且协商方法与使用的网络层协议独立。PPP允许多个网络协议共用一个链路,网络控制协议 (NCP) 负责连接PPP(第二层)和网络协议 (第三层)。对于所使用的每个网络层协议,PPP 都分别使用独立的 NCP来连接。例如,IP 使用 IP 控制协议 (IPCP),IPX 使用 Novell IPX 控制协议 (IPXCP)。

认证方式

一种是PAP,一种是CHAP。相对来说PAP的认证方式安全性没有CHAP高。PAP在传输password是明文的,而CHAP在传输过程中不传输密码,取代密码的是hash(哈希值)。PAP认证是通过两次握手实现的,而CHAP则是通过3次握手实现的。PAP认证是被叫提出连接请求,主叫响应。而CHAP则是主叫发出请求,被叫回复一个数据包,这个包里面有主叫发送的随机的哈希值,主叫在数据库中确认无误后发送一个连接成功的数据包连接。

简单:因IETF在设计因特网体系结构时,把最复杂的部分放在了TCP协议中,网际协议IP相对比较简单,所以对数据链路层的帧,不需要纠错,不需要序号,也不需要流量控制。简单为首要要求

简单的设计还可以是协议在实现时不容易出错,从而不同厂商在协议的不同实现上互操作性提高了。

封装成帧:PPP协议必须规定特殊字符作为帧定界符(标志一个帧的开始和结束的字符),以便接收端从收到的比特流中能准确地找出帧的开始和结束位置。

透明性:PPP协议必须保证数据传输的透明性。(即如果数据中碰巧出现了和帧界定符一样的比特组合时要采取有效的措施来解决这个问题)

多种网络层协议:PPP协议必须能够在同一条物理链路上同时支持多种网络层协议(例如IP和IPX等)的运行 。

当点对点链路所连接的是局域网或路由器时,PPP协议必须同时支持在链路所连接的局域网或路由器上运行的各种网络层协议。

多种类型链路:除了要支持多种网络层协议外,PPP还必须能够在多种类型的链路上运行。

差错检测:PPP协议必须能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。

检测连接状态:PPP协议必须具有一种机制能够及时自动检测出链路是否处于正常工作状态。

最大传送单元:PPP协议必须对每一种类型的点对点链路设置最大传送单元MTU的标准默认值(至少是1500字节),如果高层协议发送的分组过长并超过MTU的数值,PPP就要丢弃这样的帧,并返回差错。MTU是数据链路层的帧可以载荷的数据部分的最大长度,而不是帧的总长度。

网络层地址协商:PPP协议必须提供一种机制使通信的两个网络层(例如两个IP层)的实体能够通过协商知道或能够配置彼此的网络层地址。协商的算法应尽可能的简单,且能在所有的情况下得出协商结果。

数据压缩协商:PPP协议必须提供一种方法来协商使用数据压缩算法,但PPP协议并不要求将数据压缩算法进行标准化。在TCP/IP协议族中,可靠运输由运输层的TCP协议负责,因此数据链路层的PPP协议不需要进行纠错,不需要设置序号,也不需要进行流量控制。PPP协议不支持多点线路(即一个主站轮流和链路上的多个从站进行通信),而只支持点对点的链路通信,此外PPP协议只支持全双工链路。

cisco支持的压缩方法:

Predictor:先判断数据是否已经被压缩过。如果数据被压缩过,则立即将其发送出去,而不浪费时间对已经压缩过的数据进行压缩。

Stacker:一种基于Lempel-Ziv(LZ)的压缩算法,对每种数据类型,只发送一次有关其在数据流中的位置。接收方根据这些信息重新组织数据流。

MPPC:MPPC协议(RFC2118)让cisco路由器器能够与microsoft客户端交换压缩后的数据,它使用一种基于LZ的压缩算法

TCP报头压缩:也叫Van Jacobson压缩,只用于压缩tcp报头。

AT命令简介

AT 即Attention,AT指令集是从终端设备(Terminal Equipment,TE)或数据终端设备(Data Terminal Equipment,DTE)向终端适配器(Terminal Adapter, TA)或数据电路终端设备(Data Circuit Terminal Equipment,DCE)发送的。通过TA,TE发送AT指令来控制移动台(Mobile Station,MS)的功能,与GSM 网络业务进行交互。用户可以通过AT指令进行呼叫、短信、电话本、数据业务、传真等方面的控制。90年代初,AT指令仅被用于Modem操作。没有控制移动电话文本消息的先例,只开发了一种叫SMS BlockMode的协议,通过终端设备(TE)或电脑来完全控制 SMS。几年后,主要的移动电话生产厂商诺基亚、爱立信、摩托罗拉和HP共同为GSM 研制了一整套AT指令,其中就包括对SMS的控制。AT指令在此基础上演化并被加入GSM 07.05标准以及现在的GSM07.07标准,完全标准化和比较健全的标准。如:对SMS的控制共有3种实现途径:最初的Block Mode;基于AT指令的Text Mode;基于AT指令的PDU Mode。到现在PDU Mode已经取代BlockMode,后者逐渐淡出。GSM 模块与计算机之间的通信协议是一些AT指令集,AT指令是以AT作首,字符结束的字符串,AT指令的响应数据包在 中。每个指令执行成功与否都有相应的返回。其他的一些非预期的信息(如有人拨号进来、线路无信号等),模块将有对应的一些信息提示,接收端可做相应的处理。

AT的优点:

  • 命令简单易懂,并且采用标准串口来收发AT命令,这样对设备控制大大简化了,转换成简单串口编程了。
  • 命令提供了一组标准的硬件接口–串口。这个简化的硬件设计.较新的电信网络模块,几乎都采用串口硬件接口。
  • AT命令功能较全,可以通过一组命令完成设备的控制,完成呼叫、短信、电话本、数据业务、传真.

AT命令与ppp协议的关系

在数据通讯的应用中,比如说无线拨号上网。除了AT命令,还会常听到另外一个网络协议ppp(Point to Point Protocol)。在应用串口通讯的场合,我们可以从硬件上明确看到分为两大块。DTE(Data Terminal Equipment)数据终端设备。通常是一个智能设备,如PC机,嵌入式主机等,用于发送AT命令和 PPP命令,还有用于链路通讯的DCE(Data Circuit Terminal )数据电路终端。用于与外界建立通讯的链路。DTE与DCE之间用串口相连。比如PC机用串口接入拨号MODEM时,PC机是DTE,拨号MODEM是DCE。

AT和PPP的相同点都是由DTE发送给DCE的协议。不同点是AT只用于DTE来控制DCE。比如初始化设备,用于发送呼叫,发送短消息等,虽然AT有规范,但是大部分DTE产商都扩展了一些AT命令。

而PPP是用于数据通讯,是DTE与远程的接入服务器(Access Server)进行通讯的协议。是属于网络通讯的数据链路层协议,DCE本身收到PPP包时,除了将其调制到物理层上发送到远端服务器外,本身并不处理PPP的内容。

在这里插入图片描述

DCE的状态切换与AT的命令拨号流程

这两个协议都是DTE通过串口发往DCE。那DCE是如何区别是AT命令,如何区别PPP协议包?大部分DCE是采用分时段传送的,两个协议并不同时发送。但是可以通过AT命令两个专用命令来用切换是AT命令时段,还是PPP协议时段。

在发送AT命令时称为命令状态,在发送PPP包时或者语音通讯时称为数据状态。在modem设备启动时,默认进入AT命令接收状态,用ATDn ;命令拨出电话号码n(语音拨号),ATDn 拨出电话号码n(数据拨号),两者区别在于前者有一个分号。用数据拨号拨通后,将进入PPP交互状态。当需要切回接收AT命令状态,DTE 需要发送+++命令给DCE,让其保持在线的状态时,但接收是AT命令。如果此时需要切断链接,此时发送ATH挂断命令,注意发送+++需要前后各一秒的时间。否则会当成数据发送出去。

回顾一下之前3g拨号上网的wcdma-chat-connect脚本

ABORT 'NO CARRIER'

ABORT 'ERROR'

ABORT 'NO DIALTONE'

ABORT 'BUSY'

ABORT 'NO ANSWER'

'' \rAT   #发送AT命令

OK \rATZ   #等待接收OK,接收到OK发送ATZ命令

OK \rAT+CGDCONT=1,"IP","3gnet",,0,0  #接收到OK,发送AT+CGDCONT=1...命令

#下面一行是联通的拨号设置,不同的运营商拨号方式有所不同
OK-AT-OK ATDT*99#

CONNECT \d\c

上次做3G模块拨号上网时候没太搞懂现在看了之后又理解了一些,chat-是调制解调器的自动对话脚本,chat程序定义了一个计算机与调制解调器之间的对话交流,主要目的是用来在本地pppd与远端pppd程序之间建立连接,PPPD是用户态应用程序,负责PPP协议的具体配置,如MTU、拨号模式、认证方式、认证所需用户名/密码等。PPPD定义PPPD:PPPD(point-to-point protocol daemon)点对点协定隐形程式。这里就不去细说了,有兴趣可以自己去了解,chat拨号的使用详解:https://wenku.baidu.com/view/7b53ac3102020740be1e9ba7.html

拓展:VPN网络相关知识

https://mp.weixin.qq.com/s/FAHGTcIPPBVlpuxeGzLF5Q

  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

行稳方能走远

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值