SOCKS5 ଆଗଭାଗ HTTP ପ୍ରକ୍ସିକୁ ନିଜର ପରବର୍ତ୍ତୀ ପରିବହନ ଭାବରେ ବ୍ୟବହାର କରିପାରିବ। ଏହା ଗ୍ରାହକ ପ୍ରତି SOCKS ସର୍ଭର ଏବଂ ପିତୃ ପ୍ରତି HTTP CONNECT ଗ୍ରାହକ ଭାବରେ କାର୍ଯ୍ୟ କରେ। ଆପ୍ଲିକେସନ ସ୍ରୋତ ଆରମ୍ଭ ହେବା ପୂର୍ବରୁ ଦୁଇଟି ନିୟନ୍ତ୍ରଣ ବିନିମୟ ସମାପ୍ତ ହୁଏ।

SOCKS CONNECT ଅନୁରୋଧ ପୂର୍ବରୁ ହିଁ ଲକ୍ଷ୍ୟ ହୋଷ୍ଟ କିମ୍ବା ଠିକଣା ଏବଂ ପୋର୍ଟ ପ୍ରଦାନ କରେ। ଏକ ଉଦାହରଣ HTTP/1.1 ପିତୃ ବିନିମୟ ପାଇଁ:

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

ସୀମାରେ ଫଳାଫଳକୁ ଅନୁବାଦ କରନ୍ତୁ

ଆଡାପ୍ଟର ପିତୃ ପାଖରେ ଆବଶ୍ୟକ ଯେକୌଣସି ପ୍ରାମାଣିକରଣ ସମ୍ପୂର୍ଣ୍ଣ କରେ ଏବଂ CONNECT ଫଳାଫଳ ପାଇଁ ଅପେକ୍ଷା କରେ। ସଫଳ 2xx ଉତ୍ତର ପିତୃ ଟନେଲ ସ୍ଥାପନ କରେ। ତାପରେ ହିଁ ଏହା ସମ୍ପୃକ୍ତ SOCKS ସଫଳତା ଉତ୍ତର ତଳ ଗ୍ରାହକକୁ ଫେରାଇବା ଉଚିତ।

ଯଦି ପିତୃ କାର୍ଯ୍ୟକୁ ପ୍ରତ୍ୟାଖ୍ୟାନ କରେ, ଏକ ନିର୍ଦ୍ଦିଷ୍ଟ SOCKS ବିଫଳତା ଉତ୍ତର ପଠାନ୍ତୁ, ତାପରେ ଗ୍ରାହକ ସଂଯୋଗ ତୁରନ୍ତ ସମାପ୍ତ କରନ୍ତୁ। SOCKS5 ବିଫଳତା ଚିହ୍ନଟ ହେବାର ଦଶ ସେକେଣ୍ଡ ମଧ୍ୟରେ ସେହି ବନ୍ଦ ହେବା ଆବଶ୍ୟକ କରେ। ପିତୃର HTTP ସ୍ଥିତିକୁ ଆଡାପ୍ଟର ପାଇଁ ନିଦାନ ସୂଚନା ଭାବରେ ରଖନ୍ତୁ। ସେହି ସ୍ଥିତି ଧାଡ଼ିକୁ ଆପ୍ଲିକେସନ ଡାଟା ଭାବରେ ପଠାଇଲେ, ଯେଉଁ ସ୍ରୋତର ଗ୍ରାହକ SOCKS ଫ୍ରେମିଂ ଆଶା କରେ ସେଥିରେ HTTP ନିୟନ୍ତ୍ରଣ ସନ୍ଦେଶ ପ୍ରବେଶ କରିବ।

ସଫଳ CONNECT ଫଳାଫଳ ପୂର୍ବରୁ ପିତୃ ଏବେ ମଧ୍ୟ HTTP କହେ, ଯେକୌଣସି ଚ୍ୟାଲେଞ୍ଜ କିମ୍ବା ତ୍ରୁଟି ଉତ୍ତରର ଫ୍ରେମିଂ ସହିତ। ସଫଳ ଫଳାଫଳର ହେଡର ବିଭାଜକ ପରେ ସଂଯୋଗ ଟନେଲ ହୋଇଯାଏ; ପ୍ରଥମେ ବ୍ୟବହାର କରିବାକୁ କୌଣସି HTTP ଉତ୍ତର ବଡି ନାହିଁ।

ହେଡର ପରର ବାଇଟ ସଂରକ୍ଷିତ ରଖନ୍ତୁ

ଏକ ପଠନରେ ପିତୃର ହେଡରର ଶେଷ ଏବଂ ଲକ୍ଷ୍ୟରୁ ଆସିଥିବା ବାଇଟ ଏକାଠି ରହିପାରେ। ସେହି ଅତିରିକ୍ତ ବାଇଟକୁ ତଳ ଆପ୍ଲିକେସନ ପାଇଁ ରଖନ୍ତୁ। ସର୍ଭର-ପ୍ରଥମ ପ୍ରୋଟୋକଲ ସେମାନଙ୍କ ସଂଯୋଗ ଖୋଲିବା ମାତ୍ରେ ଅଭିବାଦନ କରିପାରେ।

SOCKS ସଫଳତା ଉତ୍ତର ପଠାଇବା ପରେ, ଆପ୍ଲିକେସନ ସ୍ରୋତକୁ ଉଭୟ ଦିଗରେ ପଠାନ୍ତୁ। ଆଡାପ୍ଟରକୁ ଏକ ଗ୍ରାହକ ସନ୍ଦେଶ ସହିତ ଏକ ସର୍ଭର ସନ୍ଦେଶ ବଦଳାଇବାର ଆବଶ୍ୟକତା ନାହିଁ, ଏବଂ ସେଗୁଡ଼ିକୁ ପଠାଇବା ପାଇଁ TLS ରେକର୍ଡ ବୁଝିବାର ମଧ୍ୟ ଆବଶ୍ୟକତା ନାହିଁ। ଏହାର ପ୍ରୋଟୋକଲ କାର୍ଯ୍ୟ ଦୁଇଟି ଟନେଲ ଆଲୋଚନା ସ୍ଥାପନ ଏବଂ ଅନୁବାଦ କରିବା ଥିଲା।

ସମ୍ପର୍କିତ ପ୍ରବନ୍ଧ