Future ForgeFuture ForgeFuture ForgeFuture Forge
خدماتنمونه‌کارهاپکیج‌هاابزارهای رایگانیادداشت‌هادرباره ماتماس
شروع پروژه
  1. خانه
  2. /یادداشت‌ها
Future ForgeFuture Forge

استودیوی مهندسی محصول — طراحی، ساخت و استقرار نرم‌افزار.

پروژه‌تان را مطرح کنید

ارتباط

hello@futureforge.ir09128464105
Future ForgeFuture Forge

استودیوی مهندسی محصول — طراحی، ساخت و استقرار نرم‌افزار.

خدمات

طراحی و ساخت محصولتوسعه فول‌استکممیزی مهندسیمشاوره معماریزیرساخت و استقرارهوش مصنوعی در محصول

کاوش

نمونه‌کارهایادداشت‌هاپرسش‌هاپکیج‌ها

ابزارهای رایگان

ممیزی مهندسیمشاور معماریتخمین پروژهابزار پرامپت

شرکت

درباره ماتماسحریم خصوصیشرایط استفاده

پروژه‌تان را مطرح کنید

مسئله و محدودیت را بنویسید. اگر تطابق داشته باشیم، برای گفتگو هماهنگ می‌کنیم.

پروژه‌تان را مطرح کنید

ارتباط

hello@futureforge.ir09128464105
GitHubLinkedIn

© 2026 FutureForge. همه حقوق محفوظ است.

خانهخدماتابزارهای رایگانشروع پروژه
عملیات و استقرار

پورت در لینوکس چیست و چگونه ببینیم چه چیزی گوش می‌دهد؟

مفهوم پورت TCP/UDP، تفاوت listening و established، و فرمان‌های ss برای دیدن چه فرایندی روی کدام پورت است.

سا
سهیل ابراهیم‌پور

بنیان‌گذار و مهندس محصول

·۲۹ شهریور ۱۴۰۵·4 دقیقه مطالعه
پورت لینوکسTCP portss -tulpnlistening socketsUDPfirewallbind
استیکی‌نوت پورت‌های 22 و 80 و 443

وقتی می‌گویید «پورت ۸۰ باز است» در واقع از یک نقطهٔ انتهایی منطقی روی پشتهٔ شبکه حرف می‌زنید: ترکیب آدرس IP، پروتکل انتقال (معمولاً TCP یا UDP) و شمارهٔ ۱۶بیتی پورت. بدون این مدل، خطاهای «address already in use»، اشتباه فایروال، و سردرگمی بین localhost و اینترفیس عمومی اجتناب‌ناپذیر است.

این مقاله مفهوم پورت را به فرمان‌های واقعی `ss` وصل می‌کند — ابزار مدرن جایگزینی netstat در بسیاری توزیع‌ها — تا ببینید چه فرایندی گوش می‌دهد و کدام اتصال برقرار است.

جدول SSH HTTP HTTPS با پورت‌ها

پاسخ کوتاه

پورت شماره‌ای است که به سیستم‌عامل می‌گوید ترافیک ورودی به کدام سوکت برنامه تحویل شود. سرویس‌ها روی پورت listen می‌کنند؛ کلاینت‌ها معمولاً از پورت موقت (ephemeral) به پورت شناخته‌شده وصل می‌شوند. برای دیدن شنوندگان: `ss -tulpn`. برای دیدن اینکه چه کسی به پورت وصل است: `ss -tp`. باز بودن پورت در فایروال جدا از این است که اصلاً سرویسی گوش بدهد.

پورت بدون فرایند شنونده فقط یک عدد در مستند است؛ فرایند بدون پورت قابل‌دسترس از بیرون، سرویس داخلی است.

TCP در برابر UDP — به اندازهٔ لازم

TCP اتصال‌گراست: handshake، جریان بایت، وضعیت‌هایی مثل LISTEN و ESTABLISHED. UDP دیتاگرام بی‌اتصال است؛ «شنیدن» یعنی سوکت به پورت bind شده و آمادۀ دریافت است. بسیاری سرویس‌های وب/دیتابیس TCPاند؛ DNS و برخی discoveryها UDP زیاد استفاده می‌کنند. شمارهٔ پورت در هر دو فضا جداست: UDP/53 با TCP/53 یکی نیستند.

بازهٔ شماره‌ها

  • ۰–۱۰۲۳: پورت‌های شناخته‌شده؛ bind اغلب نیاز به مجوز ویژه دارد.
  • ۱۰۲۴–۴۹۱۵۱: ثبت‌شده/کاربردی برای سرویس‌های زیاد.
  • ۴۹۱۵۲–۶۵۵۳۵: معمولاً پورت‌های موقت کلاینت.

مثال‌های رایج: ۲۲ SSH، ۸۰ HTTP، ۴۴۳ HTTPS، ۵۴۳۲ PostgreSQL، ۶۳۷۹ Redis. روی سرور production، سرویس‌های مدیریتی را ترجیحاً روی اینترفیس خصوصی نگه دارید نه ۰.۰.۰.۰ عمومی بدون فایروال.

دیدن چه چیزی گوش می‌دهد

bash

ss -tulpn ss -tlnp ss -ulnp

توضیح پرچم‌ها: -t TCP، -u UDP، -l فقط listening، -n عددی بدون resolve نام، -p نشان دادن فرایند (اغلب root لازم است برای همه). خروجی Local Address:Port می‌گوید روی کدام آدرس bind شده‌اید:

  • 127.0.0.1:5432 — فقط محلی
  • 0.0.0.0:80 یا *:80 — همهٔ IPv4
  • [::]:80 — IPv6

bash

ss -tlnp | grep ':22' ss -tlnp 'sport = :443'

اتصال‌های برقرار و عیب‌یابی

bash

ss -tp ss -s ss -tp state established '( dport = :443 or sport = :443 )'

اگر اپ به دیتابیس وصل نمی‌شود، ببینید آیا اصلاً LISTEN هست، روی کدام آدرس، و آیا فایروال اجازه می‌دهد. خطای connection refused معمولاً یعنی کسی گوش نمی‌دهد؛ timeout اغلب یعنی فیلتر/مسیر.

کدام فرایند پورت را گرفته؟

bash

sudo ss -tlnp | grep ':8080' sudo lsof -iTCP:8080 -sTCP:LISTEN

پس از یافتن PID، به ps و در صورت نیاز systemctl برگردید تا بفهمید واحد مالک کیست.

bash

ps -p PID -o pid,user,cmd systemctl status PID

Address already in use

یعنی پورت برای bind جدید آزاد نیست — سرویس قبلی زنده است، یا در TIME_WAIT گیر کرده‌اید، یا فرایند یتیم. با ss شنونده را پیدا و درست متوقف کنید؛ کشتن کورکورانه آخرین گزینه است.

bash

sudo ss -tlnp | grep ':3000'

فایروال و «باز بودن»

سه لایه را قاطی نکنید: (۱) bind برنامه، (۲) فیلتر هسته/فایروال میزبان، (۳) security group ابر. `ss` لایهٔ اول را نشان می‌دهد. باز کردن پورت در ufw بدون سرویس شنونده بی‌فایده است؛ سرویس روی 0.0.0.0 بدون فایروال خطرناک است.

جدول تصمیم سریع

سؤالفرمان شروع
چه سرویس‌هایی گوش می‌دهند؟ss -tulpn
آیا ۸۰ آزاد است؟ss -tlnp | grep ':80'
چه کسی به من وصل است؟ss -tp
فقط محلی است یا عمومی؟ستون Local Address در ss

اشتباه‌های رایج

  • فرض اینکه publish داکر همان bind روی میزبان را شفاف کرده بدون بررسی ss روی host.
  • باز کردن پورت دیتابیس به ۰.۰.۰.۰ برای «راحتی».
  • اتکا به netstat روی سیستمی که فقط ss دارد.
  • یکی دانستن UDP و TCP برای همان شماره.

خلاصه

پورت آدرس منطقی تحویل ترافیک به سوکت برنامه است. با ss ببینید چه می‌شنود و کجا bind شده، بعد فایروال و مالک فرایند را درست کنید. این مهارت پایهٔ عیب‌یابی استقرار، امنیت محیطی و مقالات شبکهٔ بعدی است.

سوالات متداول

چرا از بیرون نمی‌توانم وصل شوم ولی روی خود سرور می‌توانم؟

احتمالاً bind روی 127.0.0.1 است یا فایروال/security group ورودی را بسته. ss و قوانین فیلتر را جدا چک کنید.

آیا netstat هنوز لازم است؟

روی بسیاری سیستم‌های جدید ss جایگزین است؛ مفهوم یکی است، نحو فرق دارد.

منابع و مراجع

  • ss(8) — iproute2: https://man7.org/linux/man-pages/man8/ss.8.html
  • IANA Service Name and Transport Protocol Port Number Registry: https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml
  • ip(8) overview context: https://man7.org/linux/man-pages/man8/ip.8.html

نویسنده

سا

سهیل ابراهیم‌پور بنیان‌گذار FutureForge است. روی طراحی محصول، معماری و استقرار نرم‌افزار سفارشی کار می‌کند.

یادداشت‌های مرتبط

یادداشت‌های مرتبط

دسته‌بندی‌ها

خدمات مرتبط

از یادداشت تا پروژه

اگر موضوع این مقاله به سیستم یا محصول شما نزدیک است، می‌توانیم درباره دامنه واقعی صحبت کنیم.

اگر در انتخاب معماری یا مسیر توسعه مطمئن نیستید، می‌توانید درباره پروژه صحبت کنیم.

مسئله و محدودیت را بنویسید. اگر تطابق داشته باشیم، برای گفتگو هماهنگ می‌کنیم.

سهیل ابراهیم‌پور
یادداشت‌ها
مبانی شبکه در لینوکس: رابط، IP، مسیر و پورت
Logging چیست؟ ثبت رویداد برای تشخیص و پاسخ به حادثه
تعیین اندازهٔ سرور: RAM، CPU و Storage بر اساس Workload
Docker در برابر Kubernetes؛ مقایسهٔ دقیق نه شعار
چرا همیشه به Kubernetes نیاز ندارید؟

عملیات و استقرار

مبانی شبکه در لینوکس: رابط، IP، مسیر و پورت

۲۹ شهریور ۱۴۰۵

عملیات و استقرار

Logging چیست؟ ثبت رویداد برای تشخیص و پاسخ به حادثه

۲۹ شهریور ۱۴۰۵

عملیات و استقرار

تعیین اندازهٔ سرور: RAM، CPU و Storage بر اساس Workload

۲۹ شهریور ۱۴۰۵

عملیات و استقرار

Docker در برابر Kubernetes؛ مقایسهٔ دقیق نه شعار

۲۹ شهریور ۱۴۰۵

عملیات و استقرار

چرا همیشه به Kubernetes نیاز ندارید؟

۲۹ شهریور ۱۴۰۵
همه یادداشت‌ها219
معماری نرم‌افزار13
واژه‌نامه37
عملیات و استقرار87
مهندسی محصول74
راهنمای وب8
طراحی و ساخت محصول
توسعه فول‌استک
ممیزی مهندسی
مشاوره معماری
زیرساخت و استقرار
پروژه‌تان را مطرح کنید
ابزارهای رایگان
پروژه‌تان را مطرح کنید