634515047CoAP协议详解图文.ppt
《634515047CoAP协议详解图文.ppt》由会员分享,可在线阅读,更多相关《634515047CoAP协议详解图文.ppt(91页珍藏版)》请在三一办公上搜索。
1、CoAP(The Constrained Application Protocol)协议详解,Jade 2016/12,目录,概述Message ModelRequest/Response ModelOptionsCoAP组播CoAP代理Securing CoAP,CoAP是什么,CoAP是IETF为满足物联网,M2M场景制定的协议,特点如下:类似HTTP,基于REST模型:Servers将Resource通过URI形式呈现,客户端可以通过诸如GET,PUT,POST,DELETE方法访问,但是相对HTTP简化实现降低复杂度(代码更小,封包更小)应用于资源受限的环境(内存,存储,无良好的随机源
2、),比如CPU为8-bit的单片机,内存32Kb,FLASH 256Kb针对业务性能要求不高的应用:低速率(10s of kbit/s),低功耗满足CoRE环境的HTTP简化增强版本,协议模型,特征基于UDP的类似HTTP的Client/Server交互模型Client发送Request(携带不同method)请求对资源(通过URI表示)的操作,Server返回Response(携带资源的representation)和状态码在M2M应用场景,Endpoint实际同时是Server和Client,逻辑上分为Message和Request/Response两层,Request/Response通
3、过Message承载,从封包上不体现这种层次结构DTLS(Datagram Transport Layer Security)可选由于基于UDP,支持组播,协议参与方,协议定义了如下角色:Endpoint:CoAP协议的参与方Sender:发出Message的Endpoint,等于source EndpointRecipient:Message的目的Endpoint,等于destination EndpointClient:发出Request的Endpoint,Response的destination EndpointServer:Request的destination Endpoint,Re
4、sponse的source EndpointOrigin Server:resource的所在的ServerIntermediary:既作为Server由作为Origin Server的Client的Endpoint。可以理解为是Proxy的统称,协议参与方-续,Proxy:一种Intermediary,完成Request前转,Respone中继,执行缓存,namespace转换,协议转换等功能的Endpoint,基于前转请求架构中的位置,协议定义了forward-proxy和reverse-proxy两种代理Forward-Proxy:被Client用于代表Client执行Request,并
5、完成任何必要的转换。Reverse-Proxy:代表一个或多个其他服务器并代表它们满足请求,执行任何必要的翻译的端点。与转发代理不同,客户端可能不知道它正在与反向代理通信;反向代理接收请求,就像它是目标资源的源服务器一样。CoAP-to-CoAP Proxy:映射CoAP request到CoAP requestCross-Proxy:跨协议代理,比如COAP-to-HTTP和HTTP-to-COAP,目录,概述Message ModelRequest/Response ModelOptionsCoAP组播CoAP代理Securing CoAP,Message模型,CoAP Message用于
6、承载Request/Response模型,有两种模式:Reliability ModeConfirmable Message需要Acknowledgement Message确认Confirmable Message和Acknowledgement Message通过Message ID匹配Non-Reliability ModeNon-Confirmable Message不需要Acknowledgement Message确认,Message Format,Messge组成部分固定4字节的头部变长的Token(0-8byte)0或多个TLV格式的Option可选的PayloadMessag
7、e承载信息RequestResponseEmpty Message(只有message header,且code为0.00),Message Header,Ver:2bit version,当前版本为01,版本号非1的消息直接丢弃T:Message type:Confirmable(0),Non-confirmable(1),Acknowledgement(2),Reset(3)TKL:Token length,当前有效取值0-8,其他认为是Message format error,Message Format,Code:Code:8 bit无符号数,格式:c(3bit class type)
8、.dd(5bit detail code)Class分类:0:表示message为request,dd表示具体的method:0.01 表示GET,0.02表示POST,0.03表示PUT,0.04表示DELETE,特例,0.00表示empty message2:succsee4:client error5:server errorMessage ID:用于message的重复性检测,以及Confirmable msg,non-Confirmable msg和ACK、reset msg的匹配Token:用于匹配Request和ResponseOption:可以0个或多个,每一个Option之后
9、,可以是一个Option,或者是Payload Maker和Payload或者message结束Payload:如果有payload,必然是payload marker(0 xFF)和直到udp报文结尾的payload。Payload marker和payload必然同时出现,Message分类,协议定义的Message有如下几种Confirmable Message:需要确认的消息,Receipt方必须对消息回复Acknowledgement或者ResetNon-confirmable Message:不需要确认的消息,但是Receipt方可能回复ResetAcknowledgement M
10、essage:用于向Sender确认Confirmable Message已收到,可以携带Piggybacked ResponseReset Message:用于回复收到的无法处理的Message(Confirmable和Non-confirmable Message),也可通过一个Empty的Confirmable Message触发一个Rest,用于Endpoint的保活检测Empty Message:一个code为0.00的既不是request也不是response的Message。Empty Message并不是协议定义和上述Messge并列的type,它只是一种特殊含义的Messag
11、e,Message和Response映射关系,*:表示此种情况只是为了让接收方发出Reset msg,Message的可靠传输,Client构造Con Msg发送到Server,未收到ACK或Reset时,支持基于指数回退的重发Server如果可以处理该Message,返回ACK,否则返回Reset,Endpoint匹配CON和ACK/Reset Message中携带Message ID用于配对是一次可靠传输过程,支持重复检测简单的停等基于指数回退的重传机制保证靠性,Message的可靠传输,Message的可靠传输由一个Confirmable msg发起;Confirmable msg总是承
12、载一个Request或Response,除非是一个为了触发Reset msg的empty msgReceipt收到一个Confirmable msg,处理结果是:回复一个Acknowledgement msg(携带匹配的message ID)或者在如下情况下Rejecting一个消息:recipient不能正确处理message;message是一个empty message,message中的code是1,6,7;Message存在格式错误Rejecting一个msg的结果是回复Reset msg或者忽略它,Message的可靠传输相关参数,ACK_TIMEOUT*ACK_RANDOM_FA
13、CTOR:初始的ACK保护时间(重传保护时间),随后的MAX_RETRANSMIT次重传都乘以2NSTART:最大并发的处于活动状态的Message数目DEFAULT_LEISURE:Server休闲时间,用于收到多播Request时,何时返回Response的随机时间的计算(上限)PROBING_RATE:经过重传MAX_RETRASMIT次的Request最终未收到Response后,Requester发送对端的平均速率要小于该值,Message的可靠传输导出参数,MAX_TRANS_SPAN:最大重传时间=ACK_TIMEOUT*(2*MAX_RETRANSMIT)-1)*ACK_RAN
14、DOM_FACTOR=2*(16-1)*1.5=45sMAX_TRANSMIT_WAIT:最大等待响应时间=ACK_TIMEOUT*(2*(MAX_RETRANSMIT+1)-1)*ACK_RANDOM_FACTOR=2*(32-1)*1.5=93=45+2*1.5*16=93sMAX_LATENCY:封包从发送到期望完成接收的最大保护时间=100s(协议参考MSL直接随意定义),即封包在传输链路上的时间PROCESSING_DELAY:接收方从接收到该消息到发出响应的处理时间=ACK_TIMEOUT=2sMAX_RTT:最大往返时间=2*MAX_LATENCY+PROCESSING_DELA
15、Y=202sEXCHANGE_LIFETIME=MAX_TRANSMIT_SPAN+(2*MAX_LATENCY)+PROCESSING_DELAY=45+200+2=247sNON_LIFETIME:non消息的Message ID最大安全重用保护时间=MAX_TRANS_SPAN+MAX_LATENCY=145,Message的非可靠传输,Client对于不需要可靠传输的Message通过Non-Confirmable Msg传递虽然不需要ACK确认NON Msg,Server仍然可能会返回Reset给Client(比如Server不能处理这个NON msg),NON msg中仍然携带Me
16、ssage ID用于重复检测,Message的非可靠传输,Message的非可靠传输由一个NON msg发起NON msg总是承载一个Request或者Response,但是不能是一个Empty msg不能用Acknowledgement msg回复NON msg虽然不需要ACK确认NON Msg,Server仍然可能会返回Reset给Client(比如Server不能处理这个NON msg)Receipt收到一个NON msg,在如下情况下Rejecting一个消息:recipient不能正确处理message;message是一个empty message,message中的code是1,
17、6,7;Message存在格式错误Rejecting一个msg的结果是回复Reset msg或者忽略它由于Sender不能确认Receipt是否收到NON msg,所以可以重传多次,Receipt通过Msg ID检测是否是重复消息,目录,概述Message ModelRequest/Response ModelOptionsCoAP组播CoAP代理Securing CoAP,Request/Response模型,CoAP Request和Response的语法通过Message承载可靠传输的Request的Response方式(Piggybacked Response):同步可靠响应模式(pi
18、ggybacked response):通过Con msg的Ack携带Response异步可靠响应模式(Separate Response):当server不能立即响应Request时,可以先通过空Ack msg响应Client,当Server准备好后,通过新的CON Msg将resonse发送给Client非可靠传输Request和Response,piggybacked response,Request和Response通过Token配对,异步可靠响应模式,跨多对Msg的Request和Response通过Token配对,非可靠响应模式,Request和Response通过Token配对对
19、于通过NON承载的Request,Server可以选择通过CON返回Response,Payloads and Representations,Request和Response中的Payload通常是是resource Representations或者是request action的结果,格式由”Content-Format”确定对于client或者server error的response,如果包含”Content-Format“,则Payload是request action结果的Representation,否则是一个诊断Diagnostic Payload,诊断payload通常是一
20、个描述错误信息的字符串Selected Representation:如果相应的请求使用方法GET并且排除了任何条件请求选项,我们使用术语“选择的表示”来引用对这些请求的成功响应中选择的目标资源的当前表示:client通过多次GET方法获取了resource的Representation,并且回复Request的每个response指定了ETag,则client可以携带多个ETag的request,Server选择一个ETag返回2.03 valid response,这个就是Selected Representation,Request的Method,rfc7252 CoAP定义的方法GET
21、POSTPUTDELETE 对于不能识别的Method,需要返回一个4.05(method Not Allowed)的Piggybacked response,GET,Get方法用于Client向Server端检索URI指定的resource的Representation如果Request包含Accept Option,表示Client期望的Response的Content-Format如果Request包含ETag,如果Etag关联的Response validate成功则返回2.03 Valid,否则返回2.05 Content(包含resource的Representation)Get方
22、法是安全并且正交的,POST,POST方法用于Client 请求Server处理 Request中的Representation,如何处理依赖于origin server和target resource,通常会导致创建一个新的resource或者更新target resource如果resource被创建,response返回2.01 created,需要携带resource的uri信息(一个或多个Location-Path和Location-Query Option)如果request处理成功,且未创建新的Resource,返回2.04 Changed如果request处理成功,且导致res
23、ource别删除,返回2.02 DeletedPOST方法既不安全也不正交,PUT,Put方法用于Client 请求Server使用Request中的Representation更新或者创建URI指定的资源。Representation的格式由Request中的Content-Format确定(如果存在该Option)如果Server存在URI指定的resource,更新成功,返回2.04 Changed如果resource不存在,并且Server成功创建,返回2.01 Created如果resource无法更新也无法创建,返回相应的error response对Put方法结果的进一步限制,可
24、以通过If-Match和If-Not-Match施加Put方法不安全但是是正交的,DELETE,Put方法用于Client 请求Server删除URI指定的resource如果删除成功或者resource根本不存在,返回2.02 DeletedDelete方法不安全但是是正交的,Response Code-2.xx success,This class of Response Code indicates that the clients request was successfully received,understood,and accepted2.01 Created:response
25、 to POST and PUT,response中可能包含一个操作结果的Representation;not cacheable2.02 Deleted:response to POST and DELETE,not cacheable2.03 Valid:用于指示Request中ETag指定的Response是有效的,Response必须包含ETag,不能包含payload2.04 Changed:response to POST和PUT,not cacheable 2.05 Content:response to GET,response中包含target resource的Repres
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 634515047 CoAP 协议 详解 图文

链接地址:https://www.31ppt.com/p-2217145.html