Acknowledgement ဆုိတာ ၀န္ခံသေဘာတူျခင္း၊ အသိအမွတ္ျပဳျခင္း ကိုေျပာတာ ပါ။ ဒါေပမယ့္ ........ အခု ကၽြန္ေတာ္ေျပာခ်င္တာက Acknowledgement ရဲ႕ အဓိပၸါယ္ ကိုေျပာခ်င္တာ မဟုတ္ပါဘူး။ OSI Model ရဲ႕ Transport Layer မွာပါ၀င္တဲ့ Acknowledgement အေၾကာင္းကိုေျပာခ်င္တာပါ။ Transport Layer မွာပါ၀င္တဲ႔ Acknowledgement အေၾကာင္းကိုေျပာမွာဆိုေတာ႔ Transport Layer အေၾကာင္းနည္းနည္းေတာ႔
ေျပာဖို႔လိုမယ္ ထင္တယ္ေနာ္။
Transport Layer ဟာ OSI Layer ရဲ႕ Layer(4) ျဖစ္ပါတယ္။ Transport Layer ဟာ Network မွာ အခ်က္အလက္မ်ား သြြားလာမႈကို ထိန္းခ်ဳပ္ေပးျခင္းႏွင့္ အမွားေတြကို Recovery လုပ္ေပးျခင္းတို႔ကို ေဆာင္ရြက္ေပးပါတယ္။ ၎ အျပင္ Transport Layerဟာ Message ေတြကို သင့္ေတာ္တဲ့ အရြယ္ အစားရေအာင္ ပိုင္းပါတယ္။
ဆိုလိုတာ က Data ေတြေပးပို႔တဲ့အခါ ၎ Data ေတြကုိ အကုန္လံုးတစ္ျပဳံၾကီး ေပးပို႔လိုက္တာ မဟုတ္ပဲ ၎ Data ကို Network Medium ကလက္ခံႏိုင္တဲ့ Data Packet Size အျဖစ္အပိုင္းေလးေတြပိုင္းပစ္ပါတယ္။ လက္ခံရာဘက္မွာ ၎ Data Packet အပိုင္းေလးေတြျပန္ေရာက္ၿပီ ဆိုမွ ျပန္လည္စီေပးပါတယ္။ Transport Layer မွာ Connection - Oriented နဲ႔ Connectionless ဆိုတဲ့ Connection Service ႏွစ္မ်ဳိးကို အသံုးျ့ပဳပါတယ္။
၎ Connection Service ႏွစ္မ်ဳိးထဲကမွ Connection - Oriented Services မွာ ပို႔လႊတ္သူနဲ႔ ေပးပို႔သူ တို႔ႏွစ္ခုၾကား Virtual Connection ကို ထူေထာင္ဖို႔ Acknowledgement (သေဘာတူျခင္း၊ လက္ခ့ရရွိျခင္း) နဲ႔ Response (အေျဖတုံ႔ျပန္မႈ) ကို အသံုးျပဳပါတယ္။ ေပးပို႔သူဘက္က Data ေတြ ေပးပို႔လုိက္တဲ့ အခါ လက္ခံရာဘက္က Data ေတြကိုလက္ခံရရွိေၾကာင္း အသိအမွတ္ျပဳ Acknowledgement ကိုသတ္မွတ္ခ်ိန္အတြင္းမွာျပန္ပို႔ေပးရပါတယ္။
ဒါကလည္း အမွားကင္းစင္ေအာင္ ထိန္းခ်ဳပ္တဲ့ နည္းပါပဲ။ ဒီလုိ လက္ခံရာဘက္က Acknowledgement လုပ္ေပးမွ ေပးပို႔သူေတြက သူတို႔ပို႔လိုက္တဲ ့ Data ေတြကို လက္ခံသူေတြကရမရ သိရွိၿပီး လိုအပ္ပါက ေနာက္တစ္ဖန္ျပန္ပို႔ေပး နိုင္ရန္ျဖစ္ပါတယ္။ Acknowledgement ကို အသံုးျပဳရတဲ့ ရည္ရြယ္ခ်က္ကေတာ့ Connection ခ်ိတ္ဆက္မႈေတြကို ေသခ်ာဖို႔အတြက္ပါ။
ဒီလိုဗ်ာ....ကၽြန္ေတာ္ တုိ႔က Data ေတြကို ေပးပို႔တဲ့အခါမွာ ၎ Data ေတြကို Packet ေလးေတြခြဲၿပီး ပို႔တယ္ဆိုတာ အထက္မွာ ေျပာျပခဲ့ ၿပီးသားေနာ္။ ဥပမာ ....Data A ဆိုတဲ့ ရွည္လ်ားတဲ႔ Data ကို Transport Layer ကေန Packet ေလးေတြ (10) ပိုင္း ပိုင္းၿပီးပို႔ လႊတ္လိုက္တယ္ ဆိုၾကပါစို႔။ လက္ခံရာ ဘက္က Packet ေလးေတြတစ္ခုရရွိျပီးတိုင္း ေပးပို႔သူဆီကို လက္ခံရရွိျပီးေၾကာင္း Acknowledgement အေၾကာင္းျပန္ရပါတယ္။ အဲဒီလိုေတြပို႔ရင္းနဲ႔ တစ္ခါတစ္ရံမွာ တစ္ခ်ိဳ႕ packet ေတြဟာ လက္ခံရာဘက္ကို ေရာက္ရွိမလာပါဘူး။ တစ္ခ်ိဳ႕ packet ေတြက်လည္း Error ပါေနတတ္ပါတယ္။
ဒီလိုအခါမ်ိဳးေတြမွာဆိုရင္ လက္ခံရာဘက္က သတ္မွတ္ခ်ိန္အတြင္း Acknowledge အေၾကာင္းမျပန္ဘူးဆိုရင္ ေပးပို႔သူဘက္ကေန ၄င္း packet ကို Resend (ျပန္ပို႔) ေပးရပါတယ္။ ဒီေနရာမွာ Data A ၾကီးတစ္ခုလံုးကို ျပန္ပို႔ေပးရတာမဟုတ္ပါဘူး။ လက္ခံရာဘက္ကို မေရာက္ရွိတဲ႔ (သို႔) Error ပါေနတဲ႔ packet ကိုပဲ ျပန္ပို႔ေပးရတာပါ။ ၎ မရရွိတဲ့ Error ပါေနတဲ့ Packet ေလးကိုပဲ ေပးပို႔လိုက္ရုံပါ။
ဆိုလိုတာက ဗ်ာ Data A ၾကီးတစ္ခုလံုးကို ျပန္ၿပီးပို႔ စရာမလိုပဲနဲ႔ လက္ခံရာဘက္ကမရရွိတဲ့ Packet ေလးကိုပဲ ျပန္ၿပီး ေပးပို႔ရတဲ့ အတြက္ Performance ပိုၿပီး ေကာင္းပါတယ္။ Connectionless ကိုအသံုးျပဳတဲ႔ connection ေတြမွာဆိုရင္ Acknowledgement ကိုအသံုးမျပဳပါဘူး။ အဲဒီလို Acknowledgement ျပန္မပို႔ဘူးဆိုလို႔ရွိရင္ ေပးပို႔သူဘက္က ဘယ္ Packet ကို လက္ခံရရွိလဲ ၊ ဘယ္ Packet ကေတာ့ ျဖင့္ Error ေတြပါေနလဲ (လက္ခံမရရွိဘူးလား) ဆိုတာေတြကို မသိရွိဘဲနဲ႔ Packet ေလးေတြကို ဆက္တိုက္ပို႔လႊတ္လိုက္ပါတယ္။
Error မပါတဲ့ Data ဆိုရင္ေတာ့ ျပႆနာမရွိပါဘူး၊ ပိုျပီးေတာင္ performance ေကာင္းပါေသးတယ္။ ဒါေပမယ့္ ၎ Data ထဲက Data Packet တစ္ခုမွာ Error ပါေနတာပဲျဖစ္ျဖစ္ ၊ မေရာက္ရွိတာပဲျဖစ္ျဖစ္ တစ္ခုခုျဖစ္ခဲ႔မယ္ဆိုရင္ Acknowledgement မျပန္တဲ့ အတြက္ ဘယ္ packet ကိုျပန္ပို႔ရမယ္မွန္းမသိတဲ႔အတြက္ ၎ Data ၾကီးတစ္ခုလံုးကိုု ျပန္ၿပီး ေပးပို႔ရမွာျဖစ္ပါတယ္။ Data တစ္ခုလံုးၾကီးကို အစအဆံုးျပန္ၿပီး ပို႔ရတဲ့ အတြက္ Performance က်သြားတတ္ပါတယ္။ Acknowledgement ကို အသံုးျပဳရတဲ့ ရည္ရြယ္ခ်က္ကေတာ့ Data ေတြကို ေသခ်ာစြာေရာက္ရွိဖို႔နဲ႔ အမွားကင္းစြာေရာက္ရွိဖို႔ အတြက္ျဖစ္ပါတယ္။
Source by :http://www.onlineictreader.com/
ေျပာဖို႔လိုမယ္ ထင္တယ္ေနာ္။
Transport Layer ဟာ OSI Layer ရဲ႕ Layer(4) ျဖစ္ပါတယ္။ Transport Layer ဟာ Network မွာ အခ်က္အလက္မ်ား သြြားလာမႈကို ထိန္းခ်ဳပ္ေပးျခင္းႏွင့္ အမွားေတြကို Recovery လုပ္ေပးျခင္းတို႔ကို ေဆာင္ရြက္ေပးပါတယ္။ ၎ အျပင္ Transport Layerဟာ Message ေတြကို သင့္ေတာ္တဲ့ အရြယ္ အစားရေအာင္ ပိုင္းပါတယ္။
ဆိုလိုတာ က Data ေတြေပးပို႔တဲ့အခါ ၎ Data ေတြကုိ အကုန္လံုးတစ္ျပဳံၾကီး ေပးပို႔လိုက္တာ မဟုတ္ပဲ ၎ Data ကို Network Medium ကလက္ခံႏိုင္တဲ့ Data Packet Size အျဖစ္အပိုင္းေလးေတြပိုင္းပစ္ပါတယ္။ လက္ခံရာဘက္မွာ ၎ Data Packet အပိုင္းေလးေတြျပန္ေရာက္ၿပီ ဆိုမွ ျပန္လည္စီေပးပါတယ္။ Transport Layer မွာ Connection - Oriented နဲ႔ Connectionless ဆိုတဲ့ Connection Service ႏွစ္မ်ဳိးကို အသံုးျ့ပဳပါတယ္။
၎ Connection Service ႏွစ္မ်ဳိးထဲကမွ Connection - Oriented Services မွာ ပို႔လႊတ္သူနဲ႔ ေပးပို႔သူ တို႔ႏွစ္ခုၾကား Virtual Connection ကို ထူေထာင္ဖို႔ Acknowledgement (သေဘာတူျခင္း၊ လက္ခ့ရရွိျခင္း) နဲ႔ Response (အေျဖတုံ႔ျပန္မႈ) ကို အသံုးျပဳပါတယ္။ ေပးပို႔သူဘက္က Data ေတြ ေပးပို႔လုိက္တဲ့ အခါ လက္ခံရာဘက္က Data ေတြကိုလက္ခံရရွိေၾကာင္း အသိအမွတ္ျပဳ Acknowledgement ကိုသတ္မွတ္ခ်ိန္အတြင္းမွာျပန္ပို႔ေပးရပါတယ္။
ဒါကလည္း အမွားကင္းစင္ေအာင္ ထိန္းခ်ဳပ္တဲ့ နည္းပါပဲ။ ဒီလုိ လက္ခံရာဘက္က Acknowledgement လုပ္ေပးမွ ေပးပို႔သူေတြက သူတို႔ပို႔လိုက္တဲ ့ Data ေတြကို လက္ခံသူေတြကရမရ သိရွိၿပီး လိုအပ္ပါက ေနာက္တစ္ဖန္ျပန္ပို႔ေပး နိုင္ရန္ျဖစ္ပါတယ္။ Acknowledgement ကို အသံုးျပဳရတဲ့ ရည္ရြယ္ခ်က္ကေတာ့ Connection ခ်ိတ္ဆက္မႈေတြကို ေသခ်ာဖို႔အတြက္ပါ။
ဒီလိုဗ်ာ....ကၽြန္ေတာ္ တုိ႔က Data ေတြကို ေပးပို႔တဲ့အခါမွာ ၎ Data ေတြကို Packet ေလးေတြခြဲၿပီး ပို႔တယ္ဆိုတာ အထက္မွာ ေျပာျပခဲ့ ၿပီးသားေနာ္။ ဥပမာ ....Data A ဆိုတဲ့ ရွည္လ်ားတဲ႔ Data ကို Transport Layer ကေန Packet ေလးေတြ (10) ပိုင္း ပိုင္းၿပီးပို႔ လႊတ္လိုက္တယ္ ဆိုၾကပါစို႔။ လက္ခံရာ ဘက္က Packet ေလးေတြတစ္ခုရရွိျပီးတိုင္း ေပးပို႔သူဆီကို လက္ခံရရွိျပီးေၾကာင္း Acknowledgement အေၾကာင္းျပန္ရပါတယ္။ အဲဒီလိုေတြပို႔ရင္းနဲ႔ တစ္ခါတစ္ရံမွာ တစ္ခ်ိဳ႕ packet ေတြဟာ လက္ခံရာဘက္ကို ေရာက္ရွိမလာပါဘူး။ တစ္ခ်ိဳ႕ packet ေတြက်လည္း Error ပါေနတတ္ပါတယ္။
ဒီလိုအခါမ်ိဳးေတြမွာဆိုရင္ လက္ခံရာဘက္က သတ္မွတ္ခ်ိန္အတြင္း Acknowledge အေၾကာင္းမျပန္ဘူးဆိုရင္ ေပးပို႔သူဘက္ကေန ၄င္း packet ကို Resend (ျပန္ပို႔) ေပးရပါတယ္။ ဒီေနရာမွာ Data A ၾကီးတစ္ခုလံုးကို ျပန္ပို႔ေပးရတာမဟုတ္ပါဘူး။ လက္ခံရာဘက္ကို မေရာက္ရွိတဲ႔ (သို႔) Error ပါေနတဲ႔ packet ကိုပဲ ျပန္ပို႔ေပးရတာပါ။ ၎ မရရွိတဲ့ Error ပါေနတဲ့ Packet ေလးကိုပဲ ေပးပို႔လိုက္ရုံပါ။
ဆိုလိုတာက ဗ်ာ Data A ၾကီးတစ္ခုလံုးကို ျပန္ၿပီးပို႔ စရာမလိုပဲနဲ႔ လက္ခံရာဘက္ကမရရွိတဲ့ Packet ေလးကိုပဲ ျပန္ၿပီး ေပးပို႔ရတဲ့ အတြက္ Performance ပိုၿပီး ေကာင္းပါတယ္။ Connectionless ကိုအသံုးျပဳတဲ႔ connection ေတြမွာဆိုရင္ Acknowledgement ကိုအသံုးမျပဳပါဘူး။ အဲဒီလို Acknowledgement ျပန္မပို႔ဘူးဆိုလို႔ရွိရင္ ေပးပို႔သူဘက္က ဘယ္ Packet ကို လက္ခံရရွိလဲ ၊ ဘယ္ Packet ကေတာ့ ျဖင့္ Error ေတြပါေနလဲ (လက္ခံမရရွိဘူးလား) ဆိုတာေတြကို မသိရွိဘဲနဲ႔ Packet ေလးေတြကို ဆက္တိုက္ပို႔လႊတ္လိုက္ပါတယ္။
Error မပါတဲ့ Data ဆိုရင္ေတာ့ ျပႆနာမရွိပါဘူး၊ ပိုျပီးေတာင္ performance ေကာင္းပါေသးတယ္။ ဒါေပမယ့္ ၎ Data ထဲက Data Packet တစ္ခုမွာ Error ပါေနတာပဲျဖစ္ျဖစ္ ၊ မေရာက္ရွိတာပဲျဖစ္ျဖစ္ တစ္ခုခုျဖစ္ခဲ႔မယ္ဆိုရင္ Acknowledgement မျပန္တဲ့ အတြက္ ဘယ္ packet ကိုျပန္ပို႔ရမယ္မွန္းမသိတဲ႔အတြက္ ၎ Data ၾကီးတစ္ခုလံုးကိုု ျပန္ၿပီး ေပးပို႔ရမွာျဖစ္ပါတယ္။ Data တစ္ခုလံုးၾကီးကို အစအဆံုးျပန္ၿပီး ပို႔ရတဲ့ အတြက္ Performance က်သြားတတ္ပါတယ္။ Acknowledgement ကို အသံုးျပဳရတဲ့ ရည္ရြယ္ခ်က္ကေတာ့ Data ေတြကို ေသခ်ာစြာေရာက္ရွိဖို႔နဲ႔ အမွားကင္းစြာေရာက္ရွိဖို႔ အတြက္ျဖစ္ပါတယ္။
Source by :http://www.onlineictreader.com/
0 comments:
Post a Comment