HTTP主要用于查看网页,而Coap是专为物联网或无线传感器网络设计的简化版本。虽然COAP基于UDP,但它应该具备ACK消息以模拟TCP。由于COAP比HTTP更简单,因此它将具有较低的延迟和更少的能量消耗。
那么,为什么浏览器和Web服务器不用COAP替换HTTP呢?考虑到先前的论点,是否预计COAP将完全取代HTTP?这只是时间问题吗?是否存在仅受HTTP支持的功能?
CoAP和HTTP可用于不同的目的。CoAP已被实现用于物联网和M2M环境,换句话说,使用UDP发送短消息。例如:
典型的CoAP交换由2个消息组成,即请求和响应。相反,HTTP请求首先需要客户端建立TCP连接,然后再终止它。这至少需要9条消息才能完成一个请求[11]。请注意,对于大负载而言,这个论点并不一定正确。在TCP的慢启动阶段之后,它能够一次发送多个数据包,并用单个确认来确认所有数据包。但是,CoAP的块传输[8]需要对每个块进行确认,并导致更多的消息和更长的传输时间。由于我们预计大多数CoAP消息都会比较短,因此这并不重要。但是,CoAP的块传输机制允许约束性服务器逐块接收和处理大型请求。如果我们使用HTTP和TCP,则无法实现这一点。 (物联网云服务的可伸缩性作者:Martin Lanter)
实际上,Firefox可以使用Copper(CU)插件支持CoAP。 ;)
CoAP被优化用于典型的物联网(IoT)和机器对机器(M2M)应用中常见的资源受限网络和设备。它比HTTP使用更少的资源,可以提供WSN、IoT和M2M通信环境。它不是为了取代HTTP。
HTTP有不同的应用场景,而CoAP则有不同的应用场景。HTTP主要是为互联网设备设计的,在这些设备中,功率和其他限制并不重要。由于使用TCP,HTTP比CoAP更可靠。