پورتها و سرویسها
چطور پورتهای TCP/UDP سرویسها را روی یک هاست مشخص میکنند — و چرا آنها اساس فایروالها، اتصالپذیری، و معماری برنامههای مدرن هستند.
1. پورت چیست؟
پورت یک عدد ۱۶ بیتی (۰ تا ۶۵۵۳۵) است که توسط لایهٔ انتقال (TCP/UDP) برای شناسایی یک سرویس یا برنامهٔ خاص روی یک هاست استفاده میشود. آدرس 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 وجود دارند. یک شماره پورت یکسان میتواند بهطور مستقل روی هر پروتکل استفاده شود.
- HTTP / HTTPS
- SSH
- FTP
- SMTP / IMAP / POP3
- DNS
- DHCP
- SNMP
- استریمینگ / بازی
- پورتهای TCP — اتصالگرا: HTTP، HTTPS، SSH، FTP، SMTP، IMAP، POP3
- پورتهای UDP — بدون اتصال: DNS، DHCP، SNMP، پروتکلهای استریمینگ و بازی
- TCP/80 → ترافیک وب HTTP
- UDP/53 → درخواستهای DNS
3. محدودههای شماره پورت
شمارههای پورت به سه محدودهٔ رسمی که توسط IANA مدیریت میشوند، تقسیم شدهاند.
برای سرویسهای استاندارد و پرکاربرد رزرو شدهاند. توسط IANA مدیریت میشوند.
به برنامهها یا فروشندگان خاص اختصاص داده شدهاند. رایج هستند اما جهانی نیستند.
بهصورت پویا توسط سیستمعامل برای اتصالات سمت کلاینت اختصاص داده میشوند. معمولاً بهعنوان پورت شنونده برای سرویسهای عمومی استفاده نمیشوند.
4. سرویس چیست؟
سرویس یک برنامهٔ قابل اتصال به شبکه است که روی یک یا چند پورت گوش میدهد. پورتهای استاندارد درواقع قرارداد هستند — مدیران سیستم میتوانند آنها را تغییر دهند، هرچند این کار برای فایروالها، کلاینتها و مستندات پیامدهایی دارد.
میتواند به TCP/2222 منتقل شود — اما کلاینتها و فایروالها باید بهروزرسانی شوند
5. پورتها و سرویسها چطور با هم کار میکنند
یک کاربر آدرس https://www.example.com را باز میکند. در سطح پورت، این اتفاقها میافتد:
مرورگر www.example.com را به 93.184.216.34 ترجمه (resolve) میکند
مرورگر یک اتصال TCP از سوکت کلاینت 192.168.1.10:52345 (موقت) باز میکند
به سوکت سرور 93.184.216.34:443 (پورت HTTPS) متصل میشود
Nginx روی پورت 443 گوش میدهد و اتصال را میپذیرد
دستدهی TLS تکمیل میشود و دادههای HTTP/S ردوبدل میشوند
- برای کارکرد HTTPS، فایروال باید ترافیک ورودی TCP/443 را مجاز کند
- Load balancer روی پورت 443 گوش میدهد و ترافیک را به سرورهای پشتصحنه فوروارد میکند
- اگر سرور بهجای 443 روی 8443 گوش دهد، کلاینتها باید بهطور صریح آن پورت را مشخص کنند
6. پورتهای شناختهشدهٔ رایج
پورتهایی که در کار روزمره بیشتر با آنها روبهرو خواهید شد.
7. چرا پورتها در عمل مهم هستند؟
پورتها اساس قوانین فایروال، عیبیابی اتصالپذیری، میزبانی چند سرویس روی یک هاست، و معماری سرویسهای مدرن هستند.
امنیت و فایروالها
عیبیابی اتصالپذیری
میزبانی چند سرویس
Load Balancing و میکروسرویسها
8. ابزارهای بررسی پورتها
ابزارهای رایج برای دیدن اینکه کدام سرویسها روی کدام پورتها گوش میدهند — چه بهصورت محلی و چه روی یک هاست راه دور.
$ 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 گوش میدهد — بهصورت خارجی در معرض نیست