The Nagle ալգորիթմը , որը կոչվել է ճարտարագետ Ջոն Նաղլ անունով, նախատեսված էր նվազեցնելու TCP- ի ծրագրերով «փոքր փաթեթային խնդիրների» պատճառով ցանցի գերբնակեցումը: UNIX- ի իրագործումը սկսեց օգտագործել Nagle- ի ալգորիթմը 1980-ականներին եւ այն շարունակում է մնալ TCP- ի ստանդարտ առանձնահատկությունը:
Ինչպես է Նաղլ Ալգորիթմը աշխատում
Nagle- ի ալգորիթմը տվյալների փոխանցում է TCP- ի ծրագրերի ուղարկող կողմի մասին, nagling կոչվող մեթոդով : Այն հայտնաբերում է փոքր չափսի հաղորդագրություններ եւ դրանք կուտակում է ավելի մեծ TCP փաթեթներ `նախքան տվյալների փոխանցումը մետաղալարով, այդպիսով խուսափելով անսահմանափակ թվով փոքր փաթեթների սերունդներից: Nagle- ի ալգորիթմի տեխնիկական բնութագիրը հրատարակվել է 1984 թվականին, որպես RFC 896: Բազմաթիվ տվյալների համար կուտակված որոշումները եւ ուղարկվողների միջեւ պահելը որքան կարեւոր է դրա ընդհանուր կատարման համար:
Nagling- ն կարող է ավելի արդյունավետ օգտագործել ցանցային կապի թողունակությունը , հաշվի առնելով ուշացումը ( latency ): RFC 896-ում նկարագրված օրինակ ցույց է տալիս պոտենցիալ թողունակության առավելությունները եւ դրա ստեղծման պատճառը.
- TCP- ի ծրագիր, որն ընդգրկում է ստեղնաշարի ստեղնաշարերը եւ ցանկանում է շփվել յուրաքանչյուր ստանդարտի ստացողի հետ, կարող է առաջացնել մի շարք հաղորդագրություններ, որոնցից յուրաքանչյուրը պարունակում է 1 բայտ տվյալներ:
- Նախքան այս հաղորդագրությունները կարող են ուղարկվել ցանցի միջով, յուրաքանչյուրը պետք է փաթեթավորված լինի TCP / IP- ի կողմից պահանջվող TCP վերնագրի տեղեկատվության հետ միասին: Յուրաքանչյուր վերնագիր տատանվում է 20-ից 60 բայտի չափով:
- Առանց nagling, այս օրինակի հայտը կստեղծի 95% կամ ավելի մեծ տեղեկություններ (առնվազն 20 բայթ) եւ 5% կամ պակաս փաստական տվյալներ, որոնք ուղարկողի ստեղնաշարի մեջ են: Օգտագործելով Nagle ալգորիթմը, նույն տվյալները կարող են փոխարինվել օգտագործելով շատ ավելի քիչ հաղորդագրություններ եւ ունենալով 95% բովանդակության ստեղնաշարային տեղեկատվություն `շատ մեծ թողունակությամբ խնայողություններ:
Դիմումները վերահսկում են Nagle ալգորիթմի օգտագործումը TCP_NODELAY վարդակից ծրագրավորման տարբերակով: Windows- ի, Linux- ի եւ Java- ի բոլոր համակարգերը սովորաբար թույլ են տալիս Nagle- ին, ուստի այդ միջավայրերի համար գրված դիմումները պետք է TCP_NODELAY- ը նշեն, երբ ուզում են անջատել ալգորիթմը:
Սահմանափակումները
Nagle- ի ալգորիթմը միայն TCP- ով օգտագործելի է: Այլ արձանագրությունները, այդ թվում ` UDP- ն չեն աջակցում:
TCP- ի ծրագրերը, որոնք արագ ցանցային արձագանքման կարիք ունեն, ինչպիսիք են Ինտերնետ հեռախոսազանգը կամ առաջին անձի հրաձգային խաղերը, կարող են լավ աշխատել, երբ Nagle- ն միացված լինի: Ալգորիթմը հետաձգվում է հետաձգվող ժամանակահատվածում, երբ հավաքվում են տվյալների փոքրիկ կտորներ, կարող են դիտարկել տեսանելի հեռավորությունը էկրանին կամ թվային աուդիո հոսքի վրա: Այս ծրագրերը սովորաբար անջատում են Nagle- ն:
Այս ալգորիթմն ի սկզբանե մշակվել է այն ժամանակ, երբ համակարգչային ցանցերը շատ ավելի պակաս թողունակություն էին տրամադրել, քան այսօր: Վերոնշյալ օրինակը հիմնված էր 1980-ականների սկզբին Ջոն Նագլիի Ford Aerospace- ում ունեցած փորձի վրա, որտեղ իրենց դանդաղ, ծանրաբեռնված երկար հեռավոր ցանցի խառնաշփոթները լավ իմաստ էին դրսեւորում: Կան ավելի քիչ իրավիճակներ, երբ ցանցային ծրագրերը կարող են օգտվել այսօրվա իր ալգորիթմից: