Loe kaheksa baiti ja anna seejärel SOCKS4 tunnel üle
Väldi sihtkoha tervituse alla neelamist või olematute baitide ootamist, parsides SOCKS4 vastuse fikseeritud piiri.
SOCKS4 ühenduse taotlus õnnestub, kuid rakendus ei näe kunagi serveri avatervitust. Üks koht, kuhu vaadata, on konnektori esimene lugemine. Kuueteistkümne baidi lugemine on kaheksabaidise SOCKS4 vastuse jaoks liiga suur.
| Vastuse väli | Baidid |
|---|---|
| Vastuse versiooni väli | 1 |
| Tulemuse kood | 1 |
| Pordi väli | 2 |
| Aadressi väli | 4 |
Tulemuse kood 0x5a näitab, et taotlus rahuldati. SOCKS4a muudab seda, kuidas taotlus hostinime kannab; see ei muuda vastust kuueteistkümneks baidiks.
Pärast vastust kannab sama TCP voog sihtkoha protokolli. Meiliserver võib oma tervituse kohe saata. Seetõttu võib kuueteistkümmet saadaolevat baiti tarbiv lugemine haarata kogu puhverserveri vastuse ja selle tervituse esimesed kaheksa baiti. Kui midagi veel ei järgne, võib ülemõõduline blokeeriv lugemine hoopis lisada tarbetu ootamise.
Täpne pikkus on parsija vastutus
Kaheksa baidi ühekordne küsimine ei ole piisav tõend selle kohta, et kaheksa baiti kohale jõudis. Voogude lugemised võivad tagastada vähem. Kogu vastuse pikkus täpselt tähtaja jooksul, peatu suletud või ebaõnnestunud voo korral, uuri vastust ja jäta järgnevad baidid rakendusele.
Kui konnektor kasutab suuremat puhverdatud lugemist, säilita kõik pärast piiri ja anna see edasi järgmisele tarbijale. Ülejäägi kõrvalejätmine on sama andmekadu teistsuguse lugemissuurusega.
SOCKS5 vajab oma parsijat. Selle vastuseaadressi pikkus võib aadressitüübi järgi erineda. Iga puhverserveri lugemise asendamine fikseeritud kaheksabaidise lugemisega parandaks üht protokolli, aga rikuks teist.