TR-069协议学习--Soap报文、事件、RPC方法

news/2025/1/11 2:18:16/

目录

一、SOAP报文

二、事件

三、RPC方法  

四、错误码  


一、SOAP报文

        SOAP(Simple Object Access Protocol,简单对象访问协议)是一种基于XML的协议,用于在网络上交换结构化信息。SOAP报文是SOAP协议中用于传输数据的XML文档,它定义了消息的格式和传输规则,并被广泛用于Web服务之间的通信。

· SOAP报文的特点

  1. 基于XML:SOAP报文是一个XML文档,使用XML格式来编码消息内容,这使得SOAP具有良好的可读性和可扩展性。

  2. 传输协议独立:SOAP消息可以通过多种传输协议进行传输,如HTTP、SMTP、TCP等。这种传输协议独立性使得SOAP可以在不同的网络环境和应用场景中广泛应用。

  3. 可扩展性:SOAP协议设计为可扩展的,允许在消息中添加自定义的头部信息(Header),用于实现各种功能,如认证、事务处理、加密等。

· SOAP报文的组成部分

一个SOAP报文通常包含以下部分:

  • Envelope(信封):SOAP报文的根元素,用于标识这是一个SOAP消息,并包含其他所有部分。

  • Header(头部):可选部分,用于添加扩展信息,如认证信息、事务信息等。

  • Body(主体):必需部分,包含实际的请求或响应信息。

  • Fault(错误):可选部分,用于描述在处理消息过程中发生的错误。

    示例:

    <SOAP-ENV:Envelopexmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"xmlns:cwmp="urn:dslforum-org:cwmp-1-0"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV:Header><cwmp:ID SOAP-ENV:mustUnderstand="1">CPE</cwmp:ID><cwmp:HoldRequests SOAP-ENV:mustUnderstand="1">0</cwmp:HoldRequests></SOAP-ENV:Header><SOAP-ENV:Body><cwmp:InformResponse><MaxEnvelopes xsi:type="xsd:unsignedInt">1</MaxEnvelopes></cwmp:InformResponse></SOAP-ENV:Body>
    </SOAP-ENV:Envelope>

二、事件

        TR069协议定义了一系列的事件类型,用于描述和管理用户设备(CPE)的状态和行为。每种事件类型都有一个对应的事件代码,以下是一些常见的TR069事件类型:

  • 0 BOOTSTRAP:指出由于CPE第一次安装或是ACS的URL改变而引起会话建立。

  • 1 BOOT:当给电或是复位时引起的会话建立,包括初始系统启动或是由于其他原因的再启动。

  • 2 PERIODIC:在周期通知间隔时会话建立,用作心跳包时间。

  • 3 SCHEDULED:由于调用ScheduleInform方法会话建立。

  • 4 VALUE CHANGE:指出从上次成功的Inform后,具有Passive和Active通知属性的一个或多个参数的值发生了非ACS配置而产生的改变。

  • 5 KICKED:指出会话建立的目的是网页验证,并且Kicked方法会在这个会话中调用一次或多次。

  • 6 CONNECTION REQUEST:由于ACS发送了连接请求而使会话建立。

  • 7 TRANSFER COMPLETE:由于先前请求的下载或上传完成而引起会话建立。

  • 8 DIAGNOSTICS COMPLETE:当完成了一个或多个由ACS启动的诊断,CPE会用该事件码重新建立起一个连接。   

        事件通过RPC方法Inform携带,由CPE通知向ACS,下面为2 PERIODIC事件上报soap报文示例:

<SOAP-ENV:Envelopexmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"xmlns:cwmp="urn:dslforum-org:cwmp-1-0"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV:Header><cwmp:ID SOAP-ENV:mustUnderstand="1">CPE</cwmp:ID></SOAP-ENV:Header><SOAP-ENV:Body><cwmp:Inform><DeviceId><Manufacturer xsi:type="xsd:string"></Manufacturer><OUI xsi:type="xsd:string"></OUI><ProductClass xsi:type="xsd:string"></ProductClass><SerialNumber xsi:type="xsd:string"></SerialNumber></DeviceId><Event SOAP-ENC:arrayType="cwmp:EventStruct[1]"><EventStruct><EventCode xsi:type="xsd:string">2 PERIODIC</EventCode><CommandKey xsi:type="xsd:string"></CommandKey></EventStruct></Event><MaxEnvelopes xsi:type="xsd:unsignedInt">1</MaxEnvelopes><CurrentTime xsi:type="xsd:dateTime"></CurrentTime><RetryCount xsi:type="xsd:unsignedInt">0</RetryCount><ParameterList SOAP-ENC:arrayType="cwmp:ParameterValueStruct[*]"><ParameterValueStruct> <Name></Name><Value xsi:type="xsd:string"></Value></ParameterValueStruct></ParameterList></cwmp:Inform></SOAP-ENV:Body>
</SOAP-ENV:Envelope><SOAP-ENV:Envelopexmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"xmlns:cwmp="urn:dslforum-org:cwmp-1-0"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV:Header><cwmp:ID SOAP-ENV:mustUnderstand="1">CPE</cwmp:ID><cwmp:HoldRequests SOAP-ENV:mustUnderstand="1">0</cwmp:HoldRequests></SOAP-ENV:Header><SOAP-ENV:Body><cwmp:InformResponse><MaxEnvelopes xsi:type="xsd:unsignedInt">1</MaxEnvelopes></cwmp:InformResponse></SOAP-ENV:Body>
</SOAP-ENV:Envelope>

三、RPC方法  

        RPC(Remote Procedure Call,远程过程调用)方法是用于ACS(Auto Configuration Server,自动配置服务器)与CPE(Customer Premises Equipment,客户端设备)之间进行通信和管理的一组标准方法。以下是TR069中定义的一些主要RPC方法及其功能:

ACS到CPE的RPC方法

  • GetParameterValues:获取设备上一个或多个参数的当前值。可以用于查询设备的配置信息或状态信息,携带ParameterNames。

  • SetParameterValues:设置设备上一个或多个参数的值。用于远程配置设备的参数,待配置参数列表ParameterList 中携带Name、Value。

  • GetParameterNames:获取设备上某个对象的所有参数名称。用于了解设备的参数结构;携带ParameterPath、NextLevel,如果nextlevel为1,则获取父节点下一层节点参数信息。

  • GetParameterAttributes:获取参数的属性信息,如是否可写、是否可订阅等,携带ParameterNames。

  • SetParameterAttributes:设置参数的属性信息;携带Name路径名,NotificationChange,如果为true,Notification的值将替换该参数或参数组的当前notification的设置,如果是false,则不作任何notification设置的改动;Notification为1被动上报,CPE发起一个到ACS的会话时携带变更参数信息,为2主动上报,立即创建会话上报。AccessListChange如果为true,AccessList的值会替换该参数或参数组的当前access list值,如果为false,access list不作改动。AccessList表示零个或多个实体的数组,该实体对指定的参数有写权限。如果数组中不包含条目,则只允许ACS有写权限。

  • GetRPCMethods:获取设备支持的RPC方法列表。用于了解设备的能力和功能。

  • AddObject:在设备上添加一个新的对象实例,携带objectName、ParameterKey。

  • DeleteObject:删除设备上已存在的对象实例,携带objectName、ParameterKey。

  • Reboot:触发设备重启。用于远程重启设备以应用配置更改或解决设备问题。

  • Download:请求设备下载文件,通常用于固件升级或配置文件下载。

  • Upload:请求设备上传文件,通常用于配置文件上传、日志文件上传。

  • FactoryReset:将设备恢复到出厂设置。用于清除所有用户配置并恢复设备的初始状态.

CPE到ACS的RPC方法

  • Inform:CPE向ACS报告其状态信息,如设备启动、参数值变化等。任何时刻要建立与ACS的连接,CPE必须调用Inform方法。这是CPE主动向ACS发送信息的主要方法;需要携带DeviceID、Event、MaxEnvelopes、CurrentTime、RetryCount、ParameterList信息;其中参数列表通常需要支持上报InternetGatewayDevice.DeviceInfo.SpecVersion
    InternetGatewayDevice.DeviceInfo.HardwareVersion
    InternetGatewayDevice.DeviceInfo.SoftwareVersion
    InternetGatewayDevice.DeviceInfo.ProvisioningCode
    InternetGatewayDevice.ManagementServer.ConnectionRequestURL
    InternetGatewayDevice.ManagementServer.ParameterKey
    InternetGatewayDevice.WANDevice.*.WANConnectionDevice.*.WANIPConnection.*.ExternalIPAddress;还需要携带CommandKey,有助于ACS匹配通知上报结果。

  • TransferComplete:在完成文件下载或上传后,CPE向ACS报告传输结果; 需要携带FaultStruct包含FaultCode和FaultString,StartTime、CompleteTime、CommandKey。该方法的错误码定义为9001,9002,9010,9011,9012。

  • GetParameterValuesResponse: 响应ParameterList,如果错误返回Fault报文,该方法的错误码定义为9001-9005。

  • SetParameterValuesResponse: 响应Status,如果错误返回Fault报文,该方法的错误码定义为9001-9008。

  • GetParameterAttributesResponse: 响应ParameterList,包含Name、Notification、AccessList,如果错误返回Fault报文,该方法的错误码定义为9001-9005。

  • SetParameterAttributesResponse: 响应无应答参数,如果错误返回Fault报文,该方法的错误码定义为9001-9005、9009。

  • AddObjectResponse: 响应新增实例号InstanceNumber、Status,如果错误返回Fault报文,该方法的错误码定义为9001-9005.

  • DeleteObjectResponse: 响应Status,如果错误返回Fault报文,该方法的错误码定义为9001、9002、9003、9005.

  • DownloadResponse: 响应Status、StartTime、CompleteTime,如果错误返回Fault报文,该方法的错误码定义为9000-9003、9010、9012、9013.

  • UploadResponse: 响应Status、StartTime、CompleteTime,如果错误返回Fault报文,该方法的错误码定义为9000-9003、9011-9013.

    Download方法soap报文示例:

<SOAP-ENV:Envelopexmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:cwmp="urn:dslforum-org:cwmp-1-0"><SOAP-ENV:Header><cwmp:ID SOAP-ENV:mustUnderstand="1">192.168.1.100:8080</cwmp:ID></SOAP-ENV:Header><SOAP-ENV:Body><cwmp:Download><CommandKey></CommandKey><FileType>1 Firmware Upgrade Image</FileType><URL>http://192.168.1.100/version</URL><Username></Username><Password></Password><FileSize>0</FileSize><TargetFileName></TargetFileName><DelaySeconds>2</DelaySeconds><SuccessURL>success.html</SuccessURL><FailureURL>fail.html</FailureURL></cwmp:Download></SOAP-ENV:Body>
</SOAP-ENV:Envelope><SOAP-ENV:Envelopexmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:cwmp="urn:dslforum-org:cwmp-1-0"><SOAP-ENV:Header><cwmp:ID SOAP-ENV:mustUnderstand="1">192.168.1.100:8080</cwmp:ID></SOAP-ENV:Header><SOAP-ENV:Body><cwmp:DownloadResponse><Status>1</Status><StartTime>0001-01-01T00:00:00Z</StartTime><CompleteTime>0001-01-01T00:00:00Z</CompleteTime></cwmp:DownloadResponse></SOAP-ENV:Body>
</SOAP-ENV:Envelope><SOAP-ENV:Envelopexmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:cwmp="urn:dslforum-org:cwmp-1-0"><SOAP-ENV:Header><cwmp:ID SOAP-ENV:mustUnderstand="1">1</cwmp:ID></SOAP-ENV:Header><SOAP-ENV:Body><cwmp:TransferComplete><CommandKey></CommandKey><FaultStruct><FaultCode>9018</FaultCode><FaultString>File transfer failure: file corrupted or otherwise unusable</FaultString></FaultStruct><StartTime>0001-01-01T00:00:00Z</StartTime><CompleteTime>0001-01-01T00:00:00Z</CompleteTime></cwmp:TransferComplete></SOAP-ENV:Body>
</SOAP-ENV:Envelope>

四、错误码  

       1.  CPE常见对应错误代码和错误原因主要包括:

        9003表示调用RPC方法传入了无效的参数,

        9005表示传入无效的参数名(与Set/GetParameterValues,GetParameterNames,Set/GetParameterAttributes相关),

        9006表示无效的参数类型(与SetParameterValues相关),

        9007表示无效的参数值(与SetParameterValues相关),9010表示Download下载失败(与Download或TransferComplete方法相关),

        9011表示Upload上载失败(与Upload或TransferComplete方法相关)等,

        2. 服务器常见对应错误代码和错误原因主要包括:

        8000表示方法不支持,8003表示无效参数,8005表示重试请求。       


http://www.ppmy.cn/news/1562127.html

相关文章

2025新年源码免费送

2025很开门很开门的源码免费传递。不需要馒头就能获取4套大开门源码。 听泉偷宝&#xff0c;又进来偷我源码啦&#x1f44a;&#x1f44a;&#x1f44a;。欢迎偷源码 &#x1f525;&#x1f525;&#x1f525; 获取免费源码以及更多源码&#xff0c;可以私信联系我 我们常常…

C++二十三种设计模式之抽象工厂模式

C二十三种设计模式之抽象工厂模式 一、组成二、特点三、目的四、缺点五、示例代码 一、组成 抽象产品类&#xff1a;声明产品功能公共接口。 具体产品类&#xff1a;实现产品功能接口。 抽象工厂类&#xff1a;声明创建一组具体产品公共接口。 具体工厂类&#xff1a;实现创建…

Linux开发工具(补充)

Git git仓库本质上是一个目录&#xff0c;.gitignore文件里对应文件后缀不会被上传 下载指令 sudo yum install git 提交方法 下载项目到本地 创建好一个放置代码的目录. git clone [url] 这里的 url 就是刚刚建立好的项目的链接. 三板斧第一招: git add 将代码放到刚才下…

【python】项目结构下每个包的__init__.py 有什么作用

项目结构下每个包的__init__.py 有什么作用 主要作用&#xff1a;如何编写 __init__.py 文件项目结构中的 __init__.py 文件示例 在 Python 项目中&#xff0c;__init__.py 文件用于将一个目录标记为一个 Python 包。 主要作用&#xff1a; 包的初始化&#xff1a;__init__.py …

如何限制大量请求并发

前言&#xff1a; 1、主流浏览器在 HTTP/1.1 下对同一域名的最大并发请求数通常是 6~8 个。超过限制的请求会进入队列&#xff0c;等待空闲的连接。 2、可以利用Promise模拟任务队列&#xff0c;控制并发请求数量&#xff0c;以避免对服务器造成过大的压力。&#xff08;先进先…

Win11+WSL2+Ubuntu24.04安装Genesis并实现正常运行

什么是Genesis Genesis是一款由卡内基梅隆大学、马里兰大学、斯坦福大学、麻省理工学院等全球顶尖研究机构联合开发的开源生成式物理引擎。于2024年12月19日正式开源。它专为机器人、嵌入式 AI 和物理 AI 应用设计&#xff0c;能够模拟各种物理现象&#xff08;如刚体、液体、…

识日 1.2.8 | 完全免费的日语学习软件,小清新风格

识日是一款免费的日语学习软件&#xff0c;界面简洁美观&#xff0c;支持主题色设置。它提供了日语50音学习、单词查询、日语词典等功能&#xff0c;并有详细的发音和笔画展示。用户可以通过多种模式背单词&#xff0c;如快速模式、洗脑模式&#xff08;重复朗读单词&#xff0…

REVERSE-COMPETITION-CCSSSC-2025

REVERSE-COMPETITION-CCSSSC-2025 donntyouseeHappyLockkernel_traffic donntyousee elf64&#xff0c;ida反编译不太行&#xff0c;有花指令&#xff0c;直接调汇编 读输入 读输入前有条打印”plz input your flag”&#xff0c;肯定是在.init_array&#xff0c;确实有很多 …