تفاوت TCP و UDP چیست ؟ کدام یک برای استریم ویدیو مناسب است ؟
اگر کمی با دنیای کامپیوتر و اینترنت آشنا باشید حتما کلمه پروتکل به گوشتان خورده است و از طرفی هنگامی که قصد کانفیگ مودم خانگی خود را داشته اید با دو کلمه TCP و UDP برخورده کرده اید ولی آیا تا حالا از خود پرسیده اید که این پروتکل ها چه کاربردی دارند و چه مواقعی استفاده می شوند ؟ این همان سوالی است که در این مقاله قصد داریم به شما پاسخ دهیم. از طرفی, به دلیل درخواست شما مخاطبان عزیز جهت تولید محتوا های تخصصی در حوزه استریمینگ از این پس سعی میکنیم که در پایگاه دانش نگاوید محتوا های تخصصی تر قرار دهیم و اکنون با یکی از این مقاله ها تحت عنوان تفاوت TCP و UDP در کنار شما هستیم.
در این مقاله یک مرور کلی به مباحث پروتکل ها در سطح اینترنت خواهیم کرد و دو مدل از آنها را یعنی TCP و UDP را مورد بررسی قرار خواهیم داد و بررسی خواهیم کرد که هرکدام در چه بخش هایی مورد استفاده قرار میگیرند و همچنین به طور مختصر به توضیح زیرشاخه های آنها خواهیم پرداخت. پیش از شروع باید با مفهوم پروتکل آشنا شویم.
به طور کلی پروتکل معنای قرارداد، شیوه و اصول، راهکار و سیاست می باشد. با بررسی و شناخت انواع پروتکل های موجود در اینترنت خیلی ساده تر می توان نسبت به فعالیت های روزمره اینترنتی اقدام نمود و به طوری که در صورت عدم وجود پروتکل ها امکان تبادل اطلاعات امکان پذیر نخواهد بود. همانند قوانینی که بر یک کشور و دنیا حاکم است پروتکل ها هم شامل قوانینی هستند که در دنیای اینترنت اعمال شده اند و نرم افزار ها و رایانه ها برای حضور در این چرخه باید از آنها تبعیت کنند.
پیش از این که به توضیح این دو پروتکل بپردازیم ابتدا باید با چند موضوع آشنا شوید زیرا در ادامه از آنها استفاده خواهیم کرد.
پروتکل TCP
به بیانی ساده و بر اساس توضیحات فوق پروتکل کنترل انتقال یا TCP (Transmission Control Protocol) ، یک پروتکل connection-oriented است که کامپیوترها برای برقراری ارتباط از طریق اینترنت، از آن استفاده میکنند. یکی از اصلیترین پروتکلها، در شبکههای TCP/IP است. TCP، امکان بررسی خطا، تضمین تحویل دادهها و همچنین تحویل packet ها به همان روشی که ارسال میشوند را فراهم میکند. خوب شاید یکم این توضیح سخت نا مفهوم باشد برای این که دقیق متوجه این موضوع شوید باید چند نکته را از قبل بدانید.
پروتکل UDP
User Datagram Protocol (UDP)، یک پروتکل connectionless است که درست مانند TCP کار میکند اما فرض میکند بررسی خطاها و خدمات recovery نیاز نیستند. در عوض، UDP به صورت مداوم، datagram ها را برای کاربران ارسال میکند تا مطمئن شود که آنها را دریافت کردهاند.
تفاوت TCP و UDP
در مورد شباهت این دو پروتکل باید بدانید که هردوی این پروتکل ها در بستر اینترنت و از پروتکل IP استفاده میکنند و البته هر دو آنها بر روی لایه انتقال (Transport layer) کار میکنند و میتوان گفت که هر دو این پروتکل ها جزو متداول ترین روش برای انتقال اطلاعات در سطح اینترنت هستند. در ادامه به تفاوت های میان این دو پروتکل اشاره خواهیم کرد.
مفهوم Connection Oriented و Connection less
لایه ها می توانند دو نوع سرویس مختلف به لایه های بالایی خود ارائه دهند. اولی سرویس connectionless و دومی سرویس connection-oriented می باشد. سرویس connection-oriented از روی سیستم تلفن الگو برداری شده است برای صحبت با یک نفر ، شما گوشی تلفن را بر میدارید ، شماره گیری می کنید ، صحبت می کنید ، و سپس گوشی را در جای خود قرار می دهید.
به همین نحو برای استفاده از سرویس شبکهایی connection-oriented ابتدا کاربر سرویس یک ارتباط را برقرار می سازد ، از ارتباط استفاده می کند و در نهایت ارتباط را قطع می کند جنبه اصلی و ضروری یک ارتباط این است که مانند یک لوله عمل می کند : فرستنده اشیا (بیتها ) را از یک سر لوله به داخل می فرستد و گیرنده در سمت دیگر لوله همه آنها را به همان ترتیب دریافت می کند.
در مقابل سرویس connectionless از روی سرویس پستی الگوبرداری شده است. هر پیام ( نامه ) آدرس کامل مقصد را با خود حمل میکند و هر کدام از طریق سیستمی کاملاً مستقل از سایرین مسیریابی میشوند. به طور طبیعی ، هنگامی که دو پیام به یک مقصد فرستاده میشوند ، اولین پیام ارسالی ، اولین پیام دریافتی خواهد بود. اگرچه امکان این نیز وجود دارد که اولین پیام ارسالی دچار تاخیر شده و دومین پیام زودتر به مقصد برسد. در یک سرویس connection-oriented این امر غیر ممکن میباشد.
که یکی از تفاوت TCP و UDP در همین مورد است که در ادامه به توضیح آن خواهیم پرداخت.
میتوان گفت که سرویس connection-oriented دارای دو ضعف جزیی است: توالی پیامها و جریانهای بایت. در اولی ، محدودههای پیام حفظ میشوند. هنگامی که دو پیام یک کیلوبایتی ارسال میشوند، آنها به صورت دو پیام یک کیلوبایتی دریافت میشوند و نه بصورت یک پیام دو کیلوبایتی. در دومی، ارتباط به صورت جریانی از بایتها بدون داشتن محدودیت در پیام میباشد. زمانی که دریافتکننده دو کیلوبایت دریافت میکند، هیچ راهی برای تشخیص اینکه آن پیام ، یک پیام دو کیلوبایتی، یا دو پیام یک کیلوبایتی یا 2048 پیام یک بایتی بوده، وجود ندارد. زمانی که صفحات یک کتاب از طریق شبکه برای یک ویراستار عکس ارسال میشوند، ممکن است حفظ محدودههای پیام مهم باشد. از طرف دیگر، در اتصال یک ترمینال به یک سیستم اشتراک زمانی راه دور ممکن است یک بایت جریان از ترمینال به سمت کامپیوتر تمام آن چیزی باشد که مورد نیاز است.
در پاراگراف قبلی درمورد این دو موضوع به طور کامل توضیح دادیم به همین جهت خیلی خلاصه از این مورد عبور میکنیم در کل TCP یک پروتکل connection-oriented و UDP یک پروتکل connection-less است. TCP قبل از ارسال اطلاعات، ارتباطی بین فرستنده و گیرنده برقرار میکند در صورتی که UDP قبل از ارسال دادهها، اتصال برقرار نمیکند.
قابل اطمینان (Reliability)
پروتکل TCP قابل اطمینان تر است بدین صورت که تضمین میکند داده های ارسال شده به طور کامل به گیرنده می رسد. چنانچه قسمتی از اطلاعات در فرایند ارسال از بین برود، آن را بازیابی و مجددا ارسال میکند. در کل میتوان گفت TCP مدام در حال بررسی داده ها جهت احتمال خطا است و آنها را ردیابی میکند تا اطلاعاتی از بین نرود و یا خراب نشود.
در حالی که در پروتکل UDP تضمینی برای اینکه اطلاعات و پکت ها به دست گیرنده برسد وجود ندارد و صرفا اطلاعات ارسال می شود بدون آن که تاییدی دریافت شود (Acknowledge).
ترتیب انتقال (Ordering)
یکی دیگر از تفاوت TCP و UDP در ترتیب انتقال اطلاعات استبه این صورت که TCP تضمین میکند پکتها، به ترتیب و بر اساس تاریخ ارسال شوند، در صورتی که ترتیب ارسال UDP بر هیچ مبنای خاصی قرار ندارد و صرفا ارسال می شود.
سرعت انتقال (Speed)
احتمالا حتی تا به اینجای کار توانسته باشید حدس بزنید که کدام پروتکل کند تر است ! بله درسته سرعت TCP، به این دلیل که عملکرد گستردهای دارد، خیلی کندتر از UDP است. TCP میبایست یک connection ایجاد کند، خطاهای احتمالی را بررسی کند و همچنین فایلها را، همان طور که ارسال شده، دریافت کند. در حالی که UDP فارغ از تمامی موارد ذکر شده صرفا اطلاعات را ارسال میکند حتی اگر تمامی دیتا و پکت ها اصطلاحا Lost شوند.
کنترل جریان (Flow control)
TCP از مکانیزم کنترل جریان استفاده میکند تا مطمئن شود، فرستنده به یکباره حجم زیادی از اطلاعات را ارسال نکند.
عملکرد TCP برای حل این مسئله به این شکل است که مقداری از دادهها را در یک Send Buffer و Receive Buffer نگهداری میکند و در زمان مناسب ارسال و یا دریافت میکند. زمانی که برنامه، آماده دریافت داده باشد، اطلاعات را از Receive Buffer میخواند و دریافت میکند، چنانچه Receive Buffer پر باشد، دریافت کننده قادر به دریافت اطلاعات نیست پس منجر به از دست رفتن اطلاعات میشود.
بنابراین جهت حفظ و نگهداری دادهها، دریافت کننده میزان فضای خالی Receive Buffer را برای فرستنده مشخص میکند. گیرنده، با هر بار دریافت packet، میزان فضای خالی را برای فرستنده مشخص میکند.
درصورتی که پروتکل UDP از جریان کنترل استفاده نمیکند؛ بنابراین، packet ها در فرایند جریان مداوم، یا ارسال میشوند و یا از بین میروند.
موارد استفاده (Usage)
از TCP برای برنامههایی استفاده میشود که نیاز به قابلیت اطمینان بالایی وجود داشته باشد و سرعت در آنها خیلی اهمیت نداشته باشد:
- World Wide Web (HTTP, HTTPS)
- Secure Shell (SSH)
- File Transfer Protocol (FTP)
- Email (SMTP, IMAP/POP)
از UDP برای برنامههایی استفاده میشود که نیاز به سرعت و کارایی داشته باشند:
- Streaming videos
- Online games
- Live broadcasts
- Domain Name System (DNS)
- Voice over Internet Protocol (VoIP)
- Trivial File Transfer Protocol (TFTP)
نتیجه گیری
در این پست سعی کردیم که به صورت کامل تفاوت TCP و UDP را به شما شرح دهیم. همچنین به صورت غیر مستقیم اشاره کردیم که برای استریم ویدیو کدام یک از این پروتکل ها مورد استفاده قرار میگرد. ولی ما دوست داریم که از شما بشنویم. با توجه به محتوایی که مطالعه کردید برای استریم ویدیو کدام یک از پروتکل ها برای استریم ویدیو مورد استفاده قرار میگرد و چرا ؟
حتما پاسخ خودتون رو با ما در بخش نظرات به اشتراک بگذارید. و اگر در مورد موضوع خاصی نیاز به اطلاعات دارید با تیم تحریریه در میان بگذارید تا ما این اطلاعات را در وبلاگ نگاوید نشر دهیم. همچنین میتوانید جهت داشتن سرویس استریم ویدیو اختصاصی خود با ما در تماس باشید و یا درخواست مشاوره رایگان خود را به طور مستقیم از طریق وب سایت نگاوید ارسال کنید.