قرارداد دادهنگار کاربر: تفاوت میان نسخهها
محتوای حذفشده محتوای افزودهشده
بدون خلاصۀ ویرایش برچسبها: ویرایشگر دیداری ویرایش همراه ویرایش از وبگاه همراه |
بدون خلاصۀ ویرایش برچسب: واگردانی دستی |
||
خط ۱:
{{پشته پروتکل اینترنت}}
'''قرارداد بسته دادهٔ کاربر''' یا '''پروتکل بسته دادهٔ کاربر''' {{انگلیسی|UDP یا User Datagram Protocol}} یکی از اجزاء اصلی [[مجموعه پروتکل
UDP از مدل انتقال ساده بدون استفاده از تکنیک [[دست تکانی]] صریح که برای ایجاد [[قابلیت اطمینان]] (Reliability)، [[مرتبسازی]] و یکپارچهسازی دادهها بکار میرود، بهره میجوید؛ بنابراین، UDP سرویس غیرمطمئنی را ارائه میدهد و ممکن است بسته دادهها نامرتب، تکراری بوده یا بدون اطلاع قبلی از دست بروند. UDP تشخیص میدهد که بررسی خطا و تصحیح آن با توجه به نوع کاربردی که دارد لازم نبوده یا نباید اجرا شود، بنابراین چنین بار اضافی پردازشی را بر شبکه تحمیل نمیکند. برنامههایی که نسبت به زمان حساس هستند از UDP استفاده میکنند، زیرا از دست دادن بستهها بهتر از منتظر ماندن برای بسته هاست؛ بنابراین پروتکل UDP بهترین گزینه برای سیستمهای بیدرنگ به حساب میآید. اگر برنامهای نیاز به امکانات تصحیح خطا در سطح واسط شبکه داشته باشد، میتواند از [[قرارداد کنترل انتقال]] {{انگلیسی|TCP یا Transmission Control Protocol}} یا [[پروتکل انتقال کنترل جریان]] {{انگلیسی|SCTP یا Stream Control Transmission Protocol}} استفاده کند که بهطور خاص برای این منظور طراحی شدهاند.
طبیعت [[پروتکلهای بدون حالت|بدون حالت]] UDP میتواند برای [[سرور (رایانه)|سرورهایی]] که به پرس و جوهای کوچک حجم زیادی از کلاینتها پاسخ میدهند نیز مفید واقع شود. UDP بر خلاف TCP، با [[انتشار (رایانه)|شبکههای پخشی]] (انتشار بسته در کل شبکه محلی) و [[مالتیکست|شبکههای چندپخشی]] (ارسال بسته به بخشی از شبکه) سازگاری کامل دارد.
برنامههای معمول شبکه که از UDP استفاده میکنند عبارتند از: [[سامانه نام دامنه]] {{انگلیسی|DNS یا Domain Name System}}، برنامههایی که از [[پخش زنده]] یا [[رسانه جویباری]] (Streaming Media) استفاده میکنند نظیر [[تلویزیون پروتکل اینترنت]] یا
== پورتهای مورد استفاده ==
{{اصلی|پورت UDP و TCP}}
برنامههای UDP از [[سوکت بسته داده]] برای برقراری ارتباطات میزبان-به-میزبان استفاده میکنند. برنامه یک سوکت را در انتهای بسته انتقال داده اش میچسباند، که ترکیبی از [[آدرس آیپی]] و شماره پورت سرویس است. پورت یک ساختار نرمافزاری است که با یک عدد ۱۶ بیتی به نام [[شماره پورت]] شناسایی میشود. شماره پورت عددی بین ۰ تا ۶۵٬۵۳۵ است. پورت ۰ رزرو شدهاست، اما اگر پردازش ارسالکننده انتظار دریافت پیام را نداشته باشید مجاز است که از این پورت استفاده کند.
[[آیانا]] یا انجمن شمارههای تخصیص یافته اینترنتی شماره پورتها را به سه دسته تقسیم کردهاست. پورتهای بین ۰ تا ۱۰۲۳ برای سرویسهای شناخته شده و عمومی آزادند. پورتهای بین ۱۰۲۴ و ۴۹٬۱۵۱ [[پورت ثبت شده|پورتهای ثبت شده]] هستند و برای سرویسهای مخصوص IANA در نظر گرفته شدهاند. پورتهای بین ۴۹٬۱۵۲ تا ۶۵٬۵۳۵ پورتهای دینامیکی هستند که بهطور رسمی برای سرویس خاصی در نظر گرفته نشدهاند و میتوان برای هر منظوری استفاده کرد.
== ساختار بسته ==▼
▲== ساختار بسته UDP ==
UDP کمینهترین پروتکل مبتنی بر پیغام [[لایه انتقال]] است که جزئیات آن در RFC 768 آورده شدهاست.
UDP هیچگونه تضمینی برای تحویل پیام به [[پروتکل لایه بالاتر]] را نمیدهد و پروتکلهایی هم که از UDP استفاده میکنند هیچ حالتی از پیغامی را میفرستند نگه نمیدارند. به همین دلیل، UDP را پروتکل بسته-داده ''[[قابلیت اطمینان (شبکههای رایانهای)|غیر مطمئن]]'' مینامند.
UDP [[تسهیمسازی]] برنامه (از طریق [[شماره پورت]]) و بررسی یکپارچگی (با استفاده از [[چکسام]]) سرایند و بخش دادهای را فراهم میآورد. اگر مطمئن بودن انتقال موردنظر باشد، بایستی این امکان در برنامه کاربر تعبیه شود.
{| class="wikitable" style="margin: 0 auto; text-align: center;"
|- align="center"
! افست (بیت)
! colspan="16" width="150px"|۰ – ۱۵
! colspan="16" width="150px"|۱۶ – ۳۱
|- align="center"
! ۰
| colspan="16" bgcolor="#fee7e6"|شماره پورت مبدأ
| colspan="16"|شماره پورت مقصد
|- align="center"
! ۳۲
| colspan="16"|طول
| colspan="16" bgcolor="#fee7e6"|چکسام
|- align="center"
! ۶۴
| colspan="32"|{{سخ}}داده
|}
UDP دادهها را در قالب قطعاتی (Segment) ارسال میکند، که در ابتدای آنها ۸ بایت سرآیند و سپس دادههای [[لایه کاربرد]] قرار میگیرد. این سرآیند در جدول بالا نشان داده شدهاست. دو فیلد [[شماره پورت]] به منظور شناسایی نقاط پایانی (پروسههای نهایی) در ماشینهای مبدأ و مقصد به کار میآیند. وقتی یک بسته UDP از راه میرسد، محتوای آن به پروسه متصل به شماره پورت مقصد، تحویل داده میشود. عمل اتصال پروسه به یک پورت از طریق تابع اولیه BIND انجام میشود. (فرایند مقیدسازی پروسه به یک پورت در TCP و UDP تفاوتی ندارد) در حقیقت، آنچه که UDP در مقایسه با IP معمولی اضافهتر دارد پورتهای مبدأ و مقصد هستند. بدون فیلدهای مربوط به پورت، [[لایه انتقال]] نمیداند که با یک بسته چه کار کند. با این فیلدها، داده به درستی تحویل پروسه مربوط خواهد شد.
برای آنکه بتوان برای پروسه مبدأ پاسخی برگرداند، به شماره پورت مبدأ نیاز است. بدین منظور محتوای فیلد پورت مبدأ از بسته ورودی، در فیلد پورت مقصد از بسته خروجی، کپی و ارسال میشود. بدین ترتیب فرستنده پاسخ، پروسه تحویل گیرنده بسته را مشخص مینماید.<ref>{{یادکرد
|فصل=فصل ششم، لایه انتقال
|کتاب=شبکههای کامپیوتری
|نویسنده = اندرو تننبام
|ترجمه=حسین پدرام، احسان ملکیان، علیرضا زارع پور
|ناشر =نص
|شهر=تهران
|کوشش=
|ویرایش= چهارم
|صفحه=523-522
|سال=1382
|شابک=
}}</ref>
سرایند UDP دارای ۴ ستون، طول هر کدام ۲ بایت (۱۶ بیت) و استفاده از دو تای آنها در IPv4 اختیاری است. (فیلدهایی که با رنگ صورتی مشخص شدهاند). در IPv6 تنها استفاده از شماره پورت مبداً اختیاری میباشد. (جدول پایین)
;شماره پورت مبدأ: این فیلد شماره پورت فرستنده را مشخص میکند و زمانی معنا پیدا میکند که برای پاسخ دادن احتیاج به شماره پورت فرستنده داشته باشیم. اگر از آن استفاده نشود، عدد صفر در آن قرار میگیرد. اگر میزبان مبدأ یک کلاینت باشد، شماره پورت به احتمال زیاد یک شماره پورت موقتی (دسته سوم) خواهد بود. اگر میزبان مبدأ یک سرور باشد، احتمالاً شماره پورت جزو پورتهای عمومی (دسته اول) خواهد بود.
;شماره پورت مقصد: این فیلد شماره پورت مقصد را نشان میدهد و وجود آن الزامیست. همانند شماره پورت مبدأ، اگر کلاینت، میزبان مقصد باشد، شماره پورت به احتمال زیاد جزو پورتهای موقتی خواهد بود و اگر میزبان مقصد یک سرور باشد شماره پورت جزو دسته اول خواهد بود.
;طول: فیلدی که طول کل بسته داده را بر حسب بایت نشان میدهد. حداقل طول ۸ بایت است که متعلق به طول سرآیند میباشد. اندازه فیلد بهطور تئوریک ۶۵٬۵۳۵ بایت (۸ بایت برای سرآیند + ۶۵٬۵۲۷ بایت برای داده) برای بسته دادهٔ UDP است. اما حداکثر اندازه عملی برای IPv4 عبارت است از ۶۵٬۵۰۷ بایت. (۶۵٬۵۳۵–۸ بایت برای سرآیند [[یو دی پی]] - ۲۰ بایت برای سرآیند IP). عدم استفاده از این فیلد نوعی سهل انگاری است مگر اینکه کیفیت دادهها چندان مهم نباشد. (مثلاً در مورد صدای دیجیتال)
;چکسام:فیلد [[چکسام]] برای بررسی خطای سرایند و داده استفاده میشود. اگر هیچ چکسامی توسط فرستنده تولید نشود، این فیلد با صفر پر میشود. فیلد مزبور در IPv6 اختیاری نیست.
== محاسبه چکسام ==
سطر ۱۲۳ ⟵ ۱۵۶:
|}
== قابلیت اطمینان و راهحلهایی برای کنترل ازدحام ==
فقدان قابلیت اطمینان بدین معناست که برنامههایی که از UDP استفاده میکنند کلاً میتوانند مقداری خطا یا افزونگی را بپذیرند. برخی پروتکلها نظیر TFTP میتوانند مکانیزمهای ابتدایی برای برقراری قابلیت اطمینان را در لایه کاربرد به کار گیرند. در اغلب اوقات برنامههایی که از UDP استفاده میکنند از مکانیزمهای برقراری قابلیت اطمینان استفاده نمیکنند و حتی مانع از اجرای آنها میشوند. رسانههای جویباری، بازیهای چندبازیکنه بیدرنگ و VoIP مثالهایی از برنامههایی هستند که از UDP بهره میبرند. در این برنامههای خاص از دست دادن بستهها معمولاً مشکل حادی نیست. اگر برنامهای احتیاج به برقراری قابلیت اطمینان بالا داشته باشد، باید از پروتکلی نظیر TCP استفاده کند.
در مورد UDP بر خلاف TCP مورد مهم و قابل توجهی وجود دارد که برنامههای مبتنی بر این پروتکل قابلیت جلوگیری از ازدحام و مکانیزم کنترلی خوبی نیستند. برنامههای UDP ای که به مسئله ازدحام توجهی نمیکنند و میزان قابل توجهی از [[پهنای باند]] را نیز اشغال میکنند، میتوانند ثبات اینترنت را به مخاطره بیندازند. مکانیزمهای مبتنی بر شبکهای وجود دارد که برای به حداقل رساندن تأثیرات مخرب، ترافیکهای کنترل نشده UDP ارائه شدهاند. اجزاء مبتنی بر شبکه نظیر روترها که از تکنیکهای صف بندی و حذف بستهها استفاده میکنند، تنها ابزار موجود برای کاهش دادن ترافیک حجیم برنامههای مبتنی بر UDP میباشند. [[پروتکل کنترل ازدحام بسته داده]] {{انگلیسی|DCCP یا Datagram Congestion Control Protocol}} راه حلی نسبی برای حل این مشکل بالقوهاست. این پروتکل با افزودن رفتار کنترلی مشابه TCP در سیستم میزبان، جریانهای شدید UDP را کنترل میکند.
== کاربردها ==
برنامههای اینترنتی متعددی از UDP بهره میبرند:
* [[سامانه نام دامنه]] (DNS): در این سیستم پرس و جوهای صورت گرفته بایستی سریع و تنها شامل یک درخواست باشند، و پاسخ آنها نیز تنها یک بسته سادهاست.
* [[پروتکل ساده مدیریت شبکه]] (SNMP): از این پروتکل برای مدیریت [[تجهیزات شبکه]] استفاده میشود.
* [[پروتکل اطلاعات مسیریابی]] (RIP)
* [[پروتکل پیکربندی پویای میزبان]] (DHCP)
انتقال صدا و تصویر معمولاً از طریق UDP صورت میگیرد. پروتکلهای پخش زنده صدا و تصویر برای مدیریت از دست رفتن بستهها طراحی شدهاند تا تنها افت کیفیت ناچیزی رخ دهد، تا اینکه زمان زیادی برای ارسال دوباره بستههای از دست رفته صرف شود. به این دلیل که TCP و UDP هر دو در یک شبکه کار میکنند، بسیاری از کسب و کارها به این نتیجه رسیدهاند که افزایش اخیر در ترافیک UDP از این برنامههای بیدرنگ بر کارایی برنامههایی نظیر [[پایانههای فروش]] (POS)، سیستمهای حسابداری و [[پایگاه داده]] که از TCP استفاده میکنند، آسیب میرسانند. زمانیکه TCP متوجه از دست رفتن بستهای میشود، نرخ انتقال دادههایش را کاهش میدهد. از آنجاییکه، برنامههای تجاری و بیدرنگ برای کسب و کارها مهم میباشند، بر اهمیت توسعه راه حلهای [[کیفیت خدمات]] (QoS) روز به روز افزوده میشود.
== مقایسه UDP و TCP ==
{{اصلی|لایه کاربرد}}
پروتکل کنترل انتقال یک پروتکل اتصال گرا (Connection-Oriented) میباشد، بدین معنا که برای برقراری ارتباط بین دو میزبان احتیاج به تکنیک «دست تکانی» یا Handshaking دارد. به محض اینکه ارتباط برقرار شد دادههای کاربر میتواند به صورت دوطرفه ارسال و دریافت شود. از جمله خصوصیات این پروتکل میتوان به موارد زیر اشاره کرد:▼
▲[[پروتکل کنترل انتقال]] یک پروتکل اتصال گرا (Connection-Oriented) میباشد، بدین معنا که برای برقراری ارتباط بین دو میزبان احتیاج به تکنیک «دست تکانی» یا Handshaking دارد. به محض اینکه ارتباط برقرار شد دادههای کاربر میتواند به صورت دوطرفه ارسال و دریافت شود. از جمله خصوصیات این پروتکل میتوان به موارد زیر اشاره کرد:
* ''قابل اطمینان'' - TCP تصدیق پیغام، ارسال دوباره و زمان انقضاء را مدیریت میکند. اگر پیغامی به مقصد نرسید این امکان را دارد که برای چندین بار این کار را انجام دهد. اگر بستهای در وسط راه از دست رفت، سرور میتواند درخواست ارسال دوباره بسته مفقوده را اعلام کند. در TCP، از دست رفتن داده معنایی ندارد و در مواردی که زمان انقضاء (Timeout) افزایش یابد، ارتباط قطع خواهد شد.
* ''دارای ترتیب'' - اگر دو پیغام بر روی یک خط ارتباطی به ترتیب فرستاده شوند، پیغام اول، اول خواهد رسید. زمانیکه قطعات دادهای در ترتیب اشتباه دریافت شوند، TCP تمام بستههای خارج از ترتیب را بافر میکند تا اینکه تمام بستهها بهطور کامل دریافت شوند، سپس تمام آنها را مرتب کرده و تحویل [[برنامه کاربردی]] میدهد.
* ''سنگین'' - TCP برای برقراری ارتباط سوکت و پیش از شروع ارسال اطلاعات کاربر، احتیاج به سه بسته دارد. TCP با استفاده از [[کنترل ازدحام]] قابلیت اطمینان را فراهم میآورد.
* ''جریانی'' - دادهها به صورت جریانی از بایتها خوانده میشوند.
سطر ۱۵۱ ⟵ ۱۸۶:
* ''عدم وجود کنترل ازدحام'' - UDP به خودی خود از ازدحام جلوگیری نمیکند و این احتمال وجود دارد برنامههایی که پهنای باند زیادی مصرف میکنند باعث بروز ازدحام شوند، مگر اینکه در لایه کاربردی تمهیداتی برای کنترل ازدحام در نظر گرفته شده باشد.
==
* [[فهرست پورتهای TCP و UDP]]
* [[پروتکل بسته داده کاربر قابل اطمینان]] (RUDP)
* [[لایه انتقال#جدول مقایسهای پروتکلهای لایه انتقال|جدول مقایسهای پروتکلهای لایه انتقال]]
* [[حمله سیلآسای UDP]]
* [[انتقال داده UDP]]
* [[UDP
== منابع ==
{{یادکرد-ویکی
|پیوند = http://en.wikipedia.org/w/index.php?title=User_Datagram_Protocol&oldid=442088672
|عنوان = User Datagram Protocol
|زبان = انگلیسی
|بازیابی = 29 ژوئیه 2011
}}
==
{{پانویس}}
{{دادههای کتابخانهای}}
{{پروتکلهای مدل OSI}}
[[رده:استانداردهای اینترنت]]
[[رده:پروتکلهای اینترنت]]
|