CoAP (Constrained Application Protocol) เป็นมาตรฐานที่ถูกพัฒนาขึ้นมาใหม่โดย IETF ในปี 2014 โดยถูกออกแบบให้คล้ายกับ 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 ที่มีการแลกเปลี่ยนทรัพยากรกันโดยตรง Sensor Node ทำหน้าที่เป็นทั้ง Server และ Client ในเวลาเดียวเพราะต้องทำการตอบรับ packets ที่ถูกส่งมาหา
ในมุมของนักพัฒนาแล้ว CoAP มีความคล้ายคลึงกับ HTTP มาก ซึ่งทำให้การดึงข้อมูลจากเซ็นเซอร์ไม่ต่างจากการดึงข้อมูลผ่าน Web API เท่าไหร่นัก บางคนอาจจะเปรียบ CoAP ได้ว่าเป็น REST API สำหรับ MCU นั่นเอง อีกทั้งยังเป็นโปรโทคอลที่มีความปลอดภัย เพราะมีการเข้ารหัสแบบ DTLS (เทียบเท่ากับ 3072-bit RSA key) ซึ่งสามารถรันบนอุปกรณ์ขนาดเล็กได้
CoAP เป็นโปรโทคอลใหม่ที่กำลังถูกพัฒนาอย่างต่อเนื่องแตกต่างจาก MQTT ที่เติบโตจนอยู่ในขั้นที่เสถียรแล้ว
CoAP ออกแบบมาสำหรับการแลกเปลี่ยนข้อมูลแบบ one-to-one เหมาะสำหรับแอปพลิเคชันแบบกระจายศูนย์ ที่มีอุปกรณ์อยู่บนเครือข่ายเดียวกันสามารถติดต่อกันได้โดยตรง (ถ้าอยู่คนละเครือข่ายอาจต้องลำบากในการตั้งค่า NATนั่นเอง) ตัวอย่างแอปพลิเคชันที่มีการนำ CoAP ไปใช้แพร่หลายคือระบบ Smart Home หรือระบบที่ต้องมีการควบคุมและสั่งงานโดยผู้ใช้เป็นต้น
จะเห็นได้ว่าแต่ละโปรโทคอลมีทั้งข้อดีและข้อเสียที่แตกต่างกัน สุดท้ายแล้วการตัดสินใจว่าจะนำแต่ละโปรโทคอลใดไปใช้ขึ้นอยู่กับสถานการณ์ สถาปัตยกรรมของระบบและข้อจำกัดทางด้านทรัพยากรทางด้านเครือข่ายของแต่ละคน เราจึงต้องเลือกเครื่องมือให้เหมาะสมกับงาน ในระบบที่มีความซับซ้อนมากๆ เราอาจจะประยุกต์ใช้พร้อมกันหลายๆ โปรโทคอลตามแต่ความเฉพาะเจาะจงของแอปพลิเคชันเพื่อให้บรรลุเป้าหมายในการทำงานได้อย่างมีประสิทธิภาพสูงสุด
ไม่มีความคิดเห็น:
แสดงความคิดเห็น