WoT 成为成熟市场前,势必经历通讯协定技术变革的过程。物联网的发展,进入到衔接web(over HTTP)的阶段后,典型的通讯协定堆叠(Protocol Stacks)开始产生变化。更进一步的话,物联网在2015 年开始,进入通讯协定技术变革的时代。过去使用的通讯协定技术,开始有了改良版本。几个知名的例子:Google 提倡的SPDY 协定、专为Constrained Device 所设计的CoAP,以及QUIC 改良传统的UDP。

未来,当IoT 装置大量布署后,届时网路上将有十亿,什致百亿计的IoT 装置,这个总数,绝对比纯web 时代时的web server 还要更多。
未来,当IoT 装置大量布署后,届时网路上将有十亿,什致百亿计的IoT 装置,这个总数,绝对比纯web 时代时的web server 还要更多。

上述所提的例子,最终都想针对HTTP 协定进行改造。 HTTP 是应用层通讯协定(Application Layer Protocol),现在的IoT 架构,发展重心就是使用HTTP(Web)来交连(interoperate),这个IoT + Web 的架构,称为WoT(Web of Things)。不只是WoT 架构,从通讯协定的角度来看,物联网正进入应用层通讯协定技术变革的时代。

TCP/IP Stacks 是网路协定的基础,其中有一层称为传输层(Transport Layer),传输层包含TCP 与UDP 二个协定。 UDP 协定比TCP 更轻量化,但因为TCP 的可靠性佳高,因此,知名的应用层协定「HTTP」,就基于TCP 协定来发展。基于TCP 的HTTP(或称为HTTP over TCP)的特色就是Client/Server 间会进行资料传输的确认(ACK),因此可靠度高。然而,这个确认的动作对物联网装置来说,可能会形成一个问题。这个问题在于,确认的动作需要花费较多的硬体资源(运算能力、记忆体等),对硬体资源较缺乏的装置(称为Constrained Device),这个TCP 的确认过程,就成为一个很大的负担。

HTTP(Hypertext Transfer Protocol)是一种request-response 形式的协定。就像我们所知道的,它已经完全融入我们的生活之中。 HTTP 在PC 时代,已经改变人们接收资讯的方式与习惯,到了Mobile 的时代,HTTP 更再次影响与改变人类的社会文化。到了物联网时代,HTTP 将继续影响与改变人类的生活习惯,物联网已经开始受到HTTP 的影响,这就是Web of Things。 HTTP 属于application-level 的协定,HTTP 的传输层就是使用TCP。

一个开放式且符合Web of Things 设计原则的IoT Cloud 架构,应该以application-level 的协定为主,因此HTTP 成为自然当选人。但物联网硬体本身,有它的局限性,例如:低功耗、运算频率较低、主记忆体较少等,当软体在这样受局限的硬体环境上运作时,就需要一个比HTTP更适合的应用层协定-CoAP(Contrained Application Protocol)就因应而生。

CoAP 并不是要取代HTTP,它是针对Constrained Device 的HTTP 需求。 CoAP(Constrained Application Protocol)是更简单且轻量化的HTTP 技术,简单的意思是,CoAP 简化了HTTP 的内容,轻量化的意思是,CoAP 采用UDP 进行传输。简单来说,CoAP 可以看做是一个HTTP over UDP 的技术。 CoAP 是物联网的重要技术,它让Constrained Device 都能具备HTTP 的能力。大部份的MCU 装置都是Constrained Device,因此,就也像是MCU + HTTP。

从实作的角度来看,CoAP 并非直接采用HTTP 标准,而是透过转换(translate)的方式将讯息对应成标准的HTTP。 CoAP 采纳了REST 架构,并且也是采取request/response 的模式。因此,要将CoAP 转换为HTTP,或是将HTTP 转换为CoAP,其实是非常容易的。实际上,CoAP 只对request/response 的部份做转换,也就是CoAP 的request 都能转换为HTTP request headers;response 的部份亦同。

除了CoAP 外,HTTP/2.0 未来也可能在物联网应用上,扮演重要角色。 HTTP over TCP 的ACK 会造成的一些负担,因此如果让HTTP over UDP 的话,就可以解决这个问题。 Google 所提出的QUIC(Quick UDP Internet Connection)就是这样的技术。 QUIC 可以让HTTP 基于UDP 传输层,就是HTTP + QUIC + UDP。

解决了传输层的问题,再回到应用层来看HTTP。因为HTTP request/response headers 设计上的一些缺点,让HTTP 的网路传输效能无法提升。为解决这些问题,Google 便提出了SPDY 协定。 SPDY 协定后来成为HTTP/2(HTTP 2.0)的基础。 IETF 在2015 年5 月正式发布HTTP/2 标准(RFC 7540)。 HTTP/2 是基于TCP 协定,因此要让物联网装置使用HTTP over UDP 的话,目前仍必须使用HTTP + QUIC + UDP 的堆叠。

因为HTTP/2 标准就是SPDY 的内容,如果有意在物联网装置上使用HTTP/2 的特性,就要采用HTTP + SPDY + QUIC + UDP 的堆叠。不过,Google 未来有意将HTTP/2 over QUIC 提交给IETF,到时就能舍弃HTTP + SPDY + QUIC + UDP 的做法,毕竟这只是过渡时期的解决方案。

从IoT 装置的角度来看,在一个硬体很受限的环境里,HTTP over TCP 的过程不但消耗硬体资源,也考验硬体的运算能力。同时,这个过程因为handshake 的过程繁复,也可能造成「response time」过长。 CoAP、HTTP over UDP 或是HTTP/2 over QUIC 则是修改了handshake 的过程,解决了包含response time 在内的各种问题。

未来,当IoT 装置大量布署后,届时网路上将有十亿,什致百亿计的IoT 装置,这个总数,绝对比纯web 时代时的web server 还要更多。当这些IoT 装置彼此间,发出大量且频繁的HTTP request/response 时,这些TCP 连线就会累积出非常可怕的「连线负载」。未来迎接IoT 的时代,降低ACK 封包,并设计更适合的通讯协定,就成了重要的基础研究。或许,在通讯协定技术完成技术变革后,WoT 才会真正成为成熟市场。