TCP — internet va kompyuter tarmoqlarida ma’lumotlarni ishonchli yetkazish uchun ishlatiladigan transport protokoli. TCP inglizcha Transmission Control Protocol so‘zlarining qisqartmasi bo‘lib, qurilmalar o‘rtasida ma’lumot almashinuvi tartibli va nazoratli bo‘lishini ta’minlaydi.
TCP internetdagi ko‘plab xizmatlarning asosida ishlaydi. Web sahifa ochish, fayl yuklash, email yuborish, SSH orqali serverga ulanish va database bilan aloqa qilishda TCP ishlatilishi mumkin.
Vazifasi
TCP’ning asosiy vazifasi — ma’lumotlarni client va server o‘rtasida ishonchli yetkazish.
TCP quyidagi vazifalarni bajaradi:
- ikki qurilma o‘rtasida ulanish yaratadi;
- ma’lumotlarni kichik paketlarga bo‘ladi;
- paketlar to‘g‘ri yetib borganini tekshiradi;
- yo‘qolgan paketlarni qayta yuboradi;
- paketlar tartibini tiklaydi;
- ma’lumot oqimini boshqaradi;
- tarmoqdagi yuklamani nazorat qiladi.
Masalan, foydalanuvchi web saytga kirganda brauzer server bilan TCP ulanish yaratishi mumkin. Shundan keyin HTTP yoki HTTPS so‘rovlari shu ulanish orqali uzatiladi.
TCP qanday ishlaydi?
TCP ma’lumot yuborishdan oldin client va server o‘rtasida ulanish hosil qiladi. Bu jarayon connection-oriented yondashuv deyiladi.
Oddiy jarayon quyidagicha:
- client serverga ulanish so‘rovi yuboradi;
- server ulanishni qabul qiladi;
- client va server aloqa parametrlarini kelishib oladi;
- ma’lumotlar paketlarga bo‘linib yuboriladi;
- qabul qiluvchi tomon paketlarni tasdiqlaydi;
- yo‘qolgan paketlar qayta yuboriladi;
- aloqa tugagach ulanish yopiladi.
TCP shu orqali ma’lumotlar to‘liq va tartibli yetib borishini ta’minlaydi.
Three-way handshake
TCP ulanishi odatda three-way handshake deb ataladigan jarayon orqali boshlanadi. Bu client va server o‘rtasida aloqa tayyorligini tekshirish bosqichidir.
Three-way handshake uch bosqichdan iborat:
- SYN — client serverga ulanish boshlash so‘rovini yuboradi;
- SYN-ACK — server so‘rovni qabul qilganini bildiradi;
- ACK — client tasdiq yuboradi va ulanish o‘rnatiladi.
Shundan keyin client va server o‘rtasida ma’lumot almashinuvi boshlanadi.
Paketlar
TCP ma’lumotlarni bir butun holatda emas, kichik qismlar — paketlar ko‘rinishida uzatadi. Har bir paketda ma’lumotning o‘zi va uni boshqarish uchun kerakli texnik axborot bo‘ladi.
TCP paketlari bilan bog‘liq muhim qismlar:
- yuboruvchi port;
- qabul qiluvchi port;
- ketma-ketlik raqami;
- tasdiqlash raqami;
- flaglar;
- checksum;
- ma’lumot qismi.
Ketma-ketlik raqamlari paketlar tartibini tiklashga yordam beradi. Agar paketlar tarmoqda boshqa tartibda yetib kelsa ham, TCP ularni to‘g‘ri tartibga keltiradi.
Ishonchlilik
TCP ishonchli protokol hisoblanadi, chunki u yuborilgan ma’lumot yetib borganini tekshiradi. Qabul qiluvchi tomon paketni olgach, yuboruvchiga tasdiq xabari yuboradi.
Agar tasdiq kelmasa, TCP paket yo‘qolgan deb hisoblaydi va uni qayta yuboradi. Bu mexanizm fayl, sahifa, matn va boshqa ma’lumotlar buzilmasdan yetib borishiga yordam beradi.
TCP quyidagi ishonchlilik mexanizmlaridan foydalanadi:
- acknowledgement;
- sequence number;
- retransmission;
- checksum;
- flow control;
- congestion control.
TCP va UDP farqi
TCP va UDP ikkalasi ham transport protokoli, lekin ishlash usuli farq qiladi.
- TCP ulanish o‘rnatadi, UDP esa ulanishsiz ishlaydi;
- TCP paket yetib borganini tekshiradi, UDP buni kafolatlamaydi;
- TCP tartibni saqlaydi, UDP paketlar tartibiga kafolat bermaydi;
- TCP ishonchliroq, UDP tezroq va yengilroq;
- TCP web, email, SSH va fayl uzatishda ishlatiladi;
- UDP video stream, online o‘yinlar, DNS va real-time aloqa tizimlarida ishlatiladi.
TCP ma’lumot to‘liq yetib borishi muhim bo‘lgan joylarda ishlatiladi. UDP esa kechikish kam bo‘lishi muhim bo‘lgan tizimlarda ko‘p uchraydi.
Portlar bilan ishlashi
TCP portlar orqali turli xizmatlarni ajratadi. Bitta serverda bir nechta xizmat ishlashi mumkin va har biri alohida port orqali murojaat qabul qiladi.
Keng tarqalgan TCP portlar:
- 80 — HTTP;
- 443 — HTTPS;
- 22 — SSH;
- 25 — SMTP;
- 110 — POP3;
- 143 — IMAP;
- 3306 — MySQL;
- 5432 — PostgreSQL;
- 6379 — Redis.
Masalan, web server HTTPS so‘rovlarni 443-portda qabul qiladi. SSH orqali serverga ulanish esa odatda 22-port orqali amalga oshadi.
HTTP va HTTPS bilan bog‘liqligi
HTTP va HTTPS yuqori qatlam protokollari hisoblanadi. Ular ko‘pincha TCP ustida ishlaydi.
Masalan, foydalanuvchi HTTPS saytga kirganda:
- DNS domenni IP manzilga aylantiradi;
- brauzer server bilan TCP ulanish o‘rnatadi;
- TLS xavfsiz aloqa kanalini yaratadi;
- HTTP so‘rov va javoblar shu aloqa orqali almashinadi.
HTTPS’da TCP ustiga TLS xavfsizlik qatlami qo‘shiladi.
Serverlarda TCP
Serverlar TCP orqali clientlardan keladigan so‘rovlarni qabul qiladi. Har bir tarmoq xizmati ma’lum portda tinglab turadi.
Serverlarda TCP quyidagi xizmatlarda ishlatiladi:
- web server;
- backend API;
- database server;
- SSH;
- email server;
- proxy server;
- message broker;
- file transfer xizmatlari.
Masalan, Nginx 80 yoki 443-portda TCP ulanishlarni qabul qilib, HTTP yoki HTTPS so‘rovlarni qayta ishlaydi.
TCP holatlari
TCP ulanishlari turli holatlarda bo‘lishi mumkin. Bu holatlar client va server o‘rtasidagi aloqa bosqichlarini bildiradi.
Keng uchraydigan TCP holatlari:
- LISTEN — server portda ulanish kutmoqda;
- SYN-SENT — client ulanish so‘rovi yuborgan;
- SYN-RECEIVED — server so‘rovni qabul qilgan;
- ESTABLISHED — ulanish o‘rnatilgan;
- FIN-WAIT — ulanish yopilish jarayonida;
- CLOSE-WAIT — bir tomon yopishni kutmoqda;
- TIME-WAIT — ulanish yopilgandan keyingi kutish holati;
- CLOSED — ulanish yopilgan.
Bu holatlar tarmoq monitoringi va server diagnostikasida ko‘rinadi.
Flow control
Flow control — yuboruvchi tomon qabul qiluvchi tomon ko‘tara oladigan miqdorda ma’lumot yuborishini boshqaradigan mexanizm.
Agar qabul qiluvchi qurilma sekin ishlayotgan bo‘lsa yoki uning xotirasi band bo‘lsa, TCP yuborish tezligini moslashtiradi. Bu qabul qiluvchi tomon ortiqcha yuklanib qolmasligi uchun ishlatiladi.
Flow control TCP ulanishlarida ma’lumot oqimini tartibli ushlab turadi.
Congestion control
Congestion control — tarmoq haddan tashqari band bo‘lib qolmasligi uchun TCP yuborish tezligini boshqaradigan mexanizm.
Agar tarmoqda kechikish, paket yo‘qolishi yoki ortiqcha yuklama sezilsa, TCP yuborish tezligini kamaytiradi. Tarmoq holati yaxshilanganda esa tezlik asta-sekin oshiriladi.
Bu mexanizm internetdagi umumiy trafik barqarorligini saqlashga yordam beradi.
Dasturlashdagi o‘rni
TCP dasturlashda client-server tizimlar, socket programming, backend xizmatlar va tarmoq protokollarini tushunishda muhim o‘rin tutadi.
TCP bilan bog‘liq dasturlash tushunchalari:
Backend ilovalar, database ulanishlari, message brokerlar va web serverlar TCP asosida ishlashi mumkin.
Bog‘liq tushunchalar
IP, UDP, HTTP, HTTPS, Server, Client, Port, DNS, Socket, WebSocket, Nginx, Firewall