WebRTC — ارتباط بلادرنگ همتا به همتا

تماس صوتی و تصویری مستقیم بین دو مرورگر. سرور سیگنالینگ فقط پیشنهادها را رد و بدل می‌کند، STUN آدرس عمومی را کشف می‌کند و رسانه مستقیماً و رمزشده بین دو همتا جریان دارد.

  • لایهٔ OSI: 7 (کاربرد)
  • انتقال: UDP (عمدتاً)
  • پورت: پویا + 3478 (STUN)
  • استاندارد: W3C + RFC 8825
  • سطح: پیشرفته · حدود 8 دقیقه

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

  • WebRTC ارتباط همتا به همتا برای صدا، تصویر و داده در مرورگر است.
  • سیگنالینگ استاندارد نشده؛ هر روشی (WebSocket، HTTP) قابل استفاده است.
  • ICE با STUN آدرس عمومی را کشف می‌کند و اگر اتصال مستقیم ممکن نباشد از رلهٔ TURN کمک می‌گیرد.
  • رمزنگاری اجباری است: DTLS برای کلید و SRTP برای رسانه.

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

  1. STUN Binding: مرورگر از سرور STUN می‌پرسد «آدرس عمومی من چیست؟» تا کاندیدای مناسب ICE بسازد.
  2. Binding Success: سرور آدرس و پورتی را که بسته از آن رسیده برمی‌گرداند؛ XOR شده تا NATهای کنجکاو آن را بازنویسی نکنند.
  3. SDP Offer: پیشنهاد SDP شامل کدک‌ها، کاندیداها و اثرانگشت DTLS از طریق سرور سیگنالینگ (معمولاً WebSocket) فرستاده می‌شود.
  4. SDP Offer: سرور سیگنالینگ فقط پیام را جابه‌جا می‌کند و در مسیر رسانه قرار نمی‌گیرد.
  5. SDP Answer: سولماز پاسخ می‌دهد و کاندیداهای خودش را اعلام می‌کند.
  6. بررسی ICE: دو طرف مستقیماً برای هم STUN می‌فرستند تا NATها باز شوند (hole punching) و بهترین مسیر انتخاب شود.
  7. DTLS: روی همان مسیر یک دست‌دهی DTLS انجام می‌شود؛ اثرانگشت گواهی باید با مقدار اعلام‌شده در SDP یکی باشد.
  8. SRTP صدا: صدا با کدک Opus در بسته‌های RTP رمزشده (SRTP) با کمترین تأخیر جریان دارد.

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

  • SIP — پروتکل شروع نشست (تلفن IP)
  • RTSP — پروتکل پخش جریانی بلادرنگ
  • RTMP — پروتکل پیام‌رسانی بلادرنگ