TCP ning maxfiy quroli: Tarmoq oqimini boshqarish va tarmoq tiqilib qolishini nazorat qilish

TCP ishonchliligi transporti
Biz hammamiz TCP protokolini ishonchli transport protokoli sifatida yaxshi bilamiz, lekin u transportning ishonchliligini qanday ta'minlaydi?

Ishonchli uzatishga erishish uchun ma'lumotlarning buzilishi, yo'qolishi, takrorlanishi va tartibsiz parchalar kabi ko'plab omillarni hisobga olish kerak. Agar bu muammolarni hal qilib bo'lmasa, ishonchli uzatishga erishib bo'lmaydi.

Shu sababli, TCP ishonchli uzatishga erishish uchun tartib raqami, tasdiq javobi, qayta yuborishni boshqarish, ulanishni boshqarish va oynani boshqarish kabi mexanizmlardan foydalanadi.

Ushbu maqolada biz TCP ning toymasin oynasi, oqimni boshqarish va tiqilib qolishni boshqarishga e'tibor qaratamiz. Qayta uzatish mexanizmi keyingi bobda alohida yoritiladi.

Tarmoq oqimini boshqarish
Tarmoq oqimini boshqarish yoki Tarmoq trafigini boshqarish aslida ishlab chiqaruvchilar va iste'molchilar o'rtasidagi nozik munosabatlarning namoyonidir. Ishda yoki intervyuda bu stsenariyni ko'p uchratgan bo'lsangiz kerak. Agar ishlab chiqaruvchining ishlab chiqarish quvvati iste'molchining iste'mol qilish imkoniyatlaridan ancha yuqori bo'lsa, bu navbatning cheksiz o'sishiga olib keladi. Keyinchalik jiddiy holatda, RabbitMQ xabarlari juda ko'p yig'ilsa, bu butun MQ serverining ishlashini pasayishiga olib kelishi mumkinligini bilishingiz mumkin. Xuddi shu narsa TCP uchun ham amal qiladi; agar belgilanmagan bo'lsa, tarmoqqa juda ko'p xabarlar qo'yiladi va iste'molchilar o'z imkoniyatlaridan oshib ketishadi, ishlab chiqaruvchilar esa takroriy xabarlarni yuborishda davom etadilar, bu esa tarmoqning ishlashiga katta ta'sir qiladi.

Ushbu hodisani hal qilish uchun TCP jo'natuvchiga oqimni boshqarish deb nomlanuvchi qabul qiluvchining haqiqiy qabul qilish qobiliyatiga asoslangan holda yuborilgan ma'lumotlar miqdorini nazorat qilish mexanizmini taqdim etadi. Qabul qiluvchi qabul qilish oynasini, jo'natuvchi esa yuborish oynasini saqlaydi. Shuni ta'kidlash kerakki, ushbu Windows faqat bitta TCP ulanishi uchun mo'ljallangan va barcha ulanishlar oynani baham ko'rmaydi.

TCP qabul qilish oynasi uchun o'zgaruvchidan foydalanib, oqim nazoratini ta'minlaydi. Qabul qilish oynasi jo'natuvchiga qancha kesh bo'sh joy mavjudligini ko'rsatadi. Yuboruvchi qabul qiluvchining haqiqiy qabul qilish qobiliyatiga muvofiq yuborilgan ma'lumotlar miqdorini nazorat qiladi.

Qabul qiluvchi xost jo'natuvchiga qabul qilishi mumkin bo'lgan ma'lumotlarning hajmi haqida xabar beradi va jo'natuvchi bu chegaragacha yuboradi. Bu chegara oyna o'lchamidir, TCP sarlavhasini eslaysizmi? Qabul qiluvchining qabul qila oladigan yoki olishga tayyor bo'lgan baytlar sonini ko'rsatish uchun ishlatiladigan qabul qilish oynasi maydoni mavjud.

Yuboruvchi xost vaqti-vaqti bilan qabul qiluvchi xost ma'lumotlarni qabul qila oladimi yoki yo'qligini aniqlash uchun ishlatiladigan oyna tekshiruvi paketini yuboradi. Qabul qiluvchining buferi to'lib ketish xavfi mavjud bo'lganda, jo'natuvchiga yuborilgan ma'lumotlar miqdorini nazorat qilishni buyurish uchun oyna o'lchami kichikroq qiymatga o'rnatiladi.

Mana tarmoq oqimini boshqarish diagrammasi:

Trafik nazorati

Tarmoq tiqilib qolishini nazorat qilish
Tiklanishni nazorat qilishni joriy etishdan oldin, biz qabul qilish oynasi va jo'natish oynasiga qo'shimcha ravishda, asosan, jo'natuvchining qabul qilish oynasiga ma'lumotlarni yuborishni boshlashi haqidagi muammoni hal qilish uchun ishlatiladigan tiqilinch oynasi mavjudligini tushunishimiz kerak. Shuning uchun, tirbandlik oynasi TCP jo'natuvchisi tomonidan ham saqlanadi. Qanchalik ma'lumotlarni jo'natish maqsadga muvofiqligini aniqlash uchun bizga algoritm kerak, chunki juda kam yoki juda ko'p ma'lumotlarni yuborish ideal emas, shuning uchun tiqilinch oynasi tushunchasi.

Oldingi tarmoq oqimini boshqarishda biz jo'natuvchi qabul qiluvchining keshini ma'lumotlar bilan to'ldirishdan qochgan edik, lekin biz tarmoqda nima sodir bo'layotganini bilmasdik. Odatda, kompyuter tarmoqlari umumiy muhitda bo'ladi. Natijada, boshqa xostlar o'rtasidagi aloqa tufayli tarmoq tiqilib qolishi mumkin.

Tarmoq tiqilib qolganda, agar ko'p sonli paketlar jo'natilishi davom ettirilsa, bu paketlarning kechikishi va yo'qolishi kabi muammolarni keltirib chiqarishi mumkin. Bu vaqtda TCP ma'lumotlarni qayta uzatadi, lekin qayta uzatish tarmoqdagi yukni oshiradi, natijada katta kechikishlar va ko'proq paket yo'qotishlari bo'ladi. Bu shafqatsiz tsiklga kirib, kattalashib borishi mumkin.

Shunday qilib, TCP tarmoqda sodir bo'layotgan narsalarni e'tiborsiz qoldira olmaydi. Tarmoq tiqilib qolganda, TCP yuboradigan ma'lumotlar miqdorini kamaytirish orqali o'zini qurbon qiladi.

Shu sababli, butun tarmoqni jo'natuvchining ma'lumotlari bilan to'ldirishdan qochishga qaratilgan tirbandlikni nazorat qilish taklif etiladi. Yuboruvchi yuborishi kerak bo'lgan ma'lumotlar miqdorini tartibga solish uchun TCP tiqilib qolish oynasi deb ataladigan kontseptsiyani belgilaydi. Tiklanishni nazorat qilish algoritmi jo'natuvchi tomonidan yuborilgan ma'lumotlar miqdorini nazorat qilish uchun tarmoqning tiqilib qolish darajasiga qarab tirbandlik oynasining o'lchamini moslashtiradi.

Tiklanish oynasi nima? Buning jo'natish oynasiga qanday aloqasi bor?

Tiklanish oynasi jo'natuvchi tomonidan qo'llab-quvvatlanadigan holat o'zgaruvchisi bo'lib, jo'natuvchi yuborishi mumkin bo'lgan ma'lumotlar miqdorini belgilaydi. Tiklanish oynasi tarmoqning tiqilib qolish darajasiga qarab dinamik ravishda o'zgaradi.

Yuborish oynasi - jo'natuvchi va qabul qiluvchi o'rtasida kelishilgan oyna o'lchami bo'lib, qabul qiluvchi qabul qilishi mumkin bo'lgan ma'lumotlar miqdorini ko'rsatadi. Tirbandlik oynasi va jo'natish oynasi bog'liq; yuborish oynasi odatda tiqilinch va qabul qiluvchi Windowsning minimaliga teng, ya'ni swnd = min(cwnd, rwnd).

Tirbandlik oynasi cwnd quyidagicha o'zgaradi:

Agar tarmoqda tirbandlik bo'lmasa, ya'ni qayta uzatish vaqti tugamasa, tirbandlik oynasi ortadi.

Agar tarmoqda tirbandlik bo'lsa, tirbandlik oynasi kamayadi.

Yuboruvchi ACK tasdiqlash paketi belgilangan vaqt ichida qabul qilinganligini kuzatish orqali tarmoq tiqilib qolganligini aniqlaydi. Agar jo'natuvchi belgilangan vaqt ichida ACK tasdiqlash paketini olmasa, tarmoq tiqilib qolgan deb hisoblanadi.

Tiklanish oynasiga qo'shimcha ravishda, TCP tiqilib qolishni nazorat qilish algoritmini muhokama qilish vaqti keldi. TCP tiqilib qolishni boshqarish algoritmi uchta asosiy qismdan iborat:

Sekin boshlash:Dastlab, cwnd tiqilishi oynasi nisbatan kichik bo'lib, jo'natuvchi tarmoqning sig'imiga tezda moslashish uchun tirbandlik oynasini eksponent ravishda oshiradi.
Tiqilib qolishning oldini olish:Tiklanish oynasi ma'lum chegaradan oshib ketgandan so'ng, jo'natuvchi tirbandlik oynasining o'sish tezligini sekinlashtirish va tarmoqni ortiqcha yuklamaslik uchun chiziqli tarzda tirbandlik oynasini oshiradi.
Tez tiklanish:Agar tirbandlik yuzaga kelsa, jo'natuvchi tirbandlik oynasini yarmiga qisqartiradi va qabul qilingan takroriy acks orqali tarmoqni tiklash joyini aniqlash uchun tez tiklanish holatiga kiradi va keyin tiqilib qolish oynasini oshirishda davom etadi.

Sekin boshlash
TCP ulanishi o'rnatilganda, tirbandlik oynasi cwnd dastlab minimal MSS (maksimal segment hajmi) qiymatiga o'rnatiladi. Shunday qilib, dastlabki jo'natish tezligi MSS/RTT bayt/sekundiga teng. Haqiqiy mavjud tarmoqli kengligi odatda MSS/RTT dan ancha katta, shuning uchun TCP sekin boshlash orqali erishish mumkin bo'lgan optimal yuborish tezligini topmoqchi.

Sekin boshlash jarayonida tiqilinch oynasi cwnd qiymati 1 MSS ga ishga tushiriladi va har safar uzatilgan paket segmenti tan olinganda cwnd qiymati bitta MSS ga oshiriladi, ya'ni cwnd qiymati 2 MSS ga aylanadi. Shundan so'ng, paket segmentining har bir muvaffaqiyatli uzatilishi uchun cwnd qiymati ikki barobar ortadi va hokazo. Maxsus o'sish jarayoni quyidagi rasmda ko'rsatilgan.

 Tarmoq tiqilib qolishini nazorat qilish

Biroq, jo'natish tezligi har doim ham o'sishi mumkin emas; o'sish qachondir tugashi kerak. Xo'sh, jo'natish tezligi qachon tugaydi? Sekin boshlash odatda yuborish tezligining oshishini bir necha usullardan biri bilan tugatadi:

Birinchi usul - sekin boshlash jo'natish jarayonida paket yo'qolishi. Paket yo'qolishi sodir bo'lganda, TCP jo'natuvchining tirbandlik oynasini cwnd 1 ga o'rnatadi va sekin boshlash jarayonini qayta ishga tushiradi. Ushbu nuqtada, sekin boshlash chegarasi ssthresh tushunchasi kiritiladi, uning boshlang'ich qiymati paket yo'qotilishini keltirib chiqaradigan cwnd qiymatining yarmidir. Ya'ni, tirbandlik aniqlanganda, ssthresh qiymati oyna qiymatining yarmini tashkil qiladi.

Ikkinchi yo'l - sekin boshlash chegarasi ssthresh qiymati bilan bevosita bog'liqlik. Tiqilish aniqlanganda ssthresh qiymati oyna qiymatining yarmi bo'lganligi sababli, cwnd ssthresh dan kattaroq bo'lsa, har ikki barobar ko'payganda paket yo'qolishi mumkin. Shuning uchun, cwnd-ni ssthresh-ga o'rnatish eng yaxshisidir, bu TCP tiqilinchni boshqarish rejimiga o'tishga va sekin ishga tushirishni tugatishga olib keladi.

Sekin boshlashning oxirgi usuli - agar uchta ortiqcha aktsiya aniqlansa, TCP tez qayta uzatishni amalga oshiradi va tiklash holatiga kiradi. (Agar uchta ACK paketining nima uchun mavjudligi aniq bo'lmasa, u qayta uzatish mexanizmida alohida tushuntiriladi.)

Tiqilib qolishning oldini olish
TCP tirbandlikni nazorat qilish holatiga kirganda, cwnd tirbandlik chegarasining yarmiga o'rnatiladi. Bu shuni anglatadiki, har safar paket segmenti olinganda cwnd qiymatini ikki barobarga oshirish mumkin emas. Buning o'rniga nisbatan konservativ yondashuv qabul qilinadi, bunda cwnd qiymati har bir uzatish tugagandan so'ng faqat bitta MSS (paket segmentining maksimal uzunligi) ga oshiriladi. Masalan, 10 ta paket segmenti tan olinsa ham, cwnd qiymati faqat bitta MSS ga oshadi. Bu chiziqli o'sish modeli va u ham o'sishning yuqori chegarasiga ega. Paket yo'qolishi sodir bo'lganda, cwnd qiymati MSS ga o'zgartiriladi va ssthresh qiymati cwnd ning yarmiga o'rnatiladi. Yoki 3 ta ortiqcha ACK javoblari olinganda MSS o'sishini ham to'xtatadi. Agar cwnd qiymati yarmiga kamayganidan keyin ham uchta ortiqcha ack qabul qilinsa, ssthresh qiymati cwnd qiymatining yarmi sifatida qayd etiladi va tez tiklanish holati kiritiladi.

Tez tiklanish
Fast Recovery holatida tiqilinch oynasining qiymati cwnd har bir qabul qilingan ortiqcha ACK uchun bitta MSS ga oshiriladi, ya'ni ketma-ket kelmaydigan ACK. Bu uzatish samaradorligini iloji boricha yaxshilash uchun tarmoqda muvaffaqiyatli uzatilgan paket segmentlaridan foydalanishdir.

Yo'qolgan paket segmentining ACK belgisi kelganda, TCP cwnd qiymatini pasaytiradi va keyin tiqilib qolishdan qochish holatiga kiradi. Bu tirbandlik oynasining o'lchamini nazorat qilish va tarmoq tiqilib qolishining yanada oshishiga yo'l qo'ymaslikdir.

Agar tirbandlikni nazorat qilish holatidan keyin vaqt tugashi sodir bo'lsa, tarmoq holati yanada jiddiylashadi va TCP tiqilib qolishdan qochish holatidan sekin ishga tushirish holatiga o'tadi. Bunday holda, tiqilinch oynasi cwnd qiymati 1 MSS, maksimal paket segmenti uzunligi va sekin boshlash ssthresh qiymati cwnd yarmiga o'rnatiladi. Buning maqsadi uzatish tezligi va tarmoq tiqilib qolish darajasini muvozanatlash uchun tarmoq tiklangandan so'ng tiqilib qolish oynasining hajmini asta-sekin oshirishdir.

Xulosa
Ishonchli transport protokoli sifatida TCP tartib raqami, tasdiqlash, qayta uzatishni boshqarish, ulanishni boshqarish va oynani boshqarish bo'yicha ishonchli transportni amalga oshiradi. Ular orasida oqimni boshqarish mexanizmi jo'natuvchi tomonidan yuborilgan ma'lumotlar miqdorini qabul qiluvchining haqiqiy qabul qilish qobiliyatiga muvofiq nazorat qiladi, bu esa tarmoq tiqilib qolishi va ish faoliyatini yomonlashishi muammolarini oldini oladi. Tiklanishni nazorat qilish mexanizmi jo'natuvchi tomonidan yuborilgan ma'lumotlar miqdorini sozlash orqali tarmoq tiqilib qolishining oldini oladi. Tiklanish oynasi va jo'natish oynasi tushunchalari bir-biri bilan bog'liq bo'lib, jo'natuvchidagi ma'lumotlar miqdori tirbandlik oynasining o'lchamini dinamik ravishda sozlash orqali boshqariladi. Sekin boshlash, tiqilib qolishning oldini olish va tez tiklanish TCP tiqilib qolishni nazorat qilish algoritmining uchta asosiy qismi bo'lib, ular tarmoqning sig'imi va tirbandlik darajasiga moslashish uchun turli strategiyalar orqali tirbandlik oynasining o'lchamini moslashtiradi.

Keyingi bo'limda biz TCP ning qayta uzatish mexanizmini batafsil ko'rib chiqamiz. Qayta uzatish mexanizmi ishonchli uzatishga erishish uchun TCP ning muhim qismidir. U yo'qolgan, buzilgan yoki kechiktirilgan ma'lumotlarni qayta uzatish orqali ma'lumotlarning ishonchli uzatilishini ta'minlaydi. Qayta uzatish mexanizmini amalga oshirish printsipi va strategiyasi keyingi bo'limda batafsil tanishtiriladi va tahlil qilinadi. Yangiliklarni kuzatib boring, xabardor bo'lib boring; Biz bilan qoling!


Xabar vaqti: 24-fevral-2025