634515047CoAP协议详解图文_第1页
634515047CoAP协议详解图文_第2页
634515047CoAP协议详解图文_第3页
634515047CoAP协议详解图文_第4页
634515047CoAP协议详解图文_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、coap(the constrained application protocol)协议详解协议详解jade 2016/12目录概述message modelrequest/response modeloptionscoap组播coap代理securing coapcoap是什么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通过me

3、ssage承载,从封包上不体现这种层次结构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,respons

4、e的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 coapmessage模型coap message用于承载request

6、/response模型,有两种模式:reliability modeconfirmable message需要acknowledgement message确认confirmable message和acknowledgement message通过message id匹配non-reliability modenon-confirmable message不需要acknowledgement message确认message formatmessge组成部分固定4字节的头部变长的token(0-8byte)0或多个tlv格式的option可选的payloadmessage承载信息reques

7、tresponseempty message(只有message header,且code为0.00)message headerver:2bit version,当前版本为01,版本号非1的消息直接丢弃t: message type:confirmable(0),non-confirmable(1),acknowledgement(2),reset(3)tkl:token length,当前有效取值0-8,其他认为是message format errormessage formatcode: code:8 bit无符号数,格式:c(3bit class type).dd(5bit deta

8、il 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之后,可以是一个opti

9、on,或者是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 message:用于向se

10、nder确认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,它只是一种特殊含义的messagemessage和res

11、ponse映射关系*:表示此种情况只是为了让接收方发出reset msgmessage的可靠传输client构造con msg发送到server,未收到ack或reset时,支持基于指数回退的重发server如果可以处理该message,返回ack,否则返回resetendpoint匹配con和ack/reset message中携带message id用于配对是一次可靠传输过程,支持重复检测简单的停等基于指数回退的重传机制保证靠性message的可靠传输message的可靠传输由一个confirmable msg发起;confirmable msg总是承载一个request或response

12、,除非是一个为了触发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_factor:初始的ack保护时间(重传保护时

13、间),随后的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_random_factor=2*(

14、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_delay=202

15、sexchange_lifetime=max_transmit_span + (2 * max_latency) +processing_delay=45+200+2=247snon_lifetime:non消息的message id最大安全重用保护时间=max_trans_span+max_latency=145message的非可靠传输client对于不需要可靠传输的message通过non-confirmable msg传递虽然不需要ack确认non msg,server仍然可能会返回reset给client(比如server不能处理这个non msg)non msg中仍然携带messa

16、ge 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,6,7;m

17、essage存在格式错误rejecting一个msg的结果是回复reset msg或者忽略它由于sender不能确认receipt是否收到non msg,所以可以重传多次,receipt通过msg id检测是否是重复消息目录概述message modelrequest/response modeloptionscoap组播coap代理securing coaprequest/response模型coap request和response的语法通过message承载可靠传输的request的response方式(piggybacked response):同步可靠响应模式(piggybacked

18、 response):通过con msg的ack携带response异步可靠响应模式(separate response):当server不能立即响应request时,可以先通过空ack msg响应client,当server准备好后,通过新的con msg将resonse发送给client非可靠传输request和responsepiggybacked responserequest和response通过token配对异步可靠响应模式跨多对msg的request和response通过token配对非可靠响应模式request和response通过token配对对于通过non承载的reques

19、t,server可以选择通过con返回responsepayloads and representationsrequest和response中的payload通常是是resource representations或者是request action的结果,格式由”content-format”确定对于client或者server error的response,如果包含”content-format“,则payload是request action结果的representation,否则是一个诊断diagnostic payload,诊断payload通常是一个描述错误信息的字符串select

20、ed representation:如果相应的请求使用方法get并且排除了任何条件请求选项,我们使用术语“选择的表示”来引用对这些请求的成功响应中选择的目标资源的当前表示:client通过多次get方法获取了resource的representation,并且回复request的每个response指定了etag,则client可以携带多个etag的request,server选择一个etag返回2.03 valid response,这个就是selected representationrequest的methodrfc7252 coap定义的方法getpostputdelete 对于不能识

21、别的method,需要返回一个4.05(method not allowed)的piggybacked responsegetget方法用于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方法是安全并且正交的postpost方法用于

22、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处理成功,且导致resource别删除,返回2.02 deleted

23、post方法既不安全也不正交putput方法用于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方法结果的进一步限制,可以通过if-match和if-not-match施

24、加put方法不安全但是是正交的deleteput方法用于client 请求server删除uri指定的resource如果删除成功或者resource根本不存在,返回2.02 deleteddelete方法不安全但是是正交的response code-2.xx successthis class of response code indicates that the clients request was successfully received, understood, and accepted2.01 created:response to post and put,response中可

25、能包含一个操作结果的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的representation,is cacheableresp

26、onse code-4.xx client error此类code用于表示可能的客户端错误,可以应用于所有method的response,并应该包含一个diagnostic payload;此类code的response是cacheable的4.00 bad request4.13 request entity too large4.01 unauthorized 4.15 unsupported content-format4.02 bad option4.03 forbidden4.04 not found4.05 method not allowed4.06 not acceptable

27、4.12 precondition failed response code-5.xx server error此类code用于表示可能的server端错误,可以应用于所有method的response,并应该包含一个diagnostic payload;此类code的response是cacheable的5.00 bad internal server error5.01 not implement5.02 bad gateway5.03 service unavailable5.04 gateway timeout5.05 proxying not supported目录概述message

28、 modelrequest/response modeloptionscoap组播coap代理securing coapoption分类协议定义了option,option的属性有如下几类:critical option:接收方必须能够理解的option,否则消息无法正常处理elective option:接收方不识别该option时,可以忽略,不影响消息的正常处理注意:option本身和字面意义一样,是否出现在message中是可选的;unsafe option:proxy不识别不能转发其所在message的option,并不是每个critical option都是unsafe option

29、safe-to-forward option:proxy不识别仍可转发其所在message的optioncritical vs elective option根据endpoint对于不能识别的option如何处理分类,规则:对于不能识别的elective option,无声的忽略该option在confirmable request中的不能识别的critical option,需要返回4.02(bad option) reponse,且携带该option用于诊断在confirmable response中或者piggybacked response中的不能识别的critical option,

30、必须reject这个response在non-confirmable msg中不能识别的option,必须reject这个消息(返回reset并忽略该non-confirmable msg)rejecting a confirmable message is effected by sending a matching reset message and otherwise ignoring it.critical 和 elective 规则应用于non-proxying的endpointproxy unsafe-to-forward vs safe-to-forward根据proxy如何处理

31、option分类proxy如何处理这两种option的规则在proxy中进一步描述对于标记为safe-to-forward的option,可以通过nocachekey bits来标识其是否愿意成为一个cache-key:如果some of nocachekey bits为0,表示愿意;如果nocachekey bits都是1,表示不愿意cache-key用于proxy对于request中未实现的option,作为替换采用unsafe/safe-to-forward标识决定是否cacheoption formatoption delta:option在message中的实例必须按照编号大小顺序存

32、放,option的实际编号由本option中的delta值+上一个option的值确定;对于message中的第一个option实例,假定上一个option的编号为0;同一个编号的多个option的实例,其delta值为0option formatoption delta:取值0-12表示option delta,取值为13时,需要占用option delta extension中一个byte,存放实际option delta减13的取值;取值为14时,需要占用extension中两个字节,存放实际option delta减去269的部分;取值为15时,为payload marker保留。op

33、tion length:取值0-12表示option占用的字节数;取值13时表示需要占用扩展中的一个字节,且表示option length减13的部分;取值14时,表示需要占用扩展中的两个字节,且表示option length减去269的部分;取值15时,保留;option value format:0长度的字符序列不透明的字节序列无符号整数utf-8编码的unicode字符串option number一个option 编号的最低字节,有如下mask组成:c: 1表示是critical option,0表示是elective option,即奇数编号是critical,偶数编号是electiv

34、e optionu:unsafe,1表示是一个unsafe option,否则是一个safe-to-forward optionnocachekey: 三个bit全为1时,表示是一个nocachekey,其他情况表示是一个cache-keyoption项coap定义了如下可以应用于request和response中的option:content-formatetaglocation-pathlocation-querymax-ageproxy-uriproxy-schemeuri-hosturi-pathuri-porturi-queryacceptif-matchif-no-matchsiz

35、e1option项定义nocachekey指示对于safe-to-forward选项才有意义uri-host/uri-port/uri-path/uri-queryuri-host/uri-port/uri-path/uri-query用于指定发往server的request中的目标resource,用于组合出目标resource的uriuri-host:指定目标资源所在的主机uri-port:指定目标资源所在的端口uri-path:指定目标资源绝对路径的一部分uri-query:指定uri的参数的一部分request可以包含多个上述optionproxy-uri/proxy-schemepr

36、oxy-uri用于发往forward-proxy的request中,表示一个绝对uriproxy-scheme表示代理scheme,比如coap,coaps,http,httpscoap uricoap协议使用和http协议对称的”coap“和”coaps” uri标识,定位一个coap resource语法符合augmented backus-naur form (abnf)(rfc5234),关于“host”,“port”,“path-abempty”,“query”,“segment”,“ip-literal”,“ipv4address”,“reg-name”定义源自rfc3986 ur

37、i generic sytaxhost:资源所在主机,可以是ip地址或者域名,不能为空port:coap服务监听端口,coap默认为5683,coaps默认为5684path:指定resource在host内的路径,由”/”分隔query:用于进一步参数化资源,由一系列的“&”分隔的参数组成,通常以“key=value”的形式出现coap uri规范化和比较“coap”和“coaps” uri编码方案遵循rfc3986如果端口和默认值相同,可以不列出空的path组件等效于根目录”/”,应该直接列出“/”host:port组件是大小写不敏感的,通常用小写呈现非host外的其他组件内容是大

38、小写敏感的除”reserved“集合中的字符外,其和其百分号编码含义等价:通常不需要采用百分号编码形式如下形式的三个uri是等价的:uri分解分解一个绝对路径的url到coap request的uri-*的步骤:1.如果url不是绝对uri,分解失败2.参照rfc3986解析url字符串,此刻url是ascii编码,经过步骤5,8,9,将被翻译为utf-8编码3.如果url不存在scheme,并且存在scheme,不是”coap”和”coaps“,分解失败4.如果url包括”fragment“组件,分解失败5.将url的host的取值转换为uri-host,如果不是ip地址的形式,转换asci

39、i编码为utf-8编码,并转换掉百分号编码的形式6.如果url的port不为空,翻译成10进制整数,否则使用默认port7.如果url的port部分不等于request的目的port,将port转化为uri-port8.如果url的path组件为空或者只有一个”/”,转下一步;否则,每个path部分分解为uri-path9.如果url包含query组件,将query中的每个参数转化为uri-query组装uri从coap request的uri-* option中组装uri的步骤:1.如果request由dtls加密,则url由“coaps:/”打头,否则为“coap:/”2.如果reques

40、t包含uri-host,转化为url的host组件;如果host不是ip地址或者域名格式,组装失败;如果request不包含uri-host,则使用该request目的ip地址转化为url的host组件3.append host 到url4.如果request包含uri-port组件,url的port从uri-port的value中获取;否则port从request中的目的port获取5.如果port部位默认端口,append port到url6.将request中的uri-path拼装程url的path部分(通过”/”分隔),对于不在”unreserved“集合中、不在”sub-delims

41、“集合中,不是”:”字符,不是”字符,需要转换为百分号编码格式7.如果path部分为空,将其指定为”/”8.如果存在uri-query,每个uri-query通过”?”连接第一个uri-query,通过“&”连接随后所有的uri-query,对于不在”unreserved“集合中、不在”sub-delims“集合中,不是”:”字符,不是”字符,需要转换为百分号编码格式9.将6-8中生成的path追加在url之后content-format用于指定payload的格式proxy-scheme表示代理scheme,比如coap,coaps,http,httpsaccept用于指定期望的pa

42、yload的格式,即content-formatif no accept option is given, the client does not express a preference (thus no default value is assumed). the client prefers the representation returned by the server to be in the content-format indicated. the server returns the preferred content-format if available. if the

43、preferred content-format cannot be returned, then a 4.06 not acceptable must be sent as a response, unless another error code takes precedence for this response.max-age指定response的生存时间,即保持fresh的时间默认60秒etag实体标签是由server产生的,用于区分随时间变化的相同资源的表示之间的资源本地标识符。response中的etag在response中只能出现一次if no location-* optio

44、ns are present, the taggedrepresentation is the selected representation (section 5.5.3) of the target resource. if one or more location-* options are present and thus a location uri is indicated (section 5.10.7), the tagged representation is the representation that would be retrieved by a get reques

45、t to the location uri.request中的etag可以出现0或1或多次用于revalidate之前cache的responselocation-path/location-querylocation-path和location-query共同组成一个绝对路径或者一个query string或者两者都有该组合出现2.01 created response中表示resource创建的相对路径如果location-path和location-query与现有的cache的response匹配,这些response需要刷新为un-freshconditional request o

46、ptions作用用于指示server当conditional option满足时,才执行request条件满足时,则执行,否则返回4.12 precondition failed该request导致的除2.xx和4.12的其他response code时,conditional option被忽略if-matchif-match用于携带etag value可以有0个或多个,有一个匹配,则条件满足用于resource条件更新,比如put方法if-none-matchif-none-match未携带value用于以目标资源不存在为条件提出请求。比如put方法sizel作用the size1 opt

47、ion provides size information about the resource representation in a request. the option value is an integer number of bytes. its main use is with block-wise transfers rfc7959 . in the present specification, it is used in 4.13 responses (section ) to indicate the maximum size of request entit

48、y that the server is able and willing to handle.目录概述message modelrequest/response modeloptionsresponse的缓存机制coap组播coap代理securing coapcaching endpoint可以cache response,也就是对当前的request,复用之前request的response,以缩短响应时间,节约带宽消耗。caching机制freshness机制validation机制使用cache response的条件request和caching response的method相同

49、request中的option和caching response相同(cache-key)caching response是fresh或者是validated的freshness model为了提高效率,cache中的response如果是fresh的,可以用来直接满足后续的requests,而不需要contact origin server如果判断新鲜度(freshness)response中的max-age用来指示该response的生存(cache)时间,如果response没有这个option,默认是60秒,如果origin server不希望这个response被cache,显示携带

50、max-age的值为0validation model endpoint为request保存了多个response,但是由于not fresh而不能使用,当收到携带etag的request时,origin server可以选择一个保存的response,并且更新其新鲜度。此称为”validating“or”revalidating“保存的response;过程endpoint发送携带etag option的request,可以携带多个,每个代表一个保存的response一个编号为2.03的response携带etag指定重用已保存的reponse中的哪一个其他编号的response指示没有可以

51、用来重用的response目录概述message modelrequest/response modeloptionsresponse的缓存机制coap组播coap代理securing coap组播组播是相对单播coap的一系列增强message layer组播message必须是non-confirmable,server必须能够识别该消息是组播消息;对于收到的组播消息,server不能回复reset;client发出组播消息的message id不能和当前active的单播消息重复组播不能通过dtls承载(在rfc7252写作时)request/response layerserver可以

52、不理会组播的request(取决于应用)server决定返回组播message的单播响应时,需要等一个随机时间cachingclient每次发出一个新的组播请求,可以用repose更新cache的response随后针对组播server发出的单播get请求的uri的主机部分,需要用reponse中的源ip地址替代到组播地址的get请求,不能携带etag optionproxying组播地址发现机制(discovery)service discovery:发现server的方式:通过server的uri发现server通过组播方式(ipv4)发现server通过all coap nodes组播地

53、址(ipv6)发现serverserver默认在端口5683或5684提供coap服务resource discovery:将受限web服务器托管的资源,其属性和其他资源关系的发现称为core资源发现。在m2m应用场景,由于没有人工接口,coap endpoint建议支持rfc6690定义的可发现资源的core link format,用于资源发现coap为应用rfc6690定义一个新的web linking(rfc5988)ct attribute用于指示返回的resource的content-format目录概述message modelrequest/response modelopti

54、onsresponse的缓存机制coap组播coap代理securing coapproxyingproxy是一种在coap clients驱动下代表它们执行request的endpoint proxy按照功能分类forward-proxy:被client显示指定,并转发client request到server或下一个proxy,必要时可以直接从本地cache中查询response直接返回clientreverse-proxy:代表server执行client的request,reverse-proxy背后一般隐藏着多个origin server,reverse-proxy根据request

55、-uri和其配置策略,决定将request发往哪一个origin server执行request,必要时也可以从本地cache中查询response直接返回clientproxy按照协议转换分类coap-to-coap proxycross proxyproxy的一般行为 代理通常需要一种方式来基于其从客户端接收到的请求来确定其放置到目的地的请求的潜在请求参数支持freshness model和validation model 缓存response对于request可以识别的option,知道该option是否应该作为cache-key:比如uri-path必然是cache-key,而toke

56、n不可以作为cache-key对于request中不识别的option,知道根据option中的unsafe和nocachekey决定是否可以作为cache-key:标识为safe-to-forward的option且nocachekey未全置1request超时返回5.04(gateway timeout)或者server返回的response无法处理,返回5.02(bad gateway),否则将origin server返回的响应给clinet如果reponse从cache中选择,返回client中的max-age需要减去在cache中的存活时间处理request中option时,对于不

57、能识别的unsafe option,返回4.02(bad option),对于response中不能识别的unsafe option,返回5.02(bad gateway),对于不能识别的safe-to-forward option,不影响转发forward-proxyforward-proxy需要显示配置给coap clients 发送到代理的request和直接发往origin server的request中的resource uri格式不同:到proxy的request中的uri以字符串形式出现在option proxy-uri或者通过proxy-scheme和uri-*组合,而到ori

58、gin server的request的uri分解为uri-host,uri-port,uri-path,uri-query中;endpoint不愿担任proxy时,返回5.05(proxy not supported)除非代理被配置为将代理请求转发到另一代理,否则它必须如下翻译请求:request中uri定义了输出协议及其细节(例如,coap在“coap”方案上通过udp使用, 对于coap到coap代理,原始服务器的ip地址和端口由请求uri的确定,并且proxy-uri或proxy-scheme被解码并分割成uri-host ,uri-port,uri-path和uri-query选项。r

59、everse-proxy reverse-proxy不涉及proxy-uri和proxy-scheme,但是需要根据request的信息和配置信息,决定request的下一跳;比如,例如,在通过资源发现知道它们的存在之后,反向代理可以提供各种资源,如同它们是它自己的资源一样。 反向代理可以自由地为标识这些资源的uri构建一个命名空间。反向代理还可以构建命名空间,其给予客户端例如通过将主机标识符和端口号嵌入到所提供的资源的uri路径中来更多地控制请求的去向。在处理response时,反向代理必须小心,来自不同源的etag选项值不会混合到提供给其所有客户端的一个资源上。如果从reverse-pro

60、xy提供的资源到由其各种origin server提供的资源的映射不是唯一的,则reverse-proxy可能需要生成新的etag,确保该选项的语义被适当地保留。cross-proxy between coap and http按代理方向分类coap-http proxyingcoap client通过该代理访问http server上resource的资源,client通过发送携带proxy-uri或者proxy-scheme指定到http或https uri的request发起该访问过程http-coap proxying http client通过该代理访问coap server上的资源,通过在http

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论