دستور netstat و موارد استفاده از آن
دستور netstat که مخفف network statistics است، مناسب بررسی وضعیت ارتباطی سرورها یا سیستم های مایکروسافتی است. به کمک این دستور کاربردی می توان تمامی ارتباطات موجود، پورت های باز، ارتباط برقرار شده از سمت این سرور و … را مشاهده نمود.
اگر در محیط command prompt از این دستور هلپ بگیریم، سوئیچ های دستور و کاربرد آنها نمایش داده میشود
اگر از این دستور بدون سوئیچی استفاده کنیم جدولی مانند شکل زیر مشاهده خواهید کرد
این جدول شامل چهار ستون proto (پروتکل)، Local Address (آدرس اینترفیس سیستمی که دستور بروی آن اجرا شده)، Foreign Address (آدرس سیستم مقصد) و State (وضعیت ارتباط) می باشد.
انواع وضعیت ها
CLOSED : هنگامی که سرور یک سیگنال ACK در زمان شروع سینگال TCP connection termination پس از پیغام ابتدایی FIN از کلاینت دریافت کرده و اتصال به صورت کامل بسته شده باشد، این وضعیت به نمایش در خواهد آمد.
CLOSED_WAIT : زمانیکه درخواست قطع ارتباط (FIN) از سمت کلاینت ارسال شده یا ارتباط بدون هماهنگی قطع شده و سرور در انتظار تعیین تکلیف ارتباط است این وضعیت نمایش داده میشود.
ESTABLISHED : هنگامی که سیگنال SYN از سمت کلاینت به سرور ارسال شده و ارتباط به صورت کامل برقرار میشود وضعیت ESTABLISHED خواهد شد.
FIN_WAIT_1 : در این وضعیت ارتباط برقرار است و سیگنالی مبنی بر بسته شدن ارتباط دریافت نشده است.
FIN_WAIT_2 : پس از مدتی که ارتباط در سرور از سمت کلاینت در انتظار بسته شدن میباشد و همچنان سیگنال FIN دریافت نشده است این وضعیت نمایش داده میشود.
LAST_ACK : هنگامی که سرور در حال ارسال سیگنال FIN خود به سمت کلاینت میباشد این وضعیت نماینگر خواهد شد.
LISTENING : در این وضعیت ، سرور آماده دریافت و برقراری ارتباط با کلاینت است. از طریق این وضعیت می توان متوجه شد سرور بروی چه پورت هایی در حال سرویس دادن است. توجه داشته باشید، اگر سروری به پورت گوش میکند، به دلیل این است که بایستی بروی آن پورت به کلاینت ها سرویس بدهد.
SYN_RECEIVED : در این حالت سرور تنها سیگنال SYN را از طرف کلاینت دریافت کرده است.
SYN_SEND : در این وضعیت کلاینت درخواست برای باز کردن و فعال شدن ارتباط داده است.
TIME_WAIT : این وضعیت در هنگامی نمایش داده میشود که ارتباط بین کلاینت و سرور شناخته شده ولی ارتباط به صورت کامل برقرار نشده است و سرور در انتظار تکمیل ارتباط TCP خود با کلاینت است.
از کل وضعیت های توضیح داده شده، 3 الی 4 وضعیت (Time-Wait, Established, Listening, closed) هستند که در اکثر مواقع دیده میشود.
سوئیچ های دستور netstat
a- : تمامی ارتباطهای شبکه سیستم به صورت کامل نمایش داده خواهد شد.
b- : نمایش نام برنامههایی که به صورت باینری در حال ارتباط هستند ؛ تمامی برنامههای ویندوز در هنگام اتصال به اینترنت در این بخش نمایش داده خواهد شد.
e- : نمایش وضعیت اینترفیس شبکه و میزان پکتهایی که ارسال و دریافت شدند.
f- : نام کامل دامنه ( FQDN ) آدرسهای خارجی که به سیستم شما متصل هستند.
n- : لیستی از تمام ارتباطات فعال TCP که در حال حاضر برقرار میباشد. این سوئیچ یکی از کاربردی ترین سوئیچ های دستور netstat است.
o- : نمایش تمام ارتباطات فعال TCP به همراه شماره پردازش ( PID ) ، که توسط آن میتوانید پردازش را توسط Task Manager ببندید.
p- : با استفاده از این دستور میتوانید ارتباطات یک پروتکل خاص را بررسی کنید ؛ این دستور پروتکلهای TCP ، UDP ، TCPv6 ، UDPv6 ، ICMP و ICMPv6 را پشتیبانی میکند. این پارامتر میتوانید همراه پارامتر s- استفاده شود تا خروجی بهتری بگیرید.
r- : این دستور جدول Route ویندوز شما را نمایش میدهد. ( این دستور همانند route print عمل میکند )
s- : پارامتر s یک آمار کلی از پروتکلها به همراه وضعیت ارتباط و دادههای رد و بدل شده نمایش میدهد. این دستور همراه با پارمتر p میتواند فیلتر خوبی برای نمایش وضعیت یک پروتکل و ارتباط خاص باشد.
t- : توسط این پارامتر شما تمامی اتصالهای فعال با پروتکل TCP که به بیرون از سیستم شما زده شده را ببینید.
v- : فعالیت هرگونه ارتباط را به شما نمایش میدهد.
Interval : این پارامتر دستوری نیست و تنها کافی است پس از وارد کردن دستور و پارامترها عددی را وارد کنید تا به ثانیه دستور تکرار شود.
نمایی از ساختار دستور
ساختار دستور netstat به شکلی است که شما پس از وارد کردن دستور اصلی پارامترها را میتوانید به صورت پشت سرهم و یا جداگانه وارد کنید.
netstat -na
netstat -n -a
با وارد کردن دستور بالا ، لیستی از تمامی ارتباطات TCP و UDP برای شما به نمایش در میآید.
netstat -na 5 >> C:\connections.txt
با وارد کردن دستور بالا، هر 5 ثانیه یکبار وضعیت تمامی ارتباط TCP و UDP به انتهای فایل connection.txt در مسیر C:\connection.txt اضافه میشود.
netstat -an 10 | findstr :80
دستور بالا هر 10 ثانیه یکبار لیست ارتباط TCP و UDP بروی پورت 80 را نمایش می دهد.