۱۱ دی

udp چیست؟


udp چیست؟

وقتی از نحوه کارکردن اینترنت صحبت می‌کنیم، یکی از مهم‌ترین مسائلی که باید درک شود، نحوه ارسال و دریافت داده‌ها روی پروتکل اینترنت و درک مفهوم پرکاربرد UDP است. UDP پروتکل انتقال داده روی شبکه است؛ فرایندی که رایانه‌ها و سایر دستگاه‌های روی شبکه تحت آن به تبادل داده می‌پردازند؛ بدون آنکه به هم وصل شوند یا تاخیر زیادی اتفاق بیافتد. همه این‌ها به خاطر ویژگی‌های ذاتی این پروتکل است که قصد داریم در این مقاله به آن‌ها بپردازیم. اگر می‌خواهید بدانید udp چیست، چه کاربردی دارد و تفاوت آن با پروتکل TCP چیست، همراه ما باشید.

UDP چیست؟

مفهوم پروتکل داده‌گرام کاربر (UDP) اولین بار در سال ۱۹۸۰ به‌عنوان پروتکلی معرفی شد که امکان ارسال داده‌ها بدون نیاز به اتصال بین فرستنده و گیرنده را در شبکه‌ فراهم می‌کند. این پروتکل همانند بسیاری از پروتکل‌های دیگر شبکه، به خانواده پروتکل‌های اینترنت تعلق داشته و به عنوان واسطه بین لایه شبکه و لایه برنامه در سطح انتقال استفاده می‌شود.

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

نحوه عملکرد udp چیست؟

بعد از آشنایی با مفهوم udp نوبت به عملکرد آن می‌رسد. UDP از یک روش انتقال ساده بدون دست‌دهی (handshake) استفاده می‌کند. در استفاده از این پروتکل فرض بر آن است که بررسی خطا و تصحیح آن ضروری نیست و معمولا زمانی استفاده می‌شود که لازم است سربار تا حد ممکن کاهش یابد استفاده می‌شود.

برنامه‌ها با استفاده از پروتکل UDP اطلاعات را خیلی سریع ارسال می‌کنند؛ زیرا نه نیازی به ایجاد اتصال با کلاینت دارند و نه لازم است منتظر پاسخ باشد. فقط هیچ تضمینی وجود ندارد که بسته‌ها به طور کامل و به همان ترتیبی که ارسال شده‌اند به مقصد برسند! به علاوه این پروتکل امنیت داده‌ها را در برابر دستکاری اشخاص ثالث تضمین نمی‌کند!

برای مطالعه بیشتر مقاله منظور از کلاینت چیست را پیشنهاد می کنیم.

ساختار هدر بسته‌های دیتاگرام UDP

UDP دیتاگرام‌ها را با یک هدر UDP شامل چهار فیلد (مجموعا هشت بایت) ارسال می‌کند. فیلدهای هدر UDP عبارت‌اند از:

  • Source Port (پورت منبع)  این فیلد اولین بیت هدر و مربوط به پورت دستگاهی است که داده‌ها را ارسال می‌کند. اگر نیازی نباشد که کامپیوتر مقصد پاسخگویی به فرستنده ارسال کند، این فیلد را می‌توان روی صفر تنظیم کرد. هر دستگاه دارای چندین پورت است که هر یک از آنها برای ترافیک شبکه خاصی مورد استفاده قرار می‌گیرند.
  • Destination Port (پورت مقصد)  این فیلد مربوط به پورت دستگاهی است که داده‌ها را دریافت می‌کند و برای اطمینان از تحویل بسته‌ها به مقصد، افزودن آن اجباری است. شماره پورت UDP می‌تواند بین 0 تا 65535 متغیر باشد.
  • Segment Length (طول سگمنت)  این یک فیلد ۱۶ بیتی است که طول کل دیتاگرام (تعداد بایت‌ها شامل هدر UDP و داده‌های محموله UDP) را مشخص می‌کند. محدودیت این فیلد توسط پروتکل IP تعیین می‌شود و حداکثر اندازه میدان آن 65535 بایت (216-1) است.
  • Checksum (جمع‌آزما) – این فیلدبه دستگاه دریافت‌کننده اجازه می‌دهد صحت هدر بسته و محموله را تأیید کند. این مقدار توسط یک الگوریتم رمزنگاری ایجاد می‌شود و مانند اثر انگشت دیجیتال عمل می‌کند. اضافه کردن چک‌سام در IPv4 اختیاری و در IPv6 اجباری است.

پروتکل دیتاگرام کاربر کجا مورد‌نیاز است؟

پروتکل UDP مواقعی استفاده می‌شود که انتقال داده به سرعت بیشتر از دقت و قابلیت اطمینان نیاز داشته باشد؛ چون در مقایسه با TCP خدمات سریع‌تری ارائه می‌دهد. مادامی که جریان داده‌ها در شبکه فقط در یک جهت باشد، می‌توان از این پروتکل استفاده کرد.

چه نوع خدماتی به پروتکل UDP متکی هستند؟

UDP معمولا در ارتباطاتی بیشتر به‌کار برده می‌شود که حساس به زمان هستند و رهاکردن گهگاه بسته‌ها بهتر از انتظارکشیدن برای دریافت آنهاست. معمولا انواع ترافیک صوتی و تصویری با استفاده از این پروتکل ارسال می‌شود، چون هم نسبت به زمان حساس‌اند و هم طوری طراحی شده‌اند که از بین رفتن بخشی از داده را مدیریت کنند. برای مثال VOIP که بسیاری از خدمات تلفن مبتنی بر اینترنت استفاده می‌کنند، از طریق UDP عمل می‌کند. چون در مکالمات تلفنی ثبات همیشه به تاخیر ترجیح داده می‌شود. دو فرد که با تلفن با هم مکالمه می‌کنند، ترجیح می‌دهند یه بسته داده را از دست دهند (یک قطعی کوتاه و یک جمله را نشنوند) تا اینکه صحبت‌‌ها کلا با تاخیر رد و بدل شود. دقیقا همین ویژگی سرعت و کارایی، پروتکل UDP را به یک پروتکل ایده‌آل برای بازی‌های آنلاین تبدیل می‌کند.

ویژگی‌های UDP چیست؟

تا اینجا تقریبا دریافتیم udp چیست و به چه صورت عمل می‌کند. در این بخش می‌خواهیم برای درک بهتر این مفهوم نگاه دقیق‌تری به ویژگی‌های پروتکل User Datagram بیندازیم.

UDP بدون اتصال است

یعنی برای انتقال داده از طریق UDP بین مخاطب و گیرنده هیچ اتصالی شکل نمی‌گیرد. بسته‌های مربوطه به آدرس IP مقصد ارسال می‌شوند بدون اینکه نیاز باشد کامپیوتر مقصد پاسخ بدهد.

UDP از پورت‌ها استفاده می‌کند

UDP نیز مانند TCP از پورت برای ارسال بسته به مقصد استفاده می‌کند. در پورت‌ها برای هر سرویسی یک عدد ثابت بین ۰ تا ۱۰۲۳ اختصاص داده می شود.

UDP ارتباط سریع و بدون تاخیر را امکان‌پذیر می‌کند

هرچند اتلاف بعضی از بسته‌های منفرد بر کیفیت انتقال تاثیر می‌گذارد، از آنجایی که برای انتقال روی این پروتکل نیازی به اتصال نیست، بنابراین داده‌ها با سرعت بیشتری منتقل می‌شوند.

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

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

نبود احراز هویت متقابل میان گیرنده و سرور سرعت انتقال UDP را بالا می‌برد. با این حال، کامل بودن و امنیت بسته‌های و توالی صحیح بسته‌های ارسالی تضمین نمی‌شود؛ به همین دلیل، سرویس‌هایی که از UDP استفاده می‌کنند باید به فکر اقدامات لازم برای اصلاح این مشکل و محافظت از داده‌ها باشند.

کاربردهای UDP چیست؟

مهم‌ترین کاربردها و موارد استفاده udp چیست؟

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

کاربردهای نیازمند ارائه بهترین تلاش (best effort)

گاهی اوقات برای انتقال داده به سرویس‌های ارائه بهترین تلاش نیاز است. در چنین کاربردهایی معمولا از پروتکل UDP برای انتقال اطلاعات استفاده می‌شود. مثل برنامه‌هایی که مقادیر اندازه‌گیری شده را انتقال می‌دهند یا مرتب دستورات کاری مشابهی اجرا می‌کنند.

کاربردهایی که مکانیسم‌های خاصی برای انتقال قابل اعتماد دارند

پروتکل UDP می‌تواند برای کاربردهایی که نیازمند انتقال کامل و قابل اعتماد اطلاعات هستند هم مفید باشد؛ به این شرط که خود کاربردها مکانیزم‌های خاصی برای ارسال مطمئن اطلاعات داشته باشند. مزیت این سرویس‌ها این است که برای تضمین کامل بودن و صحت بسته‌های داده ارسالی، نیازمند الگوهای ثابتی نیستند. شما می‌توانید خودتان تصمیم بگیرید که چگونه و چه زمانی به اطلاعات نادرست یا مرتب نشده پاسخ دهید.

کاربردهای چندپخشی

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

کاربردهای بلادرنگ

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

تفاوت میان TCP و UDP چیست؟

تفاوت میان TCP و UDP چیست؟

برخلاف TCP، UDP امکانی بررسی خطا یا بازیابی بسته‌های از دست رفته حین انتقال فراهم نمی‌کند.

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

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

مزایا و معایب پروتکل UDP چیست

در این بخش با مهم‌ترین مزایا و معایب پروتکل udp آشنا می‌شویم:

مزایای پروتکل UDP

  • پشتیبانی از انتقال چندپخشی
  • قابل استفاده در کاربردهایی با پهنای باند فشرده‌
  • عدم نیاز به مدیریت گیرنده برای دریافت بسته‌های UDP
  • حداقل تاخیر انتقال به جهت عدم اتصال بین گیرنده و فرستنده حین برقراری ارتباط

معایب پروتکل UDP

معمولا در انتقال‌هایی که از پروتکل دیتاگرام کاربر استفاده می‌شود:

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

موارد استفاده از TCP و UDP در دنیای واقعی

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

موارد استفاده از TCP

  • انتقال متن: قطعا انتظار همه در ارسال و دریافت پیام‌های متنی این است که متن بدون اتلاف و به همان ترتیبی که ارسال شد، دریافت گردد. از این رو پروتکل TCP به دلیل قابلیت انتقال مطمئن و کنترل خطا در ارتباطات متنی استفاده می‌شود مانند Whatsapp، iMessage، Instagram و Google Chat.
  • انتقال فایل یا FTP: زمانی که در انتقال فایل، صحت بسته‌ها در مقصد دارای اهمیت باشد از TCP استفاده می‌شود؛ مثل مشتری و سرور FileZilla
  • پروتکل انتقال ابرمتن (HTTP): برای دسترسی به داده‌های موجود در شبکه جهانی وب از TCP استفاده می‌شود زیرا TCP از ارسال مرتب داده‌ها، کنترل خطا و کنترل جریان و ارسال مجدد بسته‌های گم شده پشتیبانی می‌کند.
  • پروتکل انتقال نامه ساده (SMTP): این یک پروتکل لایه کاربرد است که برای ارسال ایمیل از یک سیستم به سیستم دیگر استفاده می‌شود. SMTP برای برقراری ارتباط از خدمات TCP استفاده می‌کند. هنگامی که سرور SMTP درخواست اتصال را می‌پذیرد، اجازه ارسال نامه‌ها را به فرستنده می‌دهد. نمونه‌هایی از این پروتکل را در Yahoo، Gmail، Outlook و غیره می‌بینیم.

موارد استفاده از UDP

  • بازی‌های آنلاین: اکثر بازی‌های آنلاین از خدمات پروتکل UDP استفاده می‌کنند. از آنجایی که در بازی‌های آنلاین تاخیر قابل تحمل نیست، استفاده از UDP انتخاب عاقلانه‌تری است.
  • کنفرانس ویدیویی: برنامه‌های کنفرانس ویدیویی مانند Skype، Gmeet، Zoom، همگی از خدمات UDP استفاده می‌کنند؛ چراکه برنامه‌های بلادرنگ محسوب می‌شوند و نباید تاخیری در دریافت داده‌ها داشته باشند.
  • تکنولوژی انتقال صدا روی بستر شبکه (VoIP): برنامه‌هایی مانند Viber، Whatsapp، Google Hangouts از UDP برای تبدیل صدای ما به داده‌های دیجیتال و انتقال آن از طریق شبکه استفاده می‌کنند.
  • سیستم نام دامنه (DNS): DNS از UDP برای واکشی آدرس IP مربوطه استفاده می‌کند؛ زیرا زمان بارگذاری صفحات وب سرعت اهمیت زیادی دارد و UDP به‌مراتب سریع‌تر از TCP است.

UDP چطور در حملات DDoS استفاده می شود؟

در بیشتر موارد از دست رفتن بسته‌های داده در پروتکل UDP اتفاق مهمی نیست؛ با این حال برخی از همین آسیب‌پذیری در راستای اهداف مخرب سوء استفاده می‌کنند. از آنجایی که UDP نیازی به دست دادن ندارد (عدم وجود مکانیزم تأیید)، مهاجم می‌تواند بدون آنکه نیاز باشد از سرور برای شروع ارتباط اجازه بگیرد، به روش‌های مختلف به سرور مورد نظر آسیب‌ بزند و حملات DDoS را راه‌اندازی کنند. مهاجم می‌تواند بسته‌ها را با آدرس ip های دل‌خواه جعل کند و به کمک آنها مستقیما به برنامه‌ها دسترسی پیدا کند. در حالی که در پروتکل TCP فرستنده قبل از شروع ارتباط باید بسته‌ها را از گیرنده پس بگیرد.  برخی از حملات DDoS که روی سرویس‌های مرتبط با UDP شاهد آنها هستیم عبارتند از:

۱. سیل UDP

یک سیل UDP شامل حجم زیادی از بسته‌های UDP جعلی است که به چندین پورت در یک سرور واحد ارسال می‌شوند، با علم به اینکه هیچ راهی برای تأیید منبع واقعی بسته‌ها وجود ندارد. یک حمله سیل معمولی UDP تعداد زیادی دیتاگرام UDP را به پورت‌های تصادفی رایانه قربانی ارسال می‌کند. این امر هدف را وادار می کند تا به تعداد بسته‌ها پاسخ دهد و بگوید که پورت‌ها در دسترس نیستند. سرور به تمام درخواست‌ها با پیام‌های «مقصد غیرقابل دسترس» ICMP پاسخ می‌دهد و منابع کاملا درگیر این فرایند پاسخ‌دهی می‌شوند. درگیری زیاد منابع محاسباتی برای پاسخگویی به هر دیتاگرام تقلبی کامپیوتر هدف را خسته می‌کند و منجر به انکار سرویس برای ترافیک قانونی شود. می‌توان گفت انبوه بسته‌های UDP جعلی که با هدف تراکم شبکه ارسال شده‌اند، سرور را به‌طور کامل از کار می‌اندازند.

برای تضعیف این حملات فقط می‌توان مقیاس منابع شبکه را در لحظه بیشتر کرد تا منابع بیشتری برای پاسخ‌دهی به پیام‌ها وجود داشته باشند. تلبته روش‌های دیگری برای دفاع در برابر حملات سیل UDP وجود دارد. مثلا یکی از آنها محدودسازی نرخ پاسخ بسته‌های ICMP است که البته گاهی اوقات بسته‌های قانونی را هم نیز فیلتر می‌کند. یک روش دیگر دریافت ترافیک UDP و پاسخ به آنها از طریق یک شبکه واسطه روی دیتاسنتر توزیع شده است که از غرق شدن سرور با درخواست های جعلی جلوگیری می‌کند.

۲. تقویت DNS

در حمله تقویت DNS مهاجم بسته‌های داده را با یک آدرس IP جعلی (مربوط به IP قربانی) به حل‌کننده‌های DNS ارسال می‌کند. این حمله طوری طراحی شده که پاسخ DNS به‌مراتب بزرگتر از درخواست اصلی باشد و عملا حمله را تقویت کند. زمانی که این حمله در مقیاس بزرگ و با تعداد زیادی کلاینت و حل‌کننده DNS اجرا شود، سیستم را کاملا تحت تاثیر قرار می‌دهد. شاید برایتان عجیب باشد که یک حمله DDoS با ظرفیت 27 گیگابیت در ثانیه را می‌توان به این روش تا 300 گیگابیت در ثانیه تقویت کرد.

۳. اسکن پورت UDP

در این نوع حمله مهاجم بسته‌های UDP را به پورت‌های سرور ارسال می‌کنند تا ببیند کدام پورت‌ها باز هستند. اگر سروری با پیام «Destination Unreachable» پاسخ دهد، درگاه باز نیست. اما اگر مهاجم با چنین پاسخی مواجه نشود، استنباط می‌کند که پورت باز است و از این اطلاعات برای برنامه‌ریزی حمله به سیستم استفاده می‌کند.

کلام آخر

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

در این مقاله تلاش کردیم با تمام جزئیات این پروتکل انتقال آشنا شویم. ببینیم UDP چیست، چگونه کار می‌کند، چه مزایا و معایبی دارد و در دنیای واقعی چطور می‌توان آن را به‌کار گرفت. اگر شما عزیزان اطلاعات مفید دیگری درباره این پروتکل دارید، مشتاق شنیدن نظرات‌تان هستیم.

دیدگاه شما

نشانی ایمیل شما منتشر نخواهد شد.