blogg-vitalika.ru

  

Bästa artiklarna:

  
Main / Fördröjd ack 200ms är hur många sekunder

Fördröjd ack 200ms är hur många sekunder

Genom att använda vår webbplats bekräftar du att du har läst och förstått vår cookiepolicy, integritetspolicy och våra användarvillkor.

Anledningen är att man undviker att skicka många små paket på nätverket Nagle och piggybacking data Fördröjd ACK. Det nämndes emellertid inget om dessa algoritmer för bulkdata, dvs. Till exempel, när vi skriver 8000, skickar TCP först 1500 byte Antag att 1500 är MSS och långsam start händer innan en ACK tas emot för det första kan den skicka ytterligare 1500 byte med data, och bryter inte mot Nagles ? Väntar mottagaren på timeout för att skicka en fördröjd ACK eller skickar den omedelbart efter att ha mottagit 1500 byte data?

Tanken med Nagle-algoritmen var att förhindra att mer än ett understor paket var i transit åt gången. Tanken med fördröjda ACK: er som kom från Berkeley var att undvika att skicka en ensam ACK för varje karaktär som mottogs när man skrev över en Telnet-anslutning med fjärreko, genom att vänta en fast period på trafik i omvänd riktning på vilken ACK kunde sparas.

Samspelet mellan de två algoritmerna är hemskt. Om du skickar stort, stort skick, stort skick, det fungerar bra. Om du skickar, få svar, skicka, få svar, det fungerar bra.

Om du gör liten skicka, liten skicka, få svar, kommer det att bli en kort stall. Ett försenat ACK är ett spel. Varje gång ett försenat ACK faktiskt skickas förlorades det spelet. Det borde ha varit en räknare för detta. Tyvärr gick fördröjda ACK efter att jag släppte nätverket 1986, och detta fixades aldrig.

Nu är det för sent. Nagles algoritm ska minska antalet små paket e. Om den kan skicka ett fullständigt paket ska det skicka ett fullständigt paket. Det bryter inte mot beskrivningen i RFC 1122 avsnitt 4. Om det finns okända data i. MSS-byte; se avsnitt 4. Försenade ACK: er minskar antalet paket som skickas i omvänd riktning, men beskrivningen i RFC 1122 lämnar mycket upp till implementeringen :. Observera att mottagaren inte gör det medan du skickar "bulkdata"!

Om det skickade omedelbara ACK, skulle de alla vara små paket som kan ha mycket overhead. Nagle stängs av via sockelalternativet. Både Nagle och Delayed ack är inställda som standard. Nagle fördröjer överföringen såvida inte ett fullständigt paket bildas eller om det finns ouppackad data i röret, så det påverkar prestanda för applikationsbegränsat flöde med små paket.

Om det redan finns ett paket som inte har tagits emot på mottagaren kommer detta 1500 byte att göra en ack. Men om det inte finns några tidigare mottagna data och mottagaren inte använder snabb ack kommer att skicka ack att försenas under en tid e. Frågar frågan. Gäller dessa algoritmer endast för små paket? Hur vet det när en ACK ska försenas? Baseras den på byten i dess mottagningsbuffert? Nikhil Nikhil 852 3 3 guldmärken 17 17 silvermärken 42 42 bronsmärken.

Så varför är det här märkta C? Letar du efter exempel i C-kod? John Nagle. John Nagle John Nagle 316 2 2 silvermärken 3 3 bronsmärken.

Är du "den där" John Nagle? Jag gillar din beskrivning av en fördröjd ack som en "satsning", även om det kan satsa på att antingen mottagaren av data som ska sändas vill skicka något som svar, eller att sändaren har mer data som kan bekräftas samtidigt tid.

Det låter som vad som verkligen behövs är en indikation på om avsändaren kommer att vänta på en ack innan han använder sitt fönster. Om det inte kommer att vänta och fönstret är e. Om det kommer att vänta bör det inte bli någon försening.

Ja, jag är "den där" John Nagle. Kostnaden för att skicka ett svar ACK för varje paket i full storlek är inte så dåligt och håller trafiken kontinuerligt. Det är ett stort antal underdimensionerade paket som går sönder. Om du stänger av "Nagle-algoritmen" som jag kallade "tinygram-förebyggande" och gör en-byte-skrivning till ett TCP-uttag, går varje byte ut i ett separat paket.

Overhead går upp med 40 gånger. Att förhindra det var syftet med algoritmen. Jag har aldrig använt någon av TCP: s signaleringsaspekter utanför bandet, men jag undrar i vilken utsträckning de kan hjälpa saker? Jag misstänker att i de allra flesta TCP-applikationer idag fungerar åtminstone ena änden på halv-duplex-sätt som växlar mellan att producera output och vänta på input; även interaktiva applikationer passar ofta till en sådan beskrivning. Att veta var "vändpunkterna" kunde förbättra prestandan avsevärt.

När jag skrev en TCP-stack på "bare metal" skulle utdata hållas i 100 ms såvida inte "get input data" -rutinen anropades, i vilket fall den skulle skickas direkt. Det andra scenariot som han citerade "skicka, få svar, skicka, få svar" är inte det som är utsatt för samma fördröjda ACK-problem ?.

Mitt antagande är att den mottagande änden sänds paketet INTE till applikationslagret förrän en ACK skickas av den mottagande noden. Om dock mitt antagande är fel och det mottagna paketet skickas till applikationslagret innan en ACK skickas kan en liten sändning ACKas genom piggybacking på svaret till "get-reply" -fasen. Försenade ACK: er minskar antalet paket som skickas i omvänd riktning, men beskrivningen i RFC 1122 lämnar mycket upp till implementeringen: Jag har sett exempel på att 4 segment som skickats fick endast 1 ack, och ackade alla 4.

Eller har implementeringen ändrats? Nikhil Var de "i full storlek"? Observera också att det också bara är ett "borde": Observera också att i ett 10Gbit-nätverk tar ett paket i full storlek mindre än 2 mikrosekunder; kortet kan buffra flera paket innan kärnan är fri att bearbeta något av dem, och kärnan kan lika gärna ACKA allt det kan på en gång.

1 maj 13 kl 15: Ja, de är i full storlek. Nikhil Det definierar "BÖR" betyda att "det kan finnas giltiga skäl under särskilda omständigheter att ignorera det här föremålet, men de fullständiga konsekvenserna bör förstås och fallet noga vägas innan man väljer en annan kurs".

Det är svårt att veta om beteendet du ser är ett brott mot andan i specifikationen, men jag förväntar mig verkligen att ett system som hanterade flera paket i samma anslutning i samma avbrott bara skickar en enda ACK. 1 maj 13 kl 19: En annan viktig aspekt av "BÖR" är att uttalanden som indikerar ena sidan av en anslutning "BÖR" göra något i allmänhet innebär att en överensstämmande implementering av den andra sidan kan optimeras för interaktion med implementeringar som gör det, men måste vara toleranta mot implementeringar som inte gör det.

Det beror på sändningsmönstret Om det redan finns ett paket som inte har paketerats vid mottagaren, kommer detta 1500 byte att göra ett ack. Nummer 3 hjälper. Timir Timir 121 2 2 silvermärken 8 8 bronsmärken. Nagle är också normalt aktiverat som standard. Den kan stängas av med sockelalternativet. Registrera dig eller logga in Registrera dig med Google. Registrera dig med Facebook. Registrera dig med e-post och lösenord. Lägg upp som gästnamn.

E-post krävs, men visas aldrig. Med på Meta. Tagg synonym instrumentpanel 2. Vi testar annonser i hela nätverket. Besök chatten. Relaterade 5. Heta nätverksfrågor. Frågeflöde. Stack Overflow fungerar bäst med JavaScript aktiverat.

(с) 2019 blog-vitalika.ru