SOCKS-handtrykket lukkast. No les reléet frå klienten, skriv til målet, ventar på eit fullstendig svar og les først deretter frå klienten igjen. Den sekvensen kan låse ein heilt gyldig applikasjon.

Når TCP-tunnelen er etablert, definerer ikkje SOCKS meldingane inne i han. Målet kan senda først. Begge sider kan senda uavhengig. Éi side kan senda ein kort post og deretter venta på svaret til den andre.

Vidaresend bytes, ikkje gjetta transaksjonar

Eit mottakskall returnerer tilgjengelege bytes i samsvar med flagga og socket-tilstanden. Det fortel ikkje eit generelt relé at eit applikasjonssvar er komplett. Å venta på at ein vilkårleg stor buffer skal fyllast kan hindra vidaresending av den vesle meldinga motparten treng for å halda fram.

Bruk den eksisterande samtidigheitsmodellen til applikasjonen til å tena begge retningane: ei hendingsløkke, asynkron I/O eller ein annan medvite vald design. Den viktige åtferda er at framgang i éi retning ikkje krev ei oppfunnen meldingsgrense i den andre.

Hald to avgrensa ventande buffar

Data lesne frå klienten kan framleis venta på å nå målet, medan data frå målet ventar på å nå klienten. Spor desse ventande byta separat.

Ei sending kan skriva færre bytes enn forespurd. Behald den uskrivne delen; ikkje slepp han eller spel av heile bufferen på nytt. Ein mellombels uskrivbar socket er ein grunn til å venta på rett beredskapshending, ikkje å spinna kontinuerleg.

Avgrens buffarane. Viss målet er tregt, flyttar det å halda fram med å lesa ubegrensa klientdata berre køen inn i minnet til reléet. Mottrykk tyder å pausa lesinga når den tilsvarande ventande bufferen er full og ta opp att når skriving frigjer plass.

Ein slutt i éi retning krev ein policy

TCP kan lukka ei senderetning medan den andre retninga framleis har nyttige data. Avgjer korleis den tilstanden skal forplantast etter at bufra bytes er tømde, og skil ordna lukking frå ein feil eller frist.

Ingenting av dette krev at reléet dekrypterer eller parsar nyttelasta til applikasjonen. Det treng korrekt straumhandtering. Å auka bufferstorleiken åleine kan ikkje reparera eit relé som ventar på feil side eller legg til grunn at kvar lesing svarar til éin heil førespurnad.

Relaterte artiklar