# CoAP — پروتکل کاربرد محدود

> HTTP سبک برای حسگرهای باتری‌خور و کم‌توان: همان روش‌های GET و PUT و کدهای پاسخ، ولی با سرآیند ۴ بایتی روی UDP. با گزینهٔ Observe، حسگر هر تغییر را خودش خبر می‌دهد.

- نشانی درس تعاملی: https://npe.ikral.ir/p/coap
- دسته: صنعتی و اینترنت اشیا
- لایهٔ OSI: ۷ (کاربرد)
- انتقال: UDP (یا DTLS)
- پورت: 5683 / 5684
- استاندارد: RFC 7252 / 7641 (۲۰۱۴)
- رمزنگاری: اختیاری
- سطح: متوسط · حدود ۷ دقیقه
- پشتهٔ لایه‌ها: Ethernet → IPv4 → UDP → CoAP

## نکته‌های کلیدی

- چهار نوع پیام داریم: CON (نیازمند تأیید)، NON، ACK و RST؛ قابلیت اطمینان را خود CoAP روی UDP می‌سازد.
- کدها شبیه HTTP‌اند: ۲٫۰۵ محتوا، ۲٫۰۴ تغییر کرد، ۴٫۰۴ پیدا نشد؛ دروازه‌ها به‌راحتی CoAP را به HTTP ترجمه می‌کنند.
- برای امنیت از DTLS روی پورت 5684 یا OSCORE استفاده کنید؛ CoAP بدون رمز را هرگز رو به اینترنت باز نگذارید (در حملات تقویت DDoS سوءاستفاده شده است).

## مراحل شبیه‌سازی (۶ بسته)

1. **GET با Observe**: دروازه دمای اتاق را می‌خواهد و با گزینهٔ Observe مشترک تغییرات می‌شود. نوع CON یعنی این پیام باید تأیید شود. — فیلدها: نسخه / نوع / طول توکن، کد، شناسهٔ پیام، توکن، گزینهٔ Observe، گزینهٔ Uri-Path، مسیر
2. **پاسخ همراه تأیید**: حسگر در همان پیام ACK پاسخ را هم می‌دهد (Piggybacked): کد ۲٫۰۵ یعنی محتوا، معادل 200 OK در HTTP. — فیلدها: نسخه / نوع / طول توکن، کد، شناسهٔ پیام، توکن، گزینهٔ Observe، گزینهٔ Content-Format، نشانگر بار، بار
3. **اعلان تغییر**: دما بالا رفت. حسگر بدون پرسش دوباره، خودش اعلان می‌فرستد. نوع NON یعنی تأیید لازم نیست و باتری کمتری مصرف می‌شود. — فیلدها: نسخه / نوع / طول توکن، کد، شناسهٔ پیام، توکن، گزینهٔ Observe، گزینهٔ Content-Format، نشانگر بار، بار
4. **PUT گم شد**: دروازه به شیر رادیاتور فرمان بستن می‌دهد ولی بسته در شبکهٔ بی‌سیم گم می‌شود. — فیلدها: نسخه / نوع / طول توکن، کد، شناسهٔ پیام، توکن، گزینهٔ Uri-Path، مسیر، گزینهٔ Content-Format، نشانگر بار، بار
5. **ارسال دوباره**: ACK در مهلت ۲ تا ۳ ثانیه نرسید؛ دروازه همان پیام را با همان شناسهٔ پیام می‌فرستد و مهلت بعدی را دو برابر می‌کند. — فیلدها: نسخه / نوع / طول توکن، کد، شناسهٔ پیام، توکن، گزینهٔ Uri-Path، مسیر، گزینهٔ Content-Format، نشانگر بار، بار
6. **2.04 Changed**: شیر بسته شد و تأیید می‌کند. اگر پیام تکراری می‌رسید، شیر از روی شناسهٔ پیام آن را تشخیص می‌داد و دوباره اجرا نمی‌کرد. — فیلدها: نسخه / نوع / طول توکن، کد، شناسهٔ پیام، توکن

## پرسش‌های رایج

### CoAP چیست؟

CoAP (پروتکل کاربرد محدود) HTTP سبک برای حسگرهای باتری‌خور و کم‌توان: همان روش‌های GET و PUT و کدهای پاسخ، ولی با سرآیند ۴ بایتی روی UDP. با گزینهٔ Observe، حسگر هر تغییر را خودش خبر می‌دهد.

### CoAP در کدام لایهٔ شبکه کار می‌کند؟

در لایهٔ ۷ مدل OSI (کاربرد)؛ انتقال: UDP (یا DTLS)؛ پورت: 5683 / 5684. دسته: صنعتی و اینترنت اشیا.

### استاندارد CoAP کدام است؟

CoAP در RFC 7252 / 7641 تعریف شده است (۲۰۱۴).

### کد پاسخ 2.05 در CoAP معادل کدام کد HTTP است؟

200 OK (Content).

### مهم‌ترین نکته‌های CoAP چیست؟

چهار نوع پیام داریم: CON (نیازمند تأیید)، NON، ACK و RST؛ قابلیت اطمینان را خود CoAP روی UDP می‌سازد. کدها شبیه HTTP‌اند: ۲٫۰۵ محتوا، ۲٫۰۴ تغییر کرد، ۴٫۰۴ پیدا نشد؛ دروازه‌ها به‌راحتی CoAP را به HTTP ترجمه می‌کنند. برای امنیت از DTLS روی پورت 5684 یا OSCORE استفاده کنید؛ CoAP بدون رمز را هرگز رو به اینترنت باز نگذارید (در حملات تقویت DDoS سوءاستفاده شده است).

## درس‌های مرتبط

- [Modbus/TCP — پروتکل صنعتی مادباس](https://npe.ikral.ir/p/modbus.md)
- [MQTT — پیام‌رسانی سبک اینترنت اشیا](https://npe.ikral.ir/p/mqtt.md)

## منابع

- https://www.rfc-editor.org/rfc/rfc7252
- https://www.rfc-editor.org/rfc/rfc7641

---
منبع: کاوشگر پروتکل‌های شبکه (iKral NPE — Network Protocol Explorer) · https://npe.ikral.ir/
