
دستور Linux netstat فرمان گنجی از اطلاعات مربوط به اتصالات شبکه شما ، پورت هایی که در اختیار شما قرار می دهد. در حال استفاده ، و فرآیندهای استفاده از آنها. نحوه استفاده از آن را بیاموزید.
پورت ها ، پردازش ها و پروتکل ها
سوکت های شبکه می توانند به یکدیگر متصل شوند یا منتظر یک اتصال باشند. این اتصالات از پروتکل های شبکه ای مانند پروتکل کنترل حمل و نقل (TCP) یا پروتکل اطلاعات کاربر کاربر UDP استفاده می کنند. آنها از آدرس های پروتکل اینترنت و درگاه های شبکه برای ایجاد اتصالات استفاده می کنند.
سوکت ممکن است تصاویر یک نقطه اتصال فیزیکی برای یک سرب یا کابل را تنظیم کند ، اما در این زمینه ، سوکت ساختاری نرم افزاری است.
سوکت ها دارای دو حالت اصلی هستند: آنها یا متصل شده هستند و ارتباطات شبکه ای را تسهیل می کنند ، یا آنها منتظر برای ورودی هستند. اتصال برای اتصال به آنها. حالتهای دیگری نیز وجود دارد ، مانند حالت اتصال سوکت در وسط راه اندازی اتصال به یک دستگاه از راه دور ، اما گذاشتن حالتهای گذرا ، می توانید به یک سوکت فکر کنید که به هم متصل یا منتظر است (که اغلب به گوش می دهید). ).
سوکت گوش دادن به سرور گفته می شود ، و سوکت که درخواست اتصال با سوکت گوش دادن را دارد ، مشتری نامیده می شود. این اسم ها هیچ ارتباطی با نقش سخت افزاری یا رایانه ای ندارند. آنها به سادگی نقش هر سوکت را در هر انتهای اتصال تعریف می کنند.
فرمان netstat به شما امکان می دهد دریابید که کدام پریز وصل شده و کدام سوکت ها گوش می دهند. به معنای آن ، این به شما می گوید كه درگاه ها در چه مرحله ای استفاده می شوند و از چه فرآیندی استفاده می كنند این می تواند جدول ها و آمارهای مسیریابی را در مورد رابط های شبکه و اتصالات چندکستی خود به شما نشان دهد.
قابلیت عملکرد netstat به مرور زمان در ابزارهای مختلف لینوکس مانند IP و ss تکرار شده است. هنوز هم می توان از این دستورالعمل های تحلیل شبکه استفاده کرد ، زیرا در تمام سیستم عامل های لینوکس و یونیکس و حتی در ویندوز و مک قابل استفاده است.
در اینجا نحوه استفاده از آن ، با دستورات مثال کامل شده است.
لیست کردن همه سوکت ها
گزینه -a (همه) گزینه netstat تمام سوکت های متصل و انتظار را نشان می دهد. این دستور ممکن است یک لیست طولانی تولید کند ، بنابراین ما آن را به کمتر لوله می کنیم.
netstat -a | کمتر
لیست شامل پریزهای TCP (IP) ، TCP6 (IPv6) و UDP است.
بسته شدن در پنجره ترمینال دیدن آنچه در جریان است کمی دشوار می کند. چند بخش از آن فهرست وجود دارد:
اتصالات اینترنتی فعال (سرور و مستقر) آدرس محلی محلی Proto Recv-Q Send-Q آدرس آدرس خارجی tcp 0 0 localhost: دامنه 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN tcp 0 0 localhost: ipp 0.0.0.0:* LISTEN tcp 0 0 localhost: smtp 0.0.0.0:* LISTEN tcp6 0 0 [::]: ssh [::]: * LISTEN tcp6 0 0 ip6-localhost: ipp [::]: * LISTEN . . . پریزهای فعال دامنه یونیکس (سرورها و تاسیس شده) Proto RefCnt Flags Type State I-Node Path یونیکس 24 [ ] DGRAM 12831 / run / systemd / magazine / dev-log unix 2 [ ACC ] STREAM LISTENING 24747 @ / tmp / dbus-zH6clYmvw8 یونیکس 2 [ ] DGRAM 26372 / run / user / 1000 / systemd / notify یونیکس 2 [ ] DGRAM 23382 / run / user / 121 / systemd / notify unix 2 [ ACC ] SEQPACKET LISTENING 12839 / run / udev / control
بخش "اینترنت فعال" اتصالات خارجی متصل و سوکت های محلی را که درخواست های اتصال از راه دور را گوش می دهند ، لیست می کند. یعنی ، اتصالات شبکه ای را که برای دستگاه های خارجی ایجاد شده است (یا ایجاد می شود) لیست می کند.
بخش "دامنه یونیکس" اتصالات داخلی متصل و گوش می کند. به عبارت دیگر ، اتصالات ایجاد شده در رایانه شما بین برنامه های مختلف ، فرآیندها و عناصر سیستم عامل مشخص شده است.
ستون های "اینترنت فعال" عبارتند از:
- Proto: پروتکل استفاده شده توسط این سوکت (به عنوان مثال ، TCP یا UDP).
- Recv-Q: صف دریافت. این بایت های دریافتی است که دریافت و بافر شده است ، در انتظار فرآیند محلی است که از این اتصال استفاده می کند تا آنها را بخواند و مصرف کند.
- Send-Q: صف ارسال. این بایت های آماده ارسال از صف ارسال را نشان می دهد.
- آدرس محلی: جزئیات آدرس انتهای محلی اتصال. پیش فرض برای
netstatبرای نشان دادن نام میزبان محلی برای آدرس ، و نام سرویس برای درگاه است. - آدرس خارجی: آدرس و شماره پورت انتهای راه دور
- ایالت: وضعیت سوکت محلی. برای سوکت های UDP ، این معمولاً خالی است. جدول حالت را ببینید ، در زیر.
برای اتصالات TCP ، حالت می تواند یکی از موارد زیر باشد:
- LISTEN: فقط سمت سرور. سوکت منتظر درخواست اتصال است.
- SYN-SENT: فقط سمت مشتری. این سوکت یک درخواست اتصال ایجاد کرده است و منتظر است که ببیند آیا پذیرفته خواهد شد.
- SYN-RECEIVED: فقط سمت سرور. این سوکت منتظر تأیید اتصال پس از پذیرش درخواست اتصال است.
- پایه گذاری شده: سرور و مشتری. یک ارتباط کاری بین سرور و مشتری ایجاد شده است ، که امکان انتقال داده ها بین این دو را فراهم می کند.
- FIN-WAIT-1: سرور و مشتری. این سوکت منتظر درخواست خاتمه اتصال از سوکت از راه دور یا تأیید درخواست خاتمه اتصال است که قبلاً از این سوکت ارسال شده بود.
- FIN-WAIT-2: سرور و مشتری. این سوکت منتظر درخواست خاتمه اتصال از سوکت از راه دور است.
- CLOSE-WIT: سرور و مشتری. این سوکت منتظر درخواست خاتمه اتصال از طرف کاربر محلی است.
- CLOSING: سرور و مشتری. این سوکت منتظر تأیید درخواست خاتمه اتصال از سوکت از راه دور است.
- LAST-ACK: سرور و مشتری. این سوکت منتظر تأیید درخواست خاتمه اتصال است كه برای سوكت از راه دور ارسال شده است.
- TIME-WITIT: سرور و مشتری. این سوکت تصدیق را به سوکت از راه دور ارسال کرد تا به او اطلاع دهد که درخواست خاتمه سوکت از راه دور را دریافت کرده است. اکنون منتظر است تا اطمینان حاصل شود كه تأییدیه دریافت شده است.
- بسته: هیچ ارتباطی وجود ندارد ، بنابراین سوکت خاتمه یافته است.
ستون های "دامنه یونیکس" عبارتند از:
- Proto: پروتکل مورد استفاده این سوکت. این "یونیکس" خواهد بود.
- RefCnt: تعداد مرجع. تعداد فرآیندهای متصل به این سوکت.
- پرچم ها: این معمولاً روی
ACCتنظیم شده است ، که نمایانگرSO_ACCEPTONاست ، به این معنی که سوکت منتظر درخواست اتصال است. .SO_WAITDATA، نشان داده شده به عنوانW، به این معنی است که داده هایی در انتظار خواندن هستند.SO_NOSPACE، نشان داده شده به عنوانN، بدان معنی است که هیچ فضایی برای نوشتن داده به سوکت وجود ندارد (یعنی بافر ارسال کامل است). - نوع: نوع سوکت . جدول نوع را در زیر مشاهده کنید.
- حالت: وضعیت سوکت. جدول زیر را در زیر مشاهده کنید. وضعیت را در زیر مشاهده کنید.
- I-Node: سیستم فایل ورودی با این سوکت همراه است.
- Path : مسیر سیستم فایل به سوکت.
سوکت دامنه یونیکس نوع می تواند یکی از موارد زیر باشد:
- DGRAM: این سوکت در حالت دیتاگرام با استفاده از پیام هایی با طول ثابت استفاده می شود. داده ها تضمین نمی شوند ، قابل اطمینان و توالی باشند و همچنین بدون استفاده هستند.
- STREAM: این سوکت سوکت جریان است. این نوع متداول اتصال معمولی "سوکت" است. این سوکت ها به گونه ای طراحی شده اند که بسته های توالی و مطمئن (به ترتیب) را به شما ارائه دهد.
- RAW: این سوکت به عنوان سوکت خام مورد استفاده قرار می گیرد. سوکت های خام در سطح شبکه ای از مدل OSI کار می کنند و سرصفحات TCP و UDP را از سطح حمل و نقل ارجاع نمی دهند.
- RDM: این سوکت در یک انتهای یک اتصال پیام قابل اطمینان قرار دارد.
- SEQPACKET: این سوکت به عنوان یک سوکت بسته های متوالی کار می کند ، که وسیله دیگری برای تهیه بسته های قابل اعتماد ، توالی و بدون استفاده است.
- PACKET: سوکت دسترسی رابط خام. سوکت های پکیج برای دریافت یا ارسال بسته های خام در سطح درایور دستگاه (یعنی لایه پیوند داده) از مدل OSI استفاده می شود.
سوکت دامنه یونیکس حالت می تواند یکی از موارد زیر باشد: [19659023] رایگان: این سوکت بدون جابجایی است.
وای ، این اطلاعات زیادی است! بسیاری از گزینه های netstat نتایج را به یک روش یا دیگری تصحیح می کنند ، اما آنها محتوای را خیلی تغییر نمی دهند. بیایید نگاهی بیندازیم.
لیست کردن سوکت ها بر اساس نوع
دستور netstat -a می تواند اطلاعات بیشتری را از آنچه شما نیاز دارید ارائه دهد. اگر فقط می خواهید و یا نیاز به دیدن پریزهای TCP دارید ، می توانید از گزینه -t (TCP) برای محدود کردن صفحه نمایش استفاده کنید و فقط سوکت های TCP را نشان دهید.
netstat -at | کمتر
نمایشگر بسیار کاهش می یابد. معدود پریزهای ذکر شده ، تمام پریزهای TCP است.
گزینه های -u (UDP) و -x (UNIX) رفتارهای مشابه را انجام می دهند و نتایج را به نوع سوکت محدود می کنند مشخص شده در خط فرمان. در اینجا گزینه -u (UDP) استفاده شده است:
netstat -au | کمتر
فقط سوکت های UDP ذکر شده اند.
لیست کردن سوکت های ایالتی
برای دیدن سوکت هایی که در حالت گوش یا انتظار قرار دارند ، از گزینه -l (گوش دادن) استفاده کنید.
netstat -l | کمتر
سوکت های ذکر شده آنهایی هستند که در حالت شنوایی قرار دارند.
این می تواند با گزینه های -t (TCP ، -u (UDP) و -x (UNIX) ترکیب شود تا بتوانیم در پریزهای مورد علاقه دیگری قرار بگیریم. :
netstat -lt | کمتر
اکنون ، ما فقط سوکت های گوش دادن TCP را می بینیم.
آمار شبکه توسط پروتکل
برای دیدن آمار برای یک پروتکل ، از گزینه -s (statistics) استفاده کرده و در -t [گزینههای (TCP) ، -u (UDP) یا -x (UNIX). اگر فقط از گزینه -s (آمار) استفاده می کنید در اطلاعات مربوط به پروتکل TCP را بررسی می کنیم.
netstat -st | کمتر
مجموعه ای از آمار برای TCP کاتیون ها در کمتر نمایش داده می شوند.
نشان دادن نام های فرآیند و PID ها
مشاهده یک شناسه فرآیند (PID) فرآیند با استفاده از یک سوکت ، همراه با نام آن فرآیند ، می تواند مفید باشد. گزینه -p (برنامه) همین کار را می کند. بیایید ببینیم PID ها و نام پردازش برای فرآیندهای با استفاده از سوکت TCP که در حالت گوش دادن قرار دارد چیست. ما از sudo استفاده می کنیم تا مطمئن شویم که تمام اطلاعات موجود را دریافت می کنیم ، از جمله اطلاعاتی که به طور معمول به مجوزهای ریشه ای نیاز داشته باشد.
sudo netstat -p -at
در اینجا آمده است که در یک جدول فرمت شده است:
اتصالات فعال اینترنت (سرورها و تأسیس) آدرس Poto / نام برنامه آدرس محلی Proto Recv-Q Send-Q آدرس محلی tcp 0 0 localhost: دامنه 0.0.0.0:* لیست 6927 / systemd-rezv tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN 751 / sshd tcp 0 0 localhost: ipp 0.0.0.0:* لیست 7687 / cupsd tcp 0 0 localhost: smtp 0.0.0.0:* LISTEN 1176 / master tcp6 0 0 [::]: ssh [::]: * LISTEN 751 / sshd tcp6 0 0 ip6-localhost: ipp [::]: * LISTEN 7687 / cupsd tcp6 0 0 ip6-localhost: smtp [::]: * گوش 1176 / استاد
ستونی اضافی به نام "PID / نام برنامه" داریم. در این ستون PID و نام فرآیند با استفاده از هر یک از پریزها ذکر شده است.
لیست کردن آدرس های عددی
گام دیگری که می توان برای برداشتن برخی ابهامات بردارد این است که آدرس های محلی و راه دور را به عنوان آدرس های IP به جای دامنه حل شده آنها نمایش دهیم. و نامهای میزبان. اگر از گزینه -n (عددی) استفاده کنیم ، آدرسهای IPv4 با فرمت اعشار نشان داده می شوند:
sudo netstat -an | کمتر
آدرس های IP به عنوان مقادیر عددی نشان داده می شوند. شماره بندر نیز نشان داده شده است ، که توسط یک کولون از هم جدا شده است ": " از آدرس IP.
یک آدرس IP 127.0.0.1 نشان می دهد که سوکت به آدرس حلقه رایانه محلی وصل شده است. شما می توانید یک آدرس IP 0.0.0.0 را به عنوان "مسیر پیش فرض" برای آدرس های محلی و "هر آدرس IP" برای آدرس های خارجی بیاندیشید. آدرس های IPv6 نشان داده شده به عنوان " :: " همگی آدرس های صفر هستند.
پورت های ذکر شده را می توان به راحتی بررسی کرد تا ببیند منظور معمول آنها چیست:
مرتبط: تفاوت بین 127.0.0.1 و 0.0.0.0؟fare19459015 اسپانیا19459021 طرفداری19659012 انگلیسیDisplaying Table Routing
گزینه این خروجی در یک میز مرتب است: و اینجاست که این ستون ها به چه معناست: پرچم ها ممکن است یکی از این موارد باشد: اگر خروجی شبکه البته ما می توانیم این کار را بطور معکوس انجام دهیم. . اگر به جستجوی ": 22" بپردازیم ، می توان فهمید که در صورت وجود کدام فرآیند از آن درگاه استفاده می کند. این بار گزینه -r (مسیر) جدول مسیریابی هسته را نشان می دهد. sudo netstat -r
جدول مسیریابی IP هسته
مقصد Gateway Genmask Flags MSS Window irtt Iface
پیش فرض Vigor.router 0.0.0.0 UG 0 0 0 enp0s3
link-local 0.0.0.0 255.255.0.0 U 0 0 0 enp0s3
192.168.4.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s3
* "در اینجا ظاهر می شود.
addrconf ، تولید کننده فایل پیکربندی DNS و DHCP خودکار. یافتن بندر مورد استفاده توسط یک فرآیند
را لوله کنیم. در از طریق grep ، می توانیم یک فرآیند را با نام جستجو کرده و پورت مورد استفاده خود را شناسایی کنیم. ما از گزینه های -a (all) ، -n (عددی) و -p استفاده می کنیم و "sshd" را جستجو می کنیم. [19659014] sudo netstat -anp | grep "sshd"
grep رشته هدف را پیدا می کند ، و می بینیم که sshd با استفاده از بندر 22. sudo netstat -anp | grep ": 22"
grep رشته هدف ": 22" را پیدا می کند ، و می بینیم که فرآیند استفاده از این درگاه ، sshd Daemon ، پردازش ID 751 است. [19659012] فهرست اینترفیس های شبکه
-i (رابط ها) جدولی از رابط های شبکه را نشان می دهد که netstat می تواند کشف کند. sudo netstat -i [1965902020]
در اینجا بازده به روشی خواناتر است:
جدول رابط هسته Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg enp0s3 1500 4520671 0 0 0 4779773 0 0 0 BMRU lo 65536 30175 0 0 0 30175 0 0 0 LRU
این معنی ستون هاست:
- Iface: نام رابط. رابط
enp0s3رابط شبکه به خارج از جهان است و رابطloرابط حلقه برگشت است. رابط حلقه برگشتی باعث می شود تا رایانه ها با استفاده از پروتکل های شبکه ، را درون ارتباط برقرار کنند ، حتی اگر رایانه به یک شبکه وصل نشده باشد. - MTU: حداکثر واحد انتقال (MTU). این بزرگترین "بسته" است که می توان ارسال کرد. این شامل یک هدر است که حاوی پرچم های مسیریابی و پروتکل و سایر داده های فوق به علاوه داده هایی است که در واقع در حال انتقال هستند.
- RX-OK: تعداد بسته های دریافت شده ، بدون خطا.
- RX-ERR : تعداد بسته های دریافت شده ، با خطا. ما می خواهیم که این حد ممکن باشد.
- RX-DRP: تعداد بسته ها کاهش یافت (یعنی گم شد). ما همچنین می خواهیم این حد ممکن باشد تا حد ممکن کم باشد.
- RX-OVR: تعداد بسته های گم شده در اثر سرریز در هنگام دریافت. این بدان معناست که بافر دریافت کننده پر بود و دیگر نمی توانست اطلاعات دیگری را بپذیرد ، اما داده های بیشتری دریافت می شود و باید دور ریخت. هرچه این رقم پایین تر باشد ، بهتر و صفر کامل است.
- TX-OK: تعداد بسته های منتقل شده ، بدون خطا.
- RX-ERR: تعداد بسته های منتقل شده ، با خطاها ما می خواهیم این صفر باشد.
- RX-DRP: تعداد بسته ها هنگام انتقال کاهش یافته است. در حالت ایده آل ، این باید صفر باشد.
- RX-OVR: تعداد بسته های گم شده در اثر سرریز هنگام انتقال. این به این معنی است که بافر ارسال کامل بود و دیگر نمی توانست اطلاعات دیگری را بپذیرد ، اما داده های بیشتری برای انتقال آماده بودند و باید دور ریختند.
- Flg: Flags. جدول زیر را مشاهده کنید. پرچم ها را در زیر مشاهده کنید.
پرچم های بیانگر موارد زیر است:
- B: یک آدرس پخش در حال استفاده است.
- L: این رابط یک دستگاه loopback است.
- M: همه بسته ها دریافت می شوند (به عنوان مثال ، در حالت پیش فرض). هیچ چیز فیلتر نشده و دور ریخته نمی شود.
- O: پروتکل حل آدرس (ARP) برای این رابط خاموش است.
- P: این یک اتصال نقطه به نقطه (PPP) است. [19659024] R: رابط کاربری در حال اجرا است.
- U: رابط کاربری تمام شده است.
لیست عضویت های گروه Multicast
به عبارت ساده ، یک انتقال چند مرحله ای بسته ای را قادر می سازد فقط یک بار ارسال شود ، صرف نظر از از تعداد گیرندگان. به عنوان مثال ، برای خدماتی مانند پخش ویدیو ، این کارآیی را از دیدگاه فرستنده با مقدار قابل توجهی افزایش می دهد.
گزینه -g (گروه ها) لیست netstat را ایجاد می کند. عضویت گروهی چند سوکت در هر رابط.
sudo netstat -g
ستون ها بسیار ساده هستند:
- رابط: نام رابط که سوکت در آن منتقل می شود.
- RefCnt: تعداد مرجع ، که تعداد فرایندهای وصل شده به سوکت است.
- گروه: نام یا شناسه گروه چند مرحله ای.
The New Kids on the Block
دستورات مسیر ، IP ، ifconfig و ss می توانند چیزهای زیادی را از آنچه netstat قادر به نشان دادن شما هستند ارائه دهند. همه آنها دستورات عالی هستند و ارزش بررسی دارند.
ما روی netstat متمرکز شده ایم ، زیرا در دسترس جهانی است ، صرف نظر از سیستم عامل یونیکس مانند که شما روی آن کار می کنید ، حتی مبهم .