UDP چیست ؟
نویسنده :
اکبر اصغری
- انتشار :
یک سال قبل
- آخرین ویرایش :
یک سال قبل
UDP (User Datagram Protocol) یکی از پروتکل های شناخته شده در ارتباطات شبکه است. به لطف آن، ما میتوانیم پلتفرمهای پخش ویدئو را تماشا کنیم، با تماسهای ویدئویی ارتباط برقرار کنیم و بازیهای متعددی را انجام دهیم. بیایید عمیق تر بشویم.
UDP یا User Datagram Protocol چیست ؟
UDP مخفف User Datagram Protocol می باشد و یک پروتکل ارتباطی است که در سراسر اینترنت اعمال می شود. این اتصالات کم تأخیر و امکان مدیریت از دست دادن دیتا را دارد.
UDP ارتباطات سریعی را ارائه می دهد زیرا امکان انتقال داده ها را قبل از اینکه طرف گیرنده توافق کند را فراهم می کند. بنابراین، UDP در ارتباطاتی که نیاز به سرعت دارند و حساس به زمان هستند، بسیار ارزشمند است. به عنوان مثال، Voice over IP (VoIP)، جستجوی سیستم نام دامنه (DNS) و پخش ویدیو یا صدا.
با این حال، این پروتکل مستعد از دست دادن بسته های داده در طول سفر از مبدا به مقصد است. در نتیجه، می تواند مشکلاتی را در انتقال داده ایجاد کند و اجرای یک حمله انکار سرویس توزیع شده (DDoS) را برای مجرمان سایبری آسان می کند.
![](https://api.dnslab.link/Files/GetFile?fileName=794e292a-f670-4879-84a6-e28ed8f5c55b.jpeg)
چگونه کار می کند؟
UDP (User Datagram Protocol) با انتقال داده ها بین دو دستگاه در یک شبکه به روشی ساده عمل می کند. این بستهها (دادهگرامها) را مستقیماً بدون تنظیم اتصال، تعیین ترتیب بستهها یا بررسی اینکه آیا طبق ترتیب تحویل داده شدهاند یا خیر، مستقیماً به دستگاه مورد نظر ارسال میکند.
در مقایسه با TCP (پروتکل کنترل انتقال)، UDP سرعت بیشتری را ارائه می دهد، اما چندان قابل اعتماد نیست.
ارتباط TCP شامل فرآیندی است که به عنوان "دست دادن یا (handshake)" شناخته می شود، که ارتباط را برقرار می کند.
از سوی دیگر، اتصال UDP شامل این فرآیند "handshake" نمی شود، به این معنی که یک دستگاه به سادگی شروع به ارسال اطلاعات به گیرنده می کند. علاوه بر این، ارتباطات UDP شامل جزئیات سفارش یا تأیید ورود داده ها نمی شود. وقتی صحبت از TCP می شود دقیقا برعکس است.
بر اساس این ویژگی ها، UDP توانایی انتقال بسته های داده را بسیار سریعتر از TCP دارد.
نقطه ضعف اتصال UDP از دست دادن بسته ها در حین انتقال است، که قرار نیست دوباره ارسال شوند، همانطور که در اتصالات TCP هستند. بنابراین، زمانی که برنامهها UDP را پیادهسازی میکنند، باید بتوانند ضرر، تکرار یا خطا را تحمل کنند.
هدر UDP
UDP (User Datagram Protocol) با هدرها عمل می کند. از آنها برای بسته بندی داده های پیام برای ارسال از طریق شبکه استفاده می کند. هر هدر UDP شامل چندین پارامتر است که به عنوان فیلد نیز شناخته می شود که توسط مشخصات فنی پروتکل تعیین می شود.
هدر UDP (پروتکل دادههای کاربر) شامل چهار فیلد اصلی است. هر کدام 2 بایت هستند. هدر UDP دارای فیلدهای زیر است:
- پورت منبع (Source Port) - داده 16 بیتی است که پورت دقیقی را که قرار است بسته را ارسال کند، مشخص می کند. در صورتی که دستگاه مورد نظر نیازی به پاسخگویی به فرستنده نداشته باشد، این قسمت را می توان روی صفر تنظیم کرد.
- پورت مقصد (Destination port) - داده 16 بیتی است که برای مشخص کردن سرویس سطح برنامه در دستگاه مورد نظر، به معنای پورت دستگاه دریافت کننده داده، خدمت می کند. ممکن است بین 0 تا 65535 باشد.
- طول (Length) - کل تعداد بایت ها، از جمله هدر UDP و بسته های داده UDP برای انتقال را مشخص می کند. محدودیت دقیق برای فیلد طول UDP با پروتکل IP اساسی که برای ارسال داده ها استفاده می شود، تعریف می شود.
- Checksum - یک فیلد 16 بیتی است، یک فیلد اختیاری. CheckSum این توانایی را به دستگاه دریافتکننده میدهد تا صحت هدر بسته و محموله را تأیید کند. این یک فیلد اختیاری است، به این معنی که آیا برنامه CheckSum را میخواهد یا نه. در صورتی که چکسوم را نمیخواهد، همه 16 بیت صفر هستند. در UDP از قسمت checksum برای قسمت سرصفحه و داده استفاده می شود. در IP، قسمت checksum فقط برای قسمت header استفاده می شود. در IPv4 اختیاری است، اما در IPv6 مورد نیاز است.
برنامه های کاربردی مبتنی بر UDP
بازی، صدا و ویدئو
پروتکل دیتاگرام کاربر یک انتخاب عالی برای برنامه های مختلف شبکه است که به حداقل تاخیر نیاز دارند، مانند بازی، صدا و همچنین ارتباطات تصویری. اگر برخی از بسته های داده در حین انتقال گم شوند، خدماتی مانند این کیفیت خود را کاهش نمی دهند. با این حال، با وجود بسته های گم شده، فرصتی برای پیاده سازی تکنیک هایی برای تصحیح بیشتر خطا و بهبود کیفیت صدا و تصویر وجود دارد.
جستجوی سیستم نام دامنه یا DNS Lookup
پرس و جوهای DNS درخواست های کوچک و ساده ای هستند که پاسخ های اساسی و ساده دریافت می کنند. یک دستگاه برای دریافت اطلاعات ضروری در مورد یک دامنه، مانند آدرس IP (IPv4 یا IPv6) یک پرس و جو DNS را به سرورهای DNS آغاز می کند. این فرآیند تا زمانی که کوئری DNS پاسخ خود را دریافت نکند، در حالت تعلیق است. با توجه به این واقعیت که TCP از یک روش دست دادن سه طرفه استفاده می کند، به این معنی است که احتمالاً درخواست بسیار کند پاسخ داده می شود. در نتیجه عملکرد را به صورت منفی تحت تاثیر قرار می دهد. به همین دلیل، پرس و جوهای DNS برای پاسخ های سریع به UDP متکی هستند.
پخش چندگانه
یکی دیگر از راههای پیادهسازی UDP (پروتکل دادهگرام کاربر) چند پخشی است. این مبتنی بر این واقعیت است که از سوئیچینگ بسته پشتیبانی می کند. علاوه بر این، این پروتکل شبکه همچنین می تواند برای پروتکل های به روز رسانی مسیریابی اضافی، به عنوان مثال، پروتکل اطلاعات مسیریابی Routing Information Protocol (RIP) پیاده سازی شود.
UDP در مقابل TCP - چه تفاوت هایی دارند؟
بیایید کمی بیشتر در مورد تفاوت های اصلی بین این دو پروتکل توضیح دهیم:
- نوع پروتکل
هر دو TCP و UDP پروتکل های لایه انتقال هستند. با این حال، یک تضاد اصلی بین آنها وجود دارد. TCP یک پروتکل اتصال گرا است. از طرف دیگر، UDP یک پروتکل بدون اتصال است. بنابراین، TCP به سادگی نیاز به برقراری ارتباط قبل از ارتباط دارد، در حالی که UDP نیازی به اطمینان از اتصال دو دستگاه ندارد.
- قابلیت اطمینان
TCP یک پروتکل قابل اعتماد بر اساس این واقعیت است که تحویل بسته های داده را تضمین می کند. این شامل یک مکانیسم تأیید است که در آن فرستنده تأییدیه را از گیرنده دریافت می کند و مثبت یا منفی بودن آن را بررسی می کند. در صورت مثبت بودن، داده ها با موفقیت تحویل داده شده است. اگر منفی باشد، TCP دوباره داده ها را ارسال می کند.
UDP یک پروتکل غیرقابل اعتماد در نظر گرفته می شود، زیرا هیچ تضمینی برای موفقیت تحویل داده ها ارائه نمی دهد.
- کنترل جریان
TCP شامل یک مکانیسم کنترل جریان است. این اطمینان حاصل می کند که تعداد زیادی بسته به طور همزمان به دستگاه هدف ارسال نمی شود. از سوی دیگر، UDP به هیچ وجه این مکانیسم کنترل جریان را پیاده سازی نمی کند.
- مرتب سازی
TCP با تکنیک های ترتیب دهی و توالی عمل می کند. به این ترتیب، تضمین میکند که بستههای داده به ترتیب کاملاً دقیقی که ارسال شدهاند، تحویل داده میشوند. از طرف دیگر، UDP شامل هیچ تکنیک ترتیب و توالی نیست. این بدان معناست که داده ها می توانند به هر ترتیبی منتقل شوند.
- سرعت
همانطور که اشاره کردیم، اولین قدم برای TCP ایجاد ارتباط بین دو دستگاه است. علاوه بر این، بررسی خطاها را تکمیل می کند و مطمئن می شود که انتقال بسته های داده با موفقیت انجام شده است. از سوی دیگر، UDP یک اتصال ایجاد نمی کند یا انتقال را تضمین نمی کند. به همین دلیل، UDP بسیار سریعتر از TCP است.
- جریان داده ها
وقتی در مورد TCP صحبت می کنیم، سرویس تمام دوبلکس را ارائه می دهد. این بدان معناست که اطلاعات می توانند در هر دو جهت جریان داشته باشند. علاوه بر این، وقتی به UDP نگاهی می اندازیم، برای جریان یک طرفه داده ها مناسب تر است.
آیا UDP امن است؟
UDP (پروتکل دادهگرام کاربر) برای برنامههایی که از دست دادن بستهها را تحمل میکنند، هدف بسیار خوبی دارد. این یک مسئله نیست. با این حال، بر اساس این واقعیت که UDP یک پروتکل بدون اتصال است و رویه "دست دادن" را اجرا نمی کند، فرصتی را برای مجرمان سایبری فراهم می کند. آنها با پر کردن ترافیک UDP قربانی خود از آن بهره می برند. مهاجمان برای شروع چنین حمله DDoS نیازی به برقراری ارتباط و دریافت مجوز ندارند.
معمولاً، حمله سیل UDP شامل ارسال حجم عظیمی از دیتاگرام های UDP به پورت های مختلف دستگاه قربانی است. این باعث می شود قربانی با همان مقدار بسته ICMP پاسخ دهد که نشان می دهد این پورت ها غیرقابل دسترسی هستند. در نتیجه، منابع قربانی تمام می شود و حمله DDoS تکمیل می شود.
خوشبختانه راه های مختلفی برای محافظت از دستگاه، شبکه، سرور شما در برابر چنین تلاش های مخربی وجود دارد.
- می توانید نرخ پاسخ بسته های ICMP را محدود کنید. با این حال، باید بدانید که این می تواند بسته های قانونی را نیز فیلتر کند.
- یک شبکه قوی از بسیاری از سرورها (مانند Anycast DNS) یک راه عالی برای جلوگیری از غرق شدن یک سرور با درخواست های مخرب است.
- به خصوص برای شبکه DNS شما، این یک رویکرد عالی برای اجرای حفاظت DDoS است.
مزایا و معایب UDP
با درک مزایا و معایب اصلی پروتکل دیتاگرام کاربر، می توانید تعیین کنید که آیا پروتکل مناسب برای برنامه شما است یا خیر. بنابراین، بیایید نگاهی دقیقتر به آنچه این پروتکل جالب ارائه میدهد بیاندازیم.
مزایای UDP
پروتکل دیتاگرام کاربر چندین مزیت دارد که به شرح زیر است:
- سریع: نیازی به برقراری ارتباط قبل از انتقال داده نیست، که باعث می شود سریعتر از TCP باشد.
- کارآمدتر: UDP یک پروتکل سبک وزن است که به سربار کمتری نسبت به TCP نیاز دارد.
- مناسب برای برنامههای بلادرنگ: پروتکل Datagram کاربر برای برنامههای بلادرنگ، مانند بازیهای آنلاین، کنفرانس ویدیویی و پخش زنده، که سرعت مهمتر از قابلیت اطمینان است، ایدهآل است.
معایب UDP
اشکالات اصلی پروتکل User Datagram شامل موارد زیر است:
- بدون قابلیت اطمینان: تحویل بسته ها را تضمین نمی کند یا تضمین نمی کند که بسته ها به ترتیب می رسند.
- بدون کنترل تراکم: UDP مکانیسم های کنترل تراکم ندارد، به این معنی که در صورت عدم استفاده دقیق، می تواند شبکه را با بسته ها پر کند.
- موارد استفاده محدود: پروتکل دیتاگرام کاربر برای برنامه هایی که به انتقال داده های قابل اعتماد نیاز دارند، مانند انتقال فایل، ایمیل، یا مرور وب، مناسب نیست.
نتیجه
مطمئناً، توسعه UDP (پروتکل دادههای کاربر) انقلابی است. این امکان تحویل سریع را فراهم می کند، که برای تعدادی از برنامه ها بسیار ارزشمند است. UDP هدف خود را در بسیاری از سرویسها مییابد، علیرغم این واقعیت که دارای جنبههای منفی است، عمدتاً در DNS، پخش ویدیو و بازی.