احسان امجدی
کارشناس امنیت اطلاعات و ارتباطات

معرفی ساختار ارتباطی TCP Handshake و تحلیل آن در Netstat

سلام به همه دوستان عزیز آی‌تی پرویی و علاقه‌مندان به مباحث شبکه. همانطور که از عنوان نکته کاملا گویا است در این نکته سعی شده است تا با مروری بر TCP Three-way Handshake به منظور تسلط بر مبحث اصلی و ذکر مقدمه در ابتدای امر، سنگینی و گنگی احتمالی مطلب، تا حد توان کاسته شود.در همین زمینه و در یک ارتباط نقطه به نقطه، منظور از "Client" طرفی است که درخواست ایجاد ارتباط را ارسال میکند و منظور از "Server" طرف دیگر است که درخواست برقراری ارتباط را قبول میکند. توجه داشته باشید که در اینجا هدف توضیح ساختار عملکرد یک ارتباط "کلاینت/ سرور" ی نیست.

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

TCP Three-way Handshake چیست؟

1- برقراری ارتباط

  • کلاینت پیغام SYN، که حاوی پورت سرور و Initial Sequence Number(ISN) ( شماره ترتیبی آغازین) است را به سرور ارسال میکند ( active open)
  • سرور SYN خودش را به همراه ACK ( که شامل ISN کلاینت بعلاوه عدد یک است) به کلاینت متعاقبا بازمیگرداند.
  • کلاینت یک ACK ( که شامل ISN سرور بعلاوه عدد یک است) را به سرور ارسال میکند.

2- پایان و برهم زدن ارتباط

  • کلاینت یک FIN ( active close) را برای سرور ارسال میکند. در این وضعیت ارتباط نیمه قطع میباشد چرا که کلاینت دیگر ارسال دیتا را ادامه نمیدهد اما هنوز قادر به دریافت اطلاعات از طرف سرور است.به محض دریافت FIN از طرف سرور، سرور بصورت بالقوه وارد وضعیت قطع ارتباط میشود.
  • سرور یک ACK را که شامل شماره ترتیبی FIN کلاینت بعلاوه عدد یک است را برای طرف دیگر ارتباط ارسال میکند.
  • کلاینت هم متعاقبا یک ACK را که شامل شماره ترتیبی FIN سرور بعلاوه عدد یک است را به سرور باز میگرداند.یک ارتباط نیمه قطع میتواند فرایند ارسال دیتا را متوقف کند و این در حالی اسن که دریافت دریتا هنوز ادامه دارد.

خروجی Netstat

وضعیت یک ارتباط TCP که در بالا گفته شد، میتواند توسط TCP Flag ها و در قالب تحلیل و ردیابی ارتباطات شبکه مانیتور شود. همچنین میتوان با اجرای مولفه Netstat وضعیت ارتباط را حدس زد و در همان وضعیت مورد نظر به تحلیل و ردیابی ارتباط پرداخت. مولفه Netstat در ویندوز NT، ویندوز 95 و در TCP/IP-32 برای سایر ویندوزها و در وضعیت workgroup موجود است.توضیح وضعیت های ارتباط TCP در Netstat نشان داده شده است:

  • SYN-SEND: وضعیت active open را مشخص میکند.
  • SYN-RECEIVED: سرور SYN را از طرف کلاینت دریافت کرده است.
  • ESTABLISHED: کلاینت، SYN متناظر را از سرور دریافت کرده و session را برقرار کرده است.
  • LISTEN: سرور آماده است تا ارتباط را قبول کند.

نکته: در این زمینه حتما مطالب مرتبط با listen socket call را مطالعه کنید. TCP Socket ها در وضعیت Listening نشان داده نشده اند و این یکی از محدودیت های Netstat است. درNetstat.exe، وضعیت مربوط به TCP Listen Socket ها را نشان داده نمیشود.

  • FIN-WAIT-1: وضعیت active close را مشخص میکند.
  • TIMED-WAIT: کلاینت بعد از حالت active close وارد این وضعیت میشود.
  • CLOSE-WAIT: حالت بالقوه قطع ارتباط را مشخص میکند که سرور به محض دریافت FIN از طرف کلاینت وارد این وضعیت میشود.
  • FIN-WAIT-2: کلاینت تائیدیه (ACK) دریافت نخستین FIN ارسالی خودش به سرور را دریافت میکند.
  • LAST-ACK: هنگامی که سرور FIN خودش را به کلاینت ارسال کرد، در این وضعیت قرار میگیرد.
  • CLOSED: سرور ACK را از کلاینت دریافت کرده و ارتباط را قطع میکند.

نویسنده: احسان امجدی

منبع: انجمن تخصصی فناوری اطلاعات ایران

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


احسان امجدی
احسان امجدی

کارشناس امنیت اطلاعات و ارتباطات

احسان امجدی ، مشاور امنیت اطلاعات و ارتباطات و تست نفوذ سنجی ، هکر کلاه سفید ، مدرس دوره های تخصصی امنیت اطلاعات و شبکه ، تخصص در حوزه های سرویس های مایکروسافت ، Routing و Switching ، مجازی سازی ، امنیت اطلاعات و تست نفوذ ، کشف جرائم رایانه ای و سیستم عامل لینوکس ، متخصص در حوزه SOC و ...

نظرات