• Blog
  • TCP چیست و چگونه کار می کند؟

TCP چیست و چگونه کار می کند؟

آکتوبر 19, 2023

ترجمه متن به زبان فارسی: چه پروتکل TCP است؟

TCP برای ارتباط بین دستگاه‌ها در شبکه استفاده می‌شود. این مخفف Transmission Control Protocol است. از آن برای ایجاد اتصال بین مشتری و سرور استفاده می‌شود. این با شکستن داده‌ها به بسته‌های کوچک که می‌توانند از طریق فعالیت شبکه منتقل شوند، کار می‌کند.

کنترل اتصال TCP شامل سه دست دادن و چهار موج می‌شود.

قطعه یک تابع مسیریابی ناوبری برای کل پروتکل TCP/IP است. بسته قطعه به بسته‌های داده IP در انتقال شبکه پروتکل TCP/IP اشاره دارد که از مسیریابی مسیر استفاده می‌کنند، هر قطعه مسیر شبکه را جستجو می‌کنند، آدرس IP، پروتکل تبادل و غیره.

  • هماهنگ سازی شماره‌های دنباله
  • ACK: فیلد تأیید معنی‌دار است
  • Seq: شماره توالی
  • شماره تأیید

فرآیند سه مرحله ای اتصال

دست دادن

یکی از ویژگی‌های اساسی TCP اتصال مبتنی بر اتصال است. بنابراین، قبل از ارسال داده، هر دو طرف باید از طریق یک دست‌دادن به یکدیگر اطمینان حاصل کنند که تمام انتقال داده بدون خطا است و پس از آن دو طرف می‌توانند به‌طور موفقیت‌آمیز اتصال را برقرار کنند.

اولین دست دادن

مشتری بخش 1 را به سرور ارسال می کند، جایی که پرچم SYN نشان می دهد که این بخش برای درخواست اتصال است. علاوه بر این، فیلد شماره توالی آن (که در شکل به صورت seq کوتاه شده است) به شماره توالی اولیه x (شماره توالی اولیه، ISN) تنظیم می شود و هر دو طرف در اتصال TCP می توانند به صورت تصادفی شماره توالی اولیه را انتخاب کنند.

پس از ارسال بخش 1، مشتری وارد حالت SYN-SENT می شود و منتظر تأییدیه از سرور می ماند.

دست دومین شکست

پس از دریافت درخواست اتصال از سمت مشتری، سرور برای پاسخ به مشتری، بخش 2 را به عنوان پاسخ ارسال می‌کند.

پرچم ACK به 1 تنظیم شده است، که نشان دهنده پاسخ به مشتری است، و فیلد شماره تأیید (شماره تأیید، به صورت کوتاه ack کوچک) اثر خواهد کرد.

مقدار این فیلد x + 1 است، که شماره توالی بخش دریافت شده از سمت مشتری به علاوه یک است، که نمایانگر شماره توالی داده‌هایی است که سرور انتظار دارد در دفعه بعدی از سمت مشتری دریافت کند.

علاوه بر این، پرچم SYN بخش 2 نیز به 1 تنظیم شده است، که به معنای این است که این همچنین یک بخش برای شروع اتصال است، و شماره دنباله seq به شماره دنباله اولیه سرور y تنظیم شده است.

پس از ارسال بخش 2، سرور وارد حالت SYN-RECEIVED می شود.

سومین دست دادن

پس از دریافت بخش 2، مشتری بخش 3 را به سرور ارسال می کند و پرچم ACK آن 1 است که به معنی پاسخ دادن به سرور است و تأیید می کند که فیلد شماره توالی ack برابر با y + 1 و فیلد شماره توالی seq برابر با x + 1 است. پس از ارسال این بخش، هر دو طرف وارد وضعیت برقراری ارتباط می شوند که نشان می دهد که اتصال برقرار شده است.

the third handshake

بر اساس وضعیت نمایشگر مشتری و سرور، وضعیت اتصال را قضاوت کنید.

  • مشتری و سرور به حالت بسته تعلق دارند که نشان دهنده هیچ رابطه اتصالی نیست.
  • مشتری درخواستی ارسال می‌کند، مشتری وضعیت ارسال (SYN-sent) را باز می‌کند و سرور وضعیت گوش دادن (Listen) را باز می‌کند؛
  • وقتی سرور درخواست مشتری را دریافت می کند، سرور به حالت پاسخ (SYN-recvd) تغییر می دهد.
  • وقتی کلاینت پاسخی از سرور دریافت می‌کند، کلاینت به حالت اتصال پایدار (متصل شده) تغییر می‌دهد و به طور همزمان بسته داده دوم را ارسال می‌کند.
  • وقتی سرور داده دوم را از مشتری دریافت می کند، سرور به حالت اتصال پایدار (برقرار شده) تغییر می دهد.
  • پس از برقراری ارتباط پایدار بین دو طرف، زمان شروع ارتباط داده‌های منظم است.

چگونه سه دست دادن کار می کند؟

سه‌گانه دست‌دادن به هر دو طرف امکان تأیید قابلیت‌های ارسال و دریافت خود و طرف مقابل را به عنوان فرآیند ممکن می‌کند.

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

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

سومین دست دادن: سرور می تواند تایید کند که قابلیت های ارسال و دریافت آن به طور استاندارد است و قابلیت های ارسال و دریافت طرف دیگر نیز استاندارد است.

سه‌گانه دست‌دادن می‌تواند به هر دو طرف اجازه دهد تا تأیید کنند که توانایی‌های ارسال و دریافت خود و طرف مقابل همگی استاندارد هستند تا بتوانند ارتباط برقرار کنند.

چگونه چهار موج کار می‌کنند؟

ایجاد اتصال نیاز به سه دست دادن دارد و پایان دادن به یک اتصال نیاز به چهار موج دارد.

جزئیات فرآیند موج زدن چهار بار

۱. مشتری یک بخش بستن اتصال ارسال می‌کند و درخواست می‌کند که اتصال بسته شود و ارسال داده متوقف شود. سپس، فیلد شماره توالی seq = x (برابر با شماره توالی آخرین بایت از تمام داده‌های ارسالی قبلی به علاوه یک) ارسال می‌شود، سپس مشتری وارد حالت FIN-WAIT-1 می‌شود و منتظر پیام تأییدیه از سرور می‌ماند.

۲. سرور بسته FIN را دریافت می کند، پیام تأییدیه ای را باز می گرداند، ACK = 1، ack = x + 1 و شماره توالی خود را seq = y می آورد، سپس سرور وارد حالت CLOSE-WAIT می شود.

۳. مشتری بلافاصله پس از دریافت بخش ACK از سرور وارد حالت FIN-WAIT-2 می شود و هنوز می تواند داده های seq=z را از سرور دریافت کند تا زمان دریافت بخش FIN.

4. سپس سرور تمام داده ها را ارسال کرده است، یک بخش FIN به مشتری ارسال می کند، و سپس سرور وارد حالت LAST-ACK می شود و منتظر یک بخش تأیید از مشتری می ماند.

۵. پس از دریافت کلید FIN از سرور، مشتری یک پیام ACK به سرور ارسال می‌کند و سپس وارد حالت TIME-WAIT می‌شود.

6. سرور بلافاصله پس از دریافت پیام ACK از مشتری وضعیت بسته را وارد می کند و در این زمان اتصال را خاتمه می دهد. به طور کلی، سرور زودتر از مشتری وارد وضعیت بسته می شود زیرا هیچ زمان انتظاری وجود ندارد.

four waves

به طور خلاصه، آیا یک دست‌دردسر 3-طرفه است یا یک موج 4-طرفه، پروتکل TCP نیاز به تأیید اطلاعات از هر دو طرف دارد تا ارتباط یا قطع ارتباط را برقرار کند.

چرا TCP اتصال را چهار بار بسته می‌کند به جای سه بار؟

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

مشتری تا زمانی که سرور یک بسته FIN به مشتری ارسال کند که نشان دهنده ارسال تمام داده ها است، پاسخ نمی دهد. سرور درخواست بستن ارتباط را می‌دهد. بنابراین، کلیه چهار موج مورد نیاز است.

در طول اتصال TCP چه مشکلات امنیتی رخ می‌دهد؟

در فرآیند سه گامی، پس از ارسال SYN-ACK توسط سرور، اتصال TCP قبل از دریافت ACK از سمت مشتری، اتصال نیمه باز است. در این زمان، سرور در حالت SYN_RCVD قرار دارد. هنگام دریافت ACK، سرور می تواند به حالت ESTABLISHED منتقل شود.

حمله SYN به معنای این است که مشتری حمله‌کننده تعداد زیادی آدرس IP وجود ندارند را در یک بازه زمانی کوتاه جعل می‌کند، بطور مداوم بسته‌های SYN را به سرور ارسال می‌کند و سرور با ارسال بسته تأیید، منتظر تأیید مشتری می‌ماند.

از آنجا که آدرس منبع وجود ندارد، سرور باید به طور مداوم تا زمانی که زمان انتظار تمام شود، ارسال مجدد انجام دهد. به عبارتی دیگر، این بسته‌های SYN تقلبی برای مدت طولانی در صف بدون اتصال قرار خواهند گرفت و درخواست‌های SYN معمولی رد خواهند شد.

در موارد شدید، این باعث ازدحام شبکه یا حتی کرش سیستم می‌شود. یک حمله SYN یک حمله نوعی DoS/DDoS است. برای کسب اطلاعات بیشتر در مورد حملات DoS/DDoS کلیک کنید.

شما همچنین ممکن است دوست داشته باشید

بیشتر بخوانید >