Network անցային փաթեթների բրոքերների հիմնական առեղծվածներ TCP միացումներ. Demystified Եռակի ձեռքսեղմման անհրաժեշտությունը

TCP կապի կարգավորումը
Երբ մենք զննում ենք վեբը, ուղարկեք էլ. Փոստ, կամ խաղալ առցանց խաղ, մենք հաճախ չենք մտածում դրա հետեւում գտնվող բարդ ցանցային կապի մասին: Այնուամենայնիվ, այս թվացյալ փոքր քայլերն են, որոնք ապահովում են կայուն հաղորդակցություն մեր եւ սերվերի միջեւ: Ամենակարեւոր քայլերից մեկը TCP կապի կարգավորումն է, եւ դրա առանցքը եռակողմ ձեռքբերումն է:

Այս հոդվածը կքննարկի եռակողմ ձեռքբերման սկզբունքը, գործընթացը եւ կարեւորությունը մանրամասն: Քայլ առ քայլ, մենք կբացատրենք, թե ինչու է անհրաժեշտ եռակողմ ձեռքբերում, թե ինչպես է այն ապահովում կապի կայունությունն ու հուսալիությունը, եւ որքան կարեւոր է տվյալների փոխանցման համար: Եռակողմանի ձեռքսեղմման ավելի խորը հասկանալով, մենք ավելի լավ պատկերացում կստանանք ցանցային հաղորդակցության հիմքում ընկած մեխանիզմների եւ TCP կապերի հուսալիության ավելի պարզ դիտման մասին:

TCP եռօրյա ձեռքի գործընթաց եւ պետական ​​անցում
TCP- ն կապի վրա հիմնված տրանսպորտային արձանագրություն է, որը պահանջում է կապի հաստատումը նախքան տվյալների փոխանցումը: Այս կապի հաստատման գործընթացը կատարվում է եռակողմ ձեռքսեղմումով:

 TCP եռակողմանի ձեռքսեղմում

Եկեք ավելի ուշադիր նայենք TCP փաթեթներին, որոնք ուղարկվում են յուրաքանչյուր կապի մեջ:

Սկզբնապես, ինչպես հաճախորդը, այնպես էլ սերվերը փակ են: Նախ, սերվերը ակտիվորեն լսում է նավահանգիստը եւ գտնվում է լսողության մեջ, ինչը նշանակում է, որ սերվերը պետք է սկսվի: Հաջորդը, հաճախորդը պատրաստ է սկսել մուտք գործել ինտերնետային էջ: Առաջին կապի փաթեթի ձեւաչափը հետեւյալն է.

 Սին փաթեթ

Երբ Հաճախորդը կապ է նախաձեռնում, այն ստեղծում է պատահական նախնական հաջորդականության համար (հաճախորդ_իս) եւ այն տեղադրում է TCP վերնագրի «հաջորդական թվով» դաշտում: Միեւնույն ժամանակ, հաճախորդը սահմանում է 1-ինակի դիրքը 1-ին, նշելու, որ ելքային փաթեթը սին փաթեթ է: Հաճախորդը ցույց է տալիս, որ այն ցանկանում է կապ հաստատել սերվերի հետ `առաջին Syn փաթեթը սերվերին ուղարկելով: Այս փաթեթը չի պարունակում դիմումի շերտի տվյալներ (այսինքն, ուղարկված տվյալները): Այս պահին հաճախորդի կարգավիճակը նշվում է որպես SYPR- ուղարկված:

Syn + ACK փաթեթ

Երբ սերվերը հաճախորդից ստանում է Sype փաթեթ, այն պատահականորեն նախաձեռնում է իր սերիական համարը (սերվեր_իս), այնուհետեւ այդ թիվը դնում է TCP վերնագրի «սերիական համարի» դաշտում: Հաջորդը, սերվերը մուտքագրում է Client_isn + 1-ը «Acknowlection Number» դաշտում եւ հավաքում է ինչպես 1-ը, եւ ACK Bits- ը 1: Վերջապես, սերվերը փաթեթը ուղարկում է հաճախորդի (եւ սերվերի ուղարկման համար ոչ մի տվյալ) չի պարունակում: Այս պահին սերվերը գտնվում է Syn-RCVD նահանգում:

ACK փաթեթ

Հաճախորդը սերվերից ստանձնելուց հետո անհրաժեշտ է կատարել հետեւյալ օպտիմալացումները `վերջնական պատասխան փաթեթին պատասխանելու համար. Նախ, հաճախորդը ներկայացնում է պատասխանների փաթեթը 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