محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

3Way Handshake چیست؟ معرفی 3 مرحله کاری پروتکل TCP

3Way Handshake چیست؟ همانطور که قبلا هم در انجمن تخصصی فناوری اطلاعات ایران مطالعه کردید بصورت کلی ما پروتکل ها را از نظر نوع ارتبط به دو دسته اتصالگرا یا Connection Oriented و عدم اتصال گرا یا Connectionless تقسیم بندی می کنیم ، یکی از پروتکل های بسیار معروف در بحث اتصالگرا ، پروتکل TCP یا Transmission Control Protocol است که بیشترین استفاده را در ارتباطات مهم و حیاتی در سرویس ها بر عهده دارد.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

TCP برای برقراری ارتباط ابتدا باید درستی و صحت ارتباط تایید شود و سپس ارتباط برقرار شود ، فرآیند برقراری ارتباط در پروتکل TCP توسط یک فرآیند سه مرحله ای به نام Three-way Handshake یا Triple-Handshake انجام می شود ، در واقع هرگاه صحبت از Three-Way Handshake شد یعنی پروتکل ها قصد برقراری ارتباط با همدیگر را دارند ، فرآیند Three-Way Handshake در پروتکلی مثل TCP به شکل زیر انجام می شود :


  1. ابتدا سیستم درخواست کننده یا مبدا که ما آن را Source خطاب می کنیم با آدرس IP فرضی 10.0.0.1 درخواست برقراری ارتباط خودش با آدرس مقصد یا Destination را بر روی پورت FTP به شکل 10.0.0.3:21 بر روی پورت نظر ارسال می کند که به این درخواست در اصطلاح SYN یا بسته اطلاعاتی SYN گفته می شود. SYN Packet مخفف Synchronization Packet است.
  2. مقصد یا Destination بعد از اینکه درخواست را با استفاده از بسته اطلاعاتی SYN از مبدا دریافت کرد ، با استفاده از یک بسته اطلاعاتی به عنوان SYN//ACK به مبدا پاسخ می دهد که آماده برقراری ارتباط است . SYN//ACK مخفف کلمه های Synchronization Acknowledge است.
  3. بسته اطلاعاتی ACK در نهایت از سمت مبدا یا Source به سمت مقصد ارسال می شود که نمایانگر دریافت کردن بسته SYN است


در نهایت بعد از اینکه Source یک بسته ACK در تایید برقراری ارتباط به Destination ارسال کرد ارتباط آماده برقراری است ، بعد از اینکه این فرآیند سه مرحله ای به درستی انجام شد به این معنی است که پورت FTP یا 21 ای که ما در اینجا درخواست داده ایم بر روی سرور باز یا Open است و آماده برقراری ارتباط است ، در حالت عادی بعد از برقرار شدن ارتباط Three Way Handshake فرآیند شروع ارتباط انجام می شود اما اگر اینکار توسط یک نرم افزار اسکنر انجام شود معمولا در نهایت در صورت بسته بودن پورت مورد نظر بسته اطلاعاتی FIN یا FINISH بعد از برقراری موفقیت آمیز ارتباط ارسال می شود و یا اینکه بسته RST یا Reset توسط نرم افزار ارسال می شود تا ارتباط بسته شود. همانطور که گفتیم این فرآیند در تمامی پروتکل های Connection oriented به این شکل انجام می شود.

اگر بخواهیم مقایسه ای داشته باشیم برای درک بهتر این موضوع کافیست ساختار برقراری یک ارتباط تلفنی قدیمی را در نظر بگیریم ، شما گوشی را بر می دارید و شماره شخص مورد نظرتان را میگیرید ( همان پورت FTP ای که درخواست دادیم ) سپس بعد از برقراری ارتباط تلفنی و برداشتن گوشی تلفن شخص مورد نظر پاسخ می دهد الو بفرمایید ( شما میگید الو از بندست D: ) این کلمه الو همان SYN//ACK است و در نهایت شما می گویید سلام ، میخواستم در خصوص موضوعی با شما صحبت کنم و این همان فرآیند ACK آخر است که ارتباط ما آغاز می شود و صحبت های دو نفر از اینجا شروع می شود ، نکنید این کارارو بده زشته ... D:

تصویر مربوط به ارتباط Three-Way Handshake در TCP



FLAG های مختلف ارتباطی در TCP Connection

در ارتباطات استانداردی که در پروتکل TCP انجام می شود اولین قسمتی که برای برقراری ارتباط بررسی می شود در ساختار بسته اطلاعاتی قسمتی به نام TCP Packet Header و به ویژه قسمتی به نام FLAG است ، در واقع قسمت FLAG ابتدا بررسی می شود و بعد از بررسی های لازم ارتباط بین سیستم ها برقراری می شود و دستورات به سیستم ها داده می شود ، در این قسمت از بسته اطلاعاتی FLAG های مختلفی دیده می شوند که مهمترین آنها به شرح زیر می باشند :

  1. SYN : این FLAG به معنی Synchronization است و اطلاع رسانی در خصوص ارسال یک Sequence Number جدید می باشد
  2. ACK : این FLAG به معنی Acknowledge است و تاییده دریافت یک ارتباط و شناسایی Sequence Number بعدی می باشد
  3. URG : این FLAG به معنی Urgent است و به معنی پردازش سریع داده های موجود در دستور در سریعترین زمان ممکن است
  4. FIN : این FLAG به معنی FINISH با پایان است و اعلام می کند که دیگر قرار نیست بسته اطلاعاتی به سمت مقصد ارسال شود
  5. RST : این FLAG به معنی RESET است و همانطور که از نامش هم پیداست برای RESET کردن ارتباط مورد استفاده قرار می گیرد


اسکن کردن با SYN یا SYN Scanning معمولا با استفاده از سه FLAG معروف SYN و ACK و RST انجام می شود.شما می توانید با استفاده از این FLAG ها و بعضا دستکاری کردن بسته های اطلاعاتی ارسالی به سمت سرور اطلاعات بسیار خوبی در خصوص پورت ها و سرویس های سیستم هدف بدست بیاورید که در فرآیند Enumeration بیشتر انجام می شود. تصویر محل قرارگیری Flag ها در پروتکل TCP را در بالا می توانید مشاهده کنید که در قسمت Header قرار گرفته است.


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

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

نظرات