CoAP (Constrained Application Protocol) ถูกออกแบบให้คล้ายกับ HTTP ซึ่งเป็น Document transfer protocol แต่มีขนาดเล็กกว่ามาก (มี header แบบคงที่ขนาด 4 byte) รันบน UDP ซึ่งเป็น protocol ที่ไม่มีการสร้างการเชื่อมต่อระหว่างอุปกรณ์ปลายทาง จึงส่งข้อมูลได้เร็วมากแต่ไม่การันตีว่าข้อมูลจะถูกส่งไปยังปลายทางอย่างแน่นอนและถูกต้องตามลำดับ การส่งซ้ำและเรียงลำดับข้อมูลต้องไปทำบนระดับแอปพลิเคชัน

CoAP เป็นสถาปัตยกรรมแบบ Client/Server โดย client จะทำการร้องขอทรัพยากรไปที่ server โดยตรง จากนั้น server จะทำการตอบกลับคำร้องพร้อมกับออพชัน ‘Content-Type’ เพื่อว่าบอก client ว่ากำลังจะได้รับข้อมูลในรูปแบบไหนกลับไป เช่น JSON, XML, CBOR เป็นต้น โดย client สามารถ GET, PUT, POST และ DELETE ทรัพยากรบน Server ด้วย URL และ query string คล้ายกับ REST API

รูป CoAP

CoAP มีความคล้ายคลึงกับ HTTP ทำให้การดึงข้อมูลจากเซ็นเซอร์ไม่ต่างจากการดึงข้อมูลผ่าน Web API โดยเปรียบ CoAP ได้ว่าเป็น REST API สำหรับ MCU นั่นเอง ทั้งยังเป็นโปรโตคอลที่มีความปลอดภัย เพราะมีการเข้ารหัสแบบ DTLS (เทียบเท่ากับ 3072-bit RSA key) ซึ่งสามารถรันบนอุปกรณ์ขนาดเล็กได้

CoAP ออกแบบมาสำหรับการแลกเปลี่ยนข้อมูลแบบ one-to-one เหมาะสำหรับแอปพลิเคชันแบบกระจายศูนย์ ที่มีอุปกรณ์อยู่บนเครือข่ายเดียวกันสามารถติดต่อกันได้โดยตรง

การนำแต่ละโปรโตคอลใดไปใช้ขึ้นอยู่กับสถาปัตยกรรมของระบบและข้อจำกัดทางด้านทรัพยากรทางด้านเครือข่าย จึงต้องเลือกเครื่องมือให้เหมาะสมกับงาน ในระบบที่มีความซับซ้อนมากๆ อาจจะประยุกต์ใช้พร้อมกันหลายๆ โปรโตคอลตามแต่ความเฉพาะเจาะจงของแอปพลิเคชันเพื่อให้บรรลุเป้าหมายในการทำงานได้อย่างมีประสิทธิภาพสูงสุด