The Nagle ալգորիթմը TCP ցանցային հաղորդակցության համար

The Nagle ալգորիթմը , որը կոչվել է ճարտարագետ Ջոն Նաղլ անունով, նախատեսված էր նվազեցնելու TCP- ի ծրագրերով «փոքր փաթեթային խնդիրների» պատճառով ցանցի գերբնակեցումը: UNIX- ի իրագործումը սկսեց օգտագործել Nagle- ի ալգորիթմը 1980-ականներին եւ այն շարունակում է մնալ TCP- ի ստանդարտ առանձնահատկությունը:

Ինչպես է Նաղլ Ալգորիթմը աշխատում

Nagle- ի ալգորիթմը տվյալների փոխանցում է TCP- ի ծրագրերի ուղարկող կողմի մասին, nagling կոչվող մեթոդով : Այն հայտնաբերում է փոքր չափսի հաղորդագրություններ եւ դրանք կուտակում է ավելի մեծ TCP փաթեթներ `նախքան տվյալների փոխանցումը մետաղալարով, այդպիսով խուսափելով անսահմանափակ թվով փոքր փաթեթների սերունդներից: Nagle- ի ալգորիթմի տեխնիկական բնութագիրը հրատարակվել է 1984 թվականին, որպես RFC 896: Բազմաթիվ տվյալների համար կուտակված որոշումները եւ ուղարկվողների միջեւ պահելը որքան կարեւոր է դրա ընդհանուր կատարման համար:

Nagling- ն կարող է ավելի արդյունավետ օգտագործել ցանցային կապի թողունակությունը , հաշվի առնելով ուշացումը ( latency ): RFC 896-ում նկարագրված օրինակ ցույց է տալիս պոտենցիալ թողունակության առավելությունները եւ դրա ստեղծման պատճառը.

Դիմումները վերահսկում են Nagle ալգորիթմի օգտագործումը TCP_NODELAY վարդակից ծրագրավորման տարբերակով: Windows- ի, Linux- ի եւ Java- ի բոլոր համակարգերը սովորաբար թույլ են տալիս Nagle- ին, ուստի այդ միջավայրերի համար գրված դիմումները պետք է TCP_NODELAY- ը նշեն, երբ ուզում են անջատել ալգորիթմը:

Սահմանափակումները

Nagle- ի ալգորիթմը միայն TCP- ով օգտագործելի է: Այլ արձանագրությունները, այդ թվում ` UDP- ն չեն աջակցում:

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

Այս ալգորիթմն ի սկզբանե մշակվել է այն ժամանակ, երբ համակարգչային ցանցերը շատ ավելի պակաս թողունակություն էին տրամադրել, քան այսօր: Վերոնշյալ օրինակը հիմնված էր 1980-ականների սկզբին Ջոն Նագլիի Ford Aerospace- ում ունեցած փորձի վրա, որտեղ իրենց դանդաղ, ծանրաբեռնված երկար հեռավոր ցանցի խառնաշփոթները լավ իմաստ էին դրսեւորում: Կան ավելի քիչ իրավիճակներ, երբ ցանցային ծրագրերը կարող են օգտվել այսօրվա իր ալգորիթմից: