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