CDN ابری

آشنایی با صفر تا صد پروتکل UDP

shahin شاهین نوعی
28 بازدید | 0 دیدگاه | 01 شهریور 1401
/storage/post-images/1661147963_2022-08-22_1656781915_2022-07-02_01-min.png
سرفصل های مهم
آشنایی با صفر تا صد پروتکل UDP

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

پروتکل داده نگار کاربر ( UDP) چیست؟

عبارت UDP مخفف عبارتی است که به معنای پروتکل داده نگار یا دیتاگرام کاربر بوده و در واقع پروتکلی ارتیاطی است که در سراسر اینترنت گسترش یافته است. این پروتکل ارتباطات کم-تأخیر و بدون قطعی موثری را بین دو اپلیکیشن ممکن می سازد.

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

بله ممکن است این پروتکل مستعد از دست دادن بسته های داده ای در حین سفر از منبع به مقصد نیز باشد. بنابراین شاید در برخی از موارد انتقال داده ها را با مشکل رو به رو کرده و حملات DDoS را آسان کند. اما برای حل این مسائل نیز راهکارهای امنیتی وجود دارد.

کاربردهای UDP

در ادامه به چند مورد از مهمترین کاربردهای UDP اشاره خواهیم کرد.

  • ارتباط مستقیم درخواست/پاسخ بسته های داده ای نسبتاً کوچک، با حذف نیاز به کنترل ارورها یا از دست رفتن داده ها
  • استفاده در پخش چند گانه یا Multicasting با توجه به اینکه UDP در تعویض بسته ها بخوبی عمل می کند.
  • پروتکل های بروزرسانی مسیریابی مثل RIP
  • اپلیکیشن های Real-time که به انتقال سریع داده ها نیاز دارند.
  • استفاده از این پروتکل در پروتکل لایه انتقال مثل:
  • DNS
  • Network Time Protocol (NTP)
  • Network News Protocol (NNP)
  • Dynamic Host Configuration Protocol (DHCP), Bootstrap Protocol (BOOTP)
  • Real Time Streaming Protocol (RTSP), Trivial File Transfer Protocol (TFTP), RIP
  • Quote of the Day Protocol (QOTD)

و اپلیکیشن هایی نظیر:

  • Record route
  • Traceroute
  • Timestamp
  • اپلیکیشن های چند رسانه ای که دریافت لحظه ای بسته ها به شدت مورد نیاز است.
  • برداشت باری از دوش منابع کامپیوتر

UDP چطور عمل می کند؟

UDP به شکل ساده ای کار می کند، به طوری که داده ها را بین دو دستگاه در شبکه جا به جا می کند. در اصل بسته ها (داده نگارها) را بدون تنظیم اتصال، شناسایی ترتیب بسته، تست تحویل شدن و به طور مستقیم به دستگاه مقصد می رساند.

در مقایسه با TCP، پروتکل UDP سرعت بیشتری را فراهم می کند، اما قابل اطمینان نیست!

ارتباط TCP شامل فرآیندی معروف تحت عنوان Handshake است، که یک اتصال را برقرار می کند. به علاوه، تنها زمانی که این اتصال کامل شود، بسته های داده ای می توانند انتقال یابند.

در مورد فرآیند handshake در بلاگ میزبان کلود بیشتر بخوانید.

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

با توجه به این ویژگی ها، UDP قادر است تا بسته ها یا داده ها را با سرعت بسیار بالاتری منتقل کند.

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

 

هدر UDP ( UDP Header )

UDP با هدرها کار خود را پیش می برد؛ این پروتکل از هدرها برای بسته بندی داده های پیغامی که قرار است از طریق شبکه ارسال شوند، استفاده می کند. هر هدر UDP شامل پارامترهای بسیاری است، که اغلب به فیلدها معروف هستند؛ این فیلدها از طریق مشخصات فنی خاصی از پروتکل تنظیم می گردند.

هدر UDP شامل چهار فیلد اصلی است که هر کدام از آنها 2 بایت حجم دارد:

  • پورت مرجع: این یک داده 16-بیتی است که پورت خاصی را مشخص می کند که قرار است بسته را ارسال کند؛ در صورتی که دستگاه مقصد ملزم به ارسال پاسخ نباشد، این فیلد می تواند معادل صفر قرار گیرد.
  • پورت مقصد: این نیز یک داده 16-بیتی است که برای مشخص کردن سرویس لایه اپلیکیشن دستگاه مقصد فراهم شده است، یعنی همان پورت دستگاه دریافت کننده داده ها. این مقدار می تواند بین 0 الی 65535 باشد.
  • طول: این فیلد نمایانگر تعداد کل بایت هاست، از هدر UDP گرفته تا بسته های داده ای UDP. با مشخص کردن پروتکل IP مورد استفاده در ارسال داده ها، یک حد مشخص برای فیلد طول ( length ) UDP تعریف می شود
  • مجموع ( Checksum ): این فیلد 16-بیتی یک فیلد اختیاری است. این فیلد به دستگاه دریافت کننده این امکان را می دهد تا صحت هدر و payload بسته ارسالی را تایید کند؛ که یعنی آیا اپلیکیشن مایل است checksum را انجام دهد یا خیر. در صورتی که تمایل نداشته باشد، تمام 16 بیت معادل صفر قرار خواهند گرفت؛ این فیلد برای خود هدر و بخش داده ها مورد استفاده قرار نمی گیرد، بلکه از آن تنها برای فیلد هدر استفاده می شود؛ لازم به ذکر است که این فیلد برای IPv6 ضروری است.

اپلیکیشن هایی که به UDP تکیه می کنند.

گیمینگ، ویس و ویدیو

UDP یک گزینه ایده آل برای بسیاری از اپلیکیشن های شبکه ای است که به کمترین میزان تأخیر نیاز دارند، مثل بازی ها، تعاملات صوتی و ارتباطات تصویری.

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

جستجو یا Lookup در سیستم های نام دامنه (DNS)

کوئری های DNS درخواست های ساده و کوچکی هستند که پاسخ های پایه ای و سریعی دریافت می کنند. به صورتی که یک دستگاه یک کوئری DNS را با سرورهای DNS آغاز کرده  تا بتواند اطلاعات حیاتی یک دامنه را دریافت کند، مثل آدرس IP. این فرآیند تا زمان دریافت پاسخ کوئری DNS متوقف می شود.

با توجه به این که TCP از یک فرآیند Handshake سه جانبه استفاده می کند، مسلماً پاسخ ارسالی نیز با سرعت بسیار پایین تری انتقال خواهد یافت.

در نتیجه، این کاهش سرعت عملکرد کلی را به شکل منفی تحت تأثیر قرار خواهد داد. به همین دلیل کوئری های DNS برای انتقال سریعتر پاسخ از UDP کمک می گیرند.

پخش چند گانه ( Multicasting )

یکی از کابردهای دیگر UDP  استفاده از آن برای پخش Multicasting است. دلیل استفاده از این پروتکل نیز این است از تعویض بسته ها پشتیبانی می کند. بعلاوه، این پروتکل شبکه ای می تواند برای پروتکل های بروزرسانی مسیرهای اضافی نیز مورد استفاده قرار گیرد. مثل پروتکل اطلاعات مسیریابی (  Routing Information Protocol ) یا RIP.

تفاوت های UDP و TCP

بگذارید کمی بیشتر در مورد تفاوت های TCP و UDP توضیح دهیم...

نوع پروتکل

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

قابلیت اطمینان

با توجه به اینکه  TCPاز تحویل بسته های داده ای اطمینان حاصل می کند، پروتکلی قابل اتکا یا Reliable شناخته می شود.

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

UDP یک پروتکل غیر قابل اتکا شناخته می شود، چراکه هیچ تضمینی در خصوص تحویل موفق داده ها ارائه نمی دهد.

کنترل جریان

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

ترتیب یا نوبت

TCP با تکنیک های ترتیب یا نوبت دهی عمل می کند. به صورتی که از این موضوع اطمینان حاصل می کند که بسته های داده ای دقیقا مطابق نوبت و ترتیب مشخص شده هنگام ارسال به دست مقصد نهایی خواهد رسید. در طرف مقابل، UPD هیچ تکنیک نوبت دهی خاصی را شامل نمی شود. این یعنی داده ها ممکن است به طور نامنظم و در یک ترتیب تصادفی به مقصد رسند.

سرعت

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

جریان داده ها

زمانی که از TCP صحبت می کنیم، به سرویسی دو مسیره اشاره داریم؛ یعنی اطلاعات می توانند در هر دو مسیر جریان یابند؛ در مقابل، UDP بیشتر مناسب جریانات داده ای غیر دو طرفه است.

آیا UDP امن است؟

UDP برای اپلیکیشن هایی که ظرفیت تحمل از دست رفتن بسته ها را دارند، گزینه ای ایده آل است. اما مشکل در این نیست!

موضوع حائز اهمیت این است که با توجه به اینکه در UDP هیچ اتصالی برقرار نشده و فرآیند Handshake نیز انجام نمی شود، احتمال وقوع حملات سایبری افزایش می یابد.

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

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

در نتیجه، منابع قربانی به اتمام خواهند رسید و در این لحظه حمله DDoS کار خود را به اتمام می رساند.

خوشبختانه روش هایی برای محافظت از دستگاه، شبکه و سرور در مقابل چنین حملات مخربی تعبیه شده است:

می توان نرخ پاسخ دهی به بسته های ICMP را محدود کرد. با این وجود، باید به این نکته نیز توجه کنید که بسته های سالم و غیر تهاجمی مشروع را نیز محدود خواهید کرد.

یک شبکه تنومند از سرورها مثل Anycast DNS یا CDN می تواند راهی درخشان برای محافظت از یک سرور در برابر سیل درخواست های مخرب باشد.

بخصوص برای شبکه DNS، یک رویکرد موثر پیاده سازی سرویس های مقابله با DDoS یا DDoS Protection است.

راهکار میزبان کلود

یکی از راهکارهای جذاب میزبان کلود، ارائه سرویس های پدافند امنیتی ابری است. شما می توانید به کمک این سرویس ها از جمله Rate Limit، مقابله با حملات DDoS ، WAF و غیره برای محافظت از دستگاه، شبکه و سرورهای خود استفاده کنید. پیشنهاد می کنیم به صفحه امنیت ابری میزبان کلود مراجعه کرده و با ویژگی های منحصر به فرد آن بیشتر آشنا شوید.

جمع بندی

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




پیشنهاد ویژه

CDN ابری میزبان کلود

سرعت در بارگذاری و تحویل محتوای سایت

سرعت در بارگذاری و تحویل محتوای سایت

سرعت در بارگذاری و تحویل محتوای سایت

سرعت در بارگذاری و تحویل محتوای سایت

مشاهده پلانها
برچسب ها :
نویسنده مطلب شاهین نوعی

Hi everyone, my name is Shahin Noei; I'm so glad to be sharing with you my latest knowledge of IT infrastructure and I warmly invite you to ask any of your questions in my linkedin page. I've been working in digital marketing field for the last 5 years and I've been in touch with some IT businesses long enough to get the most out of the newest technologies in this modern era.

آشنایی با صفر تا صد پروتکل UDP 0 دیدگاه

مطالب را قبل از دیگران مطالعه کنید

دریافت جدیدترین مطالب در ایمیل شما

ایمیل شما به صورت کاملا محرمانه نزد ما محفوظ است
ما برای شما هرزنامه ارسال نمی کنیم