mqtt物联网数据传输协议
引用github的资源https://mcxiaoke.gitbooks.io/mqtt-cn/Introduction3.2 CONNACK一确认连接请求o3.3 PUBLISH-发布消息o34 PUBACK一发布确认o35 PUBREC-发布收到(QoS2,第一步)°36 PUBREL-发布释放(QoS2,第二步)°3.7P∪ BCOME一发布完成(QoS2,第三步)o3.8 SUBSCR|BE-订阅主题o39S∪BACK-订闶确认o3.10 UNSUBSCR|BE-取消订阅3.11 UNSUBACK-取消订阔确认3.12P| NGREG一心跳请求3.13 PINGRESE一心跳响应o3.14D| SCONNECT一断开连接第四章一操作行为第五章一安全第六章一使用 Websocket第七章一一致性目标附录B-强制性规范声明旧版文档已过期,建议使用 GifTbook版本最新版本:V1.0.12015.10.22文档连接中文版HTMLMQTT3.1.1中文版中文版PDFMQTT3.1.1中文版英文版HTMLMQTT Version 3.1.1英文版PDFMQTT∨ ersion3.1.1许可协议署名-非商业性位用-相同方式共享4.0国际联系方式IntroductionBloghttp://blog.mcxiaoke.comGithub:https://github.com/mcxiaoke.Email:github@mcxiaoke.com开源项目·Rx文档中文翻译:htts:/! github. com/mcxiaoke/ RXDOCS·MQTT协议中文版:htps:/ github. com/ mcxiaoke/mgttAwesome-kotlin:httpsgithub.com/mcxiaokelawesome-kotlin.Kotlin-koi:https:/github.com/mcxiaoke/kotlin-koiNeXt公共组件库:htps!/github.com/xiaoke/Android-Next· PackerNg极速打包:htts;/ github. com/mcxiaoke/ packer- ng-pluginGradle渠道打包https://github.com/mcxiaoke/gradle-packer-plugin·VentuS实现xBus:htps;/github.com/miaoke/BuS磨菇饭App:htps:! github. com/mcxiaoke/minicat·饭否客户端:https:/github.com/mcxiaoke/anfouapp-opensourceVolleyt:https://github.com/mcxiaoke/android-volley第一章-MQTT介绍第一章概逃 Introduction1.1MQTT协议的组织结构 Organization of MQTT本规范分为七个章节:第一章一介绍第二章一MQTT控制报文格式第三章一MQTT控制报文·第四章一操作行为第五章一安全第六章一使用 Websocket第七章一一致性日标附录B一强制性规范声明12术语 Terminology本规范中用到的夭键字必须MUST,不能 MUST NOT,要求 REQUIRED,将会 SHALL,不会 SHALL NOT,应该 SHOULD,不应该 SHOULD NOT,推荐 RECOMMENDED,可以MAY,可选 OPTIONAL都是按照 TE RFC2119[RFC2119]中的描迹解释。网络连接 Network ConnectionMQTT使用的底层传输协议基础设施。客户端使用它连接服务端。它提供有序的丶可靠的丶双向字节流传输。例子见42节应用消息App| ication Message MQT协议通过网络传输应用数据。应用消息通过MQT传输时’它们有关联的服务质量(QoS)和主题( Topic)客户粥C|ient使用MQπT的程序或设备。客户端总是通过网络连接到服务端。它可以发布应用消息给其它相关的客户端。●订阅以请求接受相关的应用消息。·取消订阅以移除接受应用消息的请求从服务端断开连接第一章-MQTT介绍服务端 Server个程序或设备,作为发送消息的客户端和请求订阅的客户端之间的中介σ服务端接受来自客户端的网络连接。接受客户端发布的应用消息。·处理客户端的订阅和取消订阅请求。转发应用消息给符合条件的已订阅客户端订 Subscription订阔包含一个主题过滤器( Topic Filter)和一个最大的服务质量(QoS)等级。订阅与单个会话( Session)关联。会话可以包含多于一个的订阅。会话的每个订阅都有一个不同的主题过主题名 Topic Name附加在应用消息上的一个标签’服务端巳知且与订阔匹配。服务端发送应用消息的一个副本给每一个匹配的容户端订阅。主题过滤器 Topic Filter订阅中包含的一个表达式,用于表示相关的一个或多个主题。主题过滤器可以使用通配符。会话 Session客户端和服务端之间的状态交互。一些会话持续时长与网络连接一样·另一些可以在客户端和服务端的多个连续网络连接间扩展。控制报文 MQTT Contro| Packet通过网络连接发送的信息数据包。MQTT规范定义了十四种不同类型的控制报文,其中一个( PUBLISH报文)用于传输应用消息。1.5数据表示 Data representations1.51二进制位Bits字节中的位从0到7。第7位是最高有效位’第0位是最低有效位。1.52整数数值 Integer data values整数数值是16位’使用大湍序( big-endian,高位字节在低位字节前面)。这意味着一个16位的字在网络上表示为最高有效字节(MSB),后面跟着最低有效字节(LSB)1.53UTF8编码字符串UTF8 encoded strings后面会描逑的控制报文中的文本字段编码为UTF8格式的字符串。UTF8[RFC3629]是一个高效的υ ncode字符编码格式’为了攴持基于文本的通信’它对ASC∏字符的编码做了优化第一章-MQTT介绍每一个字符串都有一个两字节的长度字段作为前缀,它给出这个字符串UTF8编码的字节数,它门在图例1.1UTF8编码字符串的结构中描述。因此可以传送的UTF-8编码的字符串大小有个限制,不能超过65535字节除非另有说明’所有的UTF-8编码字符串的长度都必须在0到65535字节这个范围内。图例1.1UTF8编码字符串的结构 Structure of ute8 encoded strings进制位7-0yte字符串长度的最高有效字节(MsB)byte 2字符串长度的最低有效字节(LSB)byte 3如果长度大于0,这里是UTF-8编码的字符数据。UTF-8编码字符串中的字符数据必须是按照 Unicode规范[ Unicode]定义的和在RFC3629[RFC3629]中重申的有效的UTF8格式。特別需要指出的是,这些数据不能包含字符码在U+D800和U+DFFF之间的数据。如果服务端或客户端收到了一个包含无效UTF-8字符的控制报文”它必须关闭网络连接[MQTT1.53-]。UTF-8编码的字符串不能包含空字符U+0000如果客户端或服务端收到了一个包含U+0000的控制报文’它必须关闭网络连接MQTT-1.53-2]数据中不应该包含下面这些 Unicode代码点的编码。如果一个接收者(服务端或客户端)收到了包含下列任意字符的控制报文,它可以关闭网络连接U+0001和U+00F之间的控制字符∪+007F和∪+009F之问的控制字符Unicode规范定义的非宇符代码点(例如U+ OFFFF)Unicode规范定义的保留字符(例如U+ OFFFF)UTF-8编码序列0XEF0xBB0XBF总是被解释为U+FEFF(零宽度非换行空白字符)’无论它出现在字符串的什么位置’报文接收者都不能跳过或者剥离它[MQTT-153-3]。非规范示例 Non normative example例如,字符串A是一个拉丁字母A后面跟着一个代码点U+2A6D4(它表示一个中日韩统表意文字扩展B中的字符)这个字符串编码如下图例12UTF8编码字符串非规范示例UTF-8 encoded string non normative example第一章-MQTT介绍Bit54byte 1字符串长度MSB(0x0O)00byte 2字符串长度LSB(0×05)byte 3A(0×41)00000bye4(0×F0)000byte 5(OXAA)00byte 6(0×9B)0byte 7(0×94)0001.6编辑约定 Editing conventions本规范用黃色高亮的文本标识一致性声明·毎个一致性声明都分配了一个这种袼式的引用:[MQTT××x-y]项目主页MQTT协议中文版第二章一MQTT控制报文格式第二章MQTT控制报文格式 MQTT ControPacket format目录第一章-个绍第二章一MQTT控制报文格式第三章一MQTT控制报文·第四章一操作行为第五章一安全第六章一使用 Websocket第七章一一致性目标附录B-强制性规范声明2.1MQTT控制报文的结构 Structure of an MQTTControl packetMQπT协议通过交換预定义的MQTT控制报文来通信。这一节描逃这些报文的格式。MQTT控制报文由三部分组成’按照图例2.1-MQ∏控制报文的结构描逃的顺序图例21-MQTT控制报文的结构Fixed header固定报头’所有控制报文都包含Variable header可变报头·部分控制报文包含Payload有效载荷·部分控制报文包含22固定报头 Fixed header每个MQTT控制报文都包含一个固定报头。图例2.2-因定报头的格式描逑了因定报头的格式图例22-固定报头的格式第二章一MQTT控制报文格式Bit65432byte 1MQTT控制报文的类型用于指定控制报文类型的标志位byte 2剩余长度221MQTT控制报文的类型 MQTT Control Packet type位置:第1个字节,二进制位7-4表示为4位无符号值,这些值的定义见表格2.1-控制报文的类型表格2.1-控制报文的类型名字值报文流动方向描述Reserved禁止保留CONNECT客户端到服务端客户端请求连接服务端CONNACK2服务端到客户端连接报文确认PUBLISH两个方向都允许发布消息PUBACK丙个方向都允许QoS1消息发布收到确认PUBREC5两个方向都允许发布收到(保证交付第一步)PUBREL两个方向都允许发布释放(保证交付第二步PUBCOMP7两个方向都允许QoS2消息发布完成(保证交互第三步)SUBSCRIBE8客户端到服务端客户端订阅请求SUBACK9服务端到户风请求摄文确认UNSUBSCRIBE10客户端到服务端客户端取消订阋请求UNSUBACK服务端到客戶端取消订阔报文确认PINGREQ12客户端到服务端跳请求PINGRESP13服务端到客户端心跳响应DISCON№ECT14客户端到服务端客户端断开连接Reserved15禁止保留222标志Fags固定报头第1个字节的剩余的4位[30]包含每个MQTT控制报文类型特定的标志,见表格22-标志位。表格2.2中任何标记为“保留”的标志位·都是保留给以后使用的·必须设置为表柊中出的值[MQT「-22.2-1。如果收到非法的标志’接收者必须关闭网络连接。有美错误处理的详细信息见4.8节MQTT2222]
- 2021-05-06下载
- 积分:1
如何攻破软件
如何攻破软件,英文名how to break software。本文为精简版,浓缩就是精华啊。报错信恳仅仅是迫使程序停止来显示一条报错信息、,然后接着执行卜一条输入或者直到定时器超时而凵。但是,也有其他一些报错信息则是来自于被程序抛岀和异常处理器被执行引发的异常。异常处理器(或中央错误处理线程)因其指针突然改变而数据状态不产生相应变化,通常会存在问题。异常处理器执行的睽间,各种各样的数据问题接踵而至:文件未关闭、内存未释放、数据未初始化。当控制重新回到主线程,很难判断错误处理器是在什么时刻被调用,又会有怎样的遗留问题在等待粗心大意的开发人员:因为文件没有关闭导致打开文件失败、在没有初始化前就开始使用数据。如果我们能确侏在所有的报错信息都出现过之后系统依然正常工作,那么也算是为用户省去」不少麻烦(吏不用说我们的维护工程师∫)图1展小∫我的学生在微软Word20中发现的一个有趣的bug,一条错误提小不知为何连续出现了两次。这个bug是在通过单一输入攻击错误处理线程的过程中发现的确保软件指定默认值。开发人员通常不记得在用户输入越界或给参数改置不合理的值时指定默认的值。有时候强制改立默认值意味着什么也不做一一然而正因为恕不到,这一举措甚至难倒」优秀的开发人员。例如,在word2000中,如下对话框中有一个选择框,当不对其做任何修改时再次打开对话框,该控件将消失。对比左右图片中的对话框。你发现什么控件消失了吗?Index and I atlesaE Ind and T nhl图hdat Tae or Crems I ae ofEr|Bt图pr PC aba业pHanns JEening 2REMTE 2Stade 3.HAidar 2HeadsP Eghk dg pae numbersT-n k有的时候指定默认值需要先改变值的当前设定,然后将其设定为个不合理的值。这种连续的转换保让了再转换成其他可用的值前是经过设置默认值尝试输入变量的所有可用的字符集有的输入问题很简单,特别是当你使用了类似$,%,#,引号等等字符付,这些字符在许多编程语言中有特姝意义并且作为输入被读入时通常需要特姝处理。如果廾发人员未考虑这种情况,则这些输入可能导致程序的失败。通过改变输入内容的多少引发输出区域的改变聚焦丁输出木身是一神发现bug颇有成效但是极少使用的方法。其思想是:先假定一种表现为bug的输出或者行为,然后寻找能够导致这种现场产生的输入。以上所述的一个简单的攻击例子就是通过改变输入值和输入字符串的长度来引发输出区域大小的重新计算。个很好的概念性例子是将时钟的时间设置为9:59,然后等待它转到10:00。一开始显示区域是4个字符长度而后来是5。反过来,我们设定时间为12:59(5个字符),然后等待其转变为1:00(4个字符)。开发人员通常只会对初始化为空白的情况进行处理而不曾考虑到显小区域己有数据的情况下如何史新该区域以显小不同长度的数据。举个例子, PowerPoint中的“艺术字”功能中有个有趣的bug。假定我们输入下图中的个长的字符串可以发现因为字符串太长,并不是整个字符串都能显小出来。但这不是问题的关键。点击确认按钮时触发两个事件。首先,程序计算岀需要的输岀区域大小,然后将输入的文字填充进去。现在,我们编辑该字符串,将它改为单个字符。可以发现尽管现在只有单个字符,字体大小也没有改变,但显小区域大小却没有发生改变。进一步看。如果冉次编辑该字符串为多行的字符串,输出结果更有意思、。E Microsoft PowerPoint-[Presentotion1I回E= Fdit iAv Tns+ Form=t工 hls li smw inimw Henl可x回的品“口27%-2⊥□ ATTENTONMicrosoft InterJob interviewsCareerGo to room 210ae for all god mene come to the aid回 Eile Edit iaw Insert Forst Tools Slide show MA. in+y出1型x」10ATTENTIONob interviewsheld in Career seGo to room 20Keuper BldgC Microsoft Powerpoint [PresentationalUJEil- Edit yiw Insert For mat Inns Slide Show Mlinrnw Hen回x当鹛5x:+兽当2791 ATTENT工ONMicrosoft internheld in Career seGo to roomKeuper Bld一分也Aa的≡我悲这部分凵经介绍得比较清楚了,我们将进入卜一部分确保对显示区域的边界的检査。这是基于输出的另一种攻击思路,与之前的|分类似。然而,不同于之前着力」导致显区域内部出错,这次我们将精力集中在显示区域的外部。并且显示区域将不再重新计算显示边芥而仅仅是考虑边界溢出。再以 Power Poin为例,我们可以先画一个文木框,然后输入一个带上标的字符串。放大该字符串的宇体使上标的上半部分被截断。这一问题将连同之后的相关问题一起说明。引发屏幕刷新问题。这是使用 windows图形用户界面的用户会遇到的主要问题。对开发人员来说,史是个大问题:过度的刷新将导致程序变慢,而不刷新又会导致大大小小的问题,小至要求用户强制刷新,大到导致用户的操作失败通常通过在屏幕上添加、删除和移动元素来触发血刷新。这将导致背景車新绘制,如果贞面不能正确、及时地作出相应,那么这就是通常意义上的bug。其中,尝试变化所移动的元素的距离是一种较好的方式,可以移动一点点,接着移动一大截,移动一两次,接着移动很多次接着说回上面例子中的带上标的字符串,试着每次用鼠标拖动它移动一些距离,就会发现令人讨厌的问题,如下图所示。在 Office2000中→4引丝常出现的另一个与L口 ATTENIIONMcr。 tk Intern屏幕刷新相关的问题lob interview arheld in Cae se是文本的异常消失。Go to noon 21025Keuper Bdg这一讨厌的问题在word的页面边界附近4出现。Click to add notes输入值组合攻击口的rcm如南哪、、口四面、,凸,画■翻第二类输入/输出Side S 0f 6Bur Desnbug主要针对多个共同作用或相互影响的输入。例如,一个通过两个参数调用的API,其中一个参数的取值建立在另一个参数取值的基础上。通常,bug正是出在值组合上,因为代码的逻辑关系复张。找出不能共存的输入值的组合。那么哪些值的组合是有问题的?这个问题目前还处于积极研究中,但是我们已经找到了一个特别有效地方法,那就是先确定期望获得的输岀,然后试着去找到对应的输入值的组合。尝试产生无效的输出。这是一种适用于测试人员对问题域十分清楚的有效攻击方法。例如,当你在测试一个计算器并且清楚部分功能点的结果有限制时,试图找到超岀范围的结果所对应的输入值组合是值得的。但是,如果你不熟悉数学,那么这种努力很可能是浪费时间一一你甚至可能将一个不正确的结果当成正确的。有时候 windows木身会给出提示,告诉你哪些输入是相互关联的。此时,测试人员可以去测试这些值的范围,并且尝试触犯既定的关系。输入序列攻击软件中的输入就像一种止式的语言。单一的输入相当」组成语言的字母,输入的字符串类似构成语言的句子。其中一些句」应该通过控件和输入区域的启用与禁用被过滤。通过尽可能多地输入字符串、改变输入的顺序来测试这种问题选择导致无效输出的输入序列。和上文描述这是一种找到问题输入组合的好方法一样,这同样是找出有问题的输入序列的好方法。例如,当我们发现∫Oice2000中的一个导致文本消失的问题后,对 Power point幻灯片中标题文本框进行攻击。如下的一组屏幕截图冉现∫一个特定的输入序列是如何导致文本消失的。正回国wFE和 Eai swa. wart Frat m ao sty oran阳 mrt ma Dect ilt sow如mhDdF)…gB5:h1感 ATTLATI0H1b粪 ITtNTION1直 ITHNTIONMicosofT I nterMicrosoft Imt把MIcroset IotelCxn caosATHENTIONGo tD roMm 2门rNGatD fosT丑Micros af lrtenigveeKHr段hMirswios bereitKere EdCm取曰BD日要!比 b and ncosr宝tams7m· R6 anime)s□42正△=a面口日压=日日2▲·=量有趣的是仅仅将文本框旋转180度并不能发现这个bug。必须按照这样的操作顺序:旋转180度后,再旋转10度(或者更多)。逆向执行以上操作并不能修正这一问题,每当点山标题外部区域,该标题内容就会消失。改变输入的顺序之所以善于发现bug是因为很多操作自身成功执行的同时会遗留很多问题,它们将导致之后的操作失败。对输入序列进行彻底的检査会暴露出很多这样的问题。然而有时侯,下面这种攻击表明:为了发现bug,根本不需要使用多种多样的输入序列多次重复同样的输入序列。这种方式会对资源造成大规模占用,并且对存储数据空间造成压力,当然也包括发现其他负面的遗留问题。遗憾的是,大多数应用程序并不清楚自身空间和时间的限制,而许多开发人员倾向于假定资源总是足够可用的。在Word的公式编辑器中可以找到这方面的一个例子,程序本身似乎并不清楚它只能处理10层嵌套括号的计算数据攻击数据是软件的命脉;如果你设法破坏了它,那么程序将不得不使用被破坏的数据,这之后得到的就不是合理的结果。所以理解数据是如何、在何处建立是必要的从本质上讲,数据的存储是通过读取输入,然后将其存储在內部或者存储一些內部计算的结果来实现的。因此,测试正是通过提供输入和执行计算来实现数据在应用程序中的传递数据攻击遵循以下简单原则。数据攻击变量值攻击1存储不正确的数据类型2使数据值超过允许的范围数据单元大小攻击3.溢出输入缓冲区4存储过多的值5存储太少的值数据访问攻击6找出同一数据的不同修改方式变量值攻击这一类的攻击需憂对内韶存储的数据对象的数据类型和合法值进行检查。如果有对源码的权限则这些信息可以轻易得到,但是,通过小小的探索性测试和对错误信息的关注也可以确定人致的类型信息。改变输入的数据类型来找出不匹配的类型。在需要整数的区域输入字符(和类似的攻击)已经被证明十分有效,但随着现代编程语言对类型检查和类型转换的处理变得容易,我们发现这样的攻击相对之前已经不再那么有效使数据值超过允许的范围。被存储的变量数据和输入的变量数据一样,这样的攻击方式同样适用数据单元大小攻击第二类数据攻击旨在蝕发数据结构的溢出和下溢。换句话说。攻击试图打破预先设定的数据对象的大小限制。首先要说的就是典型的缓冲区溢出。溢出输入缓冲区。此处通过输入长字符串导致输入缓冲区溢出。这是黑客们偏好的攻击方式,因为有时候应用程序在崩溃之后会继续执行进程。若一名黑客将一段可执行代码附在一个长字符串中输入,程序很可能执行这段代码在Word2000的一个缓冲区溢出问题就是这样一个可被利用的bg,此bug被发现在査找/替换玏能中,如下所示。有趣的是,“查找”这一字段被合理地加以限制而“替換”没有正出面同一数据结构存储过多的值。复杂地数据结构诸如数组、矩阵和列表在测试中不仅仅要考虑存储8在其中的数值,还要考虑存储值的数目。同一数据结构存储过少的值。当数据结4正A日国重构允许增加和删除信息时,通常在做了n-1次增加的同时穿插着或在其之后做n次删除操作会导致攻击成功。数据访问攻击我的朋友 Alan Jorgensen喜欢用“右手不明左手所为”这句话来形容这一类bug。道理很简单,但开发人员却常倒在这一类攻击下:在很多程序中通常任何任务都能通过多种途径完成。对测试人员来说,这意味着同一个函数可以由多个入口来调用,这些入口都必须确保该函数的初始条件得到满足。个极好的例子是我的学生在 PowerPoint中发现的表格数据大小相关的崩溃性bug。创建表格时最大尺寸被限定为25×25。然而,可以创建一个25×25的表格,然后为其添加行和列——导致应用程序崩溃。这就是说,程序一方面不允许26×26的表格存在而另一方面却并不清楚这个规则的存在。运算攻击运算攻击操作数攻击使用非法操作数进行运算找出非法操作数组合结果攻士使运算结果过大使运算结果过小功能相互作用攻击找出共亨数据不佳的功能操作数攻击这类攻击需要知道在一个或史多内部运算中操作数的数据类型和可用的值。如果有源码权限则这些信息可以轻易获得。否则,测试人员必须尽最大努力去弄清楚正在进行的运算只体是什么、使用的是什么数据类型。触发由非法操作数引起的运算。有时侯输入或存储的数据处于合法的范围之中,但是在某些运算类型中却是非法的。被0除就是一个很好的例子。0是一个合法的整数,但作为除法运算的除数却是非法的。找出不能共存的操作数的组合。涉及到一个以上操作数的运算不仅受制于上面的攻击,同时存在操作数冲突的可能性。结果攻击第二类运算攻击旨在造成存储运算结果的数据对象的溢出和下溢试图造成运算结果过大而存储失败。就算是简单如y=x+1这样的运算在数值边界上也常出问题。如果x和y都是2比特的整数并且ⅹ的值为32768,则这一运算将失败,因为结果将会造成存储溢出。试图造成运算结果过小而存储失败和上文相同,不同的是使用y=x-1并且使x的值为-32767功能相互作用攻击文章中讨论的这最后一类攻击或许算是所有种类的鼻祖,可以用来区分测试菜鸟和专业人员:功能的相互作用。问题没有什么新意:不同的应用程序功能共享同一数据空间。两种功能的相工作用导致应用程序失败,不是因为对数据处理的设定不同,就是因为产生了不良副作用但是哪些功能共享数据并且能够在冲突情况下实现数据转化口前还是测试领域中一个开放的问题。日前我们正停留在不断地尝试阶段。下面这个例子足以说明情况这个例子给出了在Word2000中的同一页面上合并注和双列时出现的一个出人意料的结果。问题在于:Word从注释的引用点计算脚注的页面宽度。所以,若同一页面上存在两条脚注,一条被处于双列位置的内容所引用,另一条则被处于单列位置的内容所引用,单列脚注公将双列脚注挤到下一页面。同时被挤掉的还有引用点至页面底部间的文本。三萨三下面的屏幕截图形象地说明」问题。第二列的文木去哪里∫?连同脚如三签注一起处在n远aoh1M黑下一次你会任由文档像1=11 aata Ln1a回下111D这样显小吗?在找到解决方法(这意味着你得花时间去整理)前你将不得不忍受这一现状结论简单遍历—遍上面罗列的21种攻击策略叮以覆盖应用程序的大部分功能。事实上,施行次成功的攻击通常意味着尝试各种可能性,走过很多死胡同。但是仅仅因为部分这一类探索性方法发现不了bug并不意味着它们没有用。首先,这段吋间使用应用程序帮助测试人员熟悉程序的各种功能,从而产生新的攻击思路。其次,测试通过是好的消息!它们表明,品是可靠的:尤其当这组测试是上面所说的恶意攻击。如果代码可以承受这样的测试过程,它儿乎可以应对用户作出的任何操作。另外,永远不要低估了测试时怀揣一个具体目标的作用。我见过太多测试人员把时间浪费在亳无目的地输入或者随机地调用API试图导致软件出错。实行测试意味着制定明确的目标一一基丁会出错的点—一然后设计测试用例来实践该目标。这样,每个测试用例都有目的泩并且进度可以被随时控制。最后,记住,测试应该是有趣的。攻击这一比喻正是对测试的这一特性很好的诠释并且还为愉快的消遣时光添加∫些许作料。狩猎愉快
- 2020-12-09下载
- 积分:1
凸优化在信号处理与通信中的应用Convex Optimization in Signal Processing and Communications
凸优化理论在信号处理以及通信系统中的应用 比较经典的通信系统凸优化入门教程ContentsList of contributorspage IxPrefaceAutomatic code generation for real- time convex optimizationJacob Mattingley and stephen Boyd1.1 Introduction1.2 Solvers and specification languages61. 3 Examples121. 4 Algorithm considerations1.5 Code generation261.6 CVXMOD: a preliminary implementation281.7 Numerical examples291. 8 Summary, conclusions, and implicationsAcknowledgments35ReferencesGradient-based algorithms with applications to signal-recoveryproblemsAmir beck and marc teboulle2.1 Introduction422.2 The general optimization model432.3 Building gradient-based schemes462. 4 Convergence results for the proximal-gradient method2.5 A fast proximal-gradient method2.6 Algorithms for l1-based regularization problems672.7 TV-based restoration problems2. 8 The source-localization problem772.9 Bibliographic notes83References85ContentsGraphical models of autoregressive processes89Jitkomut Songsiri, Joachim Dahl, and Lieven Vandenberghe3.1 Introduction893.2 Autoregressive processes923.3 Autoregressive graphical models983. 4 Numerical examples1043.5 Conclusion113Acknowledgments114References114SDP relaxation of homogeneous quadratic optimization: approximationbounds and applicationsZhi-Quan Luo and Tsung-Hui Chang4.1 Introduction1174.2 Nonconvex QCQPs and sDP relaxation1184.3 SDP relaxation for separable homogeneous QCQPs1234.4 SDP relaxation for maximization homogeneous QCQPs1374.5 SDP relaxation for fractional QCQPs1434.6 More applications of SDP relaxation1564.7 Summary and discussion161Acknowledgments162References162Probabilistic analysis of semidefinite relaxation detectors for multiple-input,multiple-output systems166Anthony Man-Cho So and Yinyu Ye5.1 Introduction1665.2 Problem formulation1695.3 Analysis of the SDr detector for the MPsK constellations1725.4 Extension to the Qam constellations1795.5 Concluding remarks182Acknowledgments182References189Semidefinite programming matrix decomposition, and radar code design192Yongwei Huang, Antonio De Maio, and Shuzhong Zhang6.1 Introduction and notation1926.2 Matrix rank-1 decomposition1946.3 Semidefinite programming2006.4 Quadratically constrained quadratic programming andts sdp relaxation201Contents6.5 Polynomially solvable QCQP problems2036.6 The radar code-design problem2086.7 Performance measures for code design2116.8 Optimal code design2146.9 Performance analysis2186.10 Conclusions223References226Convex analysis for non-negative blind source separation withapplication in imaging22Wing-Kin Ma, Tsung-Han Chan, Chong-Yung Chi, and Yue Wang7.1 Introduction2297.2 Problem statement2317.3 Review of some concepts in convex analysis2367.4 Non-negative, blind source-Separation criterion via CAMNS2387.5 Systematic linear-programming method for CAMNS2457.6 Alternating volume-maximization heuristics for CAMNS2487.7 Numerical results2527.8 Summary and discussion257Acknowledgments263References263Optimization techniques in modern sampling theory266Tomer Michaeli and yonina c. eldar8.1 Introduction2668.2 Notation and mathematical preliminaries2688.3 Sampling and reconstruction setup2708.4 Optimization methods2788.5 Subspace priors2808.6 Smoothness priors2908.7 Comparison of the various scenarios3008.8 Sampling with noise3028. 9 Conclusions310Acknowledgments311References311Robust broadband adaptive beamforming using convex optimizationMichael Rubsamen, Amr El-Keyi, Alex B Gershman, and Thia Kirubarajan9.1 Introduction3159.2 Background3179.3 Robust broadband beamformers3219.4 Simulations330Contents9.5 Conclusions337Acknowledgments337References337Cooperative distributed multi-agent optimization340Angelia Nedic and asuman ozdaglar10.1 Introduction and motivation34010.2 Distributed-optimization methods using dual decomposition34310.3 Distributed-optimization methods using consensus algorithms35810.4 Extensions37210.5 Future work37810.6 Conclusions38010.7 Problems381References384Competitive optimization of cognitive radio MIMO systems via game theory387Gesualso Scutari, Daniel P Palomar, and Sergio Barbarossa11.1 Introduction and motivation38711.2 Strategic non-cooperative games: basic solution concepts and algorithms 39311.3 Opportunistic communications over unlicensed bands411.4 Opportunistic communications under individual-interferenceconstraints4151.5 Opportunistic communications under global-interference constraints43111.6 Conclusions438Ackgment439References43912Nash equilibria: the variational approach443Francisco Facchinei and Jong-Shi Pang12.1 Introduction44312.2 The Nash-equilibrium problem4412. 3 EXI45512.4 Uniqueness theory46612.5 Sensitivity analysis47212.6 Iterative algorithms47812.7 A communication game483Acknowledgments490References491Afterword494Index49ContributorsSergio BarbarossaYonina c, eldarUniversity of rome-La SapienzaTechnion-Israel Institute of TechnologyHaifaIsraelAmir beckTechnion-Israel instituteAmr El-Keyiof TechnologyAlexandra universityHaifEgyptIsraelFrancisco facchiniStephen boydUniversity of rome La sapienzaStanford UniversityRomeCaliforniaItalyUSAAlex b, gershmanTsung-Han ChanDarmstadt University of TechnologyNational Tsing Hua UniversityDarmstadtHsinchuGermanyTaiwanYongwei HuangTsung-Hui ChangHong Kong university of scienceNational Tsing Hua Universityand TechnologyHsinchuHong KongTaiwanThia KirubarajanChong-Yung chiMcMaster UniversityNational Tsing Hua UniversityHamilton ontarioHsinchuCanadaTaiwanZhi-Quan LuoJoachim dahlUniversity of minnesotaanybody Technology A/sMinneapolisDenmarkUSAList of contributorsWing-Kin MaMichael rebsamenChinese University of Hong KongDarmstadt UniversityHong KonTechnologyDarmstadtAntonio de maioGermanyUniversita degli studi di napoliFederico iiGesualdo scutariNaplesHong Kong University of Sciencealyand TechnologyHong KongJacob MattingleyAnthony Man-Cho SoStanford UniversityChinese University of Hong KongCaliforniaHong KongUSAJitkomut songsinTomer michaeliUniversity of californiaTechnion-Israel instituteLoS Angeles. CaliforniaogyUSAHaifaMarc teboulleTel-Aviv UniversityAngelia NedicTel-AvUniversity of Illinois atIsraelUrbana-ChampaignInoSLieven VandenbergheUSAUniversity of CaliforniaLos Angeles, CaliforniaUSAAsuman OzdaglarMassachusetts Institute of TechnologyYue WangBoston massachusettsVirginia Polytechnic InstituteUSAand State UniversityArlingtonDaniel p palomarUSAHong Kong University ofScience and TechnologyYinyu YeHong KongStanford UniversityCaliforniaong-Shi PangUSAUniversity of illinoisat Urbana-ChampaignShuzhong zhangIllinoisChinese university of Hong KongUSAHong KongPrefaceThe past two decades have witnessed the onset of a surge of research in optimization.This includes theoretical aspects, as well as algorithmic developments such as generalizations of interior-point methods to a rich class of convex-optimization problemsThe development of general-purpose software tools together with insight generated bythe underlying theory have substantially enlarged the set of engineering-design problemsthat can be reliably solved in an efficient manner. The engineering community has greatlybenefited from these recent advances to the point where convex optimization has nowemerged as a major signal-processing technique on the other hand, innovative applica-tions of convex optimization in signal processing combined with the need for robust andefficient methods that can operate in real time have motivated the optimization commu-nity to develop additional needed results and methods. The combined efforts in both theoptimization and signal-processing communities have led to technical breakthroughs ina wide variety of topics due to the use of convex optimization This includes solutions tonumerous problems previously considered intractable; recognizing and solving convex-optimization problems that arise in applications of interest; utilizing the theory of convexoptimization to characterize and gain insight into the optimal-solution structure and toderive performance bounds; formulating convex relaxations of difficult problems; anddeveloping general purpose or application-driven specific algorithms, including thosethat enable large-scale optimization by exploiting the problem structureThis book aims at providing the reader with a series of tutorials on a wide varietyof convex-optimization applications in signal processing and communications, writtenby worldwide leading experts, and contributing to the diffusion of these new developments within the signal-processing community. The goal is to introduce convexoptimization to a broad signal-processing community, provide insights into how convexoptimization can be used in a variety of different contexts, and showcase some notablesuccesses. The topics included are automatic code generation for real-time solvers, graphical models for autoregressive processes, gradient-based algorithms for signal-recoveryapplications, semidefinite programming(SDP)relaxation with worst-case approximationperformance, radar waveform design via SDP, blind non-negative source separation forimage processing, modern sampling theory, robust broadband beamforming techniquesdistributed multiagent optimization for networked systems, cognitive radio systems viagame theory, and the variational-inequality approach for Nash-equilibrium solutionsPrefaceThere are excellent textbooks that introduce nonlinear and convex optimization, providing the reader with all the basics on convex analysis, reformulation of optimizationproblems, algorithms, and a number of insightful engineering applications. This book istargeted at advanced graduate students, or advanced researchers that are already familiarwith the basics of convex optimization. It can be used as a textbook for an advanced graduate course emphasizing applications, or as a complement to an introductory textbookthat provides up-to-date applications in engineering. It can also be used for self-study tobecome acquainted with the state of-the-art in a wide variety of engineering topicsThis book contains 12 diverse chapters written by recognized leading experts worldwide, covering a large variety of topics. Due to the diverse nature of the book chaptersit is not possible to organize the book into thematic areas and each chapter should betreated independently of the others. a brief account of each chapter is given nextIn Chapter 1, Mattingley and Boyd elaborate on the concept of convex optimizationin real-time embedded systems and automatic code generation. As opposed to genericsolvers that work for general classes of problems, in real-time embedded optimization thesame optimization problem is solved many times, with different data, often with a hardreal-time deadline. Within this setup the authors propose an automatic code-generationsystem that can then be compiled to yield an extremely efficient custom solver for theproblem familyIn Chapter 2, Beck and Teboulle provide a unified view of gradient-based algorithmsfor possibly nonconvex and non-differentiable problems, with applications to signalrecovery. They start by rederiving the gradient method from several different perspectives and suggest a modification that overcomes the slow convergence of the algorithmThey then apply the developed framework to different image-processing problems suchas e1-based regularization, TV-based denoising, and Tv-based deblurring, as well ascommunication applications like source localizationIn Chapter 3, Songsiri, Dahl, and Vandenberghe consider graphical models for autore-gressive processes. They take a parametric approach for maximum-likelihood andmaximum-entropy estimation of autoregressive models with conditional independenceconstraints, which translates into a sparsity pattern on the inverse of the spectral-densitymatrix. These constraints turn out to be nonconvex. To treat them the authors proposea relaxation which in some cases is an exact reformulation of the original problem. Theproposed methodology allows the selection of graphical models by fitting autoregressiveprocesses to different topologies and is illustrated in different applicationsThe following three chapters deal with optimization problems closely related to SDPand relaxation techniquesIn Chapter 4, Luo and Chang consider the SDP relaxation for several classes ofquadratic-optimization problems such as separable quadratically constrained quadraticprograms(QCQPs)and fractional QCQPs, with applications in communications and signal processing. They identify cases for which the relaxation is tight as well as classes ofquadratic-optimization problems whose relaxation provides a guaranteed, finite worstcase approximation performance. Numerical simulations are carried out to assess theefficacy of the SDP-relaxation approach
- 2020-12-10下载
- 积分:1