CONNECT ပြီးနောက် လွတ်နေသောလိုင်းကို စောင့်ပါ
အခြေအနေလိုင်း အရင်ရောက်လာလျှင်ပင် socket ကို TLS သို့ မပေးအပ်မီ ပြည့်စုံသော HTTP/1 CONNECT တုံ့ပြန်ချက်ကို ဖတ်ပါ။
ကလိုင်းယင့်သည် 200 Connection Established ကို မြင်ပြီး TLS စတင်ကာ TLS မှတ်တမ်း ရှိသင့်သည့်နေရာတွင် ချက်ချင်း အဓိပ္ပာယ်မဲ့အရာများကို အစီရင်ခံသည်။ ဦးတည်ရာ၏ စာဝှက်ဆက်တင်များကို အပြစ်တင်မီ မပြီးဆုံးသော HTTP တုံ့ပြန်ချက်ကို ရှာပါ။
HTTP/1 CONNECT ဖလှယ်မှုတွင် အခြေအနေလိုင်းသည် တုံ့ပြန်ချက်၏ အစသာဖြစ်သည်။ နောက်တွင် ခေါင်းစီးအကွက်များ လာနိုင်သည်။ အောင်မြင်သော CONNECT တုံ့ပြန်ချက်ပြီးနောက် ခေါင်းစီးအပိုင်းကို အဆုံးသတ်သော လွတ်နေသည့်လိုင်းသည် ဥမင်သို့ ကူးပြောင်းမှုကို ညွှန်ပြသည်။
HTTP/1.1 200 Connection Established\r\n
Proxy-Agent: example\r\n
\r\n
ဤဘိုက်များသည် ဖတ်ခြင်းတစ်ကြိမ်၊ ဖတ်ခြင်းများစွာ သို့မဟုတ် နောက်ဆက်တွဲဘိုက်များပါဝင်သော ဖတ်ခြင်းတစ်ခုဖြင့် ရောက်လာနိုင်သည်။ TCP သည် ဆာဗာ၏ ရေးသားမှုနယ်နိမိတ်များကို မထိန်းသိမ်းပါ။
လွှဲပြောင်းမှုကို ရှင်းလင်းသော parser အခြေအနေ ဖြစ်စေပါ
- အခြေအနေလိုင်းကို စုဆောင်းပြီး ခွဲခြမ်းစိတ်ဖြာပါ။ တိကျသော အင်္ဂလိပ် အကြောင်းပြချက်စကားစုအစား ကိန်းဂဏန်း အခြေအနေကို သုံးပါ။
- ခေါင်းစီးအပိုင်း၏ ပြည့်စုံသော အဆုံးသတ်သင်္ကေတ မရောက်မချင်း ဆက်လုပ်ပါ။ အောင်မြင်သော အခြေအနေလိုင်းသည် ကျန်အကွက်များကို ပျောက်ကွယ်စေမည် မဟုတ်ပါ။
- အောင်မြင်သော CONNECT တုံ့ပြန်ချက်တွင် ထိုအဆုံးသတ်သင်္ကေတ၏ နောက်ချက်ချင်းရှိ ဘိုက်ကို ဥမင်ဒေတာ၏ အစဟု သတ်မှတ်ပါ။ အခြားတုံ့ပြန်ချက်များတွင် သင့်လျော်သော HTTP တုံ့ပြန်ချက်နှင့် အတည်ပြုခြင်း ကိုင်တွယ်မှုကို လိုက်နာပါ။
- ချိတ်ဆက်မှုနှင့် မသုံးရသေးသော ဘိုက်များကို နောက်ပရိုတိုကော ပံ့ပိုးသော buffer ရှိ I/O မျက်နှာပြင်မှတစ်ဆင့် လွှဲပြောင်းပါ။
ကောင်းသော ပိုင်းခြားသင်္ကေတ ရှာဖွေမှုရှိလျှင်ပင် နောက်ဆုံးအဆင့်က အရေးကြီးသည်။ buffer ရှိ ဖတ်သူသည် parser တောင်းခံသည်ထက် socket ကို ပိုသုံးထားနိုင်သည်။ ထိုဖတ်သူကို စွန့်လွှတ်ပြီး ကိုယ်ထည်မပါသော socket တွင် TLS စတင်ပါက ဘိုက်များ ဖတ်သူ၏ သီးသန့် buffer တွင် ကျန်ရစ်နိုင်သည်။
ဆက်တင်အတွက် သတ်မှတ်ချိန်နှင့် ခေါင်းစီးအရွယ်အစား ကန့်သတ်ချက် သုံးပါ။ အဆုံးသတ်သင်္ကေတ မတိုင်မီ EOF သည် မပြည့်စုံသော ပရောက်စီ တုံ့ပြန်ချက်ဖြစ်ပြီး ထာဝရစောင့်ရန် သို့မဟုတ် ဘယ်လိုပဲဖြစ်ဖြစ် TLS စမ်းရန် ဖိတ်ခေါ်ချက် မဟုတ်ပါ။
နယ်နိမိတ်များစွာကို စဉ်းစားပါ
Proxy-Agent: ပြီးနောက် ဆုံးသွားသော ဖတ်ခြင်းတစ်ခုကို မြင်ယောင်ပါ။ parser သည် HTTP ခေါင်းစီးဘိုက်များ ထပ်လိုအပ်နေသည်။ နောက်ဆုံး CRLF အစီအစဉ်၏ အလယ်တွင် ဆုံးသွားသော အခြားတစ်ခုကို မြင်ယောင်ပါ။ ၎င်းသည် ပြည့်စုံသော ခေါင်းစီးအပိုင်း မဟုတ်သေးပါ။ ယခု တူညီသော buffer တွင် ပြည့်စုံအောင်မြင်သော ခေါင်းစီးအပိုင်းနောက် ဥမင်ဘိုက်များ လိုက်ပါလာသည်ကို မြင်ယောင်ပါ။ ထိုအပိုဘိုက်များသည် လွှဲပြောင်းမှုကို ကျော်လွှားရမည်။
407 သည် မတူညီသော ရလဒ်ဖြစ်သည်။ ၎င်းသည် အတည်ပြုခြင်း ကိုင်တွယ်မှု လိုအပ်သည်။ တစ်ခါမျှ မဖွင့်ခဲ့သော ဥမင်ထဲသို့ TLS ClientHello ပို့ရန် ခွင့်မပြုပါ။
လက်ဆွဲနှုတ်ဆက်မှုကို အကောင်အထည်ဖော်ခြင်းသည် အလုပ်မဟုတ်ပါက ထိန်းသိမ်းထားသော ချိတ်ဆက်ကိရိယာကို ရွေးပါ။ ဤနယ်နိမိတ်သည် ဤနေရာတွင် ပြထားသော HTTP/1 ဖလှယ်မှုအတွက် သီးသန့်ဖြစ်သည်။ HTTP/2 ပရောက်စီသည် CONNECT ကို မတူညီသော framing ရှိ stream တွင် သယ်ဆောင်သည်။