TCP կապի կարգավորումը
Երբ մենք զննում ենք վեբը, ուղարկեք էլ. Փոստ, կամ խաղալ առցանց խաղ, մենք հաճախ չենք մտածում դրա հետեւում գտնվող բարդ ցանցային կապի մասին: Այնուամենայնիվ, այս թվացյալ փոքր քայլերն են, որոնք ապահովում են կայուն հաղորդակցություն մեր եւ սերվերի միջեւ: Ամենակարեւոր քայլերից մեկը TCP կապի կարգավորումն է, եւ դրա առանցքը եռակողմ ձեռքբերումն է:
Այս հոդվածը կքննարկի եռակողմ ձեռքբերման սկզբունքը, գործընթացը եւ կարեւորությունը մանրամասն: Քայլ առ քայլ, մենք կբացատրենք, թե ինչու է անհրաժեշտ եռակողմ ձեռքբերում, թե ինչպես է այն ապահովում կապի կայունությունն ու հուսալիությունը, եւ որքան կարեւոր է տվյալների փոխանցման համար: Եռակողմանի ձեռքսեղմման ավելի խորը հասկանալով, մենք ավելի լավ պատկերացում կստանանք ցանցային հաղորդակցության հիմքում ընկած մեխանիզմների եւ TCP կապերի հուսալիության ավելի պարզ դիտման մասին:
TCP եռօրյա ձեռքի գործընթաց եւ պետական անցում
TCP- ն կապի վրա հիմնված տրանսպորտային արձանագրություն է, որը պահանջում է կապի հաստատումը նախքան տվյալների փոխանցումը: Այս կապի հաստատման գործընթացը կատարվում է եռակողմ ձեռքսեղմումով:
Եկեք ավելի ուշադիր նայենք TCP փաթեթներին, որոնք ուղարկվում են յուրաքանչյուր կապի մեջ:
Սկզբնապես, ինչպես հաճախորդը, այնպես էլ սերվերը փակ են: Նախ, սերվերը ակտիվորեն լսում է նավահանգիստը եւ գտնվում է լսողության մեջ, ինչը նշանակում է, որ սերվերը պետք է սկսվի: Հաջորդը, հաճախորդը պատրաստ է սկսել մուտք գործել ինտերնետային էջ: Առաջին կապի փաթեթի ձեւաչափը հետեւյալն է.
Երբ Հաճախորդը կապ է նախաձեռնում, այն ստեղծում է պատահական նախնական հաջորդականության համար (հաճախորդ_իս) եւ այն տեղադրում է TCP վերնագրի «հաջորդական թվով» դաշտում: Միեւնույն ժամանակ, հաճախորդը սահմանում է 1-ինակի դիրքը 1-ին, նշելու, որ ելքային փաթեթը սին փաթեթ է: Հաճախորդը ցույց է տալիս, որ այն ցանկանում է կապ հաստատել սերվերի հետ `առաջին Syn փաթեթը սերվերին ուղարկելով: Այս փաթեթը չի պարունակում դիմումի շերտի տվյալներ (այսինքն, ուղարկված տվյալները): Այս պահին հաճախորդի կարգավիճակը նշվում է որպես SYPR- ուղարկված:
Երբ սերվերը հաճախորդից ստանում է Sype փաթեթ, այն պատահականորեն նախաձեռնում է իր սերիական համարը (սերվեր_իս), այնուհետեւ այդ թիվը դնում է TCP վերնագրի «սերիական համարի» դաշտում: Հաջորդը, սերվերը մուտքագրում է Client_isn + 1-ը «Acknowlection Number» դաշտում եւ հավաքում է ինչպես 1-ը, եւ ACK Bits- ը 1: Վերջապես, սերվերը փաթեթը ուղարկում է հաճախորդի (եւ սերվերի ուղարկման համար ոչ մի տվյալ) չի պարունակում: Այս պահին սերվերը գտնվում է Syn-RCVD նահանգում:
Հաճախորդը սերվերից ստանձնելուց հետո անհրաժեշտ է կատարել հետեւյալ օպտիմալացումները `վերջնական պատասխան փաթեթին պատասխանելու համար. Նախ, հաճախորդը ներկայացնում է պատասխանների փաթեթը 1; Երկրորդ, Հաճախորդը «Հաստատեք պատասխանների համար» դաշտում թողնում է «Հաստատել պատասխան համարը» դաշտում. Վերջապես, հաճախորդը փաթեթը ուղարկում է սերվերին: Այս փաթեթը կարող է հաճախորդից տվյալներ կրել սերվերին: Այս գործողությունների ավարտից հետո հաճախորդը կմտնի սահմանված պետություն:
Երբ սերվերը հաճախորդից ստացավ պատասխան փաթեթը, այն նաեւ անցնում է սահմանված վիճակին:
Ինչպես տեսնում եք վերը նշված գործընթացից, եռակողմ ձեռքբերում կատարելիս երրորդ ձեռքը թույլատրվում է տվյալներ կրել, բայց առաջին երկու ձեռքսքերը չեն: Սա մի հարց է, որը հաճախ հարցնում է հարցազրույցներում: Եռակողմանի ձեռքսեղմումն ավարտվելուց հետո երկու կողմերն էլ մուտք են գործում սահմանված պետություն, նշելով, որ կապը հաջողությամբ հաստատվել է, որի պահին հաճախորդը եւ սերվերը կարող են սկսել տվյալներ եւ սերվերը:
Ինչու երեք ձեռնաշղթա: Ոչ երկու անգամ, չորս անգամ:
Ընդհանուր պատասխանը հետեւյալն է. «Որովհետեւ եռակողմ ձեռքբերումը երաշխավորում է ստանալու եւ ուղարկելու ունակությունը»: Այս պատասխանը ճիշտ է, բայց դա միայն մակերեսային պատճառը է, չի առաջ քաշում հիմնական պատճառը: Հետեւյալում ես կվերլուծեմ եռակի ձեռքբերման պատճառները երեք տեսանկյունից `սույն խնդրի մեր պատկերացումները խորացնելու համար:
Եռակողմանի ձեռքսեղմումը կարող է արդյունավետորեն խուսափել պատմականորեն կրկնվող կապերի նախաստորագրումից (հիմնական պատճառը)
Եռակողմանի ձեռքսեղմումը երաշխավորում է, որ երկու կողմերն էլ ստացել են հուսալի նախնական հաջորդականության համար:
Եռակողմանի ձեռքսեղմումը խուսափում է վատնել ռեսուրսները:
Պատճառ 1. Խուսափեք պատմական կրկնօրինակներից
Մի խոսքով, եռակողմանի ձեռքսեղմման հիմնական պատճառը հին կրկնօրինակ կապի նախաստորագրմամբ առաջացած խառնաշփոթից խուսափելն է: Միջավայրի բարդ միջավայրում տվյալների փաթեթների փոխանցումը միշտ չէ, որ ուղարկվում է նպատակակետային հյուրընկալող, նշված ժամանակահատվածի համաձայն, եւ հին տվյալների փաթեթները առաջին հերթին կարող են ժամանել նպատակակետային հյուրընկալող եւ այլ պատճառներով: Դրանից խուսափելու համար TCP- ն օգտագործում է եռակողմ ձեռքբերում `կապը հաստատելու համար:
Երբ Հաճախորդը իրավահաջորդության մեջ է ուղարկում բազմաթիվ կուլ տալու ստեղծման փաթեթներ, ինչպիսիք են ցանցի գերբնակվածությունը, կարող են առաջանալ հետեւյալը.
1- Հին Syn փաթեթները ժամանում են սերվերին մինչեւ վերջին Syn փաթեթները:
2- Հին Sy Syn փաթեթը ստանալուց հետո սերվերը կպատասխանի հաճախորդին Հաճախորդին:
3- Երբ հաճախորդը ստանում է Syn + Ack Packet- ը, որոշում է, որ կապը պատմական կապ է (հաջորդականության համարը լրացել է կամ ժամկետանց) ըստ իր համատեքստում, եւ այնուհետեւ RST փաթեթը ուղարկում է սերվերին, կապը դադարեցնելու համար:
Երկկողմանի կապով մի միջոց չկա որոշելու, թե արդյոք ներկայիս կապը պատմական կապ է: Եռակողմանի ձեռքսեղմումը հաճախորդին թույլ է տալիս որոշել, թե արդյոք ներկայիս կապը պատմական կապ է, հիմնվելով համատեքստի վրա, երբ պատրաստ է ուղարկել երրորդ փաթեթը.
1- Եթե դա պատմական միացում է (հաջորդականության համարը լրացել է կամ ժամկետանց), երրորդ ձեռքով ուղարկված փաթեթը `պատմական կապը դադարեցնելու համար RST փաթեթ է:
2- Եթե դա պատմական կապ չէ, երրորդ անգամ ուղարկված փաթեթը ACK փաթեթ է, եւ երկու հաղորդակցման երեկույթները հաջողությամբ հաստատում են կապը:
Հետեւաբար, TCP- ն օգտագործում է եռակողմ ձեռքբերումն այն է, որ այն նախաձեռնում է կապը `պատմական կապերը կանխելու համար:
Պատճառը 2. Համաժամեցնել երկու կողմերի սկզբնական հաջորդականության համարները
TCP արձանագրության երկու կողմերը պետք է պահպանեն հաջորդականության համարը, ինչը հիմնական գործոն է հուսալի փոխանցում ապահովելու համար: Հաջորդական թվերը կարեւոր դեր են խաղում TCP միացումներում: Նրանք անում են հետեւյալը.
Ստացողը կարող է վերացնել կրկնօրինակ տվյալները եւ ապահովել տվյալների ճշգրտությունը:
Ստացողը կարող է փաթեթներ ստանալ հաջորդականության կարգի կարգով `տվյալների ամբողջականությունը ապահովելու համար:
● Հաջորդական համարը կարող է սահմանել այլ կուսակցության կողմից ստացված տվյալների փաթեթը, հնարավորություն տալով հուսալի տվյալների փոխանցում:
Հետեւաբար, TCP կապ հաստատելուց հետո Հաճախորդը Syn փաթեթներ է ուղարկում նախնական հաջորդական թվով եւ պահանջում է սերվերը պատասխանել ACK փաթեթով `նշելով հաճախորդի Syn փաթեթի հաջող ընդունելությունը: Այնուհետեւ սերվերը Syn փաթեթը ուղարկում է Հաճախորդի սկզբնական հաջորդականության համարին եւ սպասում է հաճախորդին պատասխանել, մեկ անգամ եւ բոլորի համար, ապահովելու համար, որ նախնական հաջորդականության համարները հուսալիորեն համաժամեցված են:
Չնայած չորս ճանապարհով ձեռքսեղմում հնարավոր է նաեւ հուսալիորեն համաժամեցնել երկու կողմերի սկզբնական հաջորդականությունը, երկրորդ եւ երրորդ քայլերը կարող են համակցվել մեկ քայլի, որի արդյունքում եռակողմ ձեռքսեղմում: Այնուամենայնիվ, երկու ձեռքսեղմումը կարող է երաշխավորել միայն այն կուսակցության հաջորդ հաջորդականության թիվը մյուս կողմի կողմից հաջողությամբ ընդունվում է, բայց որեւէ երաշխիք չկա, որ երկու կողմերի նախնական հաջորդականությունը կարող է հաստատվել: Հետեւաբար, եռակողմ ձեռքբերումը լավագույն ընտրությունն է `TCP կապերի կայունությունն ու հուսալիությունն ապահովելու համար:
Պատճառ 3. Խուսափեք ռեսուրսներից վատնելուց
Եթե կա միայն «երկկողմանի», երբ ցանցում հաճախորդի Syn- ի պահանջը արգելափակված է, հաճախորդը չի կարող ստանալ սերվերի կողմից ուղարկված ACK փաթեթը, ուստի սինենտը կվերանա: Այնուամենայնիվ, քանի որ չկա երրորդ ձեռքսեղմում, սերվերը չի կարող որոշել, թե արդյոք հաճախորդը ստացել է ACK- ի խոստովանությունը `կապը հաստատելու համար: Հետեւաբար, սերվերը կարող է կապ հաստատել միայն յուրաքանչյուր Syn- ի խնդրանք ստանալուց հետո կապ հաստատելուց հետո: Սա հանգեցնում է հետեւյալին.
Ռեսուրսների վատնում. Եթե հաճախորդի Syn- ի խնդրանքը արգելափակված է, որի արդյունքում հարցումը ստանալուց հետո սերվերը կստեղծի բազմաթիվ ավելորդ անվավեր կապեր: Սա հանգեցնում է սերվերի ռեսուրսների անհարկի վատնելու:
Հաղորդագրությունների պահպանում. Երրորդ ձեռքսեղմման բացակայության պատճառով սերվերը չունի իմանալու, թե արդյոք հաճախորդը ճիշտ է ստացել ACK- ի խոստովանությունը `կապը հաստատելու համար: Արդյունքում, եթե հաղորդագրությունները խցանվեն ցանցում, հաճախորդը կշարունակի կրկին ու կրկին ուղարկել Syne հարցումները, պատճառելով, որ սերվերը անընդհատ նոր կապեր հաստատելու համար: Սա կբարձրացնի ցանցի գերբնակվածությունը եւ հետաձգումը եւ բացասաբար կանդրադառնա ցանցի ընդհանուր գործունեության վրա:
Հետեւաբար, ցանցի կապի կայունությունն ու հուսալիությունն ապահովելու համար TCP- ն օգտագործում է եռակողմ ձեռքբերում `կապը հաստատելու համար` այս խնդիրների առաջացումից խուսափելու համար:
Ամփոփություն
ԷNetwork անցային փաթեթ բրոքերTCP կապի հաստատությունը կատարվում է եռակողմ ձեռքբերումով: Եռակողմանի ձեռքսեղմման ընթացքում հաճախորդը նախ եւ առաջ է ուղարկում Syn դրոշի փաթեթը սերվերին, նշելով, որ ցանկանում է կապ հաստատել: Հաճախորդից հարցումը ստանալուց հետո սերվերը պատասխանում է մի փաթեթ եւ ACK դրոշներով հաճախորդին, նշելով, որ կապի հարցումն ընդունվում է եւ ուղարկվում է իր սկզբնական հաջորդականության համարը: Վերջապես, հաճախորդը պատասխանում է ACK դրոշով սերվերին, նշելու, որ կապը հաջողությամբ հաստատվել է: Այսպիսով, երկու կողմերը գտնվում են սահմանված վիճակում եւ կարող են սկսել տվյալներ ուղարկել միմյանց:
Ընդհանուր առմամբ, TCP կապի ստեղծման եռակողմ ձեռքի գործընթացը նախատեսված է կապի կայունությունն ու հուսալիությունն ապահովելու համար, խուսափելու պատմական կապերի նկատմամբ խառնաշփոթից եւ ռեսուրսների վատնումից:
Ժամանակը `Jan-08-2025