TCP ယုံကြည်စိတ်ချရမှု သယ်ယူပို့ဆောင်ရေး
ကျွန်ုပ်တို့အားလုံး TCP protocol ကို ယုံကြည်စိတ်ချရသော transport protocol တစ်ခုအဖြစ် ရင်းနှီးကြသော်လည်း ၎င်းသည် transport ၏ ယုံကြည်စိတ်ချရမှုကို မည်သို့သေချာစေသနည်း။
ယုံကြည်စိတ်ချရသော ထုတ်လွှင့်မှုရရှိရန်အတွက် ဒေတာပျက်စီးခြင်း၊ ဆုံးရှုံးမှု၊ ထပ်တူကျခြင်းနှင့် အစီအစဉ်မကျသော အပိုင်းအစများကဲ့သို့သော အချက်များစွာကို ထည့်သွင်းစဉ်းစားရန် လိုအပ်ပါသည်။ ဤပြဿနာများကို မဖြေရှင်းနိုင်ပါက ယုံကြည်စိတ်ချရသော ထုတ်လွှင့်မှုကို ရရှိနိုင်မည်မဟုတ်ပါ။
ထို့ကြောင့် TCP သည် ယုံကြည်စိတ်ချရသော ထုတ်လွှင့်မှုကို ရရှိရန် sequence number၊ acknowledgement reply၊ resend control၊ connection management နှင့် window control ကဲ့သို့သော ယန္တရားများကို အသုံးပြုသည်။
ဤစာတမ်းတွင် TCP ၏ sliding window၊ flow control နှင့် congestion control တို့ကို အဓိကထားပါမည်။ retransmission mechanism အကြောင်းကို နောက်အပိုင်းတွင် သီးခြားဖော်ပြထားပါသည်။
ကွန်ရက်စီးဆင်းမှု ထိန်းချုပ်ရေး
Network Flow Control သို့မဟုတ် Network Traffic Control ဟုလူသိများသော ကွန်ရက်အသွားအလာထိန်းချုပ်မှုသည် အမှန်တကယ်တွင် ထုတ်လုပ်သူများနှင့် စားသုံးသူများအကြား သိမ်မွေ့သောဆက်ဆံရေး၏ ထင်ရှားပေါ်လွင်မှုတစ်ခုဖြစ်သည်။ သင်သည် ဤအခြေအနေကို အလုပ်ခွင် သို့မဟုတ် အင်တာဗျူးများတွင် အများအပြား ကြုံတွေ့ဖူးပေမည်။ ထုတ်လုပ်သူ၏ ထုတ်လုပ်နိုင်စွမ်းသည် စားသုံးသူ၏ သုံးစွဲနိုင်စွမ်းထက် များစွာကျော်လွန်ပါက၊ ၎င်းသည် queue ကို အကန့်အသတ်မရှိ တိုးပွားစေမည်ဖြစ်သည်။ ပိုမိုဆိုးရွားသောကိစ္စတွင်၊ RabbitMQ မက်ဆေ့ချ်များ အလွန်အကျွံစုပုံလာသောအခါ၊ ၎င်းသည် MQ server တစ်ခုလုံး၏ စွမ်းဆောင်ရည်ကို ကျဆင်းစေနိုင်ကြောင်း သင်သိပေမည်။ TCP အတွက်လည်း အတူတူပင်ဖြစ်သည်။ စစ်ဆေးခြင်းမပြုပါက၊ မက်ဆေ့ချ်များစွာကို ကွန်ရက်ထဲသို့ ထည့်သွင်းမည်ဖြစ်ပြီး စားသုံးသူများသည် ၎င်းတို့၏စွမ်းရည်ထက် ကျော်လွန်သွားမည်ဖြစ်ပြီး ထုတ်လုပ်သူများသည် မက်ဆေ့ချ်များကို ထပ်နေစေမည်ဖြစ်ပြီး ၎င်းသည် ကွန်ရက်၏စွမ်းဆောင်ရည်ကို သိသိသာသာထိခိုက်စေမည်ဖြစ်သည်။
ဤဖြစ်စဉ်ကို ဖြေရှင်းရန်အတွက် TCP သည် ပေးပို့သူအတွက် လက်ခံသူ၏ အမှန်တကယ် လက်ခံနိုင်စွမ်းအပေါ် အခြေခံ၍ ပေးပို့သော အချက်အလက်ပမာဏကို ထိန်းချုပ်ရန် ယန္တရားတစ်ခုကို ပံ့ပိုးပေးပြီး ၎င်းကို flow control ဟုလူသိများသည်။ လက်ခံသူသည် လက်ခံသည့်ဝင်းဒိုးကို ထိန်းသိမ်းထားပြီး ပေးပို့သူသည် ပေးပို့သည့်ဝင်းဒိုးကို ထိန်းသိမ်းထားသည်။ ဤဝင်းဒိုးများသည် TCP ချိတ်ဆက်မှုတစ်ခုတည်းအတွက်သာဖြစ်ပြီး ချိတ်ဆက်မှုအားလုံးသည် ဝင်းဒိုးတစ်ခုကို မျှဝေမည်မဟုတ်ကြောင်း သတိပြုသင့်သည်။
TCP သည် လက်ခံဝင်းဒိုးအတွက် variable တစ်ခုကို အသုံးပြုခြင်းဖြင့် flow control ကို ပေးစွမ်းသည်။ လက်ခံဝင်းဒိုးသည် ပေးပို့သူအား cache space မည်မျှကျန်ရှိနေသေးသည်ကို ညွှန်ပြပေးသည်။ ပေးပို့သူသည် လက်ခံသူ၏ အမှန်တကယ်လက်ခံနိုင်စွမ်းအရ ပေးပို့သော data ပမာဏကို ထိန်းချုပ်သည်။
လက်ခံသူ host က ပေးပို့သူထံ ၎င်းလက်ခံရရှိနိုင်သော data အရွယ်အစားကို အကြောင်းကြားပြီး ပေးပို့သူက ဤကန့်သတ်ချက်အထိ ပေးပို့သည်။ ဤကန့်သတ်ချက်သည် window size ဖြစ်သည်၊ TCP header ကို မှတ်မိပါသလား။ လက်ခံသူ လက်ခံနိုင်သော သို့မဟုတ် လက်ခံလိုသော bytes အရေအတွက်ကို ဖော်ပြရန် အသုံးပြုသည့် receive window field တစ်ခုရှိသည်။
ပေးပို့သူ host သည် window probe packet တစ်ခုကို အခါအားလျော်စွာ ပေးပို့မည်ဖြစ်ပြီး ၎င်းကို receiver host သည် data များကို လက်ခံနိုင်သေးခြင်း ရှိ၊ မရှိ ထောက်လှမ်းရန် အသုံးပြုပါသည်။ receiver ၏ buffer သည် overflow ဖြစ်နိုင်ခြေရှိသည့်အခါ window size ကို ပိုသေးငယ်သောတန်ဖိုးသို့ သတ်မှတ်ပြီး ပေးပို့သူအား data ပမာဏကို ထိန်းချုပ်ရန် ညွှန်ကြားပါသည်။
Network Flow Control ပုံလေးကို အောက်မှာပြထားပါတယ်။
ကွန်ရက်ပိတ်ဆို့မှု ထိန်းချုပ်ခြင်း
congestion control ကို မမိတ်ဆက်ခင်မှာ receive window နဲ့ send window အပြင် congestion window လည်း ရှိတယ်ဆိုတာ နားလည်ဖို့ လိုပါတယ်။ ဒီ window ကို sender က receive window ကို data ပို့တဲ့နှုန်း ဘယ်လောက်နဲ့ စပို့လဲဆိုတဲ့ ပြဿနာကို ဖြေရှင်းဖို့ အဓိကအသုံးပြုပါတယ်။ ဒါကြောင့် congestion window ကို TCP sender က ထိန်းသိမ်းထားပါတယ်။ data ဘယ်လောက်ပို့သင့်လဲဆိုတာ ဆုံးဖြတ်ဖို့ algorithm တစ်ခု လိုအပ်ပါတယ်။ ဘာလို့လဲဆိုတော့ data နည်းနည်းပို့တာ ဒါမှမဟုတ် များလွန်းတာက အကောင်းဆုံးမဟုတ်ပါဘူး။ ဒါကြောင့် congestion window ဆိုတဲ့ အယူအဆ ဖြစ်ပေါ်လာတာပါ။
ယခင် network flow control မှာ ကျွန်တော်တို့ ရှောင်ရှားခဲ့တာက sender က receiver ရဲ့ cache ကို data တွေနဲ့ ဖြည့်ပေးတာပါ၊ ဒါပေမယ့် network မှာ ဘာတွေဖြစ်နေလဲဆိုတာ ကျွန်တော်တို့ မသိခဲ့ပါဘူး။ ပုံမှန်အားဖြင့် computer network တွေဟာ shared environment မှာ ရှိပါတယ်။ ရလဒ်အနေနဲ့ တခြား host တွေကြား communication ကြောင့် network congestion ဖြစ်နိုင်ပါတယ်။
ကွန်ရက်ပိတ်ဆို့မှုဖြစ်နေချိန်တွင် packet အမြောက်အမြားကို ဆက်လက်ပေးပို့နေပါက packet များ နှောင့်နှေးခြင်းနှင့် ပျောက်ဆုံးခြင်းကဲ့သို့သော ပြဿနာများ ဖြစ်ပေါ်စေနိုင်သည်။ ဤအချိန်တွင် TCP သည် ဒေတာကို ပြန်လည်ပေးပို့မည်ဖြစ်သော်လည်း ပြန်လည်ပေးပို့ခြင်းသည် ကွန်ရက်အပေါ် ဝန်ထုပ်ဝန်ပိုးကို တိုးစေပြီး ပိုမိုကြီးမားသော နှောင့်နှေးမှုများနှင့် packet ဆုံးရှုံးမှုများကို ဖြစ်ပေါ်စေမည်ဖြစ်သည်။ ၎င်းသည် မကောင်းသော သံသရာထဲသို့ ရောက်သွားနိုင်ပြီး ပိုမိုကြီးမားလာနိုင်သည်။
ထို့ကြောင့် TCP သည် ကွန်ရက်ပေါ်တွင် ဖြစ်ပျက်နေသည်များကို လျစ်လျူရှု၍မရပါ။ ကွန်ရက် ကျပ်တည်းနေချိန်တွင် TCP သည် ၎င်းပေးပို့သော အချက်အလက်ပမာဏကို လျှော့ချခြင်းဖြင့် ၎င်းကိုယ်တိုင်ကို စွန့်လွှတ်ပါသည်။
ထို့ကြောင့် ပေးပို့သူထံမှ အချက်အလက်များဖြင့် ကွန်ရက်တစ်ခုလုံးကို မဖြည့်မိစေရန် ရည်ရွယ်သည့် ပိတ်ဆို့မှုထိန်းချုပ်ခြင်းကို အဆိုပြုထားပါသည်။ ပေးပို့သူ ပေးပို့သင့်သည့် အချက်အလက်ပမာဏကို ထိန်းညှိရန်အတွက် TCP သည် ပိတ်ဆို့မှုဝင်းဒိုးဟုခေါ်သော သဘောတရားကို သတ်မှတ်ပေးပါသည်။ ပိတ်ဆို့မှုထိန်းချုပ် အယ်လဂိုရီသမ်သည် ပေးပို့သူ ပေးပို့သော အချက်အလက်ပမာဏကို ထိန်းချုပ်ရန်အတွက် ကွန်ရက်၏ ပိတ်ဆို့မှုအဆင့်အလိုက် ပိတ်ဆို့မှုဝင်းဒိုး၏ အရွယ်အစားကို ချိန်ညှိပေးမည်ဖြစ်သည်။
congestion window ဆိုတာဘာလဲ။ ဒါက send window နဲ့ ဘာဆိုင်လို့လဲ။
Congestion Window ဆိုသည်မှာ ပေးပို့သူမှ ထိန်းသိမ်းထားသော state variable တစ်ခုဖြစ်ပြီး၊ ၎င်းသည် ပေးပို့သူပေးပို့နိုင်သော data ပမာဏကို ဆုံးဖြတ်ပေးသည်။ congestion window သည် ကွန်ရက်၏ congestion အဆင့်ပေါ် မူတည်၍ ပြောင်းလဲသည်။
Sending Window ဆိုသည်မှာ ပေးပို့သူနှင့် လက်ခံသူ လက်ခံရရှိနိုင်သော ဒေတာပမာဏကို ဖော်ပြသည့် ပေးပို့သူနှင့် လက်ခံသူအကြား သဘောတူညီထားသော window အရွယ်အစားဖြစ်သည်။ congestion window နှင့် ပေးပို့သည့် window တို့သည် ဆက်စပ်နေသည်။ ပေးပို့သည့် window သည် congestion နှင့် လက်ခံသည့် Windows ၏ အနည်းဆုံးနှင့် ညီမျှသည်၊ ဆိုလိုသည်မှာ swnd = min(cwnd, rwnd) ဖြစ်သည်။
ပိတ်ဆို့မှု ဝင်းဒိုး cwnd သည် အောက်ပါအတိုင်း ပြောင်းလဲသွားသည်။
ကွန်ရက်တွင် ပိတ်ဆို့မှုမရှိပါက၊ ဆိုလိုသည်မှာ ပြန်လည်ထုတ်လွှင့်ချိန် မဖြစ်ပေါ်ပါက၊ ပိတ်ဆို့မှုကာလ တိုးလာပါသည်။
ကွန်ရက်တွင် ပိတ်ဆို့မှုရှိပါက ပိတ်ဆို့မှုကာလ လျော့ကျသွားသည်။
ပေးပို့သူသည် ACK အသိအမှတ်ပြုပက်ကက်ကို သတ်မှတ်ထားသောအချိန်အတွင်း လက်ခံရရှိခြင်းရှိမရှိကို ကြည့်ရှုခြင်းဖြင့် ကွန်ရက်ပိတ်ဆို့မှုရှိမရှိကို ဆုံးဖြတ်သည်။ ပေးပို့သူသည် သတ်မှတ်ထားသောအချိန်အတွင်း ACK အသိအမှတ်ပြုပက်ကက်ကို မရရှိပါက ကွန်ရက်ပိတ်ဆို့မှုဟု ယူဆသည်။
ပိတ်ဆို့မှု ဝင်းဒိုးအပြင်၊ TCP ပိတ်ဆို့မှု ထိန်းချုပ်ရေး အယ်လဂိုရီသမ် အကြောင်းကို ဆွေးနွေးဖို့ အချိန်ရောက်ပါပြီ။ TCP ပိတ်ဆို့မှု ထိန်းချုပ်ရေး အယ်လဂိုရီသမ်တွင် အဓိက အစိတ်အပိုင်း သုံးပိုင်း ပါဝင်သည်-
နှေးကွေးစွာစတင်ခြင်း-အစပိုင်းတွင် cwnd congestion window သည် အတော်လေးသေးငယ်ပြီး ကွန်ရက်၏စွမ်းရည်နှင့် လျင်မြန်စွာလိုက်လျောညီထွေဖြစ်အောင် ပေးပို့သူသည် congestion window ကို အဆပေါင်းများစွာ တိုးမြှင့်ပေးသည်။
ယာဉ်ကြောပိတ်ဆို့မှု ရှောင်ရှားခြင်း-ပိတ်ဆို့မှုကာလသည် သတ်မှတ်ထားသော ကန့်သတ်ချက်ကို ကျော်လွန်သွားပြီးနောက်၊ ပေးပို့သူသည် ပိတ်ဆို့မှုကာလ၏ ကြီးထွားမှုနှုန်းကို နှေးကွေးစေပြီး ကွန်ရက်ကို ဝန်ပိခြင်းမှ ရှောင်ရှားရန် ပိတ်ဆို့မှုကာလကို မျဉ်းဖြောင့်ပုံစံဖြင့် တိုးမြှင့်ပေးသည်။
လျင်မြန်စွာ ပြန်လည်ကောင်းမွန်လာခြင်းပိတ်ဆို့မှုဖြစ်ပေါ်ပါက ပေးပို့သူသည် ပိတ်ဆို့မှုဝင်းဒိုးကို ထက်ဝက်လျှော့ချပြီး လက်ခံရရှိသော ထပ်တူ acks များမှတစ်ဆင့် ကွန်ရက်ပြန်လည်ရယူခြင်း၏ တည်နေရာကို ဆုံးဖြတ်ရန် မြန်ဆန်သော ပြန်လည်ကောင်းမွန်လာမှုအခြေအနေသို့ ဝင်ရောက်ပြီးနောက် ပိတ်ဆို့မှုဝင်းဒိုးကို ဆက်လက်တိုးမြှင့်ပါသည်။
နှေးကွေးစွာစတင်ခြင်း
TCP ချိတ်ဆက်မှုတစ်ခု တည်ဆောက်ပြီးသောအခါ၊ congestion window cwnd ကို အစပိုင်းတွင် အနည်းဆုံး MSS (အမြင့်ဆုံး segment size) တန်ဖိုးသို့ သတ်မှတ်သည်။ ဤနည်းအားဖြင့် ကနဦးပေးပို့နှုန်းမှာ MSS/RTT bytes/second ခန့်ဖြစ်သည်။ ရရှိနိုင်သော အမှန်တကယ် bandwidth သည် MSS/RTT ထက် များစွာပိုကြီးသောကြောင့် TCP သည် အကောင်းဆုံးပေးပို့နှုန်းကို ရှာဖွေလိုပြီး ၎င်းကို slow-start ဖြင့် ရရှိနိုင်သည်။
နှေးကွေးစွာစတင်သည့်လုပ်ငန်းစဉ်တွင်၊ congestion window cwnd ၏တန်ဖိုးကို 1 MSS သို့ initialize လုပ်မည်ဖြစ်ပြီး၊ ထုတ်လွှင့်သော packet segment ကို အသိအမှတ်ပြုတိုင်း၊ cwnd ၏တန်ဖိုးကို MSS တစ်ခုတိုးလာမည်ဖြစ်ပြီး၊ ဆိုလိုသည်မှာ cwnd ၏တန်ဖိုးသည် 2 MSS ဖြစ်လာမည်ဖြစ်သည်။ ထို့နောက်၊ packet segment တစ်ခု အောင်မြင်စွာထုတ်လွှင့်တိုင်း cwnd ၏တန်ဖိုးကို နှစ်ဆတိုးမည်ဖြစ်ပြီး၊ စသည်ဖြင့်ဖြစ်သည်။ သီးခြားကြီးထွားမှုလုပ်ငန်းစဉ်ကို အောက်ပါပုံတွင် ပြသထားသည်။
သို့သော်၊ ပေးပို့မှုနှုန်းသည် အမြဲတမ်း တိုးလာနိုင်မည်မဟုတ်ပါ။ တိုးတက်မှုသည် တစ်ချိန်ချိန်တွင် အဆုံးသတ်ရမည်ဖြစ်သည်။ ဒါဆိုရင် ပေးပို့မှုနှုန်း တိုးလာမှုက ဘယ်တော့ အဆုံးသတ်မှာလဲ။ နှေးကွေးစွာ စတင်ခြင်းသည် ပေးပို့မှုနှုန်း တိုးလာမှုကို နည်းလမ်းများစွာထဲမှ တစ်ခုခုဖြင့် အဆုံးသတ်လေ့ရှိသည်-
ပထမနည်းလမ်းကတော့ slow start ပေးပို့တဲ့ လုပ်ငန်းစဉ်အတွင်း packet ဆုံးရှုံးမှုဖြစ်ပါတယ်။ packet ဆုံးရှုံးမှုဖြစ်ပေါ်တဲ့အခါ TCP က ပေးပို့သူရဲ့ congestion window cwnd ကို 1 လို့သတ်မှတ်ပြီး slow-start လုပ်ငန်းစဉ်ကို ပြန်လည်စတင်ပါတယ်။ ဒီအချိန်မှာ slow start threshold ssthresh ရဲ့ သဘောတရားကို မိတ်ဆက်ပြီး cwnd ရဲ့ တန်ဖိုးရဲ့ ထက်ဝက်က packet loss ကို ဖြစ်ပေါ်စေတာပါ။ ဆိုလိုတာက congestion ကို တွေ့ရှိတဲ့အခါ ssthresh ရဲ့ တန်ဖိုးဟာ window value ရဲ့ ထက်ဝက်ဖြစ်ပါတယ်။
ဒုတိယနည်းလမ်းမှာ slow-start threshold ssthresh ၏တန်ဖိုးနှင့် တိုက်ရိုက်ဆက်စပ်ရန်ဖြစ်သည်။ ပိတ်ဆို့မှုကို တွေ့ရှိသောအခါ ssthresh ၏တန်ဖိုးသည် window တန်ဖိုး၏ ထက်ဝက်ဖြစ်သောကြောင့် cwnd သည် ssthresh ထက်ကြီးသောအခါ နှစ်ဆတိုးလာတိုင်း packet ဆုံးရှုံးမှု ဖြစ်ပေါ်နိုင်သည်။ ထို့ကြောင့် cwnd ကို ssthresh သို့သတ်မှတ်ခြင်းသည် အကောင်းဆုံးဖြစ်ပြီး ၎င်းသည် TCP ကို ပိတ်ဆို့မှုထိန်းချုပ်မှုမုဒ်သို့ပြောင်းပြီး slow-start ကိုအဆုံးသတ်စေမည်ဖြစ်သည်။
နှေးကွေးစွာစတင်ခြင်း၏ နောက်ဆုံးနည်းလမ်းမှာ redundant acks သုံးခုကို တွေ့ရှိပါက TCP သည် မြန်ဆန်သော ပြန်လည်ထုတ်လွှင့်မှုကို လုပ်ဆောင်ပြီး recovery state သို့ ဝင်ရောက်ခြင်းဖြစ်သည်။ (ACK packets သုံးခု အဘယ်ကြောင့်ရှိရသည်ကို ရှင်းရှင်းလင်းလင်းမသိပါက ပြန်လည်ထုတ်လွှင့်သည့် ယန္တရားတွင် သီးခြားရှင်းပြပါမည်။)
ယာဉ်ကြောပိတ်ဆို့မှု ရှောင်ရှားခြင်း
TCP သည် congestion control state သို့ဝင်ရောက်သောအခါ၊ cwnd ကို congestion threshold ssthresh ၏ ထက်ဝက်သို့သတ်မှတ်ထားသည်။ ဆိုလိုသည်မှာ cwnd ၏တန်ဖိုးကို packet segment တစ်ခုကိုလက်ခံရရှိတိုင်း နှစ်ဆတိုး၍မရပါ။ ယင်းအစား၊ cwnd ၏တန်ဖိုးကို transmission တစ်ခုပြီးတိုင်း MSS (maximum packet segment length) တစ်ခုသာတိုးမြှင့်သည့် နှိုင်းရရှေးရိုးစွဲချဉ်းကပ်မှုကို လက်ခံကျင့်သုံးသည်။ ဥပမာအားဖြင့်၊ packet segment ၁၀ ခုကို အသိအမှတ်ပြုသည့်တိုင် cwnd ၏တန်ဖိုးသည် MSS တစ်ခုသာတိုးလာလိမ့်မည်။ ၎င်းသည် linear growth model တစ်ခုဖြစ်ပြီး growth တွင် အထက်ကန့်သတ်ချက်လည်းရှိသည်။ packet loss ဖြစ်ပေါ်သောအခါ၊ cwnd ၏တန်ဖိုးကို MSS သို့ပြောင်းလဲပြီး ssthresh ၏တန်ဖိုးကို cwnd ၏ထက်ဝက်သို့သတ်မှတ်ထားသည်။ သို့မဟုတ် redundant ACK responses ၃ ခုလက်ခံရရှိသောအခါ MSS ၏ကြီးထွားမှုကိုလည်းရပ်တန့်စေလိမ့်မည်။ cwnd ၏တန်ဖိုးကို ထက်ဝက်လျှော့ချပြီးနောက် redundant acks သုံးခုကိုလက်ခံရရှိနေသေးပါက၊ ssthresh ၏တန်ဖိုးကို cwnd ၏တန်ဖိုး၏ထက်ဝက်အဖြစ်မှတ်တမ်းတင်ပြီး fast recovery state သို့ဝင်ရောက်သည်။
အမြန်ပြန်လည်ကောင်းမွန်လာခြင်း
Fast Recovery အခြေအနေမှာ၊ congestion window cwnd ရဲ့တန်ဖိုးကို လက်ခံရရှိတဲ့ redundant ACK တစ်ခုစီအတွက် MSS တစ်ခုတိုးလာစေပါတယ်၊ ဆိုလိုတာကတော့ အစီအစဉ်အတိုင်း မရောက်ရှိတဲ့ ACK ပါ။ ဒါက ကွန်ရက်မှာ အောင်မြင်စွာ ထုတ်လွှင့်ခဲ့တဲ့ packet segment တွေကို အသုံးချပြီး ထုတ်လွှင့်မှုစွမ်းဆောင်ရည်ကို တတ်နိုင်သမျှ မြှင့်တင်ဖို့ပါ။
ပျောက်ဆုံးသွားသော packet segment ၏ ACK ရောက်ရှိလာသောအခါ TCP သည် cwnd ၏တန်ဖိုးကို လျှော့ချပြီးနောက် congestion avoidance state သို့ဝင်ရောက်သည်။ ၎င်းသည် congestion window ၏အရွယ်အစားကို ထိန်းချုပ်ရန်နှင့် network congestion ကို ပိုမိုမတိုးပွားစေရန်ဖြစ်သည်။
ပိတ်ဆို့မှုထိန်းချုပ်မှုအခြေအနေပြီးနောက် အချိန်ကုန်သွားပါက ကွန်ရက်အခြေအနေ ပိုမိုဆိုးရွားလာပြီး TCP သည် ပိတ်ဆို့မှုရှောင်ရှားရေးအခြေအနေမှ နှေးကွေးစွာစတင်သည့်အခြေအနေသို့ ရွှေ့ပြောင်းသွားသည်။ ဤကိစ္စတွင်၊ ပိတ်ဆို့မှုဝင်းဒိုး cwnd ၏တန်ဖိုးကို 1 MSS၊ အများဆုံး packet segment အရှည်ကို သတ်မှတ်ပြီး နှေးကွေးစွာစတင်သည့် threshold ssthresh ၏တန်ဖိုးကို cwnd ၏ထက်ဝက်ဟု သတ်မှတ်သည်။ ၎င်း၏ရည်ရွယ်ချက်မှာ ကွန်ရက်ပြန်လည်ကောင်းမွန်လာပြီးနောက် ထုတ်လွှင့်မှုနှုန်းနှင့် ကွန်ရက်ပိတ်ဆို့မှုအဆင့်ကို ဟန်ချက်ညီစေရန် ပိတ်ဆို့မှုဝင်းဒိုး၏အရွယ်အစားကို တဖြည်းဖြည်းပြန်လည်တိုးမြှင့်ရန်ဖြစ်သည်။
အနှစ်ချုပ်
ယုံကြည်စိတ်ချရသော သယ်ယူပို့ဆောင်ရေးပရိုတိုကောတစ်ခုအနေဖြင့် TCP သည် sequence number၊ acknowledgement၊ retransmission control၊ connection management နှင့် window control တို့ဖြင့် ယုံကြည်စိတ်ချရသော သယ်ယူပို့ဆောင်ရေးကို အကောင်အထည်ဖော်သည်။ ၎င်းတို့တွင် flow control mechanism သည် receiver ၏ အမှန်တကယ်လက်ခံနိုင်စွမ်းအရ sender မှပေးပို့သော data ပမာဏကို ထိန်းချုပ်ပေးပြီး network congestion နှင့် performance degradation ပြဿနာများကို ရှောင်ရှားပေးသည်။ congestion control mechanism သည် sender မှပေးပို့သော data ပမာဏကို ချိန်ညှိခြင်းဖြင့် network congestion ဖြစ်ပေါ်ခြင်းကို ရှောင်ရှားပေးသည်။ congestion window နှင့် sending window ၏ အယူအဆများသည် တစ်ခုနှင့်တစ်ခု ဆက်စပ်နေပြီး sender ရှိ data ပမာဏကို congestion window ၏ အရွယ်အစားကို dynamically ချိန်ညှိခြင်းဖြင့် ထိန်းချုပ်သည်။ Slow start၊ congestion avoidance နှင့် fast recovery တို့သည် TCP congestion control algorithm ၏ အဓိကအစိတ်အပိုင်းသုံးခုဖြစ်ပြီး network ၏ capacity နှင့် congestion degree ကို လိုက်လျောညီထွေဖြစ်အောင် ဗျူဟာအမျိုးမျိုးဖြင့် congestion window ၏ အရွယ်အစားကို ချိန်ညှိပေးသည်။
နောက်အပိုင်းမှာ TCP ရဲ့ ပြန်လည်ထုတ်လွှင့်မှု ယန္တရားကို အသေးစိတ် လေ့လာသွားပါမယ်။ ပြန်လည်ထုတ်လွှင့်မှု ယန္တရားဟာ ယုံကြည်စိတ်ချရတဲ့ ထုတ်လွှင့်မှု ရရှိဖို့အတွက် TCP ရဲ့ အရေးကြီးတဲ့ အစိတ်အပိုင်းတစ်ခု ဖြစ်ပါတယ်။ ပျောက်ဆုံးသွားတဲ့၊ ပျက်စီးသွားတဲ့ ဒါမှမဟုတ် နှောင့်နှေးသွားတဲ့ ဒေတာတွေကို ပြန်လည်ထုတ်လွှင့်ခြင်းအားဖြင့် ယုံကြည်စိတ်ချရတဲ့ ဒေတာထုတ်လွှင့်မှုကို သေချာစေပါတယ်။ ပြန်လည်ထုတ်လွှင့်မှု ယန္တရားရဲ့ အကောင်အထည်ဖော်မှု နိယာမနဲ့ ဗျူဟာကို နောက်အပိုင်းမှာ မိတ်ဆက်ပေးပြီး အသေးစိတ် ခွဲခြမ်းစိတ်ဖြာသွားမှာ ဖြစ်ပါတယ်။ စောင့်မျှော်ကြည့်ရှုပေးကြပါ။
ပို့စ်တင်ချိန်: ၂၀၂၅ ခုနှစ်၊ ဖေဖော်ဝါရီလ ၂၄ ရက်

