SOCKS5 priekšgals var izmantot HTTP starpniekserveri kā savu tālāko transportu. Tas darbojas kā SOCKS serveris pret klientu un kā HTTP CONNECT klients pret vecāku. Abas vadības apmaiņas beidzas pirms lietotnes plūsmas sākuma.

SOCKS CONNECT pieprasījums jau sniedz mērķa resursdatoru vai adresi un portu. Ilustratīvai HTTP/1.1 apmaiņai ar vecāku:

client → adapter: SOCKS5 CONNECT service.example.net:443
adapter → parent:
    CONNECT service.example.net:443 HTTP/1.1
    Host: service.example.net:443

parent → adapter: HTTP/1.1 200 Connection Established
                 [end of headers]
adapter → client: SOCKS5 success reply

client ↔ adapter ↔ parent ↔ service: application bytes

Pārtulkot rezultātu uz robežas

Adapteris veic jebkuru vecāka prasīto autentifikāciju un gaida CONNECT rezultātu. Veiksmīga 2xx atbilde izveido vecāka tuneli. Tikai pēc tam tas drīkst nosūtīt atbilstošo SOCKS veiksmes atbildi lejupējam klientam.

Ja vecāks noraida darbību, nosūtiet noteiktu SOCKS kļūmes atbildi un pēc tam nekavējoties pārtrauciet klienta savienojumu. SOCKS5 prasa šo aizvēršanu desmit sekunžu laikā pēc kļūmes konstatēšanas. Saglabājiet vecāka HTTP statusu kā diagnostikas informāciju adapterim. Šīs statusa rindas pārsūtīšana kā lietotnes dati ievietotu HTTP vadības ziņojumu plūsmā, kuras klients gaida SOCKS ietvaru.

Pirms veiksmīga CONNECT rezultāta vecāks joprojām runā HTTP, tostarp jebkuras izaicinājuma vai kļūdas atbildes ietvaru. Pēc veiksmīga rezultāta galveņu atdalītāja savienojums kļūst par tuneli; vispirms nav jāpatērē nekāds HTTP atbildes pamatteksts.

Saglabājiet baitus pēc galveņu joslas

Viena lasīšana var saturēt vecāka galveņu beigas un baitus no mērķa kopā. Saglabājiet šos papildu baitus lejupējai lietotnei. Protokoli, kuros serveris runā pirmais, var sveicināt uzreiz pēc savienojuma atvēršanas.

Pēc SOCKS veiksmes atbildes nosūtīšanas pārsūtiet lietotnes plūsmu abos virzienos. Adapterim nav jāmaina viena klienta ziņa ar vienu servera ziņu, un tam nav jāsaprot TLS ieraksti, lai tos pārsūtītu. Viņa protokola darbs bija izveidot un pārtulkot abas tuneļa sarunas.

Saistītie raksti