تالار گفتمان مانشت
کنترل خطای UDP - نسخه‌ی قابل چاپ

کنترل خطای UDP - mahmood1 - 05 آبان ۱۳۹۲ ۰۱:۵۴ ق.ظ

سلام
درباره تفاوت بین کنترل خطا در UDP سوال داشتم

در واقع مشخصاً میخواهم بپرسم که آیا UDP کنترل خطا رو انجام میده؟
اگر انجام میده چرا خود Application باید کنترل خطا رو انجام بده

اگر انجام نمیده، اینکه گفته میشه کنترل خطا در UDP اختیاری هست، مربوط به چه کارهایی است؟

با سپاس

RE: کنترل خطای UDP - kavehn - 05 آبان ۱۳۹۲ ۰۳:۴۱ ب.ظ

باسلام
در لایه انتقال دوپروتکل انتقال داده ی مهم وجود دارد به نام های : TCP و UDP
پروتکل TCP کنترل خطا، کنترل جریان و کنترل ترافیک را برای اپلیکیشنی که از آن استفاده می کند ارائه می دهد. درحالی که پروتکل UDP هیچ سرویسی به غیر از انتقال داده به اپلیکیشنی که از آن استفاده می کند ارائه نمی دهد.

حالا میشه از UDP استفاده کرد و مثلا کنترل خطا را در لایه اپلیکیشن پیاده سازی کرد ولی این کار توصیه نمیشه به دلیل اینکه کسی که اپلیکیشن را پیاده سازی می کند باید خودش پروتکل کنترل خطا را پیاده سازی کند.

برای اپلیکیشن های که کنترل تراکم TCP از نقطه نظر آن ها خوب نیست مثل تلفن اینترنتی یا ویدیو کنفرانس از پروتکل UDP استفاده می شود زیرا چنانچه از دست رفت داده هم داشته باشیم در اپلیکیشنی مثل تلفن اینترنتی تا یه حدی این از دست رفت داده قابل قبول است. از طرف دیگر در اپلیکیشن های مثل مرورگر وب از دست رفت داده قابل قبول نیست بنابراین در پیاده سازی پروتکل HTTP از پروتکل TCP استفاده شده است.

بهترین آرزوها

(۰۵ آبان ۱۳۹۲ ۰۱:۵۴ ق.ظ)mahmood1 نوشته شده توسط:  سلام
درباره تفاوت بین کنترل خطا در UDP سوال داشتم

در واقع مشخصاً میخواهم بپرسم که آیا UDP کنترل خطا رو انجام میده؟
اگر انجام میده چرا خود Application باید کنترل خطا رو انجام بده

اگر انجام نمیده، اینکه گفته میشه کنترل خطا در UDP اختیاری هست، مربوط به چه کارهایی است؟

با سپاس


Re: کنترل خطای UDP - mahmood1 - 05 آبان ۱۳۹۲ ۰۴:۱۴ ب.ظ

سلام
ممنون

پس اینکه گفته میشه کنترل خطا در UDP اختیاری است این مربوط به چی میشه؟

RE: کنترل خطای UDP - kavehn - 06 آبان ۱۳۹۲ ۰۸:۲۳ ب.ظ

خواهش میکنم دوست عزیز

شما لطفا بفرمایید این مطلب که کنترل خطا در UDP اختیاری است در کدام منبع و کتاب زبان اصلی ذکر شده است ؟

شاید منظور همین فیلد Checksum در UDP است . طبق RFC768 داریم :
This information gives protection against misrouted datagrams.

شما می تونی در آدرس زیر کل اطلاعات UDP بخونی ۱۰ دقیقه بیشتر وقت نمیگیرد. لینک RFC768 . بعد میبینی که حرفی از کنترل خطا نزده .
کد:
http://www.ietf.org/rfc/rfc768.txt
دوست عزیز UDP هیچ سرویسی را فراهم نمی آورد به غیر از اینکه در طرف ارسال کننده داده را از لایه اپلیکیشن می گیرد و آن را به لایه شبکه می دهد و در طرف دریافت کننده داده را از لایه شبکه می گیرد و به لایه اپلیکیشن می دهد.

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

البته دوست خوبم شخصا با این سوال مشکل دارم و آن را یک سوال استاندارد نمی دانم. شما وقتی RFC768 بخونی میبینی که نوشته :
The
protocol is transaction oriented, and delivery and duplicate protection
are not guaranteed. Applications requiring ordered reliable delivery of
streams of data should use the Transmission Control Protocol (TCP)
وقتی در UDP تضمین تحویل داده را نداریم بنابراین حرف زدن در مورد کنترل خطای UDP درست نیست.

امیدوارم مفید بوده باشد ... بهترین ها برای شما آرزو دارم

(۰۵ آبان ۱۳۹۲ ۰۴:۱۴ ب.ظ)mahmood1 نوشته شده توسط:  سلام
ممنون

پس اینکه گفته میشه کنترل خطا در UDP اختیاری است این مربوط به چی میشه؟


Re: کنترل خطای UDP - mahmood1 - 06 آبان ۱۳۹۲ ۰۹:۱۶ ب.ظ

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

بنابراین اینجا گفته شده که ممکنه به برنامه کاربردی هشدار نده
و همینطور گفته شده که لایه انتقال روشهای آشکارسازی خطا را در خود حدیق داده اما قادر به تصحیح و بازیابی نیست

این یکی از ابهامات است

اختیاری بودن هم احتمالا به همان معنای اختیاری بودن checksum است

تشکر از شما

RE: کنترل خطای UDP - kavehn - 07 آبان ۱۳۹۲ ۰۲:۲۹ ب.ظ

خواهش میکنم ... اینگونه تبادل نظر به درک بهتر مطلب کمک می کند، سپاس خدمت شما برای مطرح کردن این سوال Blush

خوشبتانه شما هم کتاب راس را خوانده اید، فقط یه سوال می ماند : کتاب را به زبان اصلی خوانده اید یا ترجمه شده ؟
شخصا یه ترجمه از این کتاب تهیه کردم. به نظر اینجانب ترجمه این کتاب جنایتی است در حق شبکه های کامپیوتری !!!

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

در مورد این جمله :
نقل قول: و همینطور گفته شده که لایه انتقال روشهای آشکارسازی خطا را در خود حدیق داده اما قادر به تصحیح و بازیابی نیست

این یکی از ابهامات است

UDP امکان بررسی خطا دارد به دلیل وجود checksum ولی چک سام در UDP به نخوی پیاده سازی شده که براساس آن نمی توان سگمت خراب را تصحیح و بازیابی کرد. ( بنابراین ابهامی وجود ندارد. )

نقل قول: اختیاری بودن هم احتمالا به همان معنای اختیاری بودن checksum است
مطمئنا اختیاری بودن به اختیاری بودن checksum در UDP اشاره می کند. بنابراین می توان گفت : " بررسی خطا در UDP اختیاری است."
برای تایید علاوه بر کتاب فوق العاده آقای راس و RFC768 می توان جمله زیر را در کتاب شبکه های کامپیوتری آقای دکتر حقیقت یافت : (چاپ ۹۲ صفحه ۳۷۵ خط ۲۱ )
"در صورتی که مبدا نخواهد از checksum استفاده کند مقدار این فیلد را برابر صفر قرار می دهد."
در نتیجه چک سام اختیاری است. یعنی بررسی خطا اختیاری است. ( در UDP )

بحث جالب و مفیدی بود . از نظر اینجانب پاسخ کامل به سوال داده شده است . خوشحال میشم نظر بقیه دوستان را بخوانم
بهترین آرزوها

(۰۶ آبان ۱۳۹۲ ۰۹:۱۶ ب.ظ)mahmood1 نوشته شده توسط:  سلام
ببینید در کتاب راس اشاره شده که در برخی پیاده سازی UDP از قطعه هایی که دچار خطا شدند به سادگی صرف نظر میکند و در برخی دیگر به برنامه کاربردی هشدار میدهد

بنابراین اینجا گفته شده که ممکنه به برنامه کاربردی هشدار نده
و همینطور گفته شده که لایه انتقال روشهای آشکارسازی خطا را در خود حدیق داده اما قادر به تصحیح و بازیابی نیست

این یکی از ابهامات است

اختیاری بودن هم احتمالا به همان معنای اختیاری بودن checksum است

تشکر از شما


Re: کنترل خطای UDP - mahmood1 - 07 آبان ۱۳۹۲ ۰۸:۴۵ ب.ظ

سلام
ممنونم از شما
لطف کردید و وقت گذاشتید

مورد سوال کامل برطرف شد.