دستور Netstat که مخفف Network statistics است دستوری برای دریافت وضعیت شبکه می باشد. از این رو هر ادمین شبکهای باید با دستور نت استات آشنا شود. حال در این مقاله ما قصد داریم به بررسی این دستور به صورت کامل پرداخته و نحوه کار کردن با آن را خدمت شما توضیح دهیم. ابتدا قبل از آموزش دستور Netstat به توضیح کلی و کامل آن میپردازیم.
دستور Netstat چیست و چه کاربردی دارد؟
Netstat همانند دستور Netsh یک ابزار خدماتی در سیستمعامل ویندوز است که همانند یک دستور خارجی Command Prompt ویندوز عمل میکند. از این رو میتوان دستور netstat را یک دستور خط فرمان یا command line tool دانست.
این دستور یک فایل اجرایی با نام netstat.exe دارد که در پوشه Windows وجود داشته و در مجموع برای نمایش تمام ارتباطات ما در شبکه اعم از پورتها ، آدرس IP ها ، سیستمهایی که با ما ارتباط دارند و ... بکار میرود.
این دستور همانطور که توضیح داده شد ، در محیط CMD یا همان Command Prompt عمل کرده و نتایج و خروجی دستور نیز در همان محیط به نمایش در میآید. به همین دلیل میتوان به کمک دستور نت استات به سادگی مشکلات موجود در شبکه را پیدا کرده و حجم ترافیکی که در شبکه وجود دارد را محاسبه کنید.
البته امروزه ابزارهای و نرمافزارهای متفاوت دیگری مانند Xnetstat وجود دارند که تمامی اطلاعات دستور Netstat را به صورت گرافیکی در محیط ویندوز به شما نمایش میدهد. اما با این تفاسیر همچنان این دستور کاربردیتر و دم دستتر از سایر ابزارهای گرافیکی میباشد.
خُب تا بدین جای مطلب با دستور Netstat آشنایی مختصری پیدا کردید ، حال در ادامه به آموزش دستور Netstat میپردازیم تا بیش از پیش با مفهوم و عملکرد آن آشنا شوید. مطلب آموزش دستور Netstat مربوط به ویندوز بوده و شما میتوانید از این دستور با کمی تفاوت در لینوکس نیز استفاده نمایید.
کاربرد netstat چیست؟
اکنون که تا حدودی با این دستور خط فرمان یا command line tool آشنا شدید شاید بخواهید بدانید که چرا ادمینهای شبکه باید از آن استفاده کنند. نت استات کاربردهای متنوعی دارد که باعث شده تا به این اندازه محبوبیت پیدا کند. از جمله مهمترین کاربردهای آن میتوان به موارد زیر اشاره کرد:
- آشنایی با این موضوع که برنامههای موجود در سیستم به کمک چه پورتی به چه آدرس و یا پورتی متصل شده اند.
- وضعیت ارتباط در شبکه چگونه است؟ آیا ارتباط به خوبی برقرار شده است؟ آیا ارتباط به پایان رسیده است یا خیر.
- چه نوع از اتصال یا Connection وجود داشته است؟ TCP، UDP، TCPv6 یا UDPv6؟
- چه نوع از پروتکلها در هر کارت شبکه ارسال و یا دریافت شده اند؟
- به کمک نت استات میتوان به سادگی Routing Table را برای IPv4 و IPv6 مشاهده کنیم.
البته این موارد، تنها بخشی از کاربردهای مهم و حیاتی netstat به شمار میروند. شاید اکنون دیگر متوجه شده باشید که چرا این دستور تا به این اندازه مورد استفاده قرار گرفته است.
آموزش دستور Netstat در ویندوز
دستور اجرایی این ابزار در ویندوز همان Netstat است که پس از وارد کردن آن در محیط Cmd اطلاعاتی از قبیل ، آدرس IP به همراه پورتهای ارتباطی بین سیستم شما و سیستم دیگر، وضعیت پورتها و ... را به نمایش میگذارد. حال دستور را ما وارد کرده و اطلاعاتی از قبیل زیر به نمایش در آمده که توضیح آن به شرح زیر میباشد.
اجرای دستور Netstat در ویندوز
پس از وارد کردن دستور نت استات به صورت پیشفرض شما چهار ستون اصلی را خواهید دید که به شرح زیر می باشند.
Proto : پروتکل ارتباطی بین سیستم شما و سیستم مقصد را نمایش میدهد.
Local Address : آدرس IP فعلی شما که درگیر ارتباط با سیستم دیگر میباشد در این ستون نمایش داده میشود.
Foreign Address : آدرس و پورت ارتباطی سیستم مقصد با شما در این ستون نمایش داده خواهد شد.
State : وضعیت ارتباط در این بخش به نمایش درخواهد آمد که نشانگر عملیات فعلی آن پورت میباشد.
وضعیت و یا همان State حالتهای مختلفی دارد که در ادامه به شرح آن میپردازیم.
نکته : ارتباط در شبکه همیشه به صورت سرویس گیرنده و سرویس دهنده برقرار میشود و در توضیحات پایین ما این کلمات را به عنوان سرور و کلاینت معرفی کردهایم ؛ اما صرفاً توضیحات ما مربوط به یک سرور فیزیکی نیست و به معنای سرویس دهنده میباشد.
انواع وضعیت ( State ) در دستور Netstat
هنگامی که دستور نت استات را در ویندوز اجرا میکنید، با وضعیتهای مختلفی روبرو میشوید که میتواند وضعیت دقیق شبکه را به شما نشان دهد. اما این وضعیتها چه هستند و هر کدام از آنها چه معنایی دارند؟ برای اینکه بتوانید به خوبی با وضعیت شبکه خود آشنا شوید، لازم است تا با انواع وضعیتها در دستور خط فرمان netstat آشنا شوید. در این قسمت برخی از مهمترین این وضعیتها به همراه معنی آنها را به شما معرفی خواهیم کرد:
CLOSED : هنگامی که سرور یک سیگنال ACK از کلاینت دریافت کرده و اتصال به صورت کامل بسته میشود ، این وضعیت به نمایش در خواهد آمد.
CLOSED_WAIT : هنگامی که از سمت کلاینت مبنی بر پایان دادن به ارتباط یک سیگنال FIN ارسال میشود وضعیت به حالت CLOSED_WAIT در خواهد آمد.
ESTABLISHED : هنگامی که سیگنال SYN از سمت کلاینت به سرور ارسال شده و ارتباط به صورت کامل برقرار میشود وضعیت ESTABLISHED خواهد شد.
FIN_WAIT_1 : در این وضعیت ارتباط برقرار است و سیگنالی مبنی بر بسته شدن ارتباط دریافت نشده است.
FIN_WAIT_2 : پس از مدتی که ارتباط در سرور از سمت کلاینت در انتظار بسته شدن میباشد و همچنان سیگنال FIN دریافت نشده است این وضعیت نمایش داده میشود.
LAST_ACK : هنگامی که سرور در حال ارسال سیگنال FIN خود به سمت کلاینت میباشد این وضعیت نماینگر خواهد شد
LISTENING : در این وضعیت ، سرور آماده دریافت و برقراری ارتباط با کلاینت است.
SYN_RECEIVED : در این حالت سرور تنها سیگنال SYN را از طرف کلاینت دریافت کرده است.
SYN_SEND : در این وضعیت کلاینت درخواست برای باز کردن و فعال شدن ارتباط داده است.
TIME_WAIT : این وضعیت در هنگامی نمایش داده میشود که ارتباط بین کلاینت و سرور شناخته شده ولی ارتباط به صورت کامل برقرار نشده است.
وضعیتهایی که در بالا خدمت شما توضیح دادیم ، کلیه وضعیتهایی بود که ممکن است شما در هنگام وارد کردن دستور Netstat ببینید. اما شما بیشتر با سه الی چهار وضعیت برخورد خواهید کرد و مابقی حالات به سرعت رد شده و مربوط به سرور نیز میباشد.
مثالی برای درک بهتر کاربرد دستور Netstat
به طور مثال پس از وارد کردن این دستور نت استات در صورتی که دیدید از یک IP خاص در بخش Foreign بر روی یک پورت بی ربط ارتباطی برقرار است ، شما متوجه خواهید شد که اطلاعاتی از سیستم شما در حال جابهجا شدن میباشد که ممکن است با کمی تحقیق متوجه تروجان و یا بدافزار شوید.
به عنوان مثال تروجانی با نام sub7 از پورت 27374 استفاده میکند و اگر در بخش Foreign Address یک آدرس بیگانه و ناشناس با پورت ذکر شده به شما متصل شده و وضعیت در حال listening است بدانید این تروجان در حال فعالیت بر روی سیستم شما میباشد. حال پس از توضیحاتی که خدمت شما ارائه دادیم در ادامه به آموزش پارامترهای کاربردی این دستور پرداخته تا آموزش دستور netstat را به صورت کامل فراگیرید.
پارامترهای دستور Netstat
a- : تمامی ارتباطهای شبکه سیستم خود را به صورت کامل دریافت خواهید کرد.
b- : نمایش نام برنامههایی که به صورت باینری در حال ارتباط هستند ؛ تمامی برنامههای ویندوز در هنگام اتصال به اینترنت در این بخش نمایش داده خواهد شد.
e- : نمایش وضعیت اینترفیس شبکه و میزان پکتهایی که ارسال و دریافت شدند.
f- : نام کامل دامنه ( FQDN ) آدرسهای خارجی که به سیستم شما متصل هستند.
n- : لیستی از تمام ارتباطات فعال TCP که در حال حاضر برقرار میباشد.
o- : نمایش تمام ارتباطات فعال TCP به همراه شماره پردازش ( PID ) ، که توسط آن میتوانید پردازش را توسط Task Manager ببندید.
p- : با استفاده از این دستور نت استات میتوانید ارتباطات یک پروتکل خاص را بررسی کنید ؛ این دستور پروتکلهای TCP ، UDP ، TCPv6 ، UDPv6 ، ICMP و ICMPv6 را پشتیبانی میکند. این پارامتر میتوانید همراه پارامتر s- استفاده شود تا خروجی بهتری بگیرید.
r- : این دستور جدول Route ویندوز شما را نمایش میدهد. ( این دستور همانند route print عمل میکند )
s- : پارامتر s یک آمار کلی از پروتکلها به همراه وضعیت ارتباط و دادههای رد و بدل شده نمایش میدهد. این دستور همراه با پارمتر p میتواند فیلتر خوبی برای نمایش وضعیت یک پروتکل و ارتباط خاص باشد.
t- : توسط این پارامتر netstat شما تمامی اتصالهای فعال با پروتکل TCP که به بیرون از سیستم شما زده شده را ببینید.
v- : فعالیت هرگونه ارتباط را به شما نمایش میدهد.
?- : نمایش Help دستور Netstat
Interval : این پارامتر دستوری نیست و تنها کافی است پس از وارد کردن دستور و پارامترها عددی را وارد کنید تا به ثانیه دستور تکرار شود.
پارامترهای دستور Netstat در این قسمت به پایان رسیده و حال برای استفاده از آن و نحوه کارایی آنها ، نظر شما را به مثالهای زیر جلب مینماییم.
ساختار و مثال دستور Netstat
ساختار دستور Netstat
netstat –parameter1 –parameter2 proto [interval]
ساختار دستور netstat به شکلی است که شما پس از وارد کردن دستور اصلی پارامترها را میتوانید به صورت پشت سرهم و یا جداگانه وارد کنید. به طور مثال هر دو دستور زیر یک عمل را انجام میدهند.
netstat -an
یا
netstat -a –n
مثالهای کاربردی دستور Netstat
جهت آشنایی هرچه بهتر شما با دستور نت استات و نحوه به کارگیری و پیادهسازی آن، ما در این قسمت مثالهای مختلفی را در خصوص کارکردهای این دستور در سیستم عامل ویندوز را به شما معرفی خواهیم کرد:
مثال 1:
netstat –an
با وارد کردن دستور بالا ، لیستی از تمامی ارتباطات TCP و UDP برای شما به نمایش در میآید.
مثال 2:
netstat -b 5 >> C:\connections.txt
با وارد کردن دستور بالا ، ارتباطات فعال مربوط به اپلیکیشنها هر 5 ثانیه در فایل connection.txt ذخیره میشود.
مثال 3:
Netstat –aop tcp
دستور بالا لیستی از ارتباط های برقرار شده با پروتکل TCP را به همراه PID هر پردازش نمایش خواهد داد.
مثال 4:
netstat -an 10 | findstr :80
دستور بالا یک دستور ترکیبی است که با وارد شدن آن هر 10 ثانیه ، لیستی از ارتباطهای که با پروتکل 80 برقرار شده را نمایش میدهد.
دستور netstat در لینوکس
تا بدین جا به خوبی با دستور نت استات در ویندوز آشنا شدید، اما سوال دیگری که ممکن هنوز پا بر جا باقی مانده باشد، این سوال است که دستور netstat در لینوکس به چه صورت مورد استفاده قرار میگیرد. اگر قصد این کار را داشته باشید، باید در ابتدا با نحوه نصب این دستور در سیستم عامل لینوکس آشنا شوید. بستهای که شامل این خط فرمان است، net-tool نامیده میشود.
به صورت کلی، در نسخههای جدید لینوکس، این ابزار وجود دارد و نیازی نیست تا آن را نصب کنید. اما اگر نسخه لینوکس شما قدیمی است و در هنگام پیادهسازی و اجر دستور netstat به مشکل بر میخورید، لازم است در ابتدا آن را نصب کنید. برای انجام این کار لازم است تا دستور زیر را در توزیعهای لینوکس اجرا کنید:
yum install net-tools [On CentOS/RHEL]
apt install net-tools [On Debian/Ubuntu]
zypper install net-tools [On OpenSuse]
pacman -S netstat-nat [On Arch Linux]
پس از آن که نت استات در لینوکس نصب شد، میتوانید برای اطمینان از صحت نصب، دستور زیر را اجرا کنید:
netstat -v
حال شاید بخواهید بدانید که چگونه از نت استات در لینوکس استفاده کنیم؟ شما این شانس را دارید تا برای جمع آوری آمار و اطلاعات گوناگون در شبکه، از این دستور در هر یک از توزیعهای لینوکس به سادگی بهره ببرید.
انواع دستور نت استات جهت مدیریت شبکه در سیستم عامل لینوکس
اگر در شبکه لینوکس مشکلی وجود داشته باشد، آشنایی داشتن با دستورات netstat جهت مانیتورینگ و اشکال زدایی، کاربرد زیادی دارد. از این رو ما در این قسمت برخی از مهمترین دستورات نت استات در لینوکس برای مدیریت شبکه این سیستم عامل را به شما معرفی خواهیم کرد:
1. دستور netstat –a
به کمک این دستور میتوانید لیستی از تمامی پورتها اعم از TCP و UDP را به سادگی نمایش دهیم.
2. دستور netstat –at
با اجرای این دستور شما قادر خواهید بود تا اتصالات موجود در پورت TCP (Transmission Control Protocol) را لیست کنید.
3. دستور netstat –au
این دستور لیستی از پورتهای UDP را به شما نمایش میدهد.
4. دستور netstat –l
از این دستور میتوان برای لیست کردن پورتهای فعالی که در وضعیت listen هستند، استفاده کرد.
5. دستور netstat –lt
با اجرای این دستور نت استات میتوانید لیستی از پورتهای فعال TCP که در وضعیت Listen را داشته باشید.
6. دستور netstat –lu
اگر میخواهید به لیستی از پورتهای فعال UDP در وضعیت Listen دست پیدا کنید، از این دستور کمک بگیرید.
7. دستور netstat –lx
با اجرای این دستور قادر خواهید بود تا لیستی از پورتهای فعال UNIX در وضعیت Listen را داشته باشید.
8. دستور netstat –s
از این دستور میتوان برای مانیتورینگ پروتکلها استفاده کرد.
9. دستور netstat –st
برای به دست آوردن آمار پورت TCP از این دستور netstat استفاده میکنند.
10. دستور netstat –su
برای نمایش آمار پورت UCP کافی است تا این دستور را اجرا کنید.
دستور tracert چیست؟
در کنار دستور netstat، دستور tracert نیز از جمله دستورهای مهم در شبکه به شمار میرود. تصور کنید که در مسیر ارتباطی شما یا در روترها، مشکلی وجود داشته باشد. در چنین حالتی چگونه میتوان متوجه شد که مشکل در کجا رخ داده است؟ اگر بخواهید پاسخی برای این مشکل پیدا کنید، بهترین راه برای آن، استفاده از دستور tracert است. در واقع ما به کمک این دستور میتوانیم متوجه شویم که هر بسته اطلاعاتی ما در مسیر رفتن از مبدا به سمت مقصد، چه مسیری را طی خواهد کرد.
بدین صورت اگر در مسیر یکی از روترها به مشکل خورده باشد، متوجه خواهیم شد. به کمک دستور tracert میتوان به سادگی پی برد که دقیقا از چه نقطهای به بعد اینترنت قطع شده و ارتباطی وجود ندارد. البته باید به این نکته نیز اشاره کرد که این دستور تنها در سیستم عامل ویندوز قابل استفاده است. در صورتی که میخواهید از چنین ابزاری در سیستم عامل لینوکس استفاده کنید، باید از دستور tracert و یا traceroute بهره ببرید.
سوالات متداول
دستور Netstat چیست؟
دستور Netstat یک دستور خط فرمان بوده که از آن برای نمایش دادن و مانیتوریتگ تمامی ارتباطات در شبکه استفاده کرد.
آیا دستور نت استات در ویندوز و لینوکس متفاوت است؟
کاربرد دستور Netstat در سیستم عاملهای لینوکس و ویندوز مشابه هم است. اما نحوه اجرای آن با یکدیگر تفاوت دارد.
دستور tracert چیست؟
از دستور tracert برای اطلاع از مسیر بستههای خود در شبکه استفاده میکنیم. این دستور مخصوص سیستم عامل ویندوز است.
آیا امکان استفاده از دستور tracert در لینوکس وجود دارد؟
خیر؛ اگر میخواهید تا از کاربرد دستور tracert در لینوکس استفاده کنید باید از دستور tracert و یا traceroute بهره ببرید.