Sobes.tech
Middle

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

sobes.tech AI

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

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

TCP պատուհանի օգտագործման նպատակները՝

  • Բուֆերի գերբեռնվածության կանխարգելում: Ստացողը տեղեկացնում է ուղարկողին իր ներկայիս ընդունման բուֆերի չափը, կանխելով մեծ տվյալների ուղարկումը, որը նա չի կարող մշակել:
  • Հոսքի կառավարման: Դինամիկ փոփոխությունը պատուհանի չափի թույլ է տալիս կարգավորել տվյալների փոխանցման արագությունը ցանցի բեռնվածության և ստացողի կատարողականության հիման վրա:

Աշխատանքի մեխանիզմը՝

  1. Ստացողը ուղարկում է ուղարկողին հատված, որը պարունակում է իր ընդունման պատուհանի չափը (Window Size):
  2. Ուղարկողը կարող է ուղարկել տվյալներ, որոնց ծավալը չի գերազանցում նշված պատուհանի չափը:
  3. Տվյալների ընդունումից հետո, ստացողը նվազեցնում է պատուհանի չափը, արտացոլելով ազատ տեղը բուֆերում:
  4. Ստացողը ուղարկում է ACK հատվածներ, որոնք հաստատում են տվյալների ընդունումը և պարունակում են ներկայիս ընդունման պատուհանի չափը:
  5. Հաշվի առնելով ACK-ը, ուղարկողը կարող է ուղարկել հաջորդ խմբաքանակ տվյալներ՝ հիմնվելով թարմացված պատուհանի վրա:

Դինամիկ փոփոխությունը պատուհանի չափի թույլ է տալիս օպտիմալացնել լայնաշերտությունը և կանխել փաթեթների կորուստը բուֆերի գերբեռնվածության պատճառով:

Օրինակ՝

Ստացողը հայտնում է 65535 բայթ չափով պատուհան: Ուղարկողը կարող է ուղարկել մինչև 65535 բայթ տվյալներ: 10000 բայթ ստանալուց հետո, ստացողը ուղարկում է ACK, որը ցույց է տալիս նոր պատուհան՝ 55535 բայթ:

// Պարզ օրինակ (չի հանդիսանալ իրական կոդ, միայն սկզբունքի ցուցադրում)
struct tcp_header {
    // ... այլ դաշտեր
    uint16_t window_size; // Ստացողի պատուհանի չափը բայթերով
    // ...
};