09-07-2020, 10:55 PM
در این مقاله قصد داریم که به یکی از دو پروتکل مهم شبکه که در لایه چهار مدل معروف osi کار می کنند یعنی tcp که اختصار شده عبارت Transmission Control Protocol است بپردازیم و ببینیم که چه زمانی باید از این پروتکل استفاده شود. همانطور که میدانید در لایه چهارم شبکه دو نوع پروتکل tcp و udp رو داریم که اتصال گرا و غیر اتصال گرا نامیده می شوند.
Handshake چیست؟
فرض کنید شما با دوست خود می خواهید ارتباط برقرار کنید، ابتدا دوست خود را صدا میزنید و وقتی که اون برگشت به شما نگاه کرد، سلام می گویید و احتمالا شما هم در جواب او سلام می گویید، خب در این سناریو و در مرحله اول شما رفیق خود را صدا می زنید، در مرحله دوم کلمه سلام را از دوست خود دریافت می کنید و در مرحله سوم هم جواب دوست خود را با سلام می دهید که با این کار ارتباط شما با دوست خود برقرار می شود. حالا میتوانید ادامه صحبت های خود را با دوستتان در میان بزارید.
زمانی که شما بخواهید در دنیای اینترنت و شبکه یک ارتباط با سیستم یا سرور برقرار کنید کامپیوتر ها به صورت خودکار یک پکت ارسال می کنند که با نام syn شناخته می شود و طرف مقابل که این پیام را دریافت می کند یک پیام syn+ack به سمت فرستنده ارسال می کند و فرستنده هم یک ack به سمت مقابل می فرستد و ارتباط برقرار می شود حالا کامپیوتر ما با کامپیوتر مقابل ارتباط برقرار کرده و اقدام به رد و بدل کردن داده ها و درخواست ها می کنند.
خب برگردیم سر tcp، این پروتکل برای برقراری ارتباط از یک دست تکانی (handshake) سه مرحله ای استفاده می کند تا از برقراری ارتباط با طرف مقابل اطمینان حاصل شود و با این روش برقراری ارتباط، شما قادر خواهید بود که از ارسال و دریافت کامل داده ها اطمینان حاصل کنید.
برای مثال هنگامی که شما با استفاده از http که یک پروتکل برای وب می باشد به سایتی درخواست می فرستید، این پروتکل به دلیل tcp بودن، از اینکه کل داده های سایت را دریافت کرده است تا سایت به ما کامل نمایش داده شود اطمینان حاصل می کند.
در پروتکل tcp اگر در هنگام ارسال و دریافت داده ها، داده ای خراب شود یا حین ارسال به هر دلیلی پکت ها خراب شوند، میزبان متوجه می شود که این پکت ها خراب هستند و درخواست ارسال دوباره پیام ها را می کند که این کار با استفاده از ack number موجود در هدر tcp انجام می شود.
به اینصورت که اگر هر بسته ای را دریافت نکند هیچ پیغام ack جدیدی نمی دهد و مجدد پیغام ack قبلی را می فرستد تا دوباره بسته های جدید ارسال شوند، شکل زیر را جهت درک بهتر مشاهده کنید.
Handshake چیست؟
فرض کنید شما با دوست خود می خواهید ارتباط برقرار کنید، ابتدا دوست خود را صدا میزنید و وقتی که اون برگشت به شما نگاه کرد، سلام می گویید و احتمالا شما هم در جواب او سلام می گویید، خب در این سناریو و در مرحله اول شما رفیق خود را صدا می زنید، در مرحله دوم کلمه سلام را از دوست خود دریافت می کنید و در مرحله سوم هم جواب دوست خود را با سلام می دهید که با این کار ارتباط شما با دوست خود برقرار می شود. حالا میتوانید ادامه صحبت های خود را با دوستتان در میان بزارید.
زمانی که شما بخواهید در دنیای اینترنت و شبکه یک ارتباط با سیستم یا سرور برقرار کنید کامپیوتر ها به صورت خودکار یک پکت ارسال می کنند که با نام syn شناخته می شود و طرف مقابل که این پیام را دریافت می کند یک پیام syn+ack به سمت فرستنده ارسال می کند و فرستنده هم یک ack به سمت مقابل می فرستد و ارتباط برقرار می شود حالا کامپیوتر ما با کامپیوتر مقابل ارتباط برقرار کرده و اقدام به رد و بدل کردن داده ها و درخواست ها می کنند.
خب برگردیم سر tcp، این پروتکل برای برقراری ارتباط از یک دست تکانی (handshake) سه مرحله ای استفاده می کند تا از برقراری ارتباط با طرف مقابل اطمینان حاصل شود و با این روش برقراری ارتباط، شما قادر خواهید بود که از ارسال و دریافت کامل داده ها اطمینان حاصل کنید.
برای مثال هنگامی که شما با استفاده از http که یک پروتکل برای وب می باشد به سایتی درخواست می فرستید، این پروتکل به دلیل tcp بودن، از اینکه کل داده های سایت را دریافت کرده است تا سایت به ما کامل نمایش داده شود اطمینان حاصل می کند.
در پروتکل tcp اگر در هنگام ارسال و دریافت داده ها، داده ای خراب شود یا حین ارسال به هر دلیلی پکت ها خراب شوند، میزبان متوجه می شود که این پکت ها خراب هستند و درخواست ارسال دوباره پیام ها را می کند که این کار با استفاده از ack number موجود در هدر tcp انجام می شود.
به اینصورت که اگر هر بسته ای را دریافت نکند هیچ پیغام ack جدیدی نمی دهد و مجدد پیغام ack قبلی را می فرستد تا دوباره بسته های جدید ارسال شوند، شکل زیر را جهت درک بهتر مشاهده کنید.
در آستانه پیری، گلایه از شب دنیا بد است مرد حسابی!
به احترام دیازپام، بدون قصه و بوسه، تلاش کن که بخوابی...
به احترام دیازپام، بدون قصه و بوسه، تلاش کن که بخوابی...