UDP: چیست، پروتکل بدون برقراری اتصال و چگونه کار می‌کند

نویسنده: IT Sectr منتشر شده: 2026-03-06 زمان مطالعه: 8 دقیقه

UDP (User Datagram Protocol) — پروتکل انتقال داده بدون برقراری اتصال است که روی IP کار می‌کند و حداقل تأخیر را هنگام ارسال دیتاگرام‌ها فراهم می‌کند. برخلاف TCP، UDP تحویل، ترتیب بسته‌ها یا محافظت در برابر تکرار را تضمین نمی‌کند. طبق داده‌های IETF RFC 768 (2024)، UDP بیش از 40٪ از ترافیک جهانی اینترنت را از طریق تماس‌های تصویری، استریمینگ و درخواست‌های DNS پردازش می‌کند.

نکات کلیدی

  • UDP — پروتکلی بدون برقراری اتصال که دیتاگرام‌ها را بدون تأیید تحویل ارسال می‌کند
  • حداقل تأخیر به دلیل نبود handshake، کنترل ازدحام و ارسال مجدد حاصل می‌شود
  • کاربرد دارد در تماس‌های تصویری، بازی‌های آنلاین، DNS، DHCP و پخش زنده
  • دیتاگرام UDP دارای هدر تنها 8 بایت در مقابل 20–60 بایت TCP است
  • از دست رفتن بسته‌ها در سطح برنامه از طریق FEC، ارسال مجدد یا افزونگی داده جبران می‌شود

UDP چیست؟

UDP (User Datagram Protocol) — یکی از پروتکل‌های کلیدی لایه حمل مدل TCP/IP است که توسط دیوید رید در سال 1980 توسعه یافت. این پروتکل حداقل مکانیسم انتقال داده را فراهم می‌کند: برنامه یک دیتاگرام ارسال می‌کند و پروتکل ردیابی نمی‌کند که آیا به گیرنده رسیده است یا خیر.

هدر UDP تنها از چهار فیلد تشکیل شده است: پورت مبدأ، پورت مقصد، طول و جمع کنترلی. هر فیلد 2 بایت را اشغال می‌کند، بنابراین اندازه کل هدر 8 بایت است. برای مقایسه، هدر TCP بدون گزینه‌ها 20 بایت و با گزینه‌ها تا 60 بایت را اشغال می‌کند.

پروتکل از قطعه‌بندی در سطح خود پشتیبانی نمی‌کند — اگر دیتاگرام از MTU (Maximum Transmission Unit) تجاوز کند، در سطح IP قطعه‌بندی می‌شود. با از دست رفتن یک قطعه، کل دیتاگرام رد می‌شود، زیرا UDP قادر به درخواست ارسال مجدد قطعات جداگانه نیست. توسعه‌دهندگان باید اندازه دیتاگرام را کنترل کنند — برای شبکه‌های موبایل MTU اغلب 1400 بایت است، بنابراین حداکثر اندازه نباید از این مقدار تجاوز کند.

UDP چگونه کار می‌کند

برنامه‌ای که از UDP استفاده می‌کند، یک سوکت از نوع SOCK_DGRAM ایجاد می‌کند، پورت و آدرس IP مقصد را مشخص می‌کند و دیتاگرام را ارسال می‌کند. پروتکل یک هدر حداقلی اضافه می‌کند و بسته را به لایه IP تحویل می‌دهد. گیرنده به پورت خود گوش می‌دهد و داده‌ها را از دیتاگرام‌های دریافتی استخراج می‌کند.

UDP کنترل ازدحام را انجام نمی‌دهد — برنامه می‌تواند دیتاگرام‌ها را با حداکثر سرعتی که شبکه پشتیبانی می‌کند ارسال کند. این می‌تواند منجر به ازدحام کانال شود، اما در سناریوهای بلادرنگ چنین تهاجمی موجه است: برای تماس تصویری، جریان داده با احتمال از دست رفتن مهم‌تر از توقف انتقال است.

python
import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(b'Hello, UDP!', ('192.168.1.100', 8888))
sock.close()

در مثال، یک سوکت SOCK_DGRAM برای UDP ایجاد می‌شود. متد sendto دیتاگرام را بدون برقراری اتصال ارسال می‌کند — دانستن IP و پورت گیرنده کافی است. متد recvfrom در سمت سرور هم داده‌ها و هم آدرس فرستنده را برای پاسخ برمی‌گرداند. سوکت‌های UDP در پلتفرم‌های موبایل به طور مشابه پیکربندی می‌شوند، اما به مجوزهای اضافی نیاز دارند: در iOS باید NSAppTransportSecurity برای اتصالات UDP رمزنگاری‌نشده اضافه کرد و در Android — مجوز INTERNET در مانیفست.

مزایا و معایب UDP

انتخاب UDP در سناریوهایی توجیه‌پذیر است که سرعت از قابلیت اطمینان مهم‌تر است. پروتکل زمانی را صرف برقراری اتصال، تأییدها و ارسال مجدد نمی‌کند — این حداقل تأخیر را فراهم می‌کند، اما نیازمند رسیدگی مستقل به از دست رفتن‌ها توسط توسعه‌دهنده است.

مزایامعایب
تأخیر کم — بدون handshakeبدون تضمین تحویل
هدر کوچک‌تر — 8 بایتبدون کنترل ازدحام
پشتیبانی از broadcast و multicastاحتمال تکرار بسته‌ها
استقلال دیتاگرام‌ها — بدون صفاندازه دیتاگرام محدود به MTU

در برنامه‌های موبایل، UDP از طریق فریمورک‌هایی مانند WebRTC استفاده می‌شود که کنترل از دست رفتن، نرخ بیت تطبیقی و بافر jitter را روی UDP اضافه می‌کنند. این مزایای سرعت را بدون معایب پروتکل خام فراهم می‌کند.

جنبه مهم دیگر UDP عدم وجود کنترل ازدحام است. در TCP، الگوریتم‌های Slow Start و Congestion Avoidance سرعت انتقال را با از دست رفتن بسته کاهش می‌دهند تا شبکه بیش از حد بارگذاری نشود. UDP چنین مکانیسم‌هایی ندارد، بنابراین توسعه‌دهندگان باید استراتژی‌های کنترل سرعت خود را پیاده‌سازی کنند — به عنوان مثال، نرخ بیت تطبیقی در تماس‌های تصویری یا محدودیت نرخ در سرورهای بازی برای جلوگیری از بارگذاری بیش از حد کانال شبکه.

UDP در کجا استفاده می‌شود

UDP در سناریوهایی ضروری است که تحمل تأخیر مهم‌تر از تحمل از دست رفتن بسته است. بیایید حوزه‌های اصلی کاربرد پروتکل در توسعه موبایل و وب را بررسی کنیم.

استریمینگ صدا و تصویر

پروتکل‌های RTP و RTSP که روی UDP کار می‌کنند، برای انتقال جریان‌های صوتی و تصویری در زمان واقعی استفاده می‌شوند. WebRTC — استاندارد تماس‌های تصویری در مرورگرها و برنامه‌های موبایل — از UDP به عنوان حمل‌ونقل اصلی برای داده‌های رسانه‌ای و از TCP برای سیگنالینگ استفاده می‌کند. از دست رفتن یک بسته در ویدیوی 30 فریم در ثانیه برای کاربر نامحسوس است، برخلاف تأخیر ارسال مجدد که باعث افت قابل توجه تصویر می‌شود.

بازی‌های آنلاین

تیراندازی‌های چندنفره و MOBA برای هماهنگ‌سازی صحیح به تأخیر کمتر از 50 میلی‌ثانیه نیاز دارند. UDP موقعیت بازیکنان، شلیک‌ها و رویدادها را سریع‌تر از TCP منتقل می‌کند و از دست رفتن بسته به سادگی نادیده گرفته می‌شود — به‌روزرسانی بعدی طی 16–33 میلی‌ثانیه می‌رسد. موتورهای بازی محبوب، از جمله Unity و Unreal Engine، از UDP از طریق لایه‌های حمل‌ونقل خود با افزودن قابلیت اطمینان برای رویدادهای بحرانی از طریق تأیید در سطح برنامه استفاده می‌کنند.

DNS و DHCP

درخواست‌های DNS از UDP در پورت 53 استفاده می‌کنند، زیرا هر درخواست یک دیتاگرام کوچک (معمولاً تا 512 بایت) است. اگر پاسخی نرسد، مشتری به سادگی درخواست را پس از تایم‌اوت تکرار می‌کند که سریع‌تر از برقراری اتصال TCP با دست‌دهی سه مرحله‌ای آن است. DHCP نیز روی UDP کار می‌کند، زیرا مشتری هنوز آدرس IP ندارد و نمی‌تواند اتصال TCP برقرار کند، و بسته‌های پخش UDP امکان یافتن سرور DHCP در شبکه محلی را فراهم می‌کنند.

مقایسه UDP و TCP

انتخاب بین UDP و TCP یک مصالحه بین سرعت و قابلیت اطمینان است. هر پروتکل برای دسته وظایف خود بهینه است و درک تفاوت‌های آنها به تصمیم‌گیری معماری صحیح در طراحی تعاملات شبکه در برنامه‌های موبایل کمک می‌کند.

معیارUDPTCP
برقراری اتصالنیاز نیستدست‌دهی سه مرحله‌ای
هدر8 بایت20–60 بایت
تضمین تحویلخیربله، با تأیید
ترتیب‌بندیخیربله
کنترل ازدحامخیربله (AIMD، Slow Start)
کاربرداستریمینگ، بازی‌ها، DNSوب، ایمیل، فایل‌ها، API

در پروژه‌های موبایل اغلب از رویکرد ترکیبی استفاده می‌شود: TCP برای درخواست‌های قابل اعتماد (احراز هویت، بارگذاری داده) و UDP برای جریان‌های رسانه‌ای. QUIC — پروتکل مدرن گوگل که روی UDP کار می‌کند — سرعت UDP را با قابلیت اطمینان TCP ترکیب می‌کند و در HTTP/3 استفاده می‌شود.

نمونه کد UDP

بیایید یک سرور ساده UDP در پایتون را بررسی کنیم که پیام‌ها را از مشتریان دریافت می‌کند و پاسخ ارسال می‌کند. سرور به پورت 8888 گوش می‌دهد و دیتاگرام‌های دریافتی را در یک حلقه بی‌نهایت پردازش می‌کند.

python
import socket

server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server.bind(('0.0.0.0', 8888))
print('سرور UDP روی پورت 8888 راه‌اندازی شد')

while True:
    data, addr = server.recvfrom(1024)
    print(f'دریافت شده از {addr}: {data.decode()}')
    server.sendto(b'OK', addr)

سرور یک سوکت UDP ایجاد می‌کند، به پورت 8888 متصل می‌شود و منتظر دیتاگرام‌های دریافتی می‌ماند. recvfrom داده‌ها و آدرس مشتری را برمی‌گرداند که امکان پاسخ از طریق sendto را فراهم می‌کند. برخلاف TCP، سرور وضعیت اتصال را ذخیره نمی‌کند — هر دیتاگرام مستقل پردازش می‌شود. این سرورهای UDP را مقیاس‌پذیر می‌کند: یک سرور می‌تواند میلیون‌ها مشتری را بدون تخصیص حافظه برای هر اتصال جداگانه پردازش کند، که برای سرورهای DNS و سیستم‌های همسان‌سازی بازی مهم است.

در توسعه موبایل، UDP اغلب از طریق کتابخانه‌های سطح بالا استفاده می‌شود. برای مثال، CocoaAsyncSocket برای iOS سوکت‌های UDP را با delegate و GCD برای پردازش ناهمگام رویدادها فراهم می‌کند. در Android، کلاس DatagramSocket بخشی از کتابخانه استاندارد java.net است و به وابستگی‌های اضافی نیاز ندارد. برای Flutter بسته udp وجود دارد که یک رابط ساده برای ارسال و دریافت دیتاگرام بدون پیکربندی سوکت‌های بومی فراهم می‌کند.

توجه به این نکته مهم است که بسیاری از شبکه‌های موبایل و فایروال‌های شرکتی ترافیک UDP را مسدود می‌کنند، به ویژه در پورت‌های بالاتر از 1024. اگر برنامه شما از UDP استفاده می‌کند، باید fallback روی TCP یا بررسی دسترسی پروتکل از طریق سرورهای STUN، همانطور که WebRTC انجام می‌دهد، پیش‌بینی شود. در iOS، فریمورک سیستمی Network.framework با NWConnection از هر دو TCP و UDP پشتیبانی می‌کند و به طور خودکار پروتکل بهینه را بر اساس دسترسی انتخاب می‌کند. برای برنامه‌های بلادرنگ همچنین توصیه می‌شود نرخ بیت تطبیقی پیاده‌سازی شود که کیفیت جریان را با از دست رفتن بسته کاهش می‌دهد و تداوم پخش را حتی در کانال‌های ناپایدار با سطح خطای بالا تضمین می‌کند.

سوالات متداول

UDP چه تفاوتی با TCP دارد؟

UDP اتصال برقرار نمی‌کند و تحویل بسته‌ها را تضمین نمی‌کند، که آن را سریع‌تر از TCP می‌کند. هدر UDP — 8 بایت در مقابل 20–60 بایت TCP. UDP برای استریمینگ و بازی‌ها مناسب است، TCP — برای درخواست‌های وب و انتقال فایل.

دیتاگرام در UDP چیست؟

دیتاگرام — یک بسته داده مستقل با هدر UDP (پورت مبدأ، پورت مقصد، طول، جمع کنترلی) است. هر دیتاگرام بدون ارتباط با دیتاگرام‌های قبلی مستقل پردازش می‌شود. اندازه دیتاگرام توسط MTU شبکه محدود می‌شود و طبق مشخصات تا 65507 بایت است.

قابلیت اطمینان هنگام استفاده از UDP چگونه تأمین می‌شود؟

UDP قابلیت اطمینان را در لایه حمل تأمین نمی‌کند — برنامه آن را پیاده‌سازی می‌کند. توسعه‌دهندگان شماره توالی، جمع کنترلی، درخواست مجدد و تصحیح خطا اضافه می‌کنند. FEC (Forward Error Correction) امکان بازیابی بسته‌های از دست رفته را بدون ارسال مجدد فراهم می‌کند.

چه زمانی نباید از UDP استفاده کرد؟

UDP برای سناریوهایی که یکپارچگی داده حیاتی است مناسب نیست: انتقال فایل، تراکنش‌های بانکی، REST-API. در این موارد TCP تضمین می‌کند که هر بایت به ترتیب صحیح می‌رسد. UDP همچنین در کانال‌های ناپایدار با سطح از دست رفتن بالا توصیه نمی‌شود.

QUIC چیست و چه ارتباطی با UDP دارد؟

QUIC — پروتکل حمل‌ونقلی است که روی UDP کار می‌کند، توسط گوگل توسعه یافته و توسط IETF به عنوان RFC 9000 استاندارد شده است. این پروتکل سرعت UDP را با قابلیت اطمینان TCP ترکیب می‌کند، از مالتی‌پلکسینگ بدون مسدودسازی و رمزنگاری داخلی پشتیبانی می‌کند. HTTP/3 از QUIC به عنوان لایه حمل‌ونقل استفاده می‌کند.

خلاصه

  • UDP — پروتکل بدون برقراری اتصال با حداقل تأخیر و هدر 8 بایت
  • تضمین نمی‌کند تحویل، ترتیب بسته‌ها یا محافظت در برابر تکرار
  • کاربرد دارد در تماس‌های تصویری، بازی‌های آنلاین، DNS، DHCP و پخش زنده
  • انتخاب UDP یا TCP به تعادل سرعت و قابلیت اطمینان در سناریوی خاص بستگی دارد
  • از دست رفتن بسته‌ها در سطح برنامه از طریق FEC، درخواست مجدد یا افزونگی جبران می‌شود
  • QUIC روی UDP سرعت UDP را با قابلیت اطمینان TCP در پروتکل HTTP/3 ترکیب می‌کند
  • توسعه‌دهندگان باید اندازه دیتاگرام را کنترل کرده و در صورت مسدود شدن یا فیلتر شدن UDP در شبکه، fallback روی TCP را پیش‌بینی کنند

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید