HTTP (HyperText Transfer Protocol) และ MQTT (MQ Telemetry Transport) เป็นโปรโตคอลสื่อสารที่แตกต่างกันอย่างสิ้นเชิง ทั้งในแนวคิด การทำงาน และกรณีการใช้งาน
HTTP (HyperText Transfer Protocol)
โปรโตคอลมาตรฐานของเว็บ ใช้โมเดล Request-Response (Client-Server)
ลักษณะสำคัญ
- Stateless: ไม่เก็บสถานะระหว่างคำขอแต่ละครั้ง
- Text-based: ส่งข้อมูลเป็นข้อความ (Header + Body)
- Overhead สูง: Header ใหญ่ ทุกคำขอต้องสร้างการเชื่อมต่อใหม่ (HTTP/1.1) หรือใช้ Keep-Alive
- Pull-based: Client ต้องขอ (Request) ทุกครั้งที่ต้องการข้อมูล
ขั้นตอนการดึงหน้าเว็บ
- Client ส่ง Request ไปยัง Web Server
- Server วิเคราะห์และส่ง Response กลับพร้อม HTML
- Client แสดง HTML และดึงทรัพยากรเพิ่มเติม (รูป, CSS, JS)
MQTT (MQ Telemetry Transport)
โปรโตคอลแบบ Publish/Subscribe (Pub/Sub) เน้นความเบา สำหรับ IoT และเครือข่ายที่ไม่เสถียร
ลักษณะสำคัญ
- Lightweight: Header ขนาดเล็ก (ขั้นต่ำ 2 ไบต์)
- Stateful: รักษาการเชื่อมต่อ (Persistent Connection)
- Push-based: Server (Broker) ส่งข้อมูลไปยัง Client อัตโนมัติเมื่อมีข้อมูลใหม่
- Topic-based: ข้อมูลจัดระเบียบเป็นหัวข้อ (Topic) แบบลำดับชั้น
- QoS (Quality of Service): 3 ระดับ (0, 1, 2) รับประกันการส่งมอบ
สถาปัตยกรรม
- Broker: เซิร์ฟเวอร์กลางรับ-ส่งข้อความ
- Publisher: ส่งข้อมูลไปยัง Topic
- Subscriber: สมัครรับข้อมูลจาก Topic
ตารางเปรียบเทียบ
| ด้าน | HTTP | MQTT |
|---|---|---|
| รูปแบบการสื่อสาร | Request/Response | Publish/Subscribe |
| ทิศทางข้อมูล | Client → Server (Pull) | Broker → Client (Push) |
| Header Overhead | สูง (~200-800 ไบต์) | ต่ำมาก (2 ไบต์ขึ้นไป) |
| การเชื่อมต่อ | Short-lived / Stateless | Long-lived / Stateful |
| Bandwidth | สูง | ต่ำมาก |
| ความน่าเชื่อถือ (QoS) | ไม่มี (พึ่ง TCP) | มี 3 ระดับ (QoS 0,1,2) |
| เหมาะสำหรับ | เว็บ, REST API, โหลดหน้าเว็บ | IoT, Real-time, Mobile, Low bandwidth |
เมื่อไหร่ควรใช้โปรโตคอลไหน?
- HTTP: เว็บไซต์, REST API, การอัปโหลดไฟล์, การขอข้อมูลครั้งคราว
- MQTT: IoT sensors, Real-time chat, Push notifications, ระบบควบคุมระยะไกล, เครือข่ายไม่เสถียร