SS(8) System Manager's Manual SS(8)

ss - ابزار بررسی و نمایش وضعیت سوکتهای شبکه

ss [options] [ FILTER ]

دستور ss برای استخراج و نمایش آمار و اطلاعات سوکت‌ها به کار می‌رود. این ابزار امکان نمایش اطلاعاتی مشابه با netstat را فراهم می‌کند و می‌تواند اطلاعات وضعیت و ویژگی‌های TCP بیشتری را نسبت به سایر ابزارها نمایش دهد.

هنگامی که هیچ گزینه‌ای استفاده نشود، ss فهرستی از سوکت‌های باز و غیرشنونده (مانند TCP/UNIX/UDP) را که دارای اتصالات برقرار شده هستند نمایش می‌دهد.

نمایش خلاصه‌ای از گزینه‌ها.
نمایش اطلاعات نسخه.
حذف سطر سربرگ خروجی.
حذف ستون‌های صف ارسال و دریافت.
چاپ داده‌های هر سوکت در یک خط منفرد.
عدم تلاش برای نام‌گشایی نام سرویس‌ها. همچنین نمایش مقادیر دقیق پهنای باند به‌جای قالب خوانا برای انسان.
تلاش برای نام‌گشایی و تبدیل نشانی‌ها/درگاه‌های عددی به نام.
نمایش هر دو دسته سوکت‌های شنونده و غیرشنونده (در TCP به معنای اتصالات برقرار شده).
نمایش سوکت‌های شنونده به‌تنهایی (این سوکت‌ها به‌طور پیش‌فرض نمایش داده نمی‌شوند).
نمایش سوکت‌های TCP متصل‌شده (bound) اما غیرفعال (سوکت‌هایی که در وضعیت listening یا connecting یا مواردی از این قبیل نیستند؛ این سوکت‌ها به‌طور پیش‌فرض حذف می‌شوند).
نمایش اطلاعات زمان‌سنج (تایمر). برای پروتکل TCP، قالب خروجی به شکل زیر است:

timer:(<timer_name>,<expire_time>,<retrans>)

<timer_name>
نام زمان‌سنج؛ پنج نوع نام زمان‌سنج وجود دارد:

on : بیانگر یکی از این زمان‌سنج‌ها است: زمان‌سنج بازفرستی TCP (retrans)، زمان‌سنج بازفرستی زودهنگام TCP و زمان‌سنج tail loss probe

keepalive: زمان‌سنج فعال نگه داشتن TCP (keep alive)

timewait: زمان‌سنج مرحله timewait

persist: زمان‌سنج کاوش پنجره صفر (zero window probe)

unknown: هیچ‌یک از زمان‌سنج‌های بالا

<expire_time>
مدت زمانی که طول می‌کشد تا زمان‌سنج منقضی شود
<retrans>
تعداد دفعاتی که بازفرستی (retransmission) رخ داده است
نمایش اطلاعات تفصیلی سوکت. قالب خروجی به شکل زیر است:

uid:<uid_number> ino:<inode_number> sk:<cookie>

<uid_number>
شناسه کاربری (UID) که سوکت متعلق به آن است
<inode_number>
شماره inode سوکت در سامانه فایل مجازی (VFS)
<cookie>
شناسه یکتای UUID سوکت
نمایش میزان مصرف حافظه سوکت. قالب خروجی به شکل زیر است:

skmem:(r<rmem_alloc>,rb<rcv_buf>,t<wmem_alloc>,tb<snd_buf>,

f<fwd_alloc>,w<wmem_queued>,o<opt_mem>,
bl<back_log>,d<sock_drop>)
<rmem_alloc>
حافظه تخصیص‌یافته برای دریافت بسته
<rcv_buf>
کل حافظه‌ای که می‌تواند برای دریافت بسته تخصیص داده شود
<wmem_alloc>
حافظه استفاده‌شده برای ارسال بسته (که به لایه ۳ فرستاده شده است)
<snd_buf>
کل حافظه‌ای که می‌تواند برای ارسال بسته تخصیص داده شود
<fwd_alloc>
حافظه تخصیص‌یافته توسط سوکت به‌عنوان حافظه موقت (کش) که هنوز برای ارسال یا دریافت بسته استفاده نشده است. در صورت نیاز به حافظه برای ارسال/دریافت بسته، پیش از تخصیص حافظه جدید از این کش استفاده می‌شود.
<wmem_queued>
حافظه تخصیص‌یافته برای ارسال بسته (که هنوز به لایه ۳ فرستاده نشده است)
<opt_mem>
حافظه استفاده‌شده برای ذخیره تنظیمات سوکت، مانند کلید امضای TCP MD5
<back_log>
حافظه استفاده‌شده برای صف معوق (backlog) سوکت. در زمینه پردازش، اگر فرایند در حال دریافت بسته باشد و بسته جدیدی برسد، در این صف قرار می‌گیرد تا بلافاصله توسط فرایند دریافت شود
<sock_drop>
تعداد بسته‌های دور ریخته‌شده پیش از تفکیک و تحویل (de-multiplex) به سوکت
نمایش فرایندی که از سوکت استفاده می‌کند.
نمایش نخی (thread) که از سوکت استفاده می‌کند. به‌طور ضمنی شامل -p نیز می‌شود.
نمایش اطلاعات داخلی TCP. ممکن است فیلدهای زیر در خروجی ظاهر شوند:
نمایش رشته "ts" در صورت تنظیم بودن گزینه برچسب زمان (timestamp)
نمایش رشته "sack" در صورت تنظیم بودن گزینه تایید انتخابی (sack)
نمایش رشته "ecn" در صورت تنظیم بودن گزینه اعلان صریح ازدحام (ECN)
نمایش رشته "ecnseen" در صورت مشاهده پرچم ecn در بسته‌های دریافتی
نمایش رشته "fastopen" در صورت تنظیم بودن گزینه fastopen
نام الگوریتم کنترل ازدحام؛ الگوریتم پیش‌فرض کنترل ازدحام "cubic" است
در صورت استفاده از گزینه مقیاس پنجره، این فیلد ضریب مقیاس ارسال و ضریب مقیاس دریافت را نمایش می‌دهد
مقدار مهلت زمانی بازفرستی TCP (واحد: میلی‌ثانیه)
مورد استفاده برای عقب‌نشینی نمایی بازفرستی (exponential backoff)؛ مقدار واقعی مهلت زمانی بازفرستی برابر است با icsk_rto << icsk_backoff
مقدار rtt میانگین زمان رفت و برگشت است و rttvar انحراف میانگین rtt است (واحد: میلی‌ثانیه)
مهلت زمانی تایید دریافت (ack timeout) به میلی‌ثانیه، مورد استفاده برای حالت تایید با تاخیر (delay ack)
حداکثر اندازه قطعه (MSS)
اندازه پنجره ازدحام (cwnd)
مقدار MTU مسیر (PMTU)
آستانه شروع آهسته پنجره ازدحام TCP
تعداد بایت‌های تاییدشده (ACK شده)
تعداد بایت‌های دریافت‌شده
تعداد قطعات ارسال‌شده
تعداد قطعات دریافت‌شده
نرخ ارسال خروجی بر حسب بیت بر ثانیه (egress bps)
مدت زمان سپری‌شده از ارسال آخرین بسته (واحد: میلی‌ثانیه)
مدت زمان سپری‌شده از دریافت آخرین بسته (واحد: میلی‌ثانیه)
مدت زمان سپری‌شده از دریافت آخرین ACK (واحد: میلی‌ثانیه)
نرخ تنظیم سرعت ارسال (pacing rate) و حداکثر آن بر حسب بیت بر ثانیه
متغیر کمکی برای تنظیم خودکار بافر دریافت سوکت در بخش داخلی TCP
اطلاعات زیرجریان‌های پروتکل MPTCP
نمایش اطلاعات ToS و اولویت. ممکن است فیلدهای زیر در خروجی ظاهر شوند:
بایت نوع سرویس (Type-of-Service) در IPv4
بایت کلاس ترافیک (Traffic Class) در IPv6
شناسه کلاس تعیین‌شده توسط net_cls cgroup. در صورتی که کلاس صفر باشد، اولویت تعیین‌شده توسط SO_PRIORITY را نشان می‌دهد.
نمایش اطلاعات cgroup. ممکن است فیلدهای زیر ظاهر شوند:
مسیر نام Cgroup v2. این مسیر نسبت به نقطه اتصال سلسله‌مراتب سنجیده می‌شود.
نمایش اطلاعات داخلی سوکت TIPC.
تلاش برای بستن اجباری سوکت‌ها. این گزینه سوکت‌هایی را که با موفقیت بسته شده‌اند نمایش داده و سوکت‌هایی را که هسته از بستن آن‌ها پشتیبانی نمی‌کند، بدون پیام نادیده می‌گیرد. این ویژگی فقط از سوکت‌های IPv4 و IPv6 پشتیبانی می‌کند.
چاپ آمار خلاصه‌شده. این گزینه بدون پردازش فهرست کامل سوکت‌ها، خلاصه اطلاعات را از منابع گوناگون استخراج می‌کند. این گزینه زمانی مفید است که تعداد سوکت‌ها آن‌چنان زیاد باشد که بررسی و خواندن فایل /proc/net/tcp بار سنگینی به سیستم تحمیل کند.
نمایش پیوسته سوکت‌ها هنگام نابودی و تخریب آن‌ها.
همانند گزینه -p است، اما بافتار امنیتی فرایند را نیز نمایش می‌دهد. در صورت استفاده از گزینه -T بافتار امنیتی نخ (thread) را نیز نشان می‌دهد.

برای سوکت‌های netlink(7) بافتار فرایند آغازگر به صورت زیر نمایش داده می‌شود:

1.
در صورت وجود PID معتبر، بافتار فرایند نمایش داده می‌شود.
2.
در صورتی که مقصد هسته باشد (PID = 0)، بافتار اولیه هسته نمایش داده می‌شود.
3.
اگر یک شناسه یکتا توسط هسته یا کاربر netlink تخصیص داده شده باشد، بافتار به صورت "unavailable" نمایش داده می‌شود. این حالت معمولاً نشان‌دهنده آن است که فرایند بیش از یک سوکت netlink فعال دارد.
همانند گزینه -Z عمل می‌کند، اما بافتار سوکت را نیز نشان می‌دهد. بافتار سوکت از inode مرتبط گرفته می‌شود و بافتار واقعی نگهداری‌شده سوکت در هسته نیست. سوکت‌ها معمولاً با بافتار فرایند ایجادکننده برچسب‌گذاری می‌شوند؛ با این حال بافتار نمایش‌داده‌شده هرگونه نقش، نوع و/یا قواعد گذار دامنه خط‌مشی اعمال‌شده را بازتاب می‌دهد و از این رو مرجع مفیدی به شمار می‌رود.
جابه‌جایی به فضای‌نام شبکه (network namespace) مشخص‌شده.
نمایش فیلترهای کلاسیک BPF سوکت (تنها مدیران سیستم مجاز به دریافت این اطلاعات هستند).
-4, --ipv4
تنها نمایش سوکت‌های پروتکل IP نسخه ۴ (نام مستعار برای -f inet).
-6, --ipv6
تنها نمایش سوکت‌های پروتکل IP نسخه ۶ (نام مستعار برای -f inet6).
-0, --packet
نمایش سوکت‌های PACKET (نام مستعار برای -f link).
نمایش سوکت‌های TCP.
نمایش سوکت‌های UDP.
نمایش سوکت‌های DCCP.
نمایش سوکت‌های RAW.
نمایش سوکت‌های دامنه یونیکس (Unix domain) (نام مستعار برای -f unix).
نمایش سوکت‌های SCTP.
نمایش سوکت‌های TIPC (نام مستعار برای -f tipc).
نمایش سوکت‌های vsock (نام مستعار برای -f vsock).
نمایش سوکت‌های XDP (نام مستعار برای -f xdp).
نمایش سوکت‌های MPTCP.
نمایش گزینه‌های سوکت inet (inet socket options).
نمایش سوکت‌های متعلق به خانواده FAMILY. در حال حاضر خانواده‌های زیر پشتیبانی می‌شوند: unix, inet, inet6, link, netlink, vsock, tipc, xdp.
فهرستی از جداول سوکت برای نمایش و خروجی گرفتن که با کاما از هم جدا شده‌اند. شناسه‌های زیر قابل فهم هستند: all, inet, tcp, udp, raw, unix, packet, netlink, unix_dgram, unix_stream, unix_seqpacket, packet_raw, packet_dgram, dccp, sctp, tipc, vsock_stream, vsock_dgram, xdp, mptcp. به‌صورت اختیاری می‌توان در ابتدای هر مورد یک علامت تعجب (!) قرار داد تا آن جدول سوکت از خروجی مستثنی شود.
هیچ چیزی در خروجی نمایش داده نمی‌شود، تنها اطلاعات خام سوکت‌های TCP پس از اعمال فیلترها درون FILE ذخیره می‌شود. اگر مقدار FILE برابر - باشد، از خروجی استاندارد (stdout) استفاده می‌شود.
خواندن اطلاعات فیلتر از FILE. هر خط از FILE مانند یک گزینه منفرد خط فرمان تفسیر می‌شود. اگر FILE برابر - باشد، از ورودی استاندارد (stdin) استفاده می‌شود.
چاپ خوانا و ساختاریافته تمام مدخل‌های داده محلی BPF برای هر سوکت.
چاپ خوانای مدخل‌های داده محلی BPF مربوط به شناسه نقشه (MAP_ID) درخواست‌شده. این گزینه می‌تواند بیش از یک بار استفاده شود.
لطفاً برای آگاهی از جزئیات بیشتر در رابطه با فیلترها، به مستندات رسمی مراجعه کنید.

STATE-FILTER به شما امکان می‌دهد مجموعه‌ای دلخواه از وضعیت‌ها را برای تطبیق بسازید. نحو (syntax) آن دنباله‌ای از کلمات کلیدی state و exclude است که پس از آن‌ها شناسه وضعیت قرار می‌گیرد.

شناسه‌های موجود عبارتند از:

تمام وضعیت‌های استاندارد TCP: established, syn-sent, syn-recv, fin-wait-1, fin-wait-2, time-wait, closed, close-wait, last-ack, listening و closing.

all - برای تمامی وضعیت‌ها

connected - تمام وضعیت‌ها به جز listening و closed

synchronized - تمام وضعیت‌های connected به جز syn-sent

bucket - وضعیت‌هایی که به عنوان مینی‌سوکت نگهداری می‌شوند، یعنی time-wait و syn-recv

big - نقطه مقابل bucket

bound-inactive - سوکت‌های متصل‌شده (bound) اما در غیر این صورت غیرفعال (سوکت‌هایی که در وضعیت listening یا connecting یا مواردی از این قبیل نیستند)

EXPRESSION امکان فیلتر کردن بر پایه معیارهای مشخص را فراهم می‌سازد. EXPRESSION شامل مجموعه‌ای از گزاره‌ها است که با عملگرهای بولی با یکدیگر ترکیب می‌شوند. عملگرهای ممکن به ترتیب افزایش حق تقدم عبارتند از: or (یا | یا ||)، and (یا & یا &&)، و not (یا !). اگر عملگری میان گزاره‌های متوالی قید نشود، عملگر ضمنی and در نظر گرفته می‌شود. عبارت‌های فرعی را می‌توان با استفاده از "(" و ")" گروه‌بندی کرد.

گزاره‌های زیر پشتیبانی می‌شوند:

{dst|src} [=] HOST
بررسی می‌کند که آیا مقصد یا مبدا با HOST تطابق دارد یا خیر. برای جزئیات به بخش ساختار نشانی میزبان (HOST SYNTAX) مراجعه فرمایید.
{dport|sport} [OP] [FAMILY:]:PORT
درگاه مقصد یا مبدا را با PORT مقایسه می‌کند. مقدار OP می‌تواند یکی از عملگرهای "<"، "<="، "="، "!="، ">=" و ">" بر طبق قواعد معمول ریاضی باشد. مقادیر FAMILY و PORT در بخش ساختار نشانی میزبان (HOST SYNTAX) در زیر تشریح شده‌اند.
تطبیق بر اساس دستگاهی که اتصال از آن استفاده می‌کند. مقدار DEVICE می‌تواند نام دستگاه یا شاخص (index) رابط شبکه باشد.
تطبیق بر اساس مقدار fwmark اتصال. این مقدار می‌تواند یک مقدار نشانه مشخص یا یک مقدار نشانه به همراه "/" و یک ماسک بیتی از بیت‌های مورد استفاده در مقایسه باشد؛ برای نمونه "fwmark = 0x01/0x03" در صورتی تطبیق می‌یابد که دو بیت کم‌ارزش fwmark برابر 0x01 باشند.
cgroup [=|!=] PATH
در صورتی که اتصال بخشی از یک cgroup در مسیر مشخص‌شده باشد تطبیق می‌یابد.
در صورتی که درگاه یا مسیر نشانی مبدا به‌طور خودکار تخصیص داده شده باشد (به‌جای اینکه صریحاً مشخص شده باشد) تطبیق می‌یابد.

بیشتر عملگرها دارای نام مستعار هستند. اگر هیچ عملگری وارد نشود، عملگر "=" فرض می‌شود. هر یک از گروه‌های زیر از عملگرها کاملاً با یکدیگر معادل هستند:

  • = == eq
  • != ne neq
  • > gt
  • < lt
  • >= ge geq
  • <= le leq
  • ! not
  • | || or
  • & && and

ساختار کلی نشانی میزبان به صورت [FAMILY:]ADDRESS[:PORT] است.

مقدار FAMILY باید یکی از خانواده‌های پشتیبانی‌شده توسط گزینه -f باشد. در صورت عدم تعیین، مقدار پیش‌فرض آن همان خانواده مشخص‌شده با گزینه -f خواهد بود و در صورتی که آن نیز مشخص نشده باشد، inet یا inet6 در نظر گرفته می‌شود. توجه داشته باشید که تمام شروط میزبان در عبارت باید یا همگی از یک خانواده باشند و یا تنها از inet و inet6 تشکیل شده باشند. در صورت ترکیب خانواده‌های متفرقه، نتایج احتمالاً غیرمنتظره خواهد بود.

قالب ADDRESS و PORT به خانواده مورد استفاده بستگی دارد. می‌توان از "*" به عنوان نویسه عمومی (wildcard) برای نشانی یا درگاه استفاده کرد. جزئیات مربوط به هر خانواده به شرح زیر است:

مقدار ADDRESS یک الگوی glob است (به fnmatch(3) مراجعه فرمایید) که بدون حساسیت به حروف بزرگ و کوچک با نشانی سوکت یونیکس تطبیق داده می‌شود. هم نام‌های مسیر و هم نام‌های انتزاعی (abstract) پشتیبانی می‌شوند. نشانی‌های یونیکس از درگاه پشتیبانی نمی‌کنند و نمی‌توان از "*" به عنوان نویسه عمومی استفاده کرد.
مقدار ADDRESS نام بدون حساسیت به حروف بزرگ و کوچک یک پروتکل اترنت برای تطبیق است. مقدار PORT نام دستگاه یا شاخص دستگاه مورد نظر برای پیوند شبکه است، همان‌طور که در خروجی دستور ip link دیده می‌شود.
مقدار ADDRESS توصیف‌کننده خانواده netlink است. مقادیر ممکن از فایل /etc/iproute2/nl_protos برداشته می‌شوند. مقدار PORT شناسه درگاه سوکت است که معمولاً همان شناسه فرایند مالک (PID) است. مقدار "kernel" می‌تواند برای نمایش هسته (شناسه درگاه ۰) استفاده شود.
مقدار ADDRESS یک عدد صحیح نشان‌دهنده نشانی CID است و PORT نشان‌دهنده درگاه است.
مقدار ADDRESS یک نشانی IP (بسته به خانواده، v4 یا v6) یا نام میزبان DNS است که به نشانی IP از نسخه مورد نظر تبدیل می‌شود. یک نشانی IPv6 برای رفع ابهام از جداکننده درگاه باید درون "[" و "]" قرار گیرد. همچنین نشانی می‌تواند دارای طول پیشوند با نمادگذاری CIDR (یک اسلش و پس از آن طول پیشوند بر حسب بیت) باشد. مقدار PORT می‌تواند شماره عددی درگاه سوکت یا نام سرویس مربوط به درگاه مورد نظر باشد.

نمایش تمام سوکت‌های TCP.
نمایش تمام سوکت‌های TCP همراه با بافتار امنیتی SELinux فرایندها.
نمایش تمام سوکت‌های UDP.
نمایش تمام اتصالات برقرارشده SSH.
یافتن تمام فرایندهای محلی متصل به کارساز X.
فهرست کردن تمام سوکت‌های TCP در وضعیت FIN-WAIT-1 مربوط به آپاچی به سمت شبکه 193.233.7/24 و بررسی زمان‌سنج‌های آن‌ها.
فهرست کردن سوکت‌ها در تمام وضعیت‌ها از تمامی جداول سوکت به جز TCP.

ip(8),
RFC 793 - https://tools.ietf.org/rfc/rfc793.txt (وضعیت‌های TCP)

ابزار ss توسط Alexey Kuznetsov به نشانی <kuznet@ms2.inr.ac.ru> نوشته شده است.

این صفحه راهنما توسط Michael Prokop به نشانی <mika@grml.org> برای پروژه دبیان نوشته شده است (اما ممکن است توسط دیگران نیز استفاده شود).