Die Nagle-algoritme , vernoem na ingenieur John Nagle, is ontwerp om die netwerkopeenhoping wat veroorsaak word deur klein pakkieprobleme met TCP-toepassings, te verminder . UNIX- implementerings het in die 1980's begin met die gebruik van Nagle se algoritme, en dit bly vandag 'n standaard kenmerk van TCP.
Hoe die Nagle Algoritme Werk
Nagle se algoritme verwerk data op die stuurkant van TCP-toepassings deur 'n metode genaamd nagling . Dit ontdek klein boodskappe en versamel hulle in groter TCP-pakkies voordat data oor die draad gestuur word, waardeur die onnodige groot getalle klein pakkies geskep word. Die tegniese spesifikasie vir Nagle se algoritme is in 1984 gepubliseer as RFC 896. Die besluite dat baie data ophoop en hoe lank om te wag tussen stuur, is van kritieke belang vir die algehele prestasie.
Nagling kan meer doeltreffend gebruik maak van die bandwydte van 'n netwerkverbinding ten koste van die byvoeging van vertragings ( latensie ). 'N Voorbeeld beskryf in RFC 896 illustreer die potensiële bandwydte voordele en die rede vir die skepping daarvan:
- 'N TCP-program wat sleutelbordkortpaaie onderskryf en wil kommunikeer elke karakter wat getik word na 'n ontvanger, kan 'n reeks boodskappe genereer wat elk 1 byte data bevat.
- Voordat hierdie boodskappe oor die netwerk gestuur kan word, moet elkeen saam met TCP header- inligting soos vereis deur TCP / IP verpak word. Elke opskrif wissel tussen 20 en 60 grepe.
- Sonder nagling sal hierdie voorbeeldprogram netwerk boodskappe wat bestaan uit 95% of meer koptekst inligting (minstens 20 uit 21 grepe) en 5% of minder werklike data op die sender se sleutelbord genereer. Met behulp van die Nagle-algoritme kan dieselfde data in baie minder boodskappe afgelewer word en 95% van die inhoud is sleutelbordinligting - 'n baie groot bandbreedte spaar.
Toepassings beheer hul gebruik van die Nagle-algoritme met die TCP_NODELAY-sokprogrammeringsopsie. Windows, Linux en Java-stelsels maak normaalweg gewoonlik Nagle aan. Daarom moet aansoeke wat geskryf word vir daardie omgewings, TCP_NODELAY spesifiseer wanneer die algoritme afgeskakel moet word.
beperkings
Nagle se algoritme is slegs bruikbaar met TCP. Ander protokolle insluitend UDP ondersteun dit nie.
TCP-toepassings wat 'n vinnige netwerkrespons nodig het, soos 'n Internet-telefoonoproep of eerstepersoons-shooter-speletjies, werk dalk nie goed wanneer Nagle aangeskakel is nie. Die vertragings wat veroorsaak word terwyl die algoritme ekstra tyd neem om kleiner stukke data bymekaar te voeg, kan visuele vertraging visueel op 'n skerm of in 'n digitale klankstroom aktiveer. Hierdie toepassings deaktiveer tipies Nagle.
Hierdie algoritme is oorspronklik ontwikkel in 'n tyd toe rekenaarnetwerke veel minder bandwydte ondersteun het as wat hulle vandag doen. Die voorbeeld wat hierbo beskryf is, is gebaseer op John Nagle se ervarings by Ford Aerospace in die vroeë 1980's, waar nageloffers op hul stadige, swaar gelaaide langafstandnetwerk goeie sin gemaak het. Daar is toenemend minder situasies waar netwerkprogramme vandag voordeel trek uit sy algoritme.