Kuelekeza Socket.Connect() kwenye seva ya SOCKS hufungua muunganisho wa TCP kwa seva hiyo. Baiti zinazofuata bado lazima zizungumze SOCKS. Kutuma itifaki ya programu yako mara moja humwacha seva ikisubiri mazungumzo tofauti.

Kwa SOCKS5, kuanzisha muunganisho hujumuisha majadiliano ya mbinu, ubadilishanaji wowote wa uthibitishaji uliochaguliwa, na ombi linalotaja lengwa. Ni jibu lililofanikiwa pekee linalofungua njia kwa baiti za programu. Hatua hizi zimefafanuliwa katika RFC 1928.

Weka majadiliano katika tabaka la muunganisho

Programu yenye itifaki yake ya TCP inaweza kutumia kiunganishi kinachojua proksi na kurudisha mtiririko ulioanzishwa. Sehemu nyingine ya programu husoma na kuandika kupitia mtiririko huo. Kiunganishi lazima kizingatie usomaji wa sehemu, anwani zenye urefu unaobadilika, kushindwa kwa uthibitishaji, na muda wa mwisho wa majadiliano.

Utekelezaji ulioandikwa kwa mkono unaosoma bafa moja ya ukubwa maalum na kudhani mafanikio ni dhaifu. TCP haihifadhi mipaka ya jumbe za SOCKS. Soma jibu kamili linaloelezwa na aina ya anwani yake kabla ya kuanza itifaki ya programu. Kisomaji cha majibu ya CONNECT kwa .NET 7+ kinaonyesha hatua hiyo.

Iwapo maktaba inayotunzwa tayari hutoa tabaka hili la muunganisho, angalia matoleo ya SOCKS inayotumia, mbinu za uthibitishaji, na mfumo lengwa. Kiungo cha jukwaa kilicho na muongo mmoja ni mwanzo wa uchunguzi, si ushahidi wa uoanifu wa sasa.

Usanidi wa mteja wa HTTP una wigo tofauti

Mpangilio wa proksi wa mteja wa HTTP husanidi mteja huyo wa HTTP. Haubadilishi kila socket ghafi katika mchakato. API ya Socket hupokea kituo cha mwisho cha mtandao na kuacha majadiliano ya ngazi ya juu kwa mpigaji simu.

Kwa itifaki ya programu iliyosimbwa, fanya TLS handshake yake baada ya handaki la proksi kuanzishwa. Thibitisha utambulisho wa lengo lililokusudiwa katika hatua hiyo. Uthibitishaji wa proksi na uthibitishaji wa lengo hubaki tofauti ingawa hutumia mtiririko mmoja wa msingi.

Makala zinazohusiana