میزبان کلود
آموزشی

آشنایی کامل با فرآیند Handshake

میزبان کلود میزبان کلود
2738 بازدید 0 دیدگاه 13 اردیبهشت 1402 زمان مطالعه: 25 دقیقه
/storage/post-covers/1683115887_2023-05-03_11.png
آشنایی کامل با فرآیند Handshake

Handshake سه طرفه یا سه جانبه ی TCP یکی از اصلی ترین بخش های اینترنت است که جریان تبادل اطلاعات بین شبکه های مختلف را پایدار و سریعتر می کند.  در این مطلب سعی داریم تا به طور جامع پروسه Handshake را توضیح داده و با فرآیند سه جانبه TCP نیز آشنا شویم.

ممکن است در هر کسب و کاری شما روزی چند بار با همکارانتان دست دهید، اما در همان روز، کامپیوتر شما صدها یا شاید هزاران بار این کار را انجام می دهد. به پروتکل دست دادن یا Handshake به شکل یک خوش آمد گویی نگاه کنید. زمانی که کامپیوتر شما اولین بسته داده را دریافت می کند، یاد می گیرد که چطور با سایر دستگاه ها و شبکه ها ارتباط برقرار کند.

پروتکل handshake چیست؟

پروسه handshake پارامترهای خودکاری را برای ارتباطات بین دستگاه ها تنظیم می کند.  دقیقا مثل زمانی که یک دست دادن عادی بین دو نفر، آغازی است برای شروع یک ارتباط مفصل تر؛  handshake کامپیوترها نیز به دستگاه ها قوانینی برای ارسال و اشتراک داده ها معرفی می کند تا بتوانند با یکدیگر اطلاعات را تبادل کنند.

این قوانین ممکن است شامل نرخ انتقال، الفبای کددهی، برابری، فرآیند تفسیر و غیره باشد.  طبق گفته Cloudflare ، TLS یا امنیت لایه انتقال، راهی است برای ایمن سازی ارتباطات و پیاده سازی HTTPS.

یک TLS Handshake با استفاده از یک رمزنگاری خاص زمانی شروع می شود که کاربری یک پیام مثل "سلام" را به سمت سرور ارسال می کند؛ که این پیام حاوی ورژن TLS،  مجموعه رمزهای قابل پشتیبانی، و یک رشته ی تصادفی از بایت ها می شود.

سرور با استفاده از گواهی SSL خود پاسخ "سلام"، مجموعه رمز یا cipher suite و یک رشته بایت تصادفی دیگر را بر می گرداند؛

سپس کاربر اطلاعات را اعتبارسنجی کرده و رشته بایت تصادفی سوم را به سمت سرور ارسال می کند؛ که البته با یک کلید عمومی رمزنگاری شده و سرور می تواند با کلید خصوصی خود آن را رمزگشایی کند.

زمانی که کاربر لازم بداند، یک پیام " تمام شد" رمزنگاری شده و یک کلید سشن (Session) به سرور می فرستد. پس از آنکه رمزنگاری ایمن صورت گرفت، دو دستگاه با استفاده از کلیدهای session ارتباطات آتی خود را برقرار می کنند.

TCP Handshake چیست؟

به منظور برقراری اتصال بین یک کامپیوتر و یک دستگاه جانبی مثل پرینتر، مودم، یا حتی یک سرور، یک handshake ایجاد می شود تا به طرفین اتصال، روش برقراری ارتباط را آموزش دهد. یک مثال نوستالژیک همان صدایی است که در زمان اتصال به اینترنت dial-up به گوش می رسید؛

آن صدای آزاردهنده در اصل همان پروسه handshake بود. این handshake می تواند بین یک کامپیوتر و یک پرینتر نیز برقرار شود تا قبل از پرینت به پرینتر نحوه دریافت و ارائه خروجی داده ها را اطلاع دهد.

علاوه بر تبادل اطلاعات پروتکل، handshake برای شناسایی کیفیت و سرعت اتصالات نیز مورد استفاده قرار می گیرد، بعلاوه ی هر اقدام امنیتی دیگری که از قبل برای آن تعریف شده باشد. اغلب از مورد دوم برای برقراری اتصالات یک کامپیوتر به یک سرور استفاده می شود.

 

امروزه اکثر ما از پروتکل TCP برای انتقال داده ها در یک شبکه اتصال محور استفاده می کنیم. اما تا بحال به این فکر کرده اید که چرا ما این پروتکل را به سایرین ترجیح می دهیم؟

در واقع، TCP امکان برقراری ارتباطی امن و قابل اعتماد را بین دو دستگاه فراهم می کند که البته لازمه برقراری یک handshake سه طرفه بوده که در زمان شروع و پایان اتصالات بین دو دستگاه در TCP رخ می دهد.

همانطور که از نامش پیداست، سه قدم برای شروع و پایان اتصال باید طی شود. در ادامه به توضیح پروسه TCP 3-way handshake خواهیم پرداخت.

خرید cdn

فرآیند TCP 3-Way Handshake

این فرآیند به مجموعه مراحلی اشاره دارد که برای برقراری اتصالی امن و قابل انکا در TCP قبل از شروع انتقال داده ها رخ می دهد. در انتهای ارتباط نیز مجددا این فرآیند سه طرفه تکرار شده تا اتصال قطع شود. این اتصال امن به این منظور ایجاد می شود تا CPU، Buffer و پهنای باند دستگاه ها را برای ارتباط موثرتر و بهینه تر حفظ کند.

TCP (پروتکل کنترل انتقال) ، یک سری قوانین است که نحوه رفت و آمدهای داده ها بین سیستم های ارتباطی مختلف را مدیریت می کند؛ عملاً نیمی از پروتکل TCP/IP است که در کل از اینترنت پشتیبانی می کند. اگر تا بحال از www، ایمیل و یا یک سیستم مدیریت از راه دور استفاده کرده باشید، از TCP بهره برده اید.

TCP 3-Way Handshake به روش غیر رسمی اشتراک داده ها بین شبکه ها تبدیل شده است. در این پروسه، ارورها چک شده، داده های گم شده یا تخریب شده مجدداً انتقال یافته، و بسیاری ویژگی های مهم دیگر نیز در پشت پرده رخ می دهد تا عملکرد را حتی در اتصالات نامطمئن نیز سالم نگه دارد.

سه مرحله در فرایند TCP 3-Way Handshake

  • مرحله اول: کاربر از آدرس IP سرور برای ارسال درخواست برقراری یک ارتباط اولیه استفاده می کند. این پیام SYN نام دارد که مخفف synchronization است.

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

  • مرحله دوم: در ادامه سرور می تواند به دستگاه کاربر اجازه اتصال داده و منابعی مانند پورت شبکه را به آن اختصاص دهد. این مرحله تایید همگام سازی یا SYN ACK نام دارد.

این بسته SYN ACK دارای دو شماره است. اولی ACK که توسط سرور به شماره ارسالی از کلاینت اضافه می شود. و دومی که SYN بوده و توسط سرور با یک شماره تصادفی ارسال می شود. پس این دو شماره به این معنا هستند که سرور بسته کلاینت را تایید کرده و در حال ارسال بسته متخص خود است تا در ادامه  توسط کلاینت تایید شود.

  • مرحله سوم: آخرین مرحله Handshake تاییدیه کاربر از اتصال بوده که با یک پیام ACK همراه است. اغلب این پیام با درخواستی مبنی بر دریافت محتوایی مثل صفحه HTML، تصاویر و یا API است.

در اکثر موارد اتصالات بین کاربر و سرور با TLS که در ابتدای مطلب به آن اشاره شد، ایمن می شود. این مورد برای اشتراک گذاری اطلاعات رمزنگاری بین دو طرف، دو یا سه مسیر رفت و برگشتی را به فرآیند اضافه می کند.

a tcp 3 way handshake

فرآیند بستن یک اتصال در TCP 3-Way Handshake

  • در اولین قدم کلاینت FIN را به سرور ارسال می کند: زمانی که کلاینت قصد پایان دادن به اتصال را دارد، یک پرچم 1 تنظیم کرده و با یک شماره تصادفی برای سرور ارسال می کند. در اینجا ACK معادل صفر است.
  • در گام دوم سرور با FIN و ACK به کلاینت پاسخ می دهد: پس از دریافت درخواست پایان اتصال کلاینت، سرور تاییدیه ای با تنظیم یک ACK و پرچم 1به کلاینت ارسال می کند. شماره تاییدیه ACK یک نمره بالاتر از شماره دریافتی از در قدم اول است. برای مثال، اگر کلاینت یک شماره FIN =1000 ارسال کرده باشد، سرور با ACK شماره= 1001 پاسخ می دهد. بعلاوه سرور پرچم FIN را نیز معادل 1 قرار می دهد.

کلاینت در گام سوم یک ACK به سرور ارسال می کند: پس از دریافت FIN از سمت سرور، کلاینت پرچم ACK را معادل 1 قرار داده و آن را با یک شماره بالاتر از شکاره تصادفی FIN به سمت سرور ارسال می کند. پس از تکمیل این مرحله، اتصال بین کلاینت و سرور به اتمام می رسد.

چطور می توان سرعت TCP 3-Way Handshake را افزایش داد؟

مشکل و ضعف TCP 3-Way Handshake در اینترنت این است که به شدت به فاصله و مسافت جغرافیایی بین کلاینت و سرور وابسته است.

با اینکه داده ها تقریباً با سرعت نور حرکت می کنند، طی کردن مسافت های طولانی همچنان زمان بر خواهد بود. برای مثال اگر از آمریکا به هند درخواستی ارسال کنید، فرآیند پنج ثانیه طول می کشد، اما اگر از آمریکا به کانادا ارسال کنید، یک ثانیه؛

مسلماً این یک مثال بوده و در واقعیت می تواند تاثیرات بسیار مهمی در عملکرد داشته باشد. مثلاً ممکن است یک صفحه کند لود شده یا یک ویدیو در Buffer کردن دچار اختلال شود.

از آنجایی که فرآیند TCP 3-Way Handshake به زیرساخت اینترنت متصل است، حل کردن اینگونه مشکلات دشوار است. اما راهکارهایی نیز برای افزایش سرعت این پروسه وجود دارد.

یکی از روش های افزایش سرعت تحویل، بهبود و تصفیه داده های درون بسته هاست. اما تا زمانی که در اندازه های بزرگی انجام نشود، شاید آنچنان تغییرات قابل توجهی ایجاد نکند.

اما موثرترین راه کوتاه کردن مسافت بین کلاینت و سرور است.

به همین دلیل است که ما تصمیم گرفتیم راهکار CDN را پیش روی شما قرار دهیم؛ این شبکه به هزاران سرور متصل بوده و در چندین موقعیت جغرافیایی پرترافیک جهان مستفر است. به کمک CDN ابری میزبان کلود می توانید کاربران خود را به طرز قابل توجهی به سرورها نزدیک تر کرده و فرآیند TCP 3-Way Handshake را تسریع بخشید.

یکی دیگر از روش های تسریع بخشی به این فرآیند، استفاده از اتصالات دائمی است. یعنی بجای اینکه هر بار یک اتصال جدید ایجاد کنید، می توانید از همان اتصال TCP سابق برای برقراری ارتباطات جدید استفاده کرده و فرآیند زمان بر TCP 3-Way Handshake را کوتاه تر کنید.

سرورهای اصلی شما می توانند این کار را به صورت خودکار با سرورهای لبه CDN انجام داده و از روش اتصالات دائمی برای برقراری ارتباط استفاده کنند.

خرید cdn

راهکار میزبان کلود

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

تفاوت بین TCP و UDP در چیست؟

TCP تنها پروتکل جهت بخش در اینترنت نیست؛ پروتکل دیگری به نام UDP نیز وجود دارد که یک جایگزین منعطف تر و ساده تر است. این پروتکل توسط اکثر سیستم های عامل پشتیبانی شده و برای برقراری ارتباط بین کلاینت و سرور به TCP 3-Way Handshake نیازی ندارد.

این به معنای اشتراک گذاری سریعتر داده ها و بهبود عملکرد اپلیکیشن ها و مرورگرهاست.

در حال حاضر UDP یک بخش جدا ناپذیر از HTTP/3 است که در اصل نسخه بعدی پروتکل HTTP خواهد بود. که البته این پتانسیل را دارد که اینترنت را متحول کند.

تفاوت اصلی بین HTTP/2 و  HTTP/3 در این است که دومی بجای TCP از یک پروتکل جدید به نام QUIC بر مبنای UDP استفاده می کند. این یعنی زمانی که ما مرورگرها و نرم افزارهایمان را باز می کنیم، به احتمال زیاد QUIC پروتکلی خواهد بود که داده ها را جا به جا کرده و محتوا را برای دستگاه ما نمایش می دهد.

جمع بندی

برقراری ارتباط بین دو دستگاه که می توانند یک کامپیوتر، مرورگر وب، پرینتر، مودم، سرور و غیره باشند، زمانی در اینترنت ممکن خواهد شد که بین دو طرف Handshake یا تاییده اتصال برقرار شده باشد. این handshake دارای یک فرآیند سه مرحله ای در ابتدای اتصال و یک فرآیند سه مرحله ای دیگر در انتها برای خاتمه دادن به اتصال است. در این مطلب چیستی و فرآیند handshake را مفصل بررسی کرده و راهکارهایی برای تسریع بخشی به این فرآیند ارائه کردیم، امیدواریم این مطلب برای شما مفید واقع شده باشد.

پیشنهاد ویژه

CDN ابری میزبان کلود

میزبان کلود

سرعت در بارگذاری و تحویل محتوای سایت

میزبان کلود

سرعت در بارگذاری و تحویل محتوای سایت

میزبان کلود

سرعت در بارگذاری و تحویل محتوای سایت

میزبان کلود

سرعت در بارگذاری و تحویل محتوای سایت

مشاهده پلانها
میزبان کلود میزبان کلود
میزبان کلود
میزبان کلود
نویسنده مطلب میزبان کلود

ارائه دهنده خدمات زیرساخت یکپارچه ابری

آشنایی کامل با فرآیند Handshake 0 دیدگاه