Udp چیست و چه تفاوتی با Tcp دارد؟
در این مقاله میخوانید
حتما برای شما هم پیش آمده که وسط یک بازی آنلاین یا تماشای زنده مسابقه فوتبال، تصویر برای یک لحظه شطرنجی میشود اما بعد دوباره همه چیز به حالت عادی برمیگردد. این اتفاق زیر سر پروتکلهایی است دادهها را جابهجا میکنند. در این مطلب از بخش آموزش امنیت در بلاگ پارسپک دو مورد از مهمترین این پروتکلها را معرفی میکنیم، توضیح میدهیم که پروتکل UDP چیست، چه تفاوتی با TCP دارد و چرا گاهی اوقات هرگز نرسیدن داده به مقصد، بهتر از دیر رسیدن است!
UDP چیست؟
وقتی آدرس یک سایت را در مرورگر خود وارد میکنید، قوانین بسیار زیادی دستبهدست هم میدهند تا صفحه به شما نشان داده شود. به مجموعه این قوانین، Internet Protocol Suite گفته میشود. این مدل لایههای متفاوتی هم دارد. اما در لایه چهارم آن به اسم Transport Layer، پروتکلی نشسته است که هدف آن، «سرعت به هر قیمتی» است. این همان پروتکل UDP است.
نام کامل این پروتکل، User Datagram Protocol (UDP) است که البته در بعضی منابع فارسی به آن پروتکل داده نگار کاربر هم گفته میشود. بنابراین بهصورت خیلی ساده و خلاصه میتوان گفت که پروتکل UDP یک روش جابهجایی و ارسال اطلاعات است که تمام هدف آن این است که دادهها در سریعترین زمان ممکن به مقصد برسند. در این پروتکل، حتی خبری از چک کردن برای اطمینان از اینکه دادهها بهسلامت به مقصد رسیدهاند هم نیست!
UDP چگونه کار میکند؟

تصور کنید میخواهید یک بسته را برای دوستتان ارسال کنید. یکی از روشها برای این کار پست بسته است. اگر چه ممکن است بسته کمی دیرتر به مقصد برسد، اما مطمئن هستید که بالاخره بسته ارسال میشود. حالا فرض کنید یک راننده جوان قبول کرده که بسته شما را با خودرو شخصی خودش به مقصد برساند. این روش اگر چه بسته را در سریعترین زمان ممکن به مقصد میرساند، اما از طرف دیگر تعهدی نسبت به رساندن بسته در آن وجود ندارد. این همان روشی است که پروتکل UDP بر اساس آن کار میکند.
این پروتکل در اصطلاح فنی یک Connectionless Protocol است؛ بهعبارت خیلی ساده یعنی قبل از فرستادن اطلاعات، هیچ هماهنگی اولیهای با گیرنده انجام نمیشود. در این روش دادهها در پکیجهایی بهنام Datagram چیده شده و به سمت مقصد ارسال میشوند.
در این نوع از ارتباط شبکه (Network Communication)، فرستنده اصلاً منتظر تایید رسیدن بسته توسط گیرنده نمیماند. این ویژگی باعث میشود تا بار پردازشی روی روترهای شبکه کمتر شود؛ مسئلهای که از مهمترین دلایل محبوبیت UDP است.
خرید سرور با لوکیشنهای متنوع از پارسپک
پارسپک بهترین ارائهدهنده سرور در ایران است که امکاناتی بینظیر و بسیار کاربردی مانند پشتیبانی ۲۴ ساعته و امکان ارتقای آنی را برایتان فراهم میکند. برای خرید سرور با این ویژگیها روی لینک زیر کلیک کنید:
کاربرد UDP چیست؟
شاید با خودتان فکر کنید که دادهای که معلوم نیست به مقصد میرسد یا نه، چه کاربردی میتواند داشته باشد؟ سؤال منطقی است؛ اما گاهی اوقات در دنیای شبکهها، دیر رسیدن بهتر از هرگز نرسیدن نیست. اجازه دهید در چند سناریو مختلف به این نتیجه برسیم که کاربرد UDP چیست. سناریوهای زیر جزو مواردی است که سرعت انتقال اطلاعات در آنها حرف اول و آخر را میزند:
- استریم ویدیو: وقتی در حال تماشای یک مسابقه زنده فوتبال هستید، اگر چند فریم تصویر گم شود شاید یک پرش کوچک ببینید، اما اگر ویدیو متوقف شود تا فریمهای گمشده دوباره دانلود شوند، ممکن است قسمت مهمی از بازی را از دست بدهید.
- بازیهای آنلاین: گیمرها بهخوبی معنی تاخیر در شبکه (Latency) را میفهمند. در بازیهای آنلاین، تشخیص اینکه دشمن کجاست باید در لحظه اتفاق بیفتد؛ حتی اگر جزئیات گرافیکی کمی ناقص باشد.
- DNS: وقتی آدرس یک سایت را در مرورگر خود وارد میکنید، این آدرس باید در کوتاهترین زمان ممکن تبدیل به IP شود. این مورد هم یکی دیگر از مواردی است که حجم داده کم است، اما سرعت در آن واقعا مهم است.
در تمامی این موارد و البته موارد مشابه دیگر، استفاده از پروتکل UDP بهدلیل نداشتن سربار اضافی، بهترین انتخاب است.
برای آشنایی دقیق با مفهوم پروتکل روی لینک زیر کلیک کنید و مقاله را بخوانید:
ساختار هدر UDP
یکی از جذابیتهای فنی UDP برای اهل فن، سبک بودن آن است. وقتی میگوییم یک پروتکل «سبک» است، مستقیماً به برچسب با همان هدر (Header) اشاره میکنیم که روی بسته های داده (Data Pocket) قرار میگیرد.
نکته:
هر هدر UDP، فقط ۸ بایت است! اگر این عدد را با حجم هدر رقیبش، یعنی TCP که حداقل ۲۰ بایت است مقایسه کنید، بیشتر متوجه سبک بودن هدر UDP میشوید.
هدر UDP از ۴ بخش ساده تشکیل شدهاست:
۱- Port Number مبدا: مشخص میکند که فرستنده کیست.
۲- Port Number مقصد: مشخص میکند که گیرنده کیست.
۳- طول بسته (Length)
۴- چکسام: یک مکانیزم کنترلی خیلی ساده که فقط بررسی میکند که آیا پکیج دادهها در طول مسیر مخدوش شدهاست یا خیر.
همین ساختار مینیمال بهروشنی پاسخ میدهد که راز چابکی UDP چیست.
ویژگیهای اصلی UDP
اگر همین الان از شما بپرسند که ویژگی پروتکل UDP چیست، احتمالاً پاسخ شما این است که پروتکل سریعی است. اما بهجز آن، این پروتکل چند ویژگی مهم دیگر هم دارد:
- امکان گم شدن دادهها: در دنیای UDP، از دست رفتن داده ها (Pocket Loss) یک فاجعه نیست؛ بلکه بخشی از طبیعت کار است. برنامهنویس باید بداند که بههر حال ممکن است برخی از دادهها به مقصد نرسند.
- دریافت دادهها بدون ترتیب: ممکن است دریافت کننده، بستهها را با همان ترتیبی که شما ارسال کردهاید، دریافت نکند. بهعنوان مثال اگر بسته ۱، ۲ و ۳ بهترتیب ارسال شوند، ممکن است در سمت مقصد با ترتیب ۳، ۱ و ۲ دریافت شوند.
- پشتیبانی از سیستم توزیع همگانی: بر خلاف بسیاری از پروتکلها، UDP میتواند یک پیام را همزمان برای کل شبکه (Broadcast) یا گروهی از افراد (Multicast) بفرستد.
آیا UDP امن است؟
با همه توضیحاتی که تا الان داده شد، حالا ممکن است این سؤال در ذهنتان ایجاد شود که با همه این سادهگیریها، آیا پروتکل UDP امن است؟ پاسخ سریع این است که خیر! این پروتکل با توجه به اینکه هیچ لایه حفاظتی ندارد، بهخودی خود پروتکل امنی محسوب نمیشود.
توضیح بیشتر اینکه در پروتکل UDP با توجه به اینکه هیچ اتصالی قبل از ارسال برقرار نمیشود، هر کسی میتواند بسته های داده را جعل کند یا حتی خودش را بهجای فرستنده جا بزند. از طرف دیگر دادهها هم بههیچ عنوان رمزنگاری نمیشوند و بهراحتی قابل شنود هستند.
از همه این موارد مهمتر، حملات DDoS از نوع UDP Flood است که در آن هکرها سرور را با سیلی از بستههای داده غیرواقعی غرق میکنند. البته همه این موارد به این معنی نیست که با استفاده از این پروتکل بههیچ وجه نمیتوان امنیت داشت؛ بلکه باید امنیت را در لایههای بالاتر یا مثلاً به کمک پروتکل لایه شبکه امنیتی مثل DTLS تأمین کرد.
تفاوت TCP و UDP چیست؟

حالا به نبرد غولها رسیدیم! بارها شنیدهایم که TCP امن و UDP سریع است. در این قسمت میخواهیم یکبار برای همیشه و بهصورت دقیقتر ببینیم که تفاوت TCP و UDP چیست.
پروتکل Transmission Control Protocol (TCP) مثل یک کارمند دقیق و وسواسی، جزئیات پکیج دادهها را بررسی میکند. بهعنوان مثال با بررسی اتصال مستقیم بین سیستم ها، فقط زمانی ارسال شروع میکند که مطمئن باشد گیرنده آماده دریافت است.
علاوه بر این، بعد از ارسال پکیجهای داده هم تکتک آنها را پیگیری میکند و اگر بههر دلیل یکی از این بستهها به مقصد نرسد، دوباره آن را ارسال میکند. بنابراین با استفاده از پروتکل TCP میتوانید مطمئن باشید که تمام پکیجهای داده به مقصد میرسند. اما UDP مثل پیک عجولی است که فقط به سریع انجام شدن کار اهمیت میدهد.
با همین توضیحات، دو نکته مهم زیر را میتوان نتیجه گرفت:
- پروتکل TCP برای ارسال ایمیل، وبگردی، انتقال فایل و بهطور کلی هر کاری است که سلامت دادهها اهمیت زیادی داشته باشد.
- پروتکل UDP برای بازیهای آنلاین، استریم ویدیویی، تماس صوتی و هر شرایط دیگری است که سرعت انتقال داده اهمیت زیادی داشته باشد.
جمعبندی
پروتکل UDP یکی از انواع پروتکل های انتقال داده است که سرعت انتقال داده را بهعنوان تنها فاکتور در نظر میگیرد. در این مطلب از بلاگ پارسپک یاد گرفتیم که UDP چیست، چرا با وجود عدم امنیت کافی، همچنان بهعنوان ستون فقرات استریمینگ ویدیویی و بازیهای آنلاین محسوب میشود و چه تفاوتی با پروتکل TCP دارد.
سوالات متداول
۱- UDP مخفف چیست؟
UDP مخفف عبارت User Datagram Protocol است که به آن «پروتکل داده نگار کاربر» هم گفته میشود.
۲- تفاوت UDP و TCP در چیست؟
تفاوت اصلی این دو پروتکل، اولویتبندی است. TCP روی «دقت و اطمینان» تمرکز دارد و تضمین میکند که تمام دادهها بهصورت کامل و سالم به مقصد برسند اما پروتکل UDP سرعت ارسال داده را مهمترین اولویت خود قرار میدهد.
۳- چرا در بازیهای آنلاین و استریم ویدیو از UDP استفاده میشود؟
با توجه به اینکه در استریم ویدیویی و بازیهای آنلاین، سرعت اهمیت بسیار زیادی دارد، از پروتکل UDP در این موارد استفاده میشود.
۴- آیا پروتکل UDP امن است؟
خیر. UDP به خودی خود هیچ لایه امنیتی یا رمزنگاری ندارد و مهاجمان میتوانند دادهها را شنود یا جعل کنند. برای امنیت در این پروتکل، باید از روشهای امنیتی جانبی یا لایههای بالاتر (مثل DTLS) استفاده کرد.

