مبانی شبکه

پورت‌ها و سرویس‌ها

چطور پورت‌های TCP/UDP سرویس‌ها را روی یک هاست مشخص می‌کنند — و چرا آن‌ها اساس فایروال‌ها، اتصال‌پذیری، و معماری برنامه‌های مدرن هستند.

1. پورت چیست؟

پورت یک عدد ۱۶ بیتی (۰ تا ۶۵۵۳۵) است که توسط لایهٔ انتقال (TCP/UDP) برای شناسایی یک سرویس یا برنامهٔ خاص روی یک هاست استفاده می‌شود. آدرس IP ترافیک را به دستگاه درست هدایت می‌کند؛ شمارهٔ پورت آن را به سرویس درست روی آن دستگاه هدایت می‌کند.

ساختار سوکت

آدرس IP:پورت=سوکت

192.0.2.10:80 → HTTP روی آن هاست

203.0.113.5:25 → SMTP روی آن هاست

  • آدرس IP پاسخ می‌دهد: کدام دستگاه؟
  • شمارهٔ پورت پاسخ می‌دهد: کدام سرویس روی آن دستگاه؟
  • این دو با هم یک سوکت را تشکیل می‌دهند: 192.0.2.10:80 → HTTP روی آن هاست
  • یک IP سرور می‌تواند چندین سرویس را میزبانی کند، هرکدام روی یک پورت متفاوت — مثل یک ساختمان با اتاق‌های زیاد

2. پورت‌های TCP در برابر پورت‌های UDP

پورت‌ها هم برای TCP و هم برای UDP وجود دارند. یک شماره پورت یکسان می‌تواند به‌طور مستقل روی هر پروتکل استفاده شود.

TCPاتصال‌گرا
  • HTTP / HTTPS
  • SSH
  • FTP
  • SMTP / IMAP / POP3
UDPبدون اتصال
  • DNS
  • DHCP
  • SNMP
  • استریمینگ / بازی
  • پورت‌های TCP — اتصال‌گرا: HTTP، HTTPS، SSH، FTP، SMTP، IMAP، POP3
  • پورت‌های UDP — بدون اتصال: DNS، DHCP، SNMP، پروتکل‌های استریمینگ و بازی
  • TCP/80 → ترافیک وب HTTP
  • UDP/53 → درخواست‌های DNS

3. محدوده‌های شماره پورت

شماره‌های پورت به سه محدودهٔ رسمی که توسط IANA مدیریت می‌شوند، تقسیم شده‌اند.

پورت‌های شناخته‌شده (Well-Known Ports)0 – 1023

برای سرویس‌های استاندارد و پرکاربرد رزرو شده‌اند. توسط IANA مدیریت می‌شوند.

TCP/80 → HTTPTCP/443 → HTTPSTCP/22 → SSHTCP/25 → SMTPUDP/53 → DNS
پورت‌های ثبت‌شده (Registered Ports)1024 – 49151

به برنامه‌ها یا فروشندگان خاص اختصاص داده شده‌اند. رایج هستند اما جهانی نیستند.

TCP/3306 → MySQLTCP/5432 → PostgreSQLTCP/8080 → HTTP جایگزینTCP/3389 → RDP
پورت‌های موقت (Ephemeral Ports)49152 – 65535

به‌صورت پویا توسط سیستم‌عامل برای اتصالات سمت کلاینت اختصاص داده می‌شوند. معمولاً به‌عنوان پورت شنونده برای سرویس‌های عمومی استفاده نمی‌شوند.

مرورگر در 10.0.0.5:52344 → 93.184.216.34:443

4. سرویس چیست؟

سرویس یک برنامهٔ قابل اتصال به شبکه است که روی یک یا چند پورت گوش می‌دهد. پورت‌های استاندارد درواقع قرارداد هستند — مدیران سیستم می‌توانند آن‌ها را تغییر دهند، هرچند این کار برای فایروال‌ها، کلاینت‌ها و مستندات پیامدهایی دارد.

وب سرور (HTTP/HTTPS)Apache, Nginx, IIS
TCP/80HTTP — بدون رمزنگاری
TCP/443HTTPS — رمزنگاری‌شده با TLS
سرور ایمیل
TCP/25SMTP — ارتباط سرور به سرور
TCP/587Submission — ارسال از کلاینت به سرور
TCP/143IMAP — دریافت ایمیل
TCP/993IMAPS — IMAP روی TLS
TCP/110POP3
TCP/995POP3S — POP3 روی TLS
سرور SSH
TCP/22پیش‌فرض — ورود از راه دور، SFTP، اتوماسیون

می‌تواند به TCP/2222 منتقل شود — اما کلاینت‌ها و فایروال‌ها باید به‌روزرسانی شوند

5. پورت‌ها و سرویس‌ها چطور با هم کار می‌کنند

یک کاربر آدرس https://www.example.com را باز می‌کند. در سطح پورت، این اتفاق‌ها می‌افتد:

1

مرورگر www.example.com را به 93.184.216.34 ترجمه (resolve) می‌کند

2

مرورگر یک اتصال TCP از سوکت کلاینت 192.168.1.10:52345 (موقت) باز می‌کند

3

به سوکت سرور 93.184.216.34:443 (پورت HTTPS) متصل می‌شود

4

Nginx روی پورت 443 گوش می‌دهد و اتصال را می‌پذیرد

5

دست‌دهی TLS تکمیل می‌شود و داده‌های HTTP/S ردوبدل می‌شوند

  • برای کارکرد HTTPS، فایروال باید ترافیک ورودی TCP/443 را مجاز کند
  • Load balancer روی پورت 443 گوش می‌دهد و ترافیک را به سرورهای پشت‌صحنه فوروارد می‌کند
  • اگر سرور به‌جای 443 روی 8443 گوش دهد، کلاینت‌ها باید به‌طور صریح آن پورت را مشخص کنند

6. پورت‌های شناخته‌شدهٔ رایج

پورت‌هایی که در کار روزمره بیشتر با آن‌ها روبه‌رو خواهید شد.

پورتپروتکلسرویستوضیحات
80TCPHTTPترافیک وب بدون رمزنگاری
443TCPHTTPSترافیک وب رمزنگاری‌شده با TLS
22TCPSSHشِل راه دور، SFTP، تونل‌زنی
25TCPSMTPایمیل سرور به سرور
587TCPSMTPارسال ایمیل از کلاینت
143TCPIMAPدریافت ایمیل (ساده)
993TCPIMAPSIMAP روی TLS
53TCP/UDPDNSترجمهٔ نام دامنه
3306TCPMySQLپایگاه داده MySQL
5432TCPPgSQLپایگاه داده PostgreSQL
3389TCPRDPRemote Desktop ویندوز
8080TCPHTTP*پورت جایگزین HTTP

7. چرا پورت‌ها در عمل مهم هستند؟

پورت‌ها اساس قوانین فایروال، عیب‌یابی اتصال‌پذیری، میزبانی چند سرویس روی یک هاست، و معماری سرویس‌های مدرن هستند.

امنیت و فایروال‌ها

برای وب‌سرورهای عمومی، ترافیک ورودی TCP/80 و TCP/443 را مجاز کنید
دسترسی TCP/22 (SSH) را فقط به IPهای ادمین مشخص محدود کنید
سایر پورت‌ها را مسدود کنید — اصل کمترین سطح دسترسی (least privilege)
یک پورت باز برای سرویسی که استفاده نمی‌شود، یک سطح حمله (attack surface) است

عیب‌یابی اتصال‌پذیری

قدم ۱: آیا می‌توانید سرور را ping کنید؟ (اتصال IP پایه)
قدم ۲: آیا می‌توانید به پورت مشخص برسید؟
Ping کار می‌کند ولی پورت 443 در دسترس نیست → احتمالاً فایروال مسدود می‌کند، سرویس بالا نیست، یا load balancer بد تنظیم شده است
ترمینال
nc -vz 93.184.216.34 443 # یا telnet 93.184.216.34 443

میزبانی چند سرویس

یک IP سرور می‌تواند هم‌زمان چندین سرویس را روی پورت‌های مختلف ارائه کند
این ساختار کاملاً به جداسازی پورت‌ها و سیاست‌های فایروال متکی است

Load Balancing و میکروسرویس‌ها

Load balancerها روی پورت‌های شناخته‌شده (مثلاً 443) گوش می‌دهند و به پورت‌های پویا در Backend فوروارد می‌کنند
سیستم‌های Service discovery (مثل Consul، Kubernetes) دنبال می‌کنند که هر سرویس روی کدام IP:port اجرا می‌شود
کلاینت‌ها فقط پورت 443 را می‌بینند؛ در پشت‌صحنه تعداد زیادی پورت موقت در حال استفاده است
مثال هاست چندسرویسه
192.0.2.10:22SSHفقط داخلی
192.0.2.10:80HTTP
192.0.2.10:443HTTPS
192.0.2.10:8443APIدارای محدودیت
192.0.2.10:3306MySQLفقط داخلی

8. ابزارهای بررسی پورت‌ها

ابزارهای رایج برای دیدن اینکه کدام سرویس‌ها روی کدام پورت‌ها گوش می‌دهند — چه به‌صورت محلی و چه روی یک هاست راه دور.

ssلینوکس مدرن — فهرست سوکت‌های در حال گوش دادن
netstatقدیمی‌تر، اما هنوز هم به‌طور گسترده در دسترس
lsof -iفهرست فایل‌های شبکه‌ای باز (macOS / Linux)
nmapاسکن پورت روی هاست راه دور
nc / telnetچک سریع دسترسی‌پذیری یک پورت
نمونه خروجی ss
$ ss -tuln
Netid  State   Local Address:Port
tcp    LISTEN  0.0.0.0:22
tcp    LISTEN  0.0.0.0:80
tcp    LISTEN  0.0.0.0:443
  • 0.0.0.0:22 یعنی SSH روی تمام اینترفیس‌های شبکه گوش می‌دهد
  • 127.0.0.1:3306 یعنی MySQL فقط روی localhost گوش می‌دهد — به‌صورت خارجی در معرض نیست