Sobes.tech
Junior

Ինչպես է աշխատում TCP պրոտոկոլը?

sobes.tech AI

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

TCP (Transmission Control Protocol) - դա տրանսպորտային շերտի պրոտոկոլ է, որը ապահովում է հուսալի, կապի վրա հիմնված տվյալների առաքում:

Աշխատանքի հիմնական կողմերը:

  1. Երեքակերտ ձեռնամարտ (Three-way Handshake):

    • Կլիենտը ուղարկում է SYN (Synchronize) փաթեթ՝ սկսնակ հաջորդականության համար (ISN):
    • Սերվերը ստանում է SYN, ուղարկում է SYN-ACK (Synchronize-Acknowledge), որը պարունակում է իր ISN և հաստատում (ACK) հաճախորդի ISN-ը (acknowledgement number = client ISN + 1):
    • Կլիենտը ստանում է SYN-ACK, ուղարկում է ACK, որը հաստատում է սերվերի ISN-ը (acknowledgement number = server ISN + 1):
    • Կապը հաստատված է, տվյալներ փոխանցելու համար:
  2. Տարածքային փոխանցում: Տվյալները փոխանցվում են որպես անընդհատ բայթերի հոսք, ոչ թե առանձին փաթեթներ: TCP-ն բաժանում է տվյալների հոսքը սեգմենտների:

  3. Հաջորդականության համարանիշներ (Sequence Numbers): Յուրաքանչյուր բայթ հոսքում ունի յուրահատուկ համար: Սեգմենտները պարունակում են առաջին բայթի համար, որը գտնվում է նրանց մեջ (հաջորդականության համարանիշ), և հաստատման համարանիշը (acknowledgement number), որը ցույց է տալիս հաջորդ սպասվող բայթը:

  4. Հաստատումներ (Acknowledgements - ACK): Ստացողը ուղարկում է ACK՝ տեղեկացնելու համար, թե որ տվյալները հաջողությամբ ստացվել են: Եթե ուղարկողը չի ստանում ACK որոշ ժամանակում (timeout), նա կրկին ուղարկում է սեգմենտը:

  5. Խախտումների վերահսկում (Error Control): Օգտագործվում են ստուգման գումարներ (checksums) տվյալների ամբողջականությունը ստուգելու համար: Եթե սեգմենտը վնասված է, այն մերժվում է, և ուղարկողը սպասում է timeout կամ կրկնակի ACK՝ կրկնակի փոխանցման:

  6. Հոսքի վերահսկում (Flow Control): Մեխանիզմ, որը կանխում է ստացող բանկայի գերբեռնվածությունը: Ստացողը հայտնում է իր ընդունման պատուհանի չափը (receive window) ACK-ներում: Ուղարկողը կարող է ուղարկել միայն այնքան տվյալներ, որքան նշված է պատուհանում:

  7. Ցավալի վերահսկում (Congestion Control): Մեխանիզմ՝ որոշելու համար ցանցի հասանելի հոսքը և դինամիկ կարգավորելու փոխանցման արագությունը՝ կանխելու ցանցի ծանրաբեռնվածությունը: Ներառում է ալգորիթմներ, ինչպիսիք են դանդաղ սկիզբը (slow start), ծանրաբեռնվածության կանխարգելումը (congestion avoidance), արագ վերականգնումը (fast retransmit) և արագ վերականգնումը (fast recovery):

  8. Կապի փակումը: Սովորաբար օգտագործում է չորսակերտ ձեռնամարտ:

    • Մի կողմը ուղարկում է FIN (Finish) փաթեթ:
    • Մյուս կողմը ուղարկում է ACK՝ FIN-ի համար:
    • Մյուս կողմը ուղարկում է իր FIN (նաև ավարտելով իր տվյալների փոխանցումը):
    • Առաջին կողմը ուղարկում է ACK՝ այս FIN-ի համար:
    • Կապը փակված է:

TCP սեգմենտի կառուցվածքը:

դաշտ չափը (բայթ) նկարագրությունը
Աղբյուրի պորտ 2 Ուղարկողի պորտ
Հասցեի պորտ 2 Ստացողի պորտ
Հաջորդականության համարանիշ 4 Առաջին բայթի համար, որը գտնվում է սեգմենտում
Հաստատման համարանիշ 4 Հաջորդ սպասվող բայթի համարանիշ
Դատա Օֆսեթ/Հետագծի երկարություն 4 բիտ TCP սեգմենտի երկարությունը
Պատկերավոր (Reserved) 6 բիտ Պատկերավոր (զրոյացված)
Կառավարիչ նշաններ (Flags) 6 բիտ URG, ACK, PSH, RST, SYN, FIN
Վահանակի չափը 2 Ստացողի վահանակի չափը
Կոնտրոլային գումար (Checksum) 2 Հետագծի և տվյալների վերահսկում
Արձագանքի ցուցիչ (Urgent Pointer) 2 Ցույց է տալիս շտապ տվյալների մասին (եթե URG նշված է)
Ընտրանքներ փոփոխական Ավելացուցիչ ընտրանքներ
Բաղադրիչ (Padding) փոփոխական Հետագծի հարթեցման համար
Տվյալներ փոփոխական Փոխանցվող տվյալներ
// Կառավարիչ նշաններ (Control Bits):
// URG: Շտապ ցուցիչի նշանակություն
// ACK: Պատասխանման նշան
// PSH: Դիմում Push գործառույթ
// RST: Կապի վերականգնում
// SYN: Հաջորդականության համարանիշների սինխրոնիզացիա
// FIN: Ավարտված տվյալներ ուղարկողից