TCP ulanishni sozlash
Internetni ko'rib chiqqanimizda, elektron pochta xabarini yuboring yoki onlayn o'yinni o'ynang, biz ularning orqasida murakkab ulanish haqida o'ylamaymiz. Biroq, bu bizning va server o'rtasidagi barqaror aloqalarni ta'minlaydigan kichik qadamlar. Eng muhim qadamlardan biri bu TCP ulanish sozlamasi va uning yadrosi - bu uch tomonlama qo'l berishdir.
Ushbu maqola uch tomonlama huquqni batafsil bayon qilishning printsipi, jarayoni va ahamiyatini muhokama qiladi. QADAMGA QO'ShIMChA BIZNING NIMA BERIShIMIZNING NIMA QILIShIMIZNI NAZORAT QILIShNI O'ZGARTIRADI, U qanday bog'liqlik va ishonchlilikni ta'minlaydi va ma'lumot uzatish qanchalik muhimligini tushuntiramiz. Uch tomonlama huquqni chuqurroq tushunish bilan, biz tarmoq aloqalarining asosiy mexanizmlarini va TCP ulanishlarining ishonchliligini aniqroq tushunamiz.
TCP uch tomonlama qo'l berishi va davlat o'tish davri
TCP - bu ma'lumot uzatishdan oldin ulanishni o'rnatish uchun ulanish o'rnatiladigan transport protokoli. Ushbu ulanishni boshqarish jarayoni uch tomonlama qo'l berishi bilan amalga oshiriladi.
Keling, har bir ulanishda yuborilgan TCP paketlarini diqqat bilan ko'rib chiqaylik.
Dastlab, mijoz ham, server ham yopiq. Birinchidan, server portda faol eshitadi va tinglash holatida, bu serverni ishga tushirish kerakligini anglatadi. Keyinchalik mijoz veb-sahifaga kirishni boshlashga tayyor. Birinchi ulanish paketining formati quyidagicha:
Mijoz ulanishni boshlaganida, u TCP sarlavhasi sarlavhasi sarlavhasi sarlavhasini "ketma-ketlik raqami" maydoniga joylashtiradi. Shu bilan birga, mijoz chiqib ketuvchi paketni siniq paket ekanligini ko'rsatish uchun 1 ga aylantiradi. Mijoz birinchi sinaketani serverga yuborib, server bilan aloqa o'rnatishni istaydi. Ushbu paketda dastur qatlami ma'lumotlari (ya'ni ma'lumotlar yuborilgan) mavjud emas. Shu nuqtada, mijozning holati Sin-Sin-ga belgilangan.
Server mijoz tomonidan singan paketni qabul qilganda, u o'zining seriyasining (Server_isn) ni tasodifiy ravishda ishga tushiradi va so'ngra ushbu raqamni TCP sarlavhasidagi "seriyali raqam" maydoniga qo'yadi. Keyinchalik server mijoz_isn + 1 ni 1 ga o'rnatadi. Va nihoyat, server paketni mijozga yuboradi (va serverni yuborish uchun ma'lumotlar yo'q). Bu vaqtda server sinuvchi shtatda.
Mijoz Serverdan paketni serverdan qabul qilgandan so'ng, oxirgi javoblar paketini qabul qilish uchun quyidagi optimatikalarni amalga oshirishi kerak: Birinchidan, mijoz 1 ga javob paketini 1 ga tenglashtiradi; Ikkinchidan, mijoz "Javob raqami" maydonida Server_isn + 1 qiymatini kiritadi; Va nihoyat, mijoz paketni serverga yuboradi. Ushbu paket mijoz tomonidan ma'lumotlarni serverga olib borishi mumkin. Ushbu operatsiyalar tugagandan so'ng, mijoz belgilangan holatga chiqadi.
Server mijoz tomonidan javob paketini qabul qilgandan so'ng, u belgilangan holatga o'tadi.
Yuqoridagi jarayondan, uch tomonlama tutqichni bajarishda uchraydigan uchinchi qo'l bergichni o'qishga ruxsat beriladi, ammo dastlabki ikki qo'l uzbeklari mavjud emas. Bu intervyularda ko'pincha so'ralgan savol. Uch tomonlama tutqichni tugatgandan so'ng, ikkala tomon ham belgilangan holatni tashkil etadi, shunda ulanish muvaffaqiyatli yo'lga qo'yilganligini ko'rsatib, mijoz va server bir-biriga ma'lumotlarni yuborishni boshlaydi.
Nima uchun uchta qo'l beriladi? Ikki marta, to'rt martami?
Umumiy javob bu ", chunki uch tomonlama tutashak olish va yuborish qobiliyatini kafolatlaydi." Bu javob to'g'ri, ammo bu faqat sirtning sababidir, asosiy sababni oldinga surmaydi. Keyingi qismida men ushbu muammoni chuqurroq tushunishimiz uchun uchta jihatdan uch tomonlama qo'l berish sabablarini tahlil qilaman.
Uch tomonlama tutqich tarixiy takroriy ulanishlarni boshdan kechirishdan qandaydir samarali bo'lishi mumkin (asosiy sabab)
Uch tomonlama tutqich ikkala tomon ham ishonchli boshlang'ich ketma-ketlik raqamini olganligini kafolatlaydi.
Uch tomonlama tutqich resurslarni isrof qilishdan saqlaning.
1-sababi: Tarixiy nusxadan qochish
Xulosa qilib, eski nusxalash ulanishini boshlashdan kelib chiqqan uch tomonlama tutqichning asosiy sababi - bu uch tomonlama ramzning asosiy sababi. Kompleks tarmoq muhitida ma'lumotlar paketlarining uzatilishi har doim belgilangan vaqtga muvofiq yuborilmaydi va eski ma'lumotlar paketlari tarmoq tiqilib qolishi va boshqa sabablar tufayli birinchi marta mezbonlik qilish mumkin. Buning oldini olish uchun TCP ulanishni o'rnatish uchun uch tomonlama qo'l beruvchidan foydalanadi.
Mijoz bir nechta o'zgarishi, vorislikdagi paketlar, tarmoq tiqilishi kabi vaziyatlarda, quyidagilar yuzaga kelishi mumkin:
1 - Eski sin paketlar serverga oxirgi sinaketchalar oldidan keladi.
2 - Server eski sinig'ini olgandan so'ng mijozga SNE + ACK paketiga javob beradi.
3 - Mijoz sin + ack paketini qabul qilganda, ulanish tarixiy ulanish (ketma-ketlik raqami muddati tugagan yoki vaqtni) o'z kontekstiga ko'ra, ulanishni bekor qilish uchun RST paketini serverga yuboradi.
Ikki qo'lli bilan bog'langan holda, joriy ulanish tarixiy ulanish ekanligini aniqlashning iloji yo'q. Uch tomonlama tutqich mijozga joriy ulanish uchinchi paketni yuborishga tayyor bo'lsa, hozirgi ulanishning tarixiy ulanishini aniqlashga imkon beradi:
1- Agar bu tarixiy ulanish bo'lsa (ketma-ketlik raqami muddati tugagan yoki vaqti-vaqti bilan), uchinchi qo'lda yuborilgan paket tarixiy ulanishni bekor qilish uchun RST paketidir.
2 - Agar bu tarixiy aloqasi bo'lmasa, uchinchi marta yuborilgan paket - bu ACK paketini va ikki aloqador tomonlar ulanishni muvaffaqiyatli tashkil etadi.
Shu sababli, TCP uch tomonlama tutqichni ishlatishning asosiy sababi, bu tarixiy aloqalarning oldini olish uchun ulanishni boshlaydi.
2-sababi: Ikkala tomonning boshlang'ich ketma-ketligini sinxronlashtirish uchun
TCP protokolining ikkala tomonining ikkala tomoni ketma-ketlik raqamini saqlab, ishonchli uzatishni ta'minlashning muhim omilidir. TCP ulanishlarida ketma-ketlik raqamlari muhim rol o'ynaydi. Ular quyidagilarni bajaradilar:
Qabul qilgich ma'lumotlarning takrorlanishini yo'q qilishi va ma'lumotlarning to'g'riligini ta'minlashi mumkin.
Qabul qilgich ma'lumotlarning yaxlitligini ta'minlash uchun ketma-ketlik raqami tartibida paketlarni qabul qilishi mumkin.
● Sekundent raqami ishonchli ma'lumotlarni uzatishga imkon beradigan boshqa tomon tomonidan qabul qilingan ma'lumotlar paketini aniqlashi mumkin.
Shuning uchun, TCP ulanishini o'rnatgandan so'ng, mijoz boshlang'ich ketma-ketlik raqami bilan sindirilgan va serverni mijozning sin paketini muvaffaqiyatli qabul qilishini ko'rsatuvchi ACK paketini javob berishni talab qiladi. Keyin, server sifal paketni mijozga yuboradi va mijozni bir marta javob berishni istagan holda, dastlabki ketma-ketlik raqamlari ishonchli sinxronlashtirilganligini ta'minlash uchun.
Ikkala tomonning boshlang'ich ketma-ket sonlarini ishonchli sinxronlashtirish, ikkinchi va uchinchi bosqichni bitta bosqichga birlashtirish mumkin. Biroq, ikki qo'l beruvchilar faqat bitta tomonning boshlang'ich sonining soni boshqa tomon tomonidan muvaffaqiyatli qabul qilishiga kafolat berishi mumkin, ammo ikkala tomonning boshlang'ich ketma-ketlik soni tasdiqlanishi mumkin emas. Shuning uchun, TCP ulanishlarining barqarorligi va ishonchliligini ta'minlash uchun uch tomonlama tutqichning eng yaxshi tanlovidir.
3-sababi: Resurslarni behuda sarf qilmaslik
Agar "ikki qo'lli" bo'lsa, mijozning SMK so'rovi tarmoqqa bloklanganda, mijoz server tomonidan yuborilgan ACK paketini qabul qila olmaydi, shuning uchun sinasiz. Biroq, uchinchi qo'l bergich mavjud emasligi sababli, mijoz mijoz ulanishni belgilash uchun ACK tan olinishini qabul qilganligini aniqlay olmaydi. Shuning uchun, server har bir SMY so'rovini olgandan so'ng faqat ulanishni amalga oshirishi mumkin. Bu quyidagilarga olib keladi:
Resurslarni isrof qilish: Agar mijozning STELE so'rovi blokirovka qilingan bo'lsa, bir nechta sinbetlarning takroriy uzatilishi natijasida server so'rovni olgandan so'ng, server bir nechta ortiqcha operatsiyalarni o'rnatadi. Bu server resurslarining keraksiz chiqindilariga olib keladi.
Xabarni ushlab turish: uchinchi qo'l berilishining etishmasligi tufayli server mijozning ulanishni amalga oshirish uchun ACKning tan olinishini bilishning hech qanday usuli yo'q. Natijada, agar xabarlar tarmoqqa yopishib qolsa, mijoz Sinterni qayta-qayta yuborishda davom etadi va server doimiy ravishda yangi ulanishlarni o'rnatishga olib keladi. Bu tarmoq tiqilib qolishi va kechikishiga ko'payadi va tarmoqning umumiy ishlashiga salbiy ta'sir qiladi.
Shu sababli, tarmoq ulanishining barqarorligi va ishonchliligini ta'minlash maqsadida, TCP ushbu muammolarning paydo bo'lishidan saqlaning, buning oldini olish uchun ulanishni o'rnatish uchun uch tomonlama tutqichlardan foydalanadi.
Qisqacha ma'lumot
BuTarmoq paketini brokerTCP ulanishini o'rnatish uch tomonlama qo'l berishi bilan amalga oshiriladi. Uch tomonlama tutqichda mijoz avval ulanishni o'rnatishni xohlayotganini ko'rsatuvchi serverga klavasi bilan paket yuboradi. Mijozdan so'rovni olgandan so'ng, server mijozga sin va qorin bayroqlari bilan paketni javob beradi, shuni ko'rsatadiki, ulanish so'rovi qabul qilinganligini va o'z boshlang'ich ketma-ketligini yuboradi. Va nihoyat, mijoz ulanish muvaffaqiyatli yo'lga qo'yilganligini ko'rsatuvchi serverga ACK bayrog'i bilan javob beradi. Shunday qilib, ikki tomon belgilangan holatda va bir-birlariga ma'lumotlarni yuborishni boshlashlari mumkin.
Umuman olganda, TCP ulanishini o'rnatish bo'yicha uch tomonlama qo'l siqish jarayoni ulanishning barqarorligi va ishonchliligini ta'minlash, resurslarning tarixiy aloqalari va ikkala tomon ham ma'lumotlarni olish va yuborishini ta'minlash uchun mo'ljallangan.
O'tish vaqti: yanvar-08-2025