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

همان طور که گفتیم به دلیل ماهیت عملکرد UDP نسبت به TCP ، در بیشتر مواقع انتخاب بهتری برای انتقال بدون تاخیر صدا و تصویر است. برای مثال در زمان صحبت یا یک دوست استفاده از پروتکل TCP به دلیل تاخیری که پردازش اطلاعات در پی دارد ، صدای دوستمان را با تاخیر به گوش ما می رساند. در این صورت ممکن است در زمانی که ما شروع به صحبت کرده ایم ، دوستمان شروع به صحبت دیگری نماید. ( حتما تاخیر 10 سال پیش را در زمان صحبت تلفنی بین کشورهای مختلف به یاد دارید. )

همچنین TCP در زمانی که مسیر ارسال و دریافت شلوغ باشد ، می تواند این شلوغی را تشخیص دهد و در نتیجه در این مواقع سرعت ارسال را به صورت خودکار کاهش می دهد. ( خیلی پروتکل باهوشیه ) اما این هوش  بیش از حد گاهی باعث دردسر می شود ، چرا که در زمان صحبت تلفنی این مهم نیست که مسیر شبکه شلوغ باشد یا نباشد. تنها چیزی که ما نیاز داریم ، رسیدن صدای واضح و بدون تاخیر به مقصد است. نتیجه این کاهش خودکار سرعت ارسال این است که اگر شما بگویید : “سلام ، حال شما چطور است؟” ممکن است طرف مقابل چنین جمله ای را بشنود : “سسسسلاااااام … حاااالِ …. ششششمااااا چطوووور است؟”

در اینجا این سوال پیش می آید که اگر UDP به اندازه TCP قابل اعتماد نیست و نمی توان اطمینان حاصل نمود که تمام پکت ها به درستی به مقصد برسند ، آیا صدا و تصویر ارسال شده از طریق این پروتکل بی کیفیت و همراه با قعطی نمی شود؟ پاسخ این است که وقتی شما در دو ثانیه کلمه “سلام” را تلفظ می کنید ، همین یک کلمه تبدیل به 50 تا 200 بسته می شود ( بستگی به Codec و Sampling Frequency دارد )  و می توانید تصور کنید که با از دست رفتن حتی 20 Packet همچنان صدای شنیده شده از کیفیت خوبی برخوردار خواهد بود و مهم تر اینکه به راحتی قابل فهم است و به دلیل عدم نیاز به پردازش بالا با تاخیر نخواهد بود.

Three-way handshake
اکنون خواهیم دید که TCP چگونه یک ارتباط یا Connection را برقرار و قطع می کند. به تصویر زیر که در وب سایت 9tut تهیه شده است دقت کنید.

.

.

در ابتدا هاست A یک SYN message به هاست B ارسال می کند. SYN مخفف کلمه Synchronize به معنای همزمان سازی است. این SYN message به هاست B اعلام می کند که هاست A می خواهد با او ارتباط برقرار کند. همچنین این پیغام همزمان سازی یا SYN message حاوی یک SEQ number است. SEQ کوتاه شده Sequence به معنای ترتیب است. ترتیب جهت ردیابی پیغام استفاده می شود. Sequence Number می تواند هر عدد 32 بیتی بین 0 تا 2 به توان 32 باشد ، بنابراین در تصویر SEQ=x مشخص شده است که X نماینده هر عددی می تواند باشد.

بعد از اینکه SYN Message توسط هاست B دریافت شد با یک پیغام SYN-ACK پاسخ آن را خواهد داد. ACK کوتاه شده Acknowledge به معنای تایید کردن است. این پیغام به هاست A اعلام می کند که Message ای را که فرستاده بودی دریافت کردم و مایل به ارتباط هستم.
هاست B همراه این پیغامِ تایید ، یک Sequence Number مخصوص به خود نیز ارسال می کند. در تصویر بالا عدد Sequence Number پیغام تایید  با y نمایش داده شده است. Y هیچ ارتباطی با Sequence Number  پیغامی که در مرحله قبل توسط هاست B دریافت شده بود ندارد و یک عدد کاملا تصادفی است.

همچنین پیغام تایید یک عدد را نیز به عنوان Acknowledge Number  ارسال می نماید. مقدار این عدد  برابر x+1 است که هاست A  از روی آن می تواند بفهمد که این پیغام مربوط به کدام SYN Message ارسال شده است. یا به تعبیری با استفاده از آن به هاست A این پیام را می رساند که پیغام x+1 ( بعدی ) را برای من بفرست.

حال نوبت به پیغام ACK می رسد. ACK بر خلاف SYN-ACK شامل تنها یک متغیر است. متغیر ACK که در اینجا برابر y+1 خواهد بود. این پیغام را دوباره هاست A به هاست B ارسال می کند. در واقع مفهوم آن برای هاست B این است که ارتباط ادامه دارد.
فرض کنید که در یک ارتباط x را برابر 1 و y  را برابر 50 داریم. در تصویر زیر مقدارهای x و y با این اعداد جایگزین شده اند. در این پردازش 3 پیغام باید ارسال شود. در تمام ارتباط های TCP چنین پردازش سه مرحله ای آغازگر ارتباط است که به آن Three-way handshake گفته می شود. TCP از مکانیزمی شبیه Three-way handshake نیز برای Terminate یا پایان دادن به ارتباط استفاده می کند  که به آن Four-way handshake گفته می شود.

.

.

در مقاله های آینده درباره Four-way handshake صحبت خواهیم نمود.

منبع