IlmHamroh
JavaScript Full-stack/2-qism. Internet, veb va brauzer3/20-dars13 daqiqa
Mundarija (32)

TCP va UDP: protokol qatlamlari va 3-way handshake

Qisqacha: Internet paketlarni kafolatsiz tashiydi: ular yo'qolishi yoki aralashib kelishi mumkin. TCP bu muammoni hal qiladi — ulanish o'rnatadi, har bir bo'lak yetganini tekshiradi va yo'qolganini qayta yuboradi. UDP esa tekshirmaydi, lekin tezroq; u video qo'ng'iroq, o'yin va DNS uchun qulay.

Bu darsda

  • Protokol nima ekanini va tarmoq nega qatlamlarga bo'linganini tushunasiz.
  • TCP/IP modelini va OSI'ning 7 qatlamini taniysiz.
  • TCP ulanishi qanday o'rnatilishini (3-way handshake) chizib bera olasiz.
  • TCP va UDP farqini bilasiz va vaziyatga qarab to'g'risini tanlaysiz.
  • QUIC va HTTP/3 nima uchun paydo bo'lganini tushunasiz.

Oldin bilishingiz kerak: Tarmoq va Internet nima, IP manzil va port.

1. Nega bu kerak?

Birinchi darsda ko'rdik: ma'lumot paketlarga bo'linadi va o'nlab routerlardan o'tadi. Endi yo'lda nima bo'lishi mumkinligini tasavvur qiling:

  • Router haddan tashqari band bo'lib, paketni tashlab yubordi.
  • Ikki paket turli yo'llardan ketdi va 5-paket 4-paketdan oldin keldi.
  • Wi-Fi signali bir lahzaga uzilib, bir nechta paket yo'qoldi.

IP manzil faqat "qayerga olib borish kerak"ni aytadi. Yetib borishni esa hech kim kafolatlamaydi. Pochtachi konvertni yo'qotsa, sizga xabar bermaydi.

Lekin siz bank ilovasidan chek yuklab olsangiz, unda birorta ham raqam yo'qolmasligi kerak. Buni kim ta'minlaydi? Shu darsning qahramoni — TCP. Uning "tezkor ukasi" UDP esa boshqa vazifani bajaradi.

2. Protokol va qatlamlar

2.1 Protokol — kelishilgan qoidalar

Protokol (protocol) — ikki tomon oldindan kelishib olgan muloqot qoidalari: kim birinchi gapiradi, xabar qanday ko'rinishda bo'ladi, xato bo'lsa nima qilinadi.

O'xshatish: telefon suhbati. Qo'ng'iroq qilgan odam "Allo" deydi, ikkinchisi "Allo, eshitaman" deb javob beradi, keyin gap boshlanadi. Oxirida "Xayr" deyishadi. Bu qoidalarni hech kim yozib bermagan, lekin hamma unga amal qiladi. Tarmoqda ham shunday, faqat qoidalar hujjatlarda aniq yozilgan.

Siz allaqachon bitta protokolni bilasiz — IP. Bugun yana ikkitasi qo'shiladi: TCP va UDP. Keyingi darslarda HTTP ham keladi.

2.2 Nega qatlamlar?

Pochtani eslang. Siz xat yozasiz va konvertga solasiz. Pochta bo'limi uni qopga soladi. Qopni yuk mashinasi tashiydi. Siz yuk mashinasi haqida o'ylamaysiz, haydovchi esa xatingizda nima yozilganini bilmaydi. Har kim faqat o'z ishini qiladi.

Tarmoq ham shunday qurilgan. Har bir qatlam (layer) bitta ishga javob beradi va faqat qo'shni qatlamlar bilan gaplashadi. Foydasi: bitta qatlamni almashtirish boshqalariga tegmaydi. Masalan, kabel o'rniga Wi-Fi ishlatsangiz ham, brauzeringiz o'zgarmaydi.

2.3 TCP/IP modeli: 4 qatlam

Internet TCP/IP modeli bo'yicha ishlaydi. Unda 4 qatlam bor, yuqoridan pastga:

Qatlam Vazifasi Protokollar
4. Ilova Dastur nima demoqchi HTTP, DNS, SSH
3. Transport Qaysi dasturga, kafolat bilanmi TCP, UDP
2. Internet Qaysi kompyuterga, qaysi yo'ldan IP
1. Tarmoqqa kirish Kabel yoki radio orqali uzatish Ethernet (kabel), Wi-Fi

Pochtada: ilova — xatning mazmuni, transport — "qo'lga tilxat bilan topshirilsin" belgisi, internet — konvertdagi manzil, tarmoqqa kirish — yuk mashinasi.

E'tibor bering: port raqami transport qatlamida yoziladi. Shuning uchun TCP va UDP portlari alohida: TCP'dagi 53-port va UDP'dagi 53-port — ikki xil "eshik".

2.4 Enkapsulyatsiya: konvert ichida konvert

Xabar yuqoridan pastga tushar ekan, har bir qatlam unga o'z sarlavhasini (header) qo'shadi. Sarlavha — xabar oldiga yoziladigan xizmat ma'lumoti, konvert ustidagi yozuvga o'xshaydi. Bu o'rash jarayoni enkapsulyatsiya (encapsulation) deyiladi:

text
Ilova:      [ GET /menyu ]
Transport:  [ TCP: portlar | GET /menyu ]
Internet:   [ IP: manzillar | TCP: portlar | GET /menyu ]
Kabel:      [ Wi-Fi | IP | TCP | GET /menyu ] → 0 va 1

Qabul qiluvchi tomonda teskarisi bo'ladi: har bir qatlam o'z sarlavhasini o'qiydi, olib tashlaydi va ichidagini yuqoriga beradi. Oxirida server dasturi faqat GET /menyu ni ko'radi. (GET — "menga ber" degan so'rov, uni HTTP darsida ko'ramiz.)

Eng pastki qatlamdagi sarlavhada MAC manzil bo'ladi — har bir tarmoq kartasining zavodda berilgan raqami. U faqat bitta LAN ichida, masalan telefondan routergacha ishlatiladi. Chuqur o'rganish shart emas, nomini tanisangiz yetarli.

2.5 OSI modeli: 7 qatlam

Kitoblarda va intervyularda OSI modeli ham uchraydi. U o'sha g'oyani 7 qatlamga bo'lib tushuntiradi. Real internet TCP/IP bo'yicha ishlaydi, OSI esa ko'proq o'rganish va gaplashish uchun "umumiy til".

OSI Nomi TCP/IP'da
7, 6, 5 Ilova, taqdimot, sessiya Ilova
4 Transport Transport
3 Tarmoq Internet
2, 1 Kanal, fizik Tarmoqqa kirish

Dasturchilar qatlamni ko'pincha raqami bilan aytadi: "L4" — transport (TCP/UDP), "L7" — ilova (HTTP). Masalan, "bu L7 balanslovchi" degani "so'rovlarni bir nechta server orasida taqsimlaydigan va buning uchun HTTP'ni tushunadigan dastur".

Tekshirib ko'ring: Port raqami qaysi qatlamda yoziladi? IP manzil-chi?

Javob

Port — transport qatlamida (TCP yoki UDP sarlavhasida). IP manzil — internet qatlamida (IP sarlavhasida). Shuning uchun IP kompyuterni topadi, TCP/UDP esa kompyuter ichidagi dasturni.

3. TCP: kafolatli yetkazish

3.1 TCP nima va'da beradi?

TCP (Transmission Control Protocol) — ma'lumotni to'liq va to'g'ri tartibda yetkazishni kafolatlaydigan transport protokoli. Uning uchta asosiy va'dasi bor:

  1. Ulanish. Ma'lumot yuborishdan oldin ikki tomon "gaplashishga tayyormiz" deb kelishadi.
  2. Tasdiq. Qabul qiluvchi har bir bo'lak uchun "oldim" deb javob qaytaradi.
  3. Tartib. Har bir bo'lakning tartib raqami bor, shuning uchun aralash kelgan bo'laklar to'g'ri tizib chiqiladi.

O'xshatish: kuryer qo'lga tilxat bilan topshiradigan buyurtma. Kuryer eshikni qoqadi, siz ochasiz, u yukni beradi, siz imzo qo'yasiz. Imzo bo'lmasa, kuryer qaytib keladi.

3.2 3-way handshake: uch qadamli salomlashuv

TCP ulanishi uchta xabar bilan boshlanadi. Buni 3-way handshake ("uch tomonlama qo'l siqish") deyishadi:

sequenceDiagram
    participant M as Mijoz
    participant S as Server
    M->>S: SYN — gaplashamizmi?
    S->>M: SYN-ACK — ha, eshitaman
    M->>S: ACK — yaxshi, boshladik
    Note over M,S: Ulanish tayyor
    M->>S: Ma'lumot
    S->>M: ACK — oldim
  • SYN (synchronize — "moslashamiz") — mijoz ulanish so'raydi.
  • SYN-ACK — server rozi bo'ladi va so'rovni oldim deydi.
  • ACK (acknowledgement — "tasdiq") — mijoz server javobini oldim deydi.

Telefon suhbatidagi "Allo" — "Allo, eshitaman" — "Yaxshi, gap bunday..." aynan shu.

Handshake bepul emas. U bitta borib kelish vaqtini oladi. Birinchi darsdagi ping 60 ms bo'lsa, ma'lumot yuborishdan oldin 60 ms faqat salomlashishga ketadi.

3.3 Paket yo'qolsa nima bo'ladi?

Faraz qiling: server 4 ta bo'lak yubordi, 3-bo'lak yo'lda yo'qoldi.

text
Server → Mijoz:  1-bo'lak   ✓
Server → Mijoz:  2-bo'lak   ✓
Server → Mijoz:  3-bo'lak   ✗ yo'qoldi
Server → Mijoz:  4-bo'lak   ✓
Mijoz → Server:  "2-gacha hammasi bor, 3-ni kutyapman"
Server → Mijoz:  3-bo'lak   ✓ (qayta yuborildi)

Mijoz 4-bo'lakni saqlab turadi, lekin dasturga bermaydi. 3-bo'lak qayta kelgach, hammasini tartib bilan uzatadi. Dastur hech qanday yo'qolish bo'lganini sezmaydi ham. Shuning uchun TCP bilan ishlagan dasturchi "yarimta fayl kelib qoldi" degan muammoni o'ylamaydi.

3.4 Tiqilinchni boshqarish va ulanishni yopish

TCP yana ikki ishni o'zi qiladi:

  • Tiqilinchni boshqarish (congestion control). Paketlar ko'p yo'qola boshlasa, TCP "yo'l tiqilib qoldi" deb o'ylaydi va yuborish tezligini pasaytiradi. Yo'l bo'shasa, sekin-asta tezlashadi. Shu sababli bitta katta yuklab olish butun uy internetini to'liq egallab qo'ymaydi.
  • Ulanishni yopish. Ish tugagach, tomonlar FIN (finish — "tugatdim") xabarlari bilan xayrlashadi.

Oldingi darsda netstat chiqishida ko'rgan so'zlar endi tushunarli bo'ladi:

Holat Ma'nosi
LISTENING Server portda ulanish kutyapti
ESTABLISHED Handshake tugagan, gaplashishyapti
TIME_WAIT Ulanish yopildi, tizim biroz kutib turibdi

Tekshirib ko'ring: TCP ulanishida 5-bo'lak 4-bo'lakdan oldin keldi. Brauzer sahifani buzilgan holda ko'rsatadimi?

Javob

Yo'q. TCP har bir bo'lakning tartib raqamini biladi. U 5-bo'lakni kutib turadi, 4-bo'lak kelgach ikkalasini to'g'ri tartibda brauzerga beradi. Brauzer har doim to'liq va tartibli ma'lumot oladi.

4. UDP: tez, lekin kafolatsiz

4.1 UDP qanday ishlaydi?

UDP (User Datagram Protocol) — ulanish o'rnatmaydigan va yetib borishni tekshirmaydigan transport protokoli. U paketni jo'natadi va taqdiri bilan qiziqmaydi. Salomlashuv yo'q, tasdiq yo'q, qayta yuborish yo'q.

O'xshatish: ko'chadagi reklama varag'ini tarqatish. Tarqatuvchi har bir odamdan "oldingizmi?" deb so'ramaydi. Bittasi tushib qolsa, keyingisini beradi.

text
Server → Mijoz:  1-paket   ✓
Server → Mijoz:  2-paket   ✗ yo'qoldi (hech kim bilmaydi)
Server → Mijoz:  3-paket   ✓

4.2 Nega kafolatsizlik foydali bo'lishi mumkin?

Birinchi qarashda UDP yomon protokol tuyuladi. Lekin Malika video qo'ng'iroqda dugonasi bilan gaplashyapti deylik. Bir soniya oldingi ovoz bo'lagi yo'qoldi.

  • TCP bo'lsa: hamma narsa to'xtaydi va eski bo'lak qayta kelishini kutadi. Ekran qotadi, keyin ovoz "tutilib" chiqadi. Ikki soniya oldingi "salom"ni endi eshitishning foydasi yo'q.
  • UDP bo'lsa: yo'qolgan bo'lak tashlab ketiladi, suhbat davom etadi. Malika bir lahzalik "chirsillash"ni sezadi, xolos.

Jonli efirda eski ma'lumot qadrsiz — muhimi hozirgisi. UDP aynan shu yerda kerak.

4.3 UDP qayerda ishlatiladi?

  • Video va ovozli qo'ng'iroqlar — Zoom, Google Meet, Telegram qo'ng'iroqlari.
  • Onlayn o'yinlar — o'yinchining eng yangi joylashuvi muhim, eskisi emas.
  • DNS — sayt nomini IP manzilga aylantirish. Savol ham, javob ham bitta kichik paketga sig'adi. Javob kelmasa, dastur shunchaki qayta so'raydi — ulanish o'rnatishdan ko'ra tezroq. (Javob juda katta bo'lsa, DNS TCP'ga o'tadi.) DNS'ni keyingi darsda batafsil ko'ramiz.
  • QUIC — zamonaviy veb protokoli, uni shu darsning oxirida ko'ramiz.

Tekshirib ko'ring: Nega DNS so'rovi uchun TCP handshake qilish isrofgarchilik?

Javob

DNS savoli va javobi bittadan kichik paket. TCP bilan avval uch xabarli salomlashuv kerak bo'lardi — ya'ni asosiy ishdan oldin qo'shimcha borib kelish. UDP bilan savol darhol ketadi. Yo'qolsa, qayta so'rash baribir arzonroq.

5. TCP va UDP yonma-yon

Xususiyat TCP UDP
Ulanish Handshake bilan Yo'q, darhol yuboradi
Yetkazish Kafolatli, qayta yuboradi Kafolatsiz
Tartib Doim to'g'ri Aralashishi mumkin
Tezlik Sekinroq boshlanadi Tez, kechikish kam
Qayerda Sayt, fayl, pochta, SSH Qo'ng'iroq, o'yin, DNS

Qoida: har bir bayt muhim bo'lsa — TCP. Eng yangi ma'lumot muhim bo'lsa va eskisi kerak bo'lmasa — UDP.

6. QUIC va HTTP/3: UDP ustidagi yangi yo'l

6.1 TCP'ning sekin boshlanishi

Zamonaviy saytlar shifrlangan (HTTPS). Shifrlash uchun ham tomonlar alohida kelishib oladi — buni HTTPS darsida ko'ramiz. Demak, sayt ochishdan oldin: avval TCP salomlashuvi, keyin shifrlash kelishuvi, keyin so'rov. Har biri — bitta borib kelish.

Latency 100 ms bo'lsa, faqat tayyorgarlikka 200 ms ketadi. Mobil internetda, ayniqsa uzoq serverlar bilan, bu sezilarli.

6.2 QUIC nima?

QUIC — Google boshlagan va 2021-yilda standart bo'lgan transport protokoli. U UDP ustiga qurilgan, lekin TCP'ning kafolatlarini — tasdiq, qayta yuborish, tartib — o'zi bajaradi. Bundan tashqari, ulanish va shifrlash kelishuvini bitta borib kelishda qiladi.

UDP'dan "tez start"ni, TCP'dan "kafolat"ni oladi. Yana bir qulayligi: telefon Wi-Fi'dan mobil internetga o'tganda ulanish uzilmaydi.

HTTP/3 — QUIC ustida ishlaydigan HTTP versiyasi. 2026-yilda saytlarning uchdan biridan ko'prog'i uni qo'llaydi, Google va YouTube ham shular qatorida. Server buni javobida e'lon qiladi. Masalan, curl.exe -I https://www.google.com javobida shunday qator bor (haqiqiy chiqishdan):

text
Alt-Svc: h3=":443"; ma=2592000

Tarjimasi: "Muqobil xizmat: HTTP/3 (h3) 443-portda ham bor, buni 30 kun eslab qol" (ma — max age, soniyada). Brauzer keyingi safar QUIC orqali ulanadi. HTTP versiyalarini alohida darsda solishtiramiz.

7. Ko'p uchraydigan xatolar

7.1 "UDP — yomon, ishonchsiz protokol"

UDP yomon emas, u boshqa vazifa uchun. Jonli video, o'yin va DNS uchun u TCP'dan yaxshiroq. Hatto eng zamonaviy HTTP/3 ham UDP ustida ishlaydi.

7.2 "TCP bo'lsa, xabar albatta yetib boradi"

TCP yo'qolgan bo'lakni qayta yuboradi, lekin kabel butunlay uzilgan bo'lsa, u ham ojiz. Bunday holatda TCP "yetkazdim" deb yolg'on gapirmaydi — xato qaytaradi. Masalan, server umuman javob bermasa:

text
curl: (28) Connection timed out after 3008 milliseconds

Tarjimasi: "Ulanish 3008 millisekunddan keyin vaqt tugagani uchun to'xtatildi." Handshake'ning birinchi SYN xabariga javob kelmadi. Node.js'da bunday xato ETIMEDOUT deb ataladi. Ulanish o'rtada uzilsa esa ECONNRESET ("ulanish tashlab yuborildi") chiqadi. Kafolat shu: TCP ma'lumotni to'liq yetkazadi yoki xato haqida aniq aytadi.

7.3 TCP va HTTP'ni bir narsa deb o'ylash

HTTP — ilova qatlami: "menga bosh sahifani ber" degan mazmun. TCP — transport qatlami: shu mazmunni kafolat bilan tashiydigan "kuryer". HTTP/1.1 va HTTP/2 TCP ustida, HTTP/3 esa QUIC ustida ishlaydi.

7.4 Paket yo'qolishini faqat provayderdan ko'rish

Zaif Wi-Fi signali, routerdan uzoqda o'tirish yoki mikroto'lqinli pech (u Wi-Fi bilan bir xil chastotada ishlaydi) ham paket yo'qolishiga sabab bo'ladi. ping natijasidagi Lost qatori buni ko'rsatadi.

8. Mashqlar

1-mashq (oson): TCP'mi yoki UDP'mi?

Har bir vazifa uchun qaysi protokol mos?

  1. Bankdan PDF hisobot yuklab olish.
  2. Futbol o'yinining jonli videosi.
  3. Onlayn o'yinda o'yinchilarning joylashuvi.
  4. Saytdagi ro'yxatdan o'tish formasini yuborish.
Yechim
  1. TCP — PDF'dan bitta bayt yo'qolsa ham fayl buziladi.
  2. UDP (yoki UDP ustidagi QUIC) — jonli efirda eski kadrni kutishdan ko'ra tashlab ketgan yaxshi.
  3. UDP — faqat eng yangi joylashuv muhim.
  4. TCP — ism va parolning har bir harfi to'liq yetib borishi kerak.

2-mashq (o'rta): TCP holatlari

PowerShell'da yozing:

powershell
netstat -an -p tcp

Chiqishda LISTENING, ESTABLISHED va TIME_WAIT holatlaridan har biriga bittadan qator toping. Har biri nimani anglatishini o'z so'zingiz bilan ayting.

Yechim

Namuna qatorlar (haqiqiy chiqishdan):

text
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING
  TCP    192.168.1.140:49409    98.66.133.185:443      ESTABLISHED
  TCP    192.168.1.140:49270    172.217.117.4:443      TIME_WAIT
  • LISTENING — 135-portda Windows xizmati ulanish kutyapti. Ikkinchi manzil 0.0.0.0:0 — hali hech kim ulanmagan.
  • ESTABLISHED — kompyuteringiz 443-port orqali sayt bilan gaplashyapti, handshake tugagan.
  • TIME_WAIT — sayt bilan ulanish yaqinda yopildi (FIN almashildi), tizim kechikkan paketlar uchun biroz kutyapti.

3-mashq (qiyin): Tayyorgarlik vaqtini hisoblang

Serverga ping 100 ms. HTTPS sahifani ochish uchun TCP bilan quyidagilar kerak: TCP handshake (1 borib kelish), shifrlash kelishuvi (1 borib kelish), so'rov va javob (1 borib kelish). QUIC bilan esa ulanish va shifrlash bitta borib kelishda bo'ladi, keyin so'rov va javob.

Javobning birinchi bayti qancha vaqtda keladi: TCP bilan va QUIC bilan?

Yechim
text
TCP:  100 (handshake) + 100 (shifrlash) + 100 (so'rov) = 300 ms
QUIC: 100 (ulanish + shifrlash) + 100 (so'rov)        = 200 ms

QUIC har bir yangi ulanishda 100 ms tejaydi. Latency qancha katta bo'lsa, foyda shuncha ko'p. Qayta ulanishda QUIC hatto so'rovni birinchi xabar bilan birga yubora oladi. (Hisob soddalashtirilgan: server javob tayyorlash vaqti hisobga olinmadi.)

9. Real ishda

  • Xato xabarlarini o'qish. Backend loglarida ECONNREFUSED, ETIMEDOUT, ECONNRESET har kuni uchraydi. Bu darsdan keyin ularning qaysi biri "eshik yopiq", qaysi biri "javob kelmadi", qaysi biri "suhbat o'rtada uzildi" ekanini bilasiz.
  • Real-time ilovalar. Chat va bildirishnomalar uchun WebSocket (TCP ustida), video qo'ng'iroqlar uchun WebRTC (asosan UDP ustida) ishlatiladi. WebSocket g'oyasini HTTP versiyalari va real-time darsida ko'ramiz, ikkalasini amalda kursning keyingi qismlarida yozamiz.
  • Serverlar va balanslovchilar. DevOps muhandislari "L4 balanslovchi" (TCP darajasida) va "L7 balanslovchi" (HTTP darajasida) deb gaplashadi. OSI raqamlari shu yerda kerak bo'ladi.
  • Intervyu savoli: "TCP va UDP farqi nima?", "3-way handshake'ni tushuntiring" — bu savollar backend va DevOps intervyularida juda ko'p beriladi.

Xulosa

  • Protokol — ikki tomon kelishgan muloqot qoidalari. Tarmoq qatlamlarga bo'lingan: ilova, transport, internet, tarmoqqa kirish (TCP/IP). OSI — o'sha g'oyaning 7 qatlamli ko'rinishi.
  • Har bir qatlam o'z sarlavhasini qo'shadi — bu enkapsulyatsiya.
  • TCP — ulanish (SYN → SYN-ACK → ACK), tasdiq, tartib va qayta yuborish. Fayl, sayt va formalar uchun.
  • UDP — tekshiruvsiz va tez. Qo'ng'iroq, o'yin, DNS uchun.
  • QUIC — UDP ustida TCP kafolatlari va tez start. HTTP/3 shu ustida ishlaydi.

Keyingi dars: Domen va DNS — example.com kabi nom qanday qilib IP manzilga aylanadi va bu ishni kim bajaradi.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
TCP va UDP: protokol qatlamlari va 3-way handshake — IlmHamroh