也称为CWMP,是在Internet网上通过wan口控制通信终端设备的协议。其协议流程如下图所示:

具体网上有很多资料。其主要的两个内容是:HTTP Client模型、DATA模型。

 

    HTTP Client模型是精华,也是比较复杂的。目前较为可靠的开源库有libevent,网上有基于该开源库编写的Client模型,名字好像叫evcpe。在公司用的这套代码,我只是大概学习了下,很复杂。

    上图所示的是协议的一个完整的session,该session由终端设备发起,且不停地重复循环该session。当然,若ACS端没有指令(或终端没有更新等),那么session到Inform后就会终止。然后等待开始下一个session。

终端设备主动发起协议session的方法有以下几种:(以下client即终端设备)

  1. client周期性的主动发起,即一个周期发起一次session;
  2. client端的参数有更新(如LAN端配置、手动配置等),会主动发起session;
  3. client在另一个端口上维护一个creq监听,当ACS端要求配置时,回向client的creq端口发请求,然后client被动发起session。
  4. 。。。。。。或者还有其他的吧。。。。。。

把这些方法揉和在一起,实现起来时很复杂的,那套event的代码,我最终也没能全看明白,以后有机会再看吧。从测试的结果看,好像有这几种方法,不过也可能不对,姑且这样认为。

 

DATA模型也是很重要的,大部分参数模型由TR098协议规定好了,只要照样子做就行。要做的工作主要两个方面:

  1. 在终端本地,用一种方式来表示数据,与ACS端的数据对应。这里我们用的是xml文件,按照tr098把参数写在xml文件中,方便参看。系统启动后,读取该xml文件,并在内核中建立一个庞大的类似于数组的结构存储这些参数。并且在该数组结构和xml文件间实现一种类似文件系统中的磁盘更新的机制。
  2. 是各种get/set作用到实际的系统中去。这里要根据各平台的特性来做了。

 

要讲的也很少,有时间还是去看看那个代码,应该是很有价值的。

TR069协议小结的更多相关文章

  1. 转:oracle ebs po模块一揽子采购协议小结

    转自:http://yedward.net/?id=193 oracle ebs po模块一揽子采购协议小结 本文总结oracle ebs采购订单(po)模块一揽子采购协议的相关知识,总结如下: 1. ...

  2. TR069协议向导——一个帮助你了解TR069协议的简明教程(一)

    您也能够到下面地址下载: http://download.csdn.net/source/993034 1.为什么须要TR069    随着VoIP.IPTV等越来越多IP终端设备的普及(尤其在家庭中 ...

  3. KERMIT,XMODEM,YMODEM,ZMODEM传输协议小结(转)

    源:KERMIT,XMODEM,YMODEM,ZMODEM传输协议小结 Kermit协议 报文格式: 1.MARK,起始标记START_CHAR,为 0x01(CTRIL-A): 2.LEN,报文剩余 ...

  4. HTTP协议小结

    HTTP/0.9已过时.只接受GET一种请求方法,没有在通讯中指定版本号,且不支持请求头.由于该版本不支持POST方法,因此客户端无法向服务器传递太多信息. HTTP/1.0 这是第一个在通讯中指定版 ...

  5. TCP&UDP协议小结

    TCP和UDP 传输层功能 网络安全 Tcp可靠性 Tcp流控 Tcp拥塞控制 Tcp运输连接管理 一个网页可能很大,一个数据包传不过来,就需要分段传输. 网络可能拥塞,某段可能丢失.那必须有人监管, ...

  6. Oracle PO - 模块一揽子采购协议小结

    本文总结oracle ebs采购订单(po)模块一揽子采购协议的相关知识,总结如下: 1.理论介绍 (1)名词术语 一揽子采购协议(Blanket Purchase Agreement,BPA)是指某 ...

  7. ISO 7810 协议小结

    ISO 7816规定了Smart Card的传输协议分为 T=0 异步半双工字符传输协议 T=1 异步半双工块传输协议 T=0命令介绍 命令总是由接口设备启动,他以一个5字节的报头通知卡要做什么,然后 ...

  8. 《SDN核心技术剖析和实战指南》2.3 OF-CONFIG配置管理协议小结

    OpenFlow协议定义了交换机和控制器交换数据的方式和规范,但并没有定义如何配置和管理必需的网络参数和网络资源,OF-CONFIG的提出就是为了对OpenFlow提供配置管理支持.如下图所示,OF- ...

  9. KERMIT,XMODEM,YMODEM,ZMODEM传输协议小结

    转:http://blog.163.com/czblaze_3333/blog/static/208996228201272295236713/ Kermit协议 报文格式: 1.       MAR ...

随机推荐

  1. 微信小程序实现左滑删除源码

    左滑删除效果在app的交互方式中十分流行,比如全民应用微信 微信左滑删除 再比如曾引起很大反响的效率app Clear Clear左滑删除 从技术上来说,实现这个效果并不困难,响应一下滑动操作,移动一 ...

  2. 【LOJ】#2290. 「THUWC 2017」随机二分图

    题解 看了一眼觉得是求出图对图统计完美匹配的个数(可能之前做过这样模拟题弃疗了,一直心怀恐惧... 然后说是统计一下每种匹配出现的概率,也就是,当前左边点匹配状态为S,右边点匹配状态为T,每种匹配出现 ...

  3. 用 Java 实现一个冒泡排序算法

    冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面.即首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将小数放前,大数放后,如 ...

  4. nginx中配置文件的讲解

    一: 1.配置文件的结构 nginx由配置文件中指定的指令控制的模块组成. 指令分为简单指令和块指令. 一个简单的指令由空格分隔的名称和参数组成,并以分号(;)结尾. 块指令具有与简单指令相同的结构, ...

  5. linux下解除端口占用

    1.找出占用端口进程的pid sudo lsof -i:port 2.终止进程 pid

  6. mysql find_in_set函数详解

    Mysql函数FIND_IN_SET()的使用方法 有了FIND_IN_SET这个函数.我们可以设计一个如:一只手机即是智能机,又是Andriod系统的. 比如:有个产品表里有一个type字段,他存储 ...

  7. python入门4(冒泡排序)

    在学习了最基本的python语法后,我们来实践一个最简单的冒泡排序,检验一下自己是否入门. def bubble_sort(lists): # 冒泡排序 count = len(lists) for ...

  8. Leaving Auction CF 749D

    题目:http://codeforces.com/problemset/problem/749/D 题目大意: 有n个人竞拍,也有n个叫牌,一个人可以有多个叫价牌,但也可能有一些人根本不叫价 每个叫牌 ...

  9. [leetcode DP]70. Climbing Stairs

    一共有n个台阶,每次跳一个或者两个,有多少种走法,典型的Fibonacii问题 class Solution(object): def climbStairs(self, n): if n<0: ...

  10. MongoDB 记录

    查询操作: db.stu.find() //查询所有数据 db.stu.findOne() //查询一个数据 db.stu.find().pretty() //查询之后,格式化显示 db.stu.fi ...