Port — kompyuter tarmog‘ida bitta qurilma ichidagi turli xizmatlarni ajratish uchun ishlatiladigan raqamli manzil. IP manzil qurilmani topish uchun ishlatilsa, port shu qurilma ichidagi qaysi dastur yoki xizmatga murojaat qilinayotganini bildiradi.
Masalan, serverda bir vaqtning o‘zida web sayt, database, SSH va email xizmati ishlashi mumkin. Ularning har biri alohida port orqali so‘rov qabul qiladi.
Vazifasi
Portning asosiy vazifasi — tarmoq orqali kelgan ma’lumotni kerakli dastur yoki xizmatga yetkazish.
Port quyidagi holatlarda ishlatiladi:
- web saytga ulanish;
- serverga SSH orqali kirish;
- database bilan aloqa qilish;
- email yuborish va qabul qilish;
- API serverga so‘rov yuborish;
- Redis, PostgreSQL yoki MySQL kabi xizmatlarga ulanish;
- Docker container portlarini tashqi tarmoqqa ochish;
- tarmoq xizmatlarini ajratish.
Masalan, foydalanuvchi HTTPS saytga kirganda brauzer odatda serverning 443-portiga ulanadi.
Port qanday ishlaydi?
Serverda har bir tarmoq xizmati ma’lum bir portda so‘rov kutib turadi. Bu holat listening port deb ataladi.
Oddiy jarayon:
- serverda dastur ma’lum portda ishga tushadi;
- client server IP manzili va portiga so‘rov yuboradi;
- operatsion tizim kelgan so‘rovni shu portni tinglayotgan dasturga uzatadi;
- dastur so‘rovni qayta ishlaydi;
- javob clientga qaytariladi.
Masalan, backend ilova 8000-portda ishlayotgan bo‘lsa, client server-ip:8000 manziliga so‘rov yuborishi mumkin.
IP va port
IP manzil qurilmani bildiradi, port esa shu qurilma ichidagi xizmatni bildiradi.
Misol:
192.168.1.10:5432
Bu yerda:
192.168.1.10— IP manzil;5432— port;5432odatda PostgreSQL xizmati uchun ishlatiladi.
Bitta IP manzilda bir nechta xizmat turli portlarda ishlashi mumkin.
Keng tarqalgan portlar
Tarmoqda ayrim portlar ma’lum xizmatlar uchun standart sifatida ishlatiladi.
- 20/21 — FTP;
- 22 — SSH;
- 25 — SMTP;
- 53 — DNS;
- 80 — HTTP;
- 110 — POP3;
- 143 — IMAP;
- 443 — HTTPS;
- 3306 — MySQL;
- 5432 — PostgreSQL;
- 6379 — Redis;
- 8000 — development serverlarda ko‘p ishlatiladi;
- 8080 — web yoki proxy xizmatlarda ko‘p uchraydi.
Standart portlar xizmatlarni tanib olish va ularga ulanishni osonlashtiradi.
TCP va UDP portlar
Portlar TCP va UDP protokollarida ishlatiladi. Bir xil port raqami TCP va UDP’da alohida xizmatlar uchun ishlatilishi mumkin.
Masalan:
- TCP 443 — HTTPS ulanishlari uchun;
- UDP 53 — DNS so‘rovlari uchun;
- TCP 22 — SSH uchun;
- UDP 123 — NTP uchun.
TCP portlar odatda ishonchli ulanish talab qilinadigan xizmatlarda ishlatiladi. UDP portlar esa tezlik va past kechikish muhim bo‘lgan xizmatlarda qo‘llanadi.
Port diapazonlari
Port raqamlari 0 dan 65535 gacha bo‘ladi. Ular odatda bir nechta guruhga bo‘linadi.
- 0–1023 — well-known ports, ya’ni standart tizim xizmatlari uchun;
- 1024–49151 — registered ports, ya’ni ma’lum dastur va xizmatlar uchun;
- 49152–65535 — dynamic yoki private ports, vaqtinchalik ulanishlar uchun.
Masalan, brauzer serverga ulanayotganda client tomonda vaqtinchalik port ishlatiladi, server tomonda esa 80 yoki 443 kabi standart port bo‘lishi mumkin.
Open port
Open port — serverda tarmoq orqali so‘rov qabul qilayotgan port. Agar port ochiq bo‘lsa, tashqi clientlar shu port orqali xizmatga murojaat qilishi mumkin.
Ochiq portlar quyidagi holatlarda bo‘ladi:
- web server 80 yoki 443-portda ishlayotganda;
- SSH 22-portda so‘rov kutayotganda;
- database tashqi ulanish uchun ochilganda;
- Docker container porti hostga chiqarilganda;
- API server ma’lum portda ishga tushirilganda.
Serverda ochiq portlar tarmoq xavfsizligida muhim ahamiyatga ega.
Closed port
Closed port — serverda hech qanday xizmat tinglamayotgan port. Client bunday portga so‘rov yuborsa, ulanish rad etilishi yoki javob qaytmasligi mumkin.
Closed port odatda quyidagi holatlarni bildiradi:
- xizmat ishga tushmagan;
- dastur boshqa portda ishlayapti;
- firewall portni yopgan;
- server bu portda so‘rov qabul qilmaydi;
- port noto‘g‘ri ko‘rsatilgan.
Masalan, backend ilova 8000-portda emas, 8080-portda ishlayotgan bo‘lsa, 8000-portga yuborilgan so‘rov muvaffaqiyatsiz bo‘lishi mumkin.
Firewall va port
Firewall tarmoq portlariga kirishni nazorat qiladi. U ma’lum portlarni ochishi yoki yopishi mumkin.
Firewall orqali quyidagilar boshqariladi:
- qaysi port tashqi tarmoqqa ochiq bo‘lishi;
- qaysi IP manzillar portga kira olishi;
- TCP yoki UDP trafik ruxsat etilishi;
- ichki va tashqi tarmoq qoidalari;
- xavfli portlarga kirishni bloklash.
Masalan, web sayt ishlashi uchun 80 va 443-portlar ochiq bo‘lishi mumkin, lekin database porti tashqi tarmoqqa yopiq turishi mumkin.
Serverlarda port
Serverlarda portlar xizmatlarni ajratish va tarmoq so‘rovlarini boshqarish uchun ishlatiladi.
Serverda quyidagi xizmatlar turli portlarda ishlashi mumkin:
- Nginx — 80 yoki 443;
- SSH — 22;
- PostgreSQL — 5432;
- MySQL — 3306;
- Redis — 6379;
- backend API — 8000, 8080 yoki boshqa port;
- monitoring xizmati — alohida port;
- message broker — o‘ziga tegishli port.
Bitta portda bir vaqtning o‘zida faqat bitta xizmat tinglashi mumkin. Agar ikki dastur bir xil portdan foydalanmoqchi bo‘lsa, port bandligi xatosi yuzaga keladi.
Docker va port
Docker container ichidagi xizmat tashqi tarmoqqa ko‘rinishi uchun port mapping ishlatiladi.
Misol:
8000:80
Bu yerda:
8000— host mashinadagi port;80— container ichidagi port.
Foydalanuvchi hostning 8000-portiga murojaat qilganda, so‘rov container ichidagi 80-portga yo‘naltiriladi.
Docker Compose’da portlar odatda ports bo‘limida ko‘rsatiladi.
Dasturlashdagi o‘rni
Dasturlashda port client-server aloqasini tushunish uchun muhim. Backend ilova, database, cache, websocket server va boshqa xizmatlar port orqali ishlaydi.
Port bilan bog‘liq dasturlash holatlari:
- local development server;
- API endpointlarga ulanish;
- database connection;
- WebSocket server;
- Docker container mapping;
- reverse proxy sozlamalari;
- CORS va callback URL;
- webhook qabul qilish;
- test muhitidagi xizmatlar.
Masalan, FastAPI ilovasi lokal muhitda 127.0.0.1:8000 manzilida ishlashi mumkin.
Bog‘liq tushunchalar
IP, TCP, UDP, Server, Client, Firewall, HTTP, HTTPS, SSH, Docker, Nginx, API