HTTP和COAP有哪些主要区别?

12

HTTP主要用于查看网页,而Coap是专为物联网或无线传感器网络设计的简化版本。虽然COAP基于UDP,但它应该具备ACK消息以模拟TCP。由于COAP比HTTP更简单,因此它将具有较低的延迟和更少的能量消耗。

那么,为什么浏览器和Web服务器不用COAP替换HTTP呢?考虑到先前的论点,是否预计COAP将完全取代HTTP?这只是时间问题吗?是否存在仅受HTTP支持的功能?

4个回答

11
如果coap更加高效,那么如果我们将它们替换为coap,可以说http在未来是无用的吗? 工业计划是通过转向HTTP/2来改进HTTP,并且HTTP/2包括(除其他特性外)标头压缩,这应该为您带来与CoAP类似的好处。 虽然大多数Web服务器和一些浏览器今天已经支持HTTP/2,但据我所知,没有任何浏览器或任何服务器支持CoAP。对于TLS vs. DTLS也是如此。
CoAP还有http不能支持的功能吗? 正如您所说,HTTP基于TCP,而CoAP基于UDP。 UDP要求您每隔几秒钟发送UDP ping以保持NAT /防火墙连接打开状态,而在TCP中通常仅需要每15分钟左右。 因此,如果您需要保持连接打开(例如用于推送技术),则CoAP比HTTP(和HTTP/2)不太有效率。

CoAP和HTTP-TCP + UDP(在IPv6上)是相同的吗? - user248884
由于CoAP不是HTTP,因此“CoAP over UDP”类似于“TCP over HTTP”。有代理提供此转换,请参见https://stackoverflow.com/questions/43992052/how-to-transform-coap-to-http。 - Stefan Vaillant

7
CoAP并不是要取代HTTP,尽管它看起来像在“模拟”HTTP,但这只是因为它遵循了RESTful的规范。CoAP的目的是作为设备应用层,更具体地说是为约束性设备而设计的。
RESTful设计也是为了便于通过http进行代理操作(在RFC中有建议)。但同样,它并没有意图去替代HTTP。
CoAP是根据小型资源构建的。小型标头和不同的CoAP特性的存在是为了确保约束性设备在Internet上有一种标准的通信方式。
HTTP和CoAP各自都有其独特的用途。

3

CoAP和HTTP可用于不同的目的。CoAP已被实现用于物联网和M2M环境,换句话说,使用UDP发送短消息。例如:

典型的CoAP交换由2个消息组成,即请求和响应。相反,HTTP请求首先需要客户端建立TCP连接,然后再终止它。这至少需要9条消息才能完成一个请求[11]。请注意,对于大负载而言,这个论点并不一定正确。在TCP的慢启动阶段之后,它能够一次发送多个数据包,并用单个确认来确认所有数据包。但是,CoAP的块传输[8]需要对每个块进行确认,并导致更多的消息和更长的传输时间。由于我们预计大多数CoAP消息都会比较短,因此这并不重要。但是,CoAP的块传输机制允许约束性服务器逐块接收和处理大型请求。如果我们使用HTTP和TCP,则无法实现这一点。 (物联网云服务的可伸缩性作者:Martin Lanter)

实际上,Firefox可以使用Copper(CU)插件支持CoAP。 ;)


2

CoAP被优化用于典型的物联网(IoT)和机器对机器(M2M)应用中常见的资源受限网络和设备。它比HTTP使用更少的资源,可以提供WSN、IoT和M2M通信环境。它不是为了取代HTTP。

HTTP有不同的应用场景,而CoAP则有不同的应用场景。HTTP主要是为互联网设备设计的,在这些设备中,功率和其他限制并不重要。由于使用TCP,HTTP比CoAP更可靠。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接