C struct တစ်ခုက မကောင်းသော SOCKS တောင်းဆိုမှု ဖြစ်ပေါ်စေနိုင်သည့် အကြောင်း
ကွန်ပိုင်လာ၏ အပြင်အဆင်ကို ကွန်ရက်ဖော်မတ်အဖြစ် မယူဆဘဲ အကွက်အကျယ်၊ ဘိုက်အစီအစဉ်နှင့် stream I/O ကို စစ်ဆေးပါ။
မှန်ကန်သော proxy လိပ်စာက လက်ဖြင့်ရေးထားသော SOCKS မက်ဆေ့ချ်ကို မှန်ကန်စေမည် မဟုတ်ပါ။ C သို့မဟုတ် C++ struct ပို့ခြင်းက protocol မတောင်းဆိုခဲ့သည့် padding သို့မဟုတ် host အစီအစဉ်ဖြင့် ကိန်းပြည့်များ ပို့နိုင်သည်။
SOCKS5 domain-name CONNECT တောင်းဆိုမှုအတွက် method ညှိနှိုင်းမှုနှင့် ရွေးချယ်ထားသော authentication ပြီးနောက် ဤအစီအစဉ်ကို ရှင်းလင်းစွာ စီစဉ်ပါ-
- ဗားရှင်း၊ အမိန့်၊ သီးသန့်ဘိုက်နှင့် လိပ်စာအမျိုးအစား
- ဒိုမိန်းအရှည်နှင့် ဒိုမိန်းဘိုက်များ
- ကွန်ရက်ဘိုက်အစီအစဉ်ဖြင့် နှစ်ဘိုက်ပါ ဦးတည်ဆိပ်ကမ်း
လိပ်စာအရှည်များသည် SOCKS ဗားရှင်းနှင့် လိပ်စာအမျိုးအစားပေါ် မူတည်သည်။ ပုံသေအကျယ်ရှိ ကိန်းဂဏန်းအကွက်များအတွက် သတ်မှတ်ထားသော ကိုယ်စားပြုမှု လိုအပ်သည်။ ဒိုမိန်းစာလုံးတန်းများတွင် ကိုယ်ပိုင်အရှည် ကုဒ်ပြောင်းမှု ရှိသည်။ C စာလုံးတန်း အဆုံးသတ်သည် ကွန်ရက်မက်ဆေ့ချ်တွင် သုညထည့်ရန် ယေဘုယျညွှန်ကြားချက် မဟုတ်ပါ။
| အကောင်အထည်ဖော်မှု ဖြတ်လမ်း | စစ်ဆေးရမည့် ပြဿနာ |
|---|---|
| 8-bit pointer မှတစ်ဆင့် 32-bit တန်ဖိုး သတ်မှတ်ခြင်း | ဘိုက်လေးခုလုံးကို မထုတ်ပေးပါ |
| buffer ကို ပိုကြီးသော ကိန်းပြည့် pointer အဖြစ် cast လုပ်ခြင်း | ချိန်ညှိမှုနှင့် ဘိုက်အစီအစဉ်ကို ဆက်လက်ကိုင်တွယ်ရမည် |
| ဖတ်ခြင်း သို့မဟုတ် ရေးခြင်းတစ်ခုသည် မက်ဆေ့ချ်တစ်ခုဟု ယူဆခြင်း | TCP သည် protocol အစီအစဉ်၏ တစ်စိတ်တစ်ပိုင်းကိုသာ ပို့နိုင်သည် |
အကွက်တစ်ခုစီကို ရည်ရွယ်ထားသော ဦးတည်ရာနှင့် နှိုင်းယှဉ်ပြီး တစ်စိတ်တစ်ပိုင်း I/O ကို ကိုင်တွယ်ပါ။ ဘိုက်နှစ်ခု ရရှိခြင်းက အဖြေတစ်ခုလုံး ရောက်လာသည်ဟု မသက်သေပါ။ ထိုနယ်နိမိတ်များကို စစ်ဆေးခြင်းက ပုံမှားတောင်းဆိုမှုကို မှန်ကန်စွာဖော်ပြထားသော ချိတ်ဆက်မှုကို ငြင်းပယ်သည့် ဆာဗာနှင့် ခွဲခြားနိုင်သည်။