موضوع مقاله: قرارداد داده‌نگار کاربر | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # قرارداد داده‌نگار کاربر | مقدمه: قرارداد بسته دادهٔ کاربر یا پروتکل بسته دادهٔ کاربر یکی از اجزاء اصلی مجموعه پروتکل اینترنت، مجموعه‌ای از پروتکل‌های شبکه که در اینترنت مورد استفاده قرار می‌گیرند، می‌باشد. | ## بخش 1: قرارداد داده‌نگار کاربر | این پروتکل توانایی این را دارد که این کار را بدون برقراری ارتباط قبلی یا ایجاد کانال‌ها یا مسیرهای انتقال داده ویژه انجام دهد. UDP از مدل انتقال ساده بدون استفاده از تکنیک دست تکانی صریح که برای ایجاد قابلیت اطمینان (Reliability)، مرتب‌سازی و یکپارچه‌سازی داده‌ها بکار می‌رود، بهره می‌جوید؛ بنابراین، UDP سرویس غیرمطمئنی را ارائه می‌دهد و ممکن است بسته داده‌ها نامرتب، تکراری بوده یا بدون اطلاع قبلی از دست بروند. UDP تشخیص می‌دهد که بررسی خطا و تصحیح آن با توجه به نوع کاربردی که دارد لازم نبوده یا نباید اجرا شود، بنابراین چنین بار اضافی پردازشی را بر شبکه تحمیل نمی‌کند. برنامه‌هایی که نسبت به زمان حساس هستند از UDP استفاده می‌کنند، زیرا از دست دادن بسته‌ها بهتر از منتظر ماندن برای بسته هاست؛ بنابراین پروتکل UDP بهترین گزینه برای سیستم‌های بی‌درنگ به حساب می‌آید. اگر برنامه‌ای نیاز به امکانات تصحیح خطا در سطح واسط شبکه داشته باشد، می‌تواند از قرارداد کنترل انتقال یا پروتکل انتقال کنترل جریان استفاده کند که به‌طور خاص برای این منظور طراحی شده‌اند. طبیعت بدون حالت UDP می‌تواند برای سرورهایی که به پرس و جوهای کوچک حجم زیادی از کلاینت‌ها پاسخ می‌دهند نیز مفید واقع شود. UDP برخلاف TCP، با شبکه‌های پخشی (انتشار بسته در کل شبکه محلی) و شبکه‌های چندپخشی (ارسال بسته به بخشی از شبکه) سازگاری کامل دارد. پورت‌های مورد استفاده برنامه‌های UDP از سوکت بسته داده برای برقراری ارتباطات میزبان-به-میزبان استفاده می‌کنند. برنامه یک سوکت را در انتهای بسته انتقال داده اش می‌چسباند، که ترکیبی از آدرس آی‌پی و شماره پورت سرویس است. پورت یک ساختار نرم‌افزاری است که با یک عدد ۱۶ بیتی به نام شماره پورت شناسایی می‌شود. پورت ۰ رزرو شده‌است، اما اگر پردازش ارسال‌کننده انتظار دریافت پیام را نداشته باشید مجاز است که از این پورت استفاده کند. آیانا یا انجمن شماره‌های تخصیص یافته اینترنتی شماره پورتها را به سه دسته تقسیم کرده‌است. پورتهای بین ۱۰۲۴ و ۴۹٬۱۵۱ پورت‌های ثبت شده هستند و برای سرویس‌های مخصوص IANA در نظر گرفته شده‌اند. پورتهای بین ۴۹٬۱۵۲ تا ۶۵٬۵۳۵ پورت‌های دینامیکی هستند که به‌طور رسمی برای سرویس خاصی در نظر گرفته نشده‌اند و می‌توان برای هر منظوری استفاده کرد. UDP هیچ‌گونه تضمینی برای تحویل پیام به پروتکل لایه بالاتر را نمی‌دهد و پروتکل‌هایی هم که از UDP استفاده می‌کنند هیچ حالتی از پیغامی را می‌فرستند نگه نمی‌دارند. UDP تسهیم‌سازی برنامه (از طریق شماره پورت) و بررسی یکپارچگی (با استفاده از چک‌سام) سرایند و بخش داده‌ای را فراهم می‌آورد. افست (بیت)۰ – ۱۵۱۶ – ۳۱ ۰شماره پورت مبدأشماره پورت مقصد ۳۲طولچک‌سام ۶۴داده UDP داده‌ها را در قالب قطعاتی (Segment) ارسال می‌کند، که در ابتدای آن‌ها ۸ بایت سرآیند و سپس داده‌های لایه کاربرد قرار می‌گیرد. دو فیلد شماره پورت به منظور شناسایی نقاط پایانی (پروسه‌های نهایی) در ماشینهای مبدأ و مقصد به کار می‌آیند. وقتی یک بسته UDP از راه می‌رسد، محتوای آن به پروسه متصل به شماره پورت مقصد، تحویل داده می‌شود. (فرایند مقیدسازی پروسه به یک پورت در TCP و UDP تفاوتی ندارد) در حقیقت، آنچه که UDP در مقایسه با IP معمولی اضافه‌تر دارد پورتهای مبدأ و مقصد هستند. بدین منظور محتوای فیلد پورت مبدأ از بسته ورودی، در فیلد پورت مقصد از بسته خروجی، کپی و ارسال می‌شود. | ## بخش 2: قرارداد داده‌نگار کاربر | سرایند UDP دارای ۴ ستون، طول هر کدام ۲ بایت (۱۶ بیت) و استفاده از دو تای آن‌ها در IPv4 اختیاری است. (جدول پایین) شماره پورت مبدأ این فیلد شماره پورت فرستنده را مشخص می‌کند و زمانی معنا پیدا می‌کند که برای پاسخ دادن احتیاج به شماره پورت فرستنده داشته باشیم. اگر میزبان مبدأ یک کلاینت باشد، شماره پورت به احتمال زیاد یک شماره پورت موقتی (دسته سوم) خواهد بود. اگر میزبان مبدأ یک سرور باشد، احتمالاً شماره پورت جزو پورت‌های عمومی (دسته اول) خواهد بود. همانند شماره پورت مبدأ، اگر کلاینت، میزبان مقصد باشد، شماره پورت به احتمال زیاد جزو پورت‌های موقتی خواهد بود و اگر میزبان مقصد یک سرور باشد شماره پورت جزو دسته اول خواهد بود. اندازه فیلد به‌طور تئوریک ۶۵٬۵۳۵ بایت (۸ بایت برای سرآیند + ۶۵٬۵۲۷ بایت برای داده) برای بسته دادهٔ UDP است. عدم استفاده از این فیلد نوعی سهل انگاری است مگر اینکه کیفیت داده‌ها چندان مهم نباشد. (مثلاً در مورد صدای دیجیتال) چک‌سامفیلد چک‌سام برای بررسی خطای سرایند و داده استفاده می‌شود. برای محاسبه این کد ابتدا فید چک‌سام صفر فرض می‌شود و در صورت فرد بودن تعداد بایتها، تعدادی صفر زائد به انتهای داده‌ها اضافه می‌گردد تا تعداد بایتها زوج شود. الگوریتم محاسبه چک‌سام بسیار ساده است: مجموعه بایتها به صورت کلمات ۱۶ بیتی (یعنی دو بایت دو بایت) با هم جمع شده و حاصل جمع به صورت «متمم ۱» (One's Complement) منفی می‌شود و درون فید چک‌سام قرار می‌گیرد. نتیجتاً وقتی در گیرنده این محاسبه بر روی کل قطعه (شامل فیلد چک‌سام) انجام می‌شود نتیجه آن باید صفر باشد. جدول زیر ساختار کامل شبه سرآیند فرضی که تنها برای محاسبه چک‌سام مورد استفاده قرار می‌گیرد را مشخص می‌نماید. bits۰ – ۷۸ – ۱۵۱۶ – ۲۳۲۴ – ۳۱ ۰آدرس مبدأ ۳۲ آدرس مقصد ۶۴ تعدادی صفر پروتکل طول UDP ۹۶ شماره پورت مبدأ شماره پورت مقصد ۱۲۸ طول چک‌سام ۱۶۰داده محاسبه چک‌سام در IPv4 اختیاری است. bits۰ – ۷۸ – ۱۵۱۶ – ۲۳۲۴ – ۳۱ ۰ آدرس مبدأ ۳۲ ۶۴ ۹۶ ۱۲۸ آدرس مقصد ۱۶۰ ۱۹۲ ۲۲۴ ۲۵۶طول UDP ۲۸۸ تعدادی صفر سرآیند بعدی ۳۲۰ شماره پورت مبدأ شماره پورت مقصد ۳۵۲ طول چک‌سام ۳۸۴داده قابلیت اطمینان و راه‌حل‌هایی برای کنترل ازدحام فقدان قابلیت اطمینان بدین معناست که برنامه‌هایی که از UDP استفاده می‌کنند کلاً می‌توانند مقداری خطا یا افزونگی را بپذیرند. برخی پروتکلها نظیر TFTP می‌توانند مکانیزم‌های ابتدایی برای برقراری قابلیت اطمینان را در لایه کاربرد به کار گیرند. در اغلب اوقات برنامه‌هایی که از UDP استفاده می‌کنند از مکانیزم‌های برقراری قابلیت اطمینان استفاده نمی‌کنند و حتی مانع از اجرای آن‌ها می‌شوند. رسانه‌های جاری، بازی‌های چندبازیکن بی‌درنگ و VoIP مثالهایی از برنامه‌هایی هستند که از UDP بهره می‌برند. اگر برنامه‌ای احتیاج به برقراری قابلیت اطمینان بالا داشته باشد، باید از پروتکلی نظیر TCP استفاده کند. در مورد UDP برخلاف TCP مورد مهم و قابل توجهی وجود دارد که برنامه‌های مبتنی بر این پروتکل قابلیت جلوگیری از ازدحام و مکانیزم کنترلی خوبی نیستند. برنامه‌های UDP ای که به مسئله ازدحام توجهی نمی‌کنند و میزان قابل توجهی از پهنای باند را نیز اشغال می‌کنند، می‌توانند ثبات اینترنت را به مخاطره بیندازند. مکانیزم‌های مبتنی بر شبکه‌ای وجود دارد که برای به حداقل رساندن تأثیرات مخرب، ترافیک‌های کنترل نشده UDP ارائه شده‌اند. | ## بخش 3: قرارداد داده‌نگار کاربر | اجزاء مبتنی بر شبکه نظیر روترها که از تکنیک‌های صف بندی و حذف بسته‌ها استفاده می‌کنند، تنها ابزار موجود برای کاهش دادن ترافیک حجیم برنامه‌های مبتنی بر UDP می‌باشند. این پروتکل با افزودن رفتار کنترلی مشابه TCP در سیستم میزبان، جریان‌های شدید UDP را کنترل می‌کند. کاربردها برنامه‌های اینترنتی متعددی از UDP بهره می‌برند: سامانه نام دامنه (DNS): در این سیستم پرس و جوهای صورت گرفته بایستی سریع و تنها شامل یک درخواست باشند، و پاسخ آن‌ها نیز تنها یک بسته ساده‌است. پروتکل ساده مدیریت شبکه (SNMP): از این پروتکل برای مدیریت تجهیزات شبکه استفاده می‌شود. پروتکل‌های پخش زنده صدا و تصویر برای مدیریت از دست رفتن بسته‌ها طراحی شده‌اند تا تنها افت کیفیت ناچیزی رخ دهد، تا اینکه زمان زیادی برای ارسال دوباره بسته‌های از دست رفته صرف شود. به این دلیل که TCP و UDP هر دو در یک شبکه کار می‌کنند، بسیاری از کسب و کارها به این نتیجه رسیده‌اند که افزایش اخیر در ترافیک UDP از این برنامه‌های بی‌درنگ بر کارایی برنامه‌هایی نظیر پایانه‌های فروش (POS)، سیستم‌های حسابداری و پایگاه داده که از TCP استفاده می‌کنند، آسیب می‌رسانند. زمانی‌که TCP متوجه از دست رفتن بسته‌ای می‌شود، نرخ انتقال داده‌هایش را کاهش می‌دهد. از آنجاییکه، برنامه‌های تجاری و بی‌درنگ برای کسب و کارها مهم می‌باشند، بر اهمیت توسعه راه حل‌های کیفیت خدمات (QoS) روز به روز افزوده می‌شود. به محض اینکه ارتباط برقرار شد داده‌های کاربر می‌تواند به صورت دوطرفه ارسال و دریافت شود. از جمله خصوصیات این پروتکل می‌توان به موارد زیر اشاره کرد: قابل اطمینان - TCP تصدیق پیغام، ارسال دوباره و زمان انقضاء را مدیریت می‌کند. اگر پیغامی به مقصد نرسید این امکان را دارد که برای چندین بار این کار را انجام دهد. اگر بسته‌ای در وسط راه از دست رفت، سرور می‌تواند درخواست ارسال دوباره بسته مفقوده را اعلام کند. دارای ترتیب - اگر دو پیغام بر روی یک خط ارتباطی به ترتیب فرستاده شوند، پیغام اول، اول خواهد رسید. زمانی‌که قطعات داده‌ای در ترتیب اشتباه دریافت شوند، TCP تمام بسته‌های خارج از ترتیب را بافر می‌کند تا اینکه تمام بسته‌ها به‌طور کامل دریافت شوند، سپس تمام آن‌ها را مرتب کرده و تحویل برنامه کاربردی می‌دهد. سنگین - TCP برای برقراری ارتباط سوکت و پیش از شروع ارسال اطلاعات کاربر، احتیاج به سه بسته دارد. ارتباط به صورت یکطرفه و در یک مسیر ار مبدأ به مقصد و بدون در نظر گرفتن حالت یا وضعیت گیرنده برقرار می‌شود. از جمله خصوصیات این پروتکل می‌توان به موارد زیر اشاره کرد: غیر مطمئن - زمانی‌که پیغامی ارسال می‌شود، نمی‌توان فهمید که آیا این پیغام به مقصد رسیده‌است یا خیر؛ ممکن است پیغام مورد نظر در میانه راه از دست رفته باشد. بدون ترتیب - اگر دو پیغام به یک گیرنده فرستاده شود، ترتیب دریافت پیغام‌ها به هیچوجه مشخص نخواهد بود. سبک - در این پروتکل هیچ‌گونه ترتیب پیغام، ردگیری ارتباط و غیره وجود ندارد؛ بنابراین بار پردازشی خاصی نیز بر شبکه تحمیل نمی‌کند. بسته داده - بسته‌ها به صورت تکی ارسال شده و تنها زمانی‌که به مقصد برسند از نظر یکپارچگی مورد بررسی قرار می‌گیرند. | ## جمع‌بندی | عدم وجود کنترل ازدحام - UDP به خودی خود از ازدحام جلوگیری نمی‌کند و این احتمال وجود دارد برنامه‌هایی که پهنای باند زیادی مصرف می‌کنند باعث بروز ازدحام شوند، مگر اینکه در لایه کاربردی تمهیداتی برای کنترل ازدحام در نظر گرفته شده باشد.