TCP vs UDP. Հուսալիության և արդյունավետության բանավեճի բացահայտումը

Այսօր մենք սկսելու ենք TCP-ի վրա կենտրոնանալով։ Շերտավորման մասին գլխի սկզբում մենք նշեցինք մի կարևոր կետ։ Ցանցային շերտում և դրանից ցածր մակարդակում ավելի շատ խոսքը հոսթից հոսթ միացումների մասին է, ինչը նշանակում է, որ ձեր համակարգիչը պետք է իմանա, թե որտեղ է գտնվում մեկ այլ համակարգիչ՝ դրան միանալու համար։ Այնուամենայնիվ, ցանցում հաղորդակցությունը հաճախ միջպրոցեսորային հաղորդակցություն է, այլ ոչ թե մեքենաների միջև հաղորդակցություն։ Հետևաբար, TCP արձանագրությունը ներկայացնում է պորտի հասկացությունը։ Մի պորտը կարող է զբաղեցվել միայն մեկ պրոցեսի կողմից, ինչը ապահովում է ուղիղ հաղորդակցություն տարբեր հոսթերի վրա աշխատող ծրագրային պրոցեսների միջև։

Տրանսպորտային շերտի խնդիրն է ապահովել ուղիղ կապի ծառայություններ տարբեր հոսթերի վրա աշխատող ծրագրային գործընթացների միջև, ուստի այն հայտնի է նաև որպես ծայրից ծայր արձանագրություն: Տրանսպորտային շերտը թաքցնում է ցանցի հիմնական մանրամասները՝ թույլ տալով ծրագրային գործընթացին տեսնել, թե արդյոք գոյություն ունի տրամաբանական ծայրից ծայր կապի ալիք երկու տրանսպորտային շերտի միավորների միջև:

TCP-ն նշանակում է Transmission Control Protocol (Փոխանցման կառավարման արձանագրություն) և հայտնի է որպես միացման վրա հիմնված արձանագրություն: Սա նշանակում է, որ նախքան մեկ ծրագիրը կարողանա սկսել տվյալներ ուղարկել մյուսին, երկու գործընթացները պետք է կատարեն ձեռքսեղմում: Ձեռքսեղմումը տրամաբանորեն կապված գործընթաց է, որը ապահովում է տվյալների հուսալի փոխանցում և կանոնավոր ընդունում: Ձեռքսեղմման ընթացքում կապ է հաստատվում աղբյուրի և նպատակակետի հոսթերի միջև՝ փոխանակելով մի շարք կառավարման փաթեթներ և համաձայնեցնելով որոշ պարամետրեր և կանոններ՝ տվյալների հաջող փոխանցումն ապահովելու համար:

Ի՞նչ է TCP-ն։ (Mylinking-ըՑանցի հպումևՑանցային փաթեթների միջնորդկարող է մշակել և՛ TCP, և՛ UDP փաթեթներ)
TCP-ն (Փոխանցման կառավարման արձանագրություն) միացման կողմնորոշված, հուսալի, բայթային հոսքի վրա հիմնված տրանսպորտային շերտի հաղորդակցման արձանագրություն է։

Կապի վրա կենտրոնացածՄիացման-կողմնորոշված ​​նշանակում է, որ TCP հաղորդակցությունը մեկ-մեկ է, այսինքն՝ կետից կետ, ծայրից ծայր հաղորդակցություն, ի տարբերություն UDP-ի, որը կարող է միաժամանակ հաղորդագրություններ ուղարկել մի քանի հոսթերի, ուստի մեկ-շատերի հաղորդակցություն հնարավոր չէ իրականացնել։
ՀուսալիTCP-ի հուսալիությունը ապահովում է, որ փաթեթները հուսալիորեն հասցվեն ընդունողին՝ անկախ ցանցային կապի փոփոխություններից, ինչը TCP-ի արձանագրային փաթեթի ձևաչափը դարձնում է ավելի բարդ, քան UDP-ինը։
Բայթային հոսքի վրա հիմնվածTCP-ի բայթային հոսքի վրա հիմնված բնույթը թույլ է տալիս փոխանցել ցանկացած չափի հաղորդագրություններ և երաշխավորում է հաղորդագրությունների հերթականությունը. նույնիսկ եթե նախորդ հաղորդագրությունը լիովին չի ստացվել, և նույնիսկ եթե հաջորդող բայթերը ստացվել են, TCP-ն դրանք չի հասցնի ծրագրային շերտին մշակման համար և ավտոմատ կերպով կհեռացնի կրկնօրինակ փաթեթները։
Երբ A և B հոսթինգները հաստատում են կապ, հավելվածը միայն պետք է օգտագործի վիրտուալ կապի գիծը՝ տվյալներ ուղարկելու և ստանալու համար, այդպիսով ապահովելով տվյալների փոխանցումը: TCP արձանագրությունը պատասխանատու է այնպիսի առաջադրանքների կառավարման համար, ինչպիսիք են կապի հաստատումը, անջատումը և պահպանումը: Պետք է նշել, որ այստեղ մենք ասում ենք վիրտուալ գիծ միայն կապ հաստատելու համար, TCP արձանագրության կապը միայն ցույց է տալիս, որ երկու կողմերը կարող են սկսել տվյալների փոխանցումը և ապահովել տվյալների հուսալիությունը: Ուղղորդման և փոխադրման հանգույցները կառավարվում են ցանցային սարքերի կողմից. TCP արձանագրությունն ինքնին չի զբաղվում այս մանրամասներով:

TCP կապը լիարժեք դուպլեքս ծառայություն է, ինչը նշանակում է, որ A և B հոսթինգները կարող են տվյալներ փոխանցել երկու ուղղություններով TCP կապով։ Այսինքն՝ տվյալները կարող են փոխանցվել A և B հոսթինգների միջև երկկողմանի հոսքով։

TCP-ն ժամանակավորապես պահում է տվյալները կապի ուղարկման բուֆերում: Այս ուղարկման բուֆերը եռակողմ ձեռքսեղմման ժամանակ ստեղծված քեշերից մեկն է: Հետագայում, TCP-ն ուղարկման քեշի տվյալները համապատասխան ժամանակ կուղարկի նպատակակետային հոսթի ընդունման քեշ: Գործնականում, յուրաքանչյուր հանգույց կունենա ուղարկման և ընդունման քեշ, ինչպես ցույց է տրված այստեղ.

TCP-UDP

Ուղարկման բուֆերը հիշողության այն հատվածն է, որը պահպանվում է ուղարկողի կողմում TCP իրականացման կողմից և օգտագործվում է ուղարկվող տվյալները ժամանակավորապես պահելու համար: Երբ կապ հաստատելու համար կատարվում է եռակողմ ձեռքսեղմում, ուղարկման քեշը տեղադրվում և օգտագործվում է տվյալները պահելու համար: Ուղարկման բուֆերը դինամիկ կերպով կարգավորվում է ցանցի գերբեռնվածության և ընդունիչից ստացված հետադարձ կապի համաձայն:

Ստացող բուֆերը հիշողության այն հատվածն է, որը պահպանվում է TCP իրականացման կողմից ընդունող կողմում և օգտագործվում է ստացված տվյալները ժամանակավորապես պահելու համար: TCP-ն ստացված տվյալները պահում է ընդունող քեշում և սպասում է, որ վերին ծրագիրը կարդա դրանք:

Նկատի ունեցեք, որ ուղարկման և ստացման քեշի չափը սահմանափակ է, երբ քեշը լիքն է, TCP-ն կարող է կիրառել որոշ ռազմավարություններ, ինչպիսիք են գերբեռնվածության վերահսկումը, հոսքի վերահսկումը և այլն,՝ տվյալների հուսալի փոխանցումը և ցանցի կայունությունն ապահովելու համար։

Համակարգչային ցանցերում տվյալների փոխանցումը հոսթերի միջև իրականացվում է հատվածների միջոցով։ Այսպիսով, ի՞նչ է փաթեթային հատվածը։

TCP-ն ստեղծում է TCP հատված կամ փաթեթային հատված՝ մուտքային հոսքը բաժանելով մասերի և յուրաքանչյուր մաս ավելացնելով TCP վերնագրեր: Յուրաքանչյուր հատված կարող է փոխանցվել միայն սահմանափակ ժամանակով և չի կարող գերազանցել առավելագույն հատվածի չափը (MSS): Իր ճանապարհին փաթեթային հատվածն անցնում է կապի շերտով: Կապի շերտն ունի առավելագույն փոխանցման միավոր (MTU), որը փաթեթի առավելագույն չափն է, որը կարող է անցնել տվյալների կապի շերտով: Առավելագույն փոխանցման միավորը սովորաբար կապված է կապի ինտերֆեյսի հետ:

Այսպիսով, ո՞րն է տարբերությունը MSS-ի և MTU-ի միջև:

Համակարգչային ցանցերում հիերարխիկ ճարտարապետությունը շատ կարևոր է, քանի որ այն հաշվի է առնում տարբեր մակարդակների միջև եղած տարբերությունները: Յուրաքանչյուր շերտ ունի տարբեր անուն. տրանսպորտային շերտում տվյալները կոչվում են հատված, իսկ ցանցային շերտում՝ IP փաթեթ: Հետևաբար, առավելագույն փոխանցման միավորը (MTU) կարելի է դիտարկել որպես ցանցային շերտի կողմից փոխանցվող առավելագույն IP փաթեթի չափ, մինչդեռ առավելագույն հատվածի չափը (MSS) տրանսպորտային շերտի հասկացություն է, որը վերաբերում է TCP փաթեթի կողմից միաժամանակ փոխանցվող տվյալների առավելագույն քանակին:

Նկատի ունեցեք, որ երբ առավելագույն հատվածի չափը (MSS) մեծ է առավելագույն փոխանցման միավորից (MTU), IP-ի մասնատումը կիրականացվի ցանցային շերտում, և TCP-ն չի բաժանի ավելի մեծ տվյալները MTU չափին համապատասխանող հատվածների: Ցանցային շերտում կլինի IP շերտին նվիրված բաժին:

TCP փաթեթի հատվածի կառուցվածքը
Եկեք ուսումնասիրենք TCP վերնագրերի ձևաչափը և բովանդակությունը։

TCP հատված

Հաջորդական համարՊատահական թիվ, որը համակարգչի կողմից գեներացվում է կապի հաստատման ժամանակ՝ որպես սկզբնական արժեք TCP կապի հաստատման ժամանակ, և հաջորդական համարը ուղարկվում է ստացողին SYN փաթեթի միջոցով: Տվյալների փոխանցման ընթացքում ուղարկողը հաջորդական համարը մեծացնում է ուղարկված տվյալների քանակին՝ համաձայն: Ստացողը տվյալների հերթականությունը որոշում է ստացված հաջորդական համարի համաձայն: Եթե տվյալները դասավորված չեն, ստացողը կվերադասավորի տվյալները՝ տվյալների հերթականությունը ապահովելու համար:

Հաստատման համարըՍա TCP-ում օգտագործվող հաջորդական համար է տվյալների ստացումը հաստատելու համար։ Այն ցույց է տալիս հաջորդ տվյալների հաջորդական համարը, որոնք ուղարկողը ակնկալում է ստանալ։ TCP կապի դեպքում ստացողը որոշում է, թե որ տվյալներն են հաջողությամբ ստացվել՝ հիմնվելով ստացված տվյալների փաթեթի հատվածի հաջորդական համարի վրա։ Երբ ստացողը հաջողությամբ ստանում է տվյալները, այն ուղարկողին ուղարկում է ACK փաթեթ, որը պարունակում է հաստատման հաստատման համարը։ ACK փաթեթը ստանալուց հետո ուղարկողը կարող է հաստատել, որ տվյալները հաջողությամբ ստացվել են՝ նախքան պատասխանի համարը հաստատելը։

TCP հատվածի կառավարման բիթերը ներառում են հետևյալը.

ACK բիթԵրբ այս բիթը 1 է, դա նշանակում է, որ հաստատման պատասխանի դաշտը վավեր է: TCP-ն նշում է, որ այս բիթը պետք է սահմանվի 1, բացառությամբ SYN փաթեթների, երբ կապը սկզբնապես հաստատվում է:
RST բիթԵրբ այս բիթը 1 է, դա նշանակում է, որ TCP կապում կա բացառություն, և կապը պետք է ստիպողաբար անջատվի։
SYN բիթԵրբ այս բիթը սահմանված է 1-ի, դա նշանակում է, որ կապը պետք է հաստատվի, և հաջորդական համարի սկզբնական արժեքը սահմանվում է հաջորդական համարի դաշտում։
FIN բիթԵրբ այս բիթը 1 է, դա նշանակում է, որ ապագայում այլևս տվյալներ չեն ուղարկվի, և կապը ցանկալի է։
TCP-ի տարբեր գործառույթներն ու բնութագրերը մարմնավորված են TCP փաթեթների հատվածների կառուցվածքում։

Ի՞նչ է UDP-ն (Mylinking-իՑանցի հպումևՑանցային փաթեթների միջնորդկարող է մշակել և՛ TCP, և՛ UDP փաթեթներ)
Օգտագործողի տվյալների գրամների արձանագրությունը (UDP) անկապ կապի արձանագրություն է: TCP-ի համեմատ, UDP-ն չի ապահովում բարդ կառավարման մեխանիզմներ: UDP արձանագրությունը թույլ է տալիս ծրագրերին ուղղակիորեն ուղարկել ինկապսուլացված IP փաթեթներ՝ առանց կապ հաստատելու: Երբ մշակողը որոշում է օգտագործել UDP-ն TCP-ի փոխարեն, ծրագիրը ուղղակիորեն կապվում է IP-ի հետ:

UDP արձանագրության լրիվ անվանումը՝ User Datagram Protocol, և դրա վերնագիրը ընդամենը ութ բայթ է (64 բիթ), ինչը շատ հակիրճ է։ UDP արձանագրության վերնագրի ձևաչափը հետևյալն է.

UDP հատված

Նպատակակետային և աղբյուրային նավահանգիստներԴրանց հիմնական նպատակն է ցույց տալ, թե որ պրոցեսին պետք է UDP-ն ուղարկի փաթեթներ։
Փաթեթի չափըՓաթեթի չափի դաշտը պարունակում է UDP վերնագրի չափը գումարած տվյալների չափը։
Ստուգիչ գումարՍտեղծված է UDP վերնագրերի և տվյալների հուսալի առաքումն ապահովելու համար։ Ստուգիչ գումարի դերն է հայտնաբերել, թե արդյոք UDP փաթեթի փոխանցման ընթացքում տեղի է ունեցել սխալ կամ վնաս՝ տվյալների ամբողջականությունն ապահովելու համար։

TCP-ի և UDP-ի միջև եղած տարբերությունները Mylinking-ումՑանցի հպումևՑանցային փաթեթների միջնորդկարող է մշակել և՛ TCP, և՛ UDP փաթեթներ
TCP-ն և UDP-ն տարբերվում են հետևյալ առումներով.

TCP ընդդեմ UDP

ԿապTCP-ն միացման վրա հիմնված տրանսպորտային արձանագրություն է, որը պահանջում է կապի հաստատում տվյալների փոխանցման համար։ UDP-ն, մյուս կողմից, կապ չի պահանջում և կարող է անմիջապես փոխանցել տվյալները։

Ծառայության օբյեկտTCP-ն մեկ-մեկ երկու կետային ծառայություն է, այսինքն՝ կապն ունի միայն երկու վերջնակետ՝ միմյանց հետ կապվելու համար։ Այնուամենայնիվ, UDP-ն աջակցում է մեկ-մեկ, մեկ-շատերին և շատ-շատերին ինտերակտիվ կապը, որը կարող է միաժամանակ կապվել մի քանի հոսթերի հետ։

ՀուսալիությունTCP-ն ապահովում է տվյալների հուսալի մատակարարման ծառայություն՝ ապահովելով, որ տվյալները լինեն սխալներից զերծ, կորուստներից զերծ, չկրկնօրինակվեն և հասնեն պահանջարկի համաձայն։ Մյուս կողմից, UDP-ն անում է իր լավագույն ջանքերը և չի երաշխավորում հուսալի մատակարարում։ UDP-ն կարող է տուժել տվյալների կորստից և այլ իրավիճակներից փոխանցման ընթացքում։

Խցանումների վերահսկում, հոսքի վերահսկումTCP-ն ունի գերբեռնվածության կառավարման և հոսքի կառավարման մեխանիզմներ, որոնք կարող են կարգավորել տվյալների փոխանցման արագությունը՝ համաձայն ցանցի պայմանների՝ ապահովելով տվյալների փոխանցման անվտանգությունն ու կայունությունը: UDP-ն չունի գերբեռնվածության կառավարման և հոսքի կառավարման մեխանիզմներ, նույնիսկ եթե ցանցը շատ գերբեռնված է, այն չի կատարի UDP ուղարկման արագության ճշգրտումներ:

Վերնագրի վերևումTCP-ն ունի վերնագրի երկարություն, սովորաբար 20 բայթ, որը մեծանում է, երբ օգտագործվում են ընտրանքային դաշտեր: UDP-ն, մյուս կողմից, ունի ընդամենը 8 բայթ ֆիքսված վերնագիր, ուստի UDP-ն ունի ավելի ցածր վերնագրի ծանրաբեռնվածություն:

TCP ընդդեմ UDP

TCP և UDP կիրառման սցենարներ՝
TCP-ն և UDP-ն երկու տարբեր տրանսպորտային մակարդակի արձանագրություններ են, և դրանք որոշակի տարբերություններ ունեն կիրառման սցենարներում։

Քանի որ TCP-ն միացման վրա հիմնված արձանագրություն է, այն հիմնականում օգտագործվում է այն դեպքերում, երբ պահանջվում է տվյալների հուսալի մատակարարում: Որոշ տարածված օգտագործման դեպքեր ներառում են՝

FTP ֆայլերի փոխանցումTCP-ն կարող է ապահովել, որ ֆայլերը չկորչեն և չվնասվեն փոխանցման ընթացքում։
HTTP/HTTPSTCP-ն ապահովում է վեբ բովանդակության ամբողջականությունն ու ճշգրտությունը։
Քանի որ UDP-ն անկապ արձանագրություն է, այն չի ապահովում հուսալիության երաշխիք, բայց ունի արդյունավետության և իրական ժամանակի բնութագրեր։ UDP-ն հարմար է հետևյալ սցենարների համար՝

Ցածր փաթեթային տրաֆիկ, ինչպիսին է DNS-ը (դոմենի անվան համակարգ)DNS հարցումները սովորաբար կարճ փաթեթներ են, և UDP-ն կարող է դրանք ավելի արագ ավարտել։
Մուլտիմեդիա հաղորդակցություն, ինչպիսիք են տեսանյութը և աուդիոնԲարձր իրական ժամանակի պահանջներով մուլտիմեդիա փոխանցման համար UDP-ն կարող է ապահովել ավելի ցածր լատենտություն՝ ապահովելու համար, որ տվյալները կարողանան փոխանցվել ժամանակին։
Հեռարձակման հաղորդակցությունUDP-ն աջակցում է մեկ-շատ և շատ-շատ-շատ հաղորդակցությանը և կարող է օգտագործվել հեռարձակվող հաղորդագրությունների փոխանցման համար։

Ամփոփում
Այսօր մենք սովորեցինք TCP-ի մասին: TCP-ն կապի վրա հիմնված, հուսալի, բայթային հոսքի վրա հիմնված տրանսպորտային շերտի հաղորդակցման արձանագրություն է: Այն ապահովում է տվյալների հուսալի փոխանցումը և կանոնավոր ընդունումը՝ հաստատելով կապ, ձեռքսեղմում և հաստատում: TCP արձանագրությունն օգտագործում է միացքներ՝ գործընթացների միջև հաղորդակցությունն իրականացնելու համար և ապահովում է ուղիղ հաղորդակցման ծառայություններ տարբեր հոսթերի վրա աշխատող ծրագրային գործընթացների համար: TCP կապերը լրիվ դուպլեքս են, ինչը թույլ է տալիս միաժամանակյա երկկողմանի տվյալների փոխանցում: Ի տարբերություն դրա, UDP-ն կապի բացակայության վրա հիմնված հաղորդակցման արձանագրություն է, որը չի ապահովում հուսալիության երաշխիքներ և հարմար է որոշ սցենարների համար, որոնք ունեն բարձր իրական ժամանակի պահանջներ: TCP-ն և UDP-ն տարբերվում են միացման ռեժիմով, ծառայության օբյեկտով, հուսալիությամբ, գերբեռնվածության վերահսկմամբ, հոսքի վերահսկմամբ և այլ ասպեկտներով, և դրանց կիրառման սցենարները նույնպես տարբեր են:


Հրապարակման ժամանակը. Դեկտեմբերի 03-2024