Sobes.tech
Middle

Ինչ կարող եք ասել TCP պատուհանի մասին?

sobes.tech AI

Պատասխան AI-ից

TCP պատուհան (կամ TCP ընդունման պատուհան) հանդիսանում է տվյալների հոսքի կառավարման մեխանիզմ TCP պրոտոկոլում: Այն սահմանում է տվյալների քանակը, որը կարող է ուղարկողը փոխանցել առանց ստացողից (ACK) հաստատում սպասելու: Պատուհանի չափը դինամիկորեն հարմարեցվում է, կանխելով ստացողի բուֆերի գերբեռնվածությունը և վերահսկելով փոխանցման արագությունը:

Հիմնական կետեր:

  • Հոսքի կառավարման: հիմնական գործառույթը կանխել, որ ուղարկողը փոխանցի տվյալները ավելի արագ, քան կարող է մշակել ստացողը:
  • Պատուհանի չափը: հռչակվում է յուրաքանչյուր TCP հատվածում ("Window Size" դաշտում) և ցույց է տալիս, թե քանի բայթ է պատրաստ ընդունել, սկսած հաջորդ սպասվող բայթից:
  • Դինամիկություն: Պատուհանի չափը կարող է փոխվել կապի ընթացքում ստացողի բուֆերի բեռնվածության վրա հիմնված:
  • Ստացողի բուֆեր: Իրական պատուհանի չափը սահմանափակվում է ստացողի բուֆերի չափով:
  • Պատուհանի սքեյլինգ (Window Scaling): TCP տարբերակ, որը թույլ է տալիս օգտագործել ավելի մեծ չափի պատուհաններ (մինչև 1 ԳԲ) բարձր արագության ցանցերի կամ ցանցերի մեծ ուշացումով, օգտագործելով բազմապատկիչ, որը հռչակվում է կապի հաստատման ժամանակ (SYN/SYN-ACK):
  • "Սլիմ պատուհան" սինդրոմը: իրավիճակ, երբ պատուհանի չափը շատ փոքր է դառնում, ինչը կարող է հանգեցնել անարդյունավետ տվյալների փոխանցման:
  • Զրո պատուհան: Եթե ստացողի բուֆերը լրիվ լցված է, ապա պատուհանի չափը հռչակվում է որպես 0: ուղարկողը պետք է կանգնեցնի տվյալների փոխանցումը, բացի Keep-Alive հատվածներից (եթե այդ տարբերակը ակտիվացված է), և կրկին ուղարկի վերջին հատվածը պատուհանի չափը թարմացնելու համար:
// TCP գլխագրի օրինակ, որտեղ նշվում է պատուհանի չափը
// ("Window Size" դաշտը)
// Ուղարկողի պորտը: 12345
// Հասցեի պորտը: 80
// Սիկվենսի համար: 1000
// Հաստատման համար: 2000
// Տվյալների տեղաշարժը: 20 բայթ (5 բառ)
// Պատկերը: 0
// Ֆլագներ: [ACK, PSH]
// Պատուհանի չափը: 65535 // Մակսիմալ պատուհանի չափը առանց սքեյլինգի
// Ստուգում: 0xABCD
// Արտակարգ ցուցիչ: 0