Asio TCP socket ကို SOCKS5 နားထောင်သူနှင့် ချိတ်ဆက်ခြင်းသည် အဆင့်တစ်ဆင့်သာ ပြီးစီးစေသည်- ထို နားထောင်သူထံသို့ TCP ချိတ်ဆက်မှု။ ၎င်းသည် ပရောက်စီအား နောက်ဆုံး ဆာဗာနှင့် ချိတ်ဆက်ရန် မတောင်းဆိုပါ။ ခွင့်ပြုထားသော အများသူငှာ ပစ်မှတ် စမ်းသပ်မှုအတွက် SOCKS5 ပရောက်စီ စာရင်းသည် ထို ပထမ TCP အဆုံးမှတ်အတွက် ကိုယ်စားလှယ်လောင်းများကို ပေးသည်။ ချိတ်ဆက်သူသည် အောက်ပါ ဖလှယ်မှုကို ပြီးစီးရန် လိုအပ်ဆဲဖြစ်သည်။

ထို့နောက် SOCKS5 ချိတ်ဆက်သူသည် ပရိုတိုကော ဖလှယ်မှုကို လုပ်ဆောင်ရမည်-

  1. ကလိုင်းယင့် ပံ့ပိုးသော စစ်မှန်ကြောင်း အတည်ပြုနည်းလမ်းများကို စာရင်းပြုထားသော ဗားရှင်း 5 နှုတ်ဆက်စကား ပို့ပါ။
  2. ရွေးချယ်ထားသော နည်းလမ်းကို ဖတ်ပြီး လိုအပ်ပါက ၎င်း၏ အတည်ပြုမှု ဖလှယ်ခြင်းကို လုပ်ဆောင်ပါ။
  3. ဦးတည်ရာ လိပ်စာအမျိုးအစား၊ လိပ်စာနှင့် ကွန်ရက် ဘိုက်အစီအစဉ်အရ ပို့တ်တို့ဖြင့် CONNECT ပို့ပါ။
  4. တုံ့ပြန်ချက်ကို ဖတ်ပြီး ၎င်း၏ ဗားရှင်းနှင့် ရလဒ်ကုဒ်ကို စစ်ဆေးကာ အရှည်ပြောင်းလဲနိုင်သော ချိတ်ထားသည့် လိပ်စာနှင့် ပို့တ်ကို အပြည့်အစုံ သုံးပါ။
  5. တည်ဆောက်ပြီးသော စီးကြောင်းကို အပလီကေးရှင်း၏ ပရိုတိုကောသို့ လွှဲပါ။

socks5::async_proxy_connect အမည်ရှိ အကူအညီသည် ထို အကူအညီကို ပေးသော SOCKS အကောင်အထည်ဖော်မှုတွင် ပါဝင်သည်။ ၎င်းကို boost::asio အနီးတွင် အမည်တပ်ခြင်းက Asio ၏ TCP socket အင်တာဖေ့စ်၏ အစိတ်အပိုင်း မဖြစ်စေပါ။

TCP ဖတ်ခြင်းသည် တုံ့ပြန်ချက်၏ တစ်စိတ်တစ်ပိုင်းကိုသာ ပြန်ပေးနိုင်သည်။ လိုအပ်သော ဘိုက်အရေအတွက်အတွက် ဖတ်ခြင်းများကို ပေါင်းစပ်ပြီး ကျန်ရှိသော အရှည်ကို လိပ်စာအမျိုးအစား အကွက်မှ ရွေးပါ။ ဆာဗာ တုံ့ပြန်ချက်တိုင်းတွင် ပုံသေ IPv4 အပြင်အဆင် ရှိသည်ဟု မယူဆပါနှင့်။

HTTPS အတွက် SOCKS CONNECT အောင်မြင်ပြီးနောက် ဦးတည်ရာ၏ TLS လက်ဆွဲနှုတ်ဆက်မှုကို လုပ်ဆောင်ပြီး ဦးတည်ရာ၏ SNI နှင့် လက်ခံအမည် စစ်ဆေးမှုကို ထိန်းသိမ်းပါ။ အောင်မြင်သော ပရောက်စီ တုံ့ပြန်ချက်တစ်ခုတည်းဖြင့် ဝက်ဘ်ဆိုက်ကို စစ်မှန်ကြောင်း မအတည်ပြုပါ။

စနစ်တပ်ဆင်မှု အစီအစဉ်တစ်လျှောက်လုံး ပယ်ဖျက်ခြင်းနှင့် သတ်မှတ်ချိန်များကို ထိန်းသိမ်းပါ။ TCP ချိတ်ဆက်မှု တည်ဆောက်ချိန် ကုန်ဆုံးပါက နောက်ပိုင်း နှုတ်ဆက်စကား၊ အတည်ပြုမှုနှင့် CONNECT ဖလှယ်မှုများ ကန့်သတ်ချက်မရှိ ဖြစ်နေမည်။

ဆက်စပ်ဆောင်းပါးများ