Middle
Ինչ եք իմանում TCP պատուհանի մասին?
sobes.tech AI
Պատասխան AI-ից
TCP պատուհան (կամ ընդունման պատուհան) հանդիսանում է հոսքի կառավարման մեխանիզմ TCP պրոտոկոլում: Այն որոշում է տվյալների քանակը, որը ուղարկողը կարող է ուղարկել նախքան ստացողից հաստատում (ACK) ստանալը: Պատուհանի չափը ցույց է տալիս ազատ տեղը ստացողի ընդունման բուֆերում:
TCP պատուհանի օգտագործման նպատակները՝
- Բուֆերի գերբեռնվածության կանխարգելում: Ստացողը տեղեկացնում է ուղարկողին իր ներկայիս ընդունման բուֆերի չափը, կանխելով մեծ տվյալների ուղարկումը, որը նա չի կարող մշակել:
- Հոսքի կառավարման: Դինամիկ փոփոխությունը պատուհանի չափի թույլ է տալիս կարգավորել տվյալների փոխանցման արագությունը ցանցի բեռնվածության և ստացողի կատարողականության հիման վրա:
Աշխատանքի մեխանիզմը՝
- Ստացողը ուղարկում է ուղարկողին հատված, որը պարունակում է իր ընդունման պատուհանի չափը (Window Size):
- Ուղարկողը կարող է ուղարկել տվյալներ, որոնց ծավալը չի գերազանցում նշված պատուհանի չափը:
- Տվյալների ընդունումից հետո, ստացողը նվազեցնում է պատուհանի չափը, արտացոլելով ազատ տեղը բուֆերում:
- Ստացողը ուղարկում է ACK հատվածներ, որոնք հաստատում են տվյալների ընդունումը և պարունակում են ներկայիս ընդունման պատուհանի չափը:
- Հաշվի առնելով ACK-ը, ուղարկողը կարող է ուղարկել հաջորդ խմբաքանակ տվյալներ՝ հիմնվելով թարմացված պատուհանի վրա:
Դինամիկ փոփոխությունը պատուհանի չափի թույլ է տալիս օպտիմալացնել լայնաշերտությունը և կանխել փաթեթների կորուստը բուֆերի գերբեռնվածության պատճառով:
Օրինակ՝
Ստացողը հայտնում է 65535 բայթ չափով պատուհան: Ուղարկողը կարող է ուղարկել մինչև 65535 բայթ տվյալներ: 10000 բայթ ստանալուց հետո, ստացողը ուղարկում է ACK, որը ցույց է տալիս նոր պատուհան՝ 55535 բայթ:
// Պարզ օրինակ (չի հանդիսանալ իրական կոդ, միայն սկզբունքի ցուցադրում)
struct tcp_header {
// ... այլ դաշտեր
uint16_t window_size; // Ստացողի պատուհանի չափը բայթերով
// ...
};