Asio ត្រូវការការផ្លាស់ប្តូរ SOCKS5 បន្ទាប់ពីភ្ជាប់ទៅប្រុកស៊ី
ចាត់ទុក SOCKS5 ជាម៉ាស៊ីនស្ថានភាពពិធីការលើ Asio socket ដោយអានពេញលេញ ផ្ទៀងផ្ទាត់ការឆ្លើយតប និង TLS គោលដៅបន្ទាប់ពី CONNECT ជោគជ័យប៉ុណ្ណោះ។
ការភ្ជាប់ Asio TCP socket ទៅអ្នកស្តាប់ SOCKS5 បញ្ចប់តែជំហានមួយ៖ ការភ្ជាប់ TCP ទៅអ្នកស្តាប់នោះ។ វាមិនស្នើឲ្យប្រុកស៊ីភ្ជាប់ទៅម៉ាស៊ីនមេចុងក្រោយទេ។ សម្រាប់ការសាកល្បងគោលដៅសាធារណៈដែលបានអនុញ្ញាត បញ្ជីប្រុកស៊ី SOCKS5 ផ្តល់បេក្ខជនសម្រាប់ចំណុចបញ្ចប់ TCP ដំបូងនោះ។ អ្នកភ្ជាប់នៅតែត្រូវបញ្ចប់ការផ្លាស់ប្តូរខាងក្រោម។
បន្ទាប់មកអ្នកភ្ជាប់ SOCKS5 ត្រូវដំណើរការការផ្លាស់ប្តូរពិធីការ៖
- ផ្ញើការស្វាគមន៍កំណែ 5 ដែលរាយវិធីសាស្ត្រផ្ទៀងផ្ទាត់ដែលអតិថិជនគាំទ្រ។
- អានវិធីសាស្ត្រដែលបានជ្រើស ហើយធ្វើការផ្លាស់ប្តូរផ្ទៀងផ្ទាត់របស់វានៅពេលចាំបាច់។
- ផ្ញើ CONNECT ជាមួយប្រភេទអាសយដ្ឋានគោលដៅ អាសយដ្ឋាន និងច្រកតាមលំដាប់បៃបណ្តាញ។
- អានការឆ្លើយតប ពិនិត្យកំណែ និងកូដលទ្ធផល ហើយប្រើអាសយដ្ឋាន និងច្រកដែលចងពេញលេញដែលមានប្រវែងអថេរ។
- ប្រគល់ស្ទ្រីមដែលបានបង្កើតទៅពិធីការរបស់កម្មវិធី។
ជំនួយការឈ្មោះ socks5::async_proxy_connect ជារបស់ការអនុវត្ត SOCKS ដែលផ្តល់ជំនួយការនោះ។ ការដាក់ឈ្មោះវានៅក្បែរ boost::asio មិនធ្វើឲ្យវាក្លាយជាផ្នែកនៃចំណុចប្រទាក់ TCP socket របស់ Asio ទេ។
ការអាន TCP អាចត្រឡប់តែផ្នែកមួយនៃការឆ្លើយតប។ ផ្សំការអានសម្រាប់ចំនួនបៃដែលត្រូវការ បន្ទាប់មកជ្រើសប្រវែងនៅសល់ពីវាលប្រភេទអាសយដ្ឋាន។ កុំសន្មតថាការឆ្លើយតបម៉ាស៊ីនមេគ្រប់វាមានប្លង់ IPv4 ថេរ។
សម្រាប់ HTTPS សូមធ្វើការចាប់ដៃ TLS របស់គោលដៅបន្ទាប់ពី SOCKS CONNECT ជោគជ័យ ដោយរក្សា SNI និងការផ្ទៀងផ្ទាត់ឈ្មោះម៉ាស៊ីនរបស់គោលដៅ។ ការឆ្លើយតបប្រុកស៊ីជោគជ័យតែម្នាក់ឯងមិនផ្ទៀងផ្ទាត់គេហទំព័រទេ។
រក្សាការបោះបង់ និងពេលកំណត់ពេញលំដាប់ការរៀបចំ។ ប្រសិនបើពេលវេលាបង្កើតការភ្ជាប់ TCP ផុតកំណត់ ការផ្លាស់ប្តូរស្វាគមន៍ ការផ្ទៀងផ្ទាត់ និង CONNECT ក្រោយៗនឹងគ្មានដែនកំណត់។