ဖိုင်လွှဲပြောင်းမှု ပရိုတိုကော (FTP)

ဖိုင်လွှဲပြောင်းမှု ပရိုတိုကော (FTP) ဆိုသည်မှာ ကွန်ပျူတာ ကွန်ရက်ပေါ်ရှိ ဆာဗာ (server) တစ်ခုမှ ကလိုင်းယင့် (client) တစ်ခုထံသို့ ကွန်ပျူတာဖိုင်များ လွှဲပြောင်းပေးပို့ရာတွင် အသုံးပြုသည့် စံသတ်မှတ်ထားသော ဆက်သွယ်ရေး ပရိုတိုကော တစ်ခုဖြစ်သည်။ FTP ကို ကလိုင်းယင့်-ဆာဗာ မော်ဒယ် (client-server model) ဗိသုကာစနစ်ပေါ်တွင် အခြေခံ တည်ဆောက်ထားပြီး၊ ကလိုင်းယင့်နှင့် ဆာဗာအကြား သီးခြားစီခွဲထားသော ထိန်းချုပ်မှုဆိုင်ရာ ချိတ်ဆက်မှု (control connection) နှင့် ဒေတာဆိုင်ရာ ချိတ်ဆက်မှု (data connection) တို့ကို အသုံးပြုကာ လုပ်ဆောင်ပါသည်။ 

FTP အသုံးပြုသူများသည် ပုံမှန်အားဖြင့် အသုံးပြုသူအမည် (username) နှင့် စကားဝှက် (password) တို့ပါဝင်သော စာသားသက်သက် (plain-text) အကောင့်ဝင်ရောက်ခြင်း ပရိုတိုကောကို အသုံးပြု၍ စစ်မှန်ကြောင်း အတည်ပြု (authenticate) လေ့ရှိသည်။ သို့သော် ဆာဗာဘက်မှ ခွင့်ပြုရန် ပြင်ဆင်သတ်မှတ်ထားပါက အမည်မဖော်ပြဘဲ (anonymously) လည်း ချိတ်ဆက်အသုံးပြုနိုင်ပါသည်။ အသုံးပြုသူအမည်နှင့် စကားဝှက်ကို ကာကွယ်ပေးရန်နှင့် ပါဝင်သော အချက်အလက်များကို ကုဒ်ဝှက် (encrypt) ရန်အတွက် လုံခြုံသော လွှဲပြောင်းမှုဖြစ်စေရန် FTP ကို SSL/TLS (FTPS) ဖြင့် လုံခြုံရေးမြှင့်တင်လေ့ရှိသည်၊ သို့မဟုတ် SSH File Transfer Protocol (SFTP) ဖြင့် အစားထိုး အသုံးပြုလေ့ရှိပါသည်။
thumb

ပထမဆုံး FTP ကလိုင်းယင့် အက်ပ်လီကေးရှင်းများသည် စက်လည်ပတ်ရေးစနစ်များ (operating systems) တွင် ဂရပ်ဖစ်အသွင်အပြင်ပါဝင်သော အသုံးပြုသူ အင်တာဖေ့စ်များ (graphical user interfaces - GUI) မပေါ်ပေါက်မီကပင် ရေးဆွဲဖန်တီးထားသော ကွန်မန်းလိုင်း (command-line) ပရိုဂရမ်များ ဖြစ်ကြပြီး၊ ယနေ့တိုင် ဝင်းဒိုး (Windows)၊ ယူနစ် (Unix) နှင့် လီနပ်စ် (Linux) စက်လည်ပတ်ရေးစနစ် အများစုတွင် ထည့်သွင်းပေးထားဆဲ ဖြစ်သည်။

၂၀၂၁ ခုနှစ် ဇန်နဝါရီလတွင် FTP ပရိုတိုကောကို အထောက်အပံ့ပေးမှုအား Google Chrome (ဗားရှင်း ၈၈ မှစတင်၍)  နှင့် Firefox (ဗားရှင်း ၈၈.၀ မှစတင်၍)  တို့တွင် ပိတ်ထားခဲ့သည်။ ၂၀၂၁ ခုနှစ် ဇူလိုင်လတွင် Firefox ၉၀ သည် FTP ကို လုံးဝ ဖယ်ရှားလိုက်သည်။

### သမိုင်းကြောင်း  
ဖိုင်လွှဲပြောင်းမှု ပရိုတိုကောအတွက် မူလ သတ်မှတ်ချက်များကို အဘေး ဘူရှန် (Abhay Bhushan) မှ ရေးသားခဲ့ပြီး ၁၉၇၁ ခုနှစ်၊ ဧပြီလ ၁၆ ရက်နေ့တွင်  အမည်ဖြင့် ထုတ်ပြန်ခဲ့သည်။ ၁၉၈၀ ခုနှစ်အထိ၊ FTP သည် TCP/IP ၏ ရှေ့ပြေးစနစ်ဖြစ်သော NCP ပေါ်တွင် လည်ပတ်ခဲ့သည်။

ထို့နောက် အဆိုပါ ပရိုတိုကောကို TCP/IP ဗားရှင်းဖြင့် အစားထိုးခဲ့သည်။ ၎င်းတို့မှာ  (၁၉၈၀ ခုနှစ်၊ ဇွန်လ) နှင့် လက်ရှိအသုံးပြုနေသော စံသတ်မှတ်ချက်ဖြစ်သည့်  (၁၉၈၅ ခုနှစ်၊ အောက်တိုဘာလ) တို့ဖြစ်သည်။ အဆိုပြုထားသော စံသတ်မှတ်ချက် အများအပြားသည်  ကို ပြင်ဆင်မွမ်းမံထားသည်။ ဥပမာအားဖြင့်  (၁၉၉၄ ခုနှစ်၊ ဖေဖော်ဝါရီလ) သည် Firewall များနှင့် အဆင်ပြေစွာ ချိတ်ဆက်နိုင်သော FTP (passive mode) ကို လုပ်ဆောင်ပေးနိုင်ပြီး၊  (၁၉၉၇ ခုနှစ်၊ ဇွန်လ) သည် လုံခြုံရေးဆိုင်ရာ တိုးချဲ့မှုများကို အဆိုပြုထားကာ၊  (၁၉၉၈ ခုနှစ်၊ စက်တင်ဘာလ) သည် IPv6 အတွက် အထောက်အပံ့ ထည့်သွင်းပေးထားပြီး ပုံစံသစ် passive mode အမျိုးအစားတစ်ခုကို သတ်မှတ်ပြဋ္ဌာန်းပေးထားသည်။

### ပရိုတိုကော ခြုံငုံသုံးသပ်ချက် 
#### ဆက်သွယ်ရေးနှင့် ဒေတာလွှဲပြောင်းမှု 
FTP သည် active သို့မဟုတ် passive မုဒ် (mode) များဖြင့် လည်ပတ်နိုင်ပြီး၊ အဆိုပါ မုဒ်များသည် ဒေတာဆိုင်ရာ ချိတ်ဆက်မှုကို မည်ကဲ့သို့ တည်ဆောက်မည်ဆိုသည်ကို ဆုံးဖြတ်ပေးပါသည်။

(ဤနေရာတွင် သုံးနှုန်းထားသော "မုဒ် (mode)" ၏ ဆိုလိုရင်းမှာ FTP ပရိုတိုကောရှိ MODE ကွန်မန်း (command) ၏ အဓိပ္ပာယ်နှင့် ကွဲပြားပါသည်။)

* Active မုဒ်တွင် ကလိုင်းယင့်သည် ဆာဗာမှ ဝင်ရောက်လာမည့် ဒေတာဆိုင်ရာ ချိတ်ဆက်မှုများ (incoming data connections) ကို port M တွင် စတင်စောင့်ကြည့် (listen) ပါသည်။ ၎င်းသည် မည်သည့် port တွင် စောင့်ကြည့်နေကြောင်း ဆာဗာအား အသိပေးရန်အတွက် FTP ကွန်မန်းဖြစ်သော PORT M ကို ပေးပို့ပါသည်။ ထို့နောက် ဆာဗာသည် ၎င်း၏ port 20 ဖြစ်သော FTP ဆာဗာ ဒေတာ port မှတစ်ဆင့် ကလိုင်းယင့်ထံသို့ ဒေတာချန်နယ် (data channel) တစ်ခုကို စတင်ချိတ်ဆက်ပါသည်။
* ကလိုင်းယင့်သည် firewall နောက်ကွယ်တွင် ရှိနေပြီး ဝင်ရောက်လာသော TCP ချိတ်ဆက်မှုများကို လက်မခံနိုင်သော အခြေအနေမျိုးတွင် passive မုဒ်ကို အသုံးပြုနိုင်ပါသည်။ ဤမုဒ်တွင် ကလိုင်းယင့်သည် ဆာဗာထံသို့ PASV ကွန်မန်း ပေးပို့ရန်အတွက် ထိန်းချုပ်မှုဆိုင်ရာ ချိတ်ဆက်မှု (control connection) ကို အသုံးပြုပြီး၊ ဆာဗာထံမှ ဆာဗာ၏ IP လိပ်စာနှင့် port နံပါတ်တို့ကို လက်ခံရယူပါသည်။ ထို့နောက် ကလိုင်းယင့်သည် ၎င်းလက်ခံရရှိထားသော ဆာဗာ IP လိပ်စာနှင့် port နံပါတ်ဆီသို့ ကျပန်း ကလိုင်းယင့် port (arbitrary client port) တစ်ခုမှတစ်ဆင့် ဒေတာဆိုင်ရာ ချိတ်ဆက်မှုတစ်ခု ဖွင့်လှစ်ရန်အတွက် အဆိုပါအချက်အလက်များကို အသုံးပြုပါသည်။

IPv6 ကို အထောက်အပံ့ပေးနိုင်ရန်အတွက် ၁၉၉၈ ခုနှစ်၊ စက်တင်ဘာလတွင် ဤမုဒ် နှစ်မျိုးစလုံးကို အဆင့်မြှင့်တင်ခဲ့သည်။ ထိုအချိန်တွင် passive မုဒ်၌ ထပ်မံပြောင်းလဲမှုများ ပြုလုပ်ခဲ့ပြီး ၎င်းကို တိုးချဲ့ထားသော passive မုဒ် (extended passive mode) အဖြစ် အဆင့်မြှင့်တင်ခဲ့သည်။

### ကိုးကား