Një socket .NET kërkon një handshake SOCKS
Shpjegoni çfarë duhet të bëjë një socket TCP i papërpunuar në .NET përpara se bajtët e aplikacionit të kalojnë përmes një proxy SOCKS.
Drejtimi i Socket.Connect() te një server SOCKS hap një lidhje TCP me atë server. Bajtët e radhës duhet ende të flasin SOCKS. Dërgimi i menjëhershëm i protokollit të aplikacionit tuaj e lë serverin duke pritur një bisedë tjetër.
Me SOCKS5, krijimi i lidhjes përfshin negocimin e metodës, çdo shkëmbim autentifikimi të zgjedhur dhe një kërkesë që emërton destinacionin. Vetëm një përgjigje e suksesshme hap rrugën për bajtët e aplikacionit. Këto faza përcaktohen në RFC 1928.
Mbajini negocimin në shtresën e lidhjes
Një aplikacion me protokollin e vet TCP mund të përdorë një lidhës që njeh proxy-n dhe kthen një rrjedhë të vendosur. Pjesa tjetër e aplikacionit lexon dhe shkruan përmes asaj rrjedhe. Lidhësi duhet të marrë parasysh lexime të pjesshme, adresa me gjatësi të ndryshueshme, dështime autentifikimi dhe një afat për negocimin.
Një zbatim i shkruar me dorë që lexon një bufer të vetëm me madhësi fikse dhe supozon sukses është i brishtë. TCP nuk ruan kufijtë e mesazheve SOCKS. Lexoni përgjigjen e plotë të përshkruar nga lloji i adresës së saj përpara se të nisni protokollin e aplikacionit. Një lexues i përgjigjeve CONNECT për .NET 7+ e ilustron atë hap.
Nëse një bibliotekë e mirëmbajtur e furnizon tashmë këtë shtresë lidhjeje, kontrolloni versionet SOCKS të mbështetura, metodat e autentifikimit dhe framework-un e synuar. Një lidhje forumi dhjetë vjeçare është pikënisje për hetim, jo provë e përputhshmërisë aktuale.
Konfigurimi i klientit HTTP ka një shtrirje të veçantë
Cilësimi i proxy-t në një klient HTTP konfiguron atë klient HTTP. Ai nuk modifikon çdo socket të papërpunuar në proces. API-ja Socket pranon një pikë fundore rrjeti dhe e lë negocimin e nivelit më të lartë te thirrësi.
Për një protokoll aplikacioni të kriptuar, kryeni handshake-un e tij TLS pasi tuneli i proxy-t të jetë vendosur. Vërtetoni identitetin e synuar të destinacionit në atë fazë. Autentifikimi i proxy-t dhe autentifikimi i destinacionit mbeten të ndara edhe pse përdorin të njëjtën rrjedhë bazë.