3/30/2014

TCP/IP Protocol Basic [articles]

ကြ်န္ေတာ္တုိ႔ IT ေလာကထဲမွာ TCP/IP ဆုိတာ မျဖစ္မေနသိထားသင့္တဲ့ အေျခခံ Concept တစ္ခုပါပဲ။ Networking သမားေတြဆုိရင္ သိကုိသိထားရမွာပါ။ ဟက္ကာျဖစ္ခ်င္ရင္လည္း ဒီ TCP/IP အေၾကာင္းကုိနားလည္ထားရမွာလုိ႔ ဖတ္ဖူးတယ္။ ဟုတ္/မဟုတ္ေတာ့ ကြ်န္ေတာ္လည္း မသိပါဘူး။ TCP/IP ရဲ႕အရွည္ေကာက္ကေတာ့ Transmission Control Protocol/Internet Protocol ျဖစ္ပါတယ္။ TCP/IP Protocol ေၾကာင့္သာ ကြ်န္ေတာ္တုိ႔ LAN မွသည္ Internet ဆီသုိ႕၊ Windows မွသည္ Linux ကြန္ပ်ဴတာေတြဆီ အဆင္ေျပေျပ Communication လုပ္ႏုိင္တာပါ။ TCP/IP သာမရွိခဲ့ရင္ Internet ဆုိတာလည္းရွိလာမွာ မဟုတ္ပါဘူး။ TCP/IP ကုိ ARPAnet (Advanced Research Project Agency) ကေန develop လုပ္ခဲ့တာျဖစ္ပါတယ္။ စစ္ဖက္ဆုိင္ရာက ကြန္ပ်ဴတာေတြအခ်င္းခ်င္း အဆင္ေျပေျပခ်ိတ္ဆက္ႏုိင္ဖုိ႔ တီထြင္ခဲ့တာျဖစ္ပါသတဲ့။ အဲဒီတုန္းကေတာ့ Network Control Protocol (NCP) လုိ႔သာေခၚပါေသးတယ္။ ေနာက္မွ TCP ျဖစ္လာတယ္ဆုိပါေတာ့။ ARPA ဆုိတာ Internet ရဲ႕ဖခင္ပါပဲ။ ဒါကေတာ့ TCP/IP ရဲ႕သမုိင္းအက်ဥ္းျဖစ္ပါတယ္။

TCP/IP Protocol Suite
Protocol ဆုိတာကေတာ့ ကြ်န္ေတာ္တုိ႔နားလည္လြယ္ေအာင္ေျပာရရင္ Standard (စံသတ္မွတ္ခ်က္) တစ္ခုပါပဲ။ ဥပမာ ျမန္မာႏုိင္ငံမွာ ေငြေၾကးအတြက္ က်ပ္(Kyat) ကုိ Standard အျဖစ္အသုံးျပဳတယ္။ ဒါေပမယ့္ သူမ်ားႏုိင္ငံမွာသြားျပီး ျမန္မာေငြက်ပ္ကုိအသုံးျပဳလုိ႔မရဘူး။ ႏုိင္ငံျခားမွာ ျမန္မာစကားနဲ႔သြားေျပာလုိ႔မရဘူး။ Global Language ျဖစ္တဲ့ English ကုိေျပာရတယ္။ ဟုိးအရင္တုန္းကေတာ့ Computer ေလာကမွာလည္း ဒီလုိေပါ့ဗ်ာ။ Apple ကလည္း Apple Talk ဆုိတဲ့ Protocol ကုိသုံးတယ္။ Novel အဖြဲ႕ကလည္း သူတုိ႔ရဲ႕ IPX/SPX (Internetwork Package Exchange/Sequence Package Exchange) ဆုိတဲ့ protocol ကုိတစ္ေယာက္တစ္မ်ဳိးစီအသုံးျပဳၾကတာ။ ဘာေတြျဖစ္လာသလဲဆုိေတာ့ Apple Device အခ်င္းခ်င္းဆက္သြယ္မယ္ဆုိရင္ OK တယ္။ အျခား Novel, Microsoft Device ေတြနဲ႔ခ်ိတ္မယ္မယ္ဆုိ မရေတာ့ဘူး။ ျမန္မာစကားကုိ ကုိရီးယားသြားေျပာလုိ႔ နားမလည္သလုိေပါ့ဗ်ာ။ ဒါေၾကာင့္ စံသတ္မွတ္ခ်က္ Protocol ဆုိတာလုိအပ္လာပါတယ္။
TCP/IP Protocol မေျပာခင္မွာ ကြ်န္ေတာ္တုိ႔အေျခံက်တဲ့ OSI 7 Layer အေၾကာင္းကုိ သိထားရမယ္။ OSI 7 Layer ကုိေအာက္ပါအတုိင္းေတြ႕ႏုိင္ပါတယ္။
Application Layer
Presentation Layer
Session Layer
Transport Layer
Network Layer
Data-Link Layer
Physical Layer


OSI 7 Layer အေၾကာင္းကုိ သေဘာေပါက္ဖုိ႔ ကြ်န္ေတာ္အရင္ ေရးထားတဲ့ OSI 7 Layer [Explain] ဆုိတဲ့ Thread မွာအေသးစိတ္ျပန္ဖတ္ဖုိ႔လုိပါလိမ့္မယ္။ OSI 7 Layer ကုိနားလည္သြားျပီဆုိရင္ TCP/IP ကုိဆက္သြားမယ္။ OSI 7 Layer မွာတုန္းက layer 7 ခုျဖစ္ေပမယ့္ TCP/IP Protocol မွာ Layer 4 ခုပဲျဖစ္သြားပါတယ္။ ဒါေတြကေတာ့ ေအာက္ပါအတုိင္းျဖစ္ပါတယ္။
Application Layer (Application+Prensation+Session)
Transport Layer
Network Layer
Data-Link Layer (Data-Link+Physical)


Application, Prensation, Session Layer 3 ခုေပါင္းျပီး Application Layer အျဖစ္သတ္မွတ္ပါတယ္။ ေနာက္ Data-Link, Physical Layer 2 ခုကုိ Data-Link Layer အျဖစ္သတ္မွတ္လုိက္ပါတယ္။ ဒါေၾကာင့္ TCP/IP Protocol Suite မွာ layer 4 ခုရွိတယ္လုိ႔ ေျပာႏုိင္ပါျပီ။ ေအာက္မွာ Layer 4 ခုအေၾကာင္းကုိ ေဆြးေႏြးၾကည့္ရေအာင္။

Application Layer
ဒီ Layer ကေန ကြ်န္ေတာ္တုိ႔ အစျပဳရတာေပါ့ဗ်ာ။ ဥပမာ ကြ်န္ေတာ္တုိ႔ Gmail ကေန Mail တစ္ေစာင္ပုိ႔လုိက္တာမ်ဳိး။ FTP ကေန ဖုိင္တစ္ခု Download ဆြဲလုိက္တာမ်ဳိး၊ Facebook သုံးေနတာမ်ဳိး၊ တစ္ခုခုျဖစ္ႏုိင္ပါတယ္။ Application Layer အတြက္ နာမည္ၾကီး protocol ေတြကေတာ့ ေအာက္ပါအတုိင္းေတြ႕ရမွာပါ။
HTTP (Hypertext Transfer Protocol)
FTP (File Transfer Protocol)
SMTP (Simple Mail Transfer Protocol)
SNMP (Simple Network Management Protocol)


Transport Layer
Transport Layer ဆုိတာ host ႏွစ္ခုၾကားက data ေတြစီးဆင္းဖုိ႔ ပင္မေက်ာရုိးလုိ႔ေျပာရမွာပါ။ Application Layer ကေနပုိ႔လုိက္တဲ့ data ေတြကုိ ဒီ layer ကပုိ႔ေဆာင္ေပးရပါတယ္။ Transport Layer အတြက္ protocol ေတြအမ်ားၾကီးရွိတဲ့အထဲက အသုံးမ်ားဆုံး protocol ကေတာ့ TCP နဲ႔ UDP (User Datagram Protocol) ပဲျဖစ္ပါတယ္။ ဒီေနရာမွာTCP protocol ဆုိတာ ‘reliable connection’ လုိ႔သတ္မွာတ္ျပီး ဥပမာ ကြ်န္ေတာ္တုိ႔ ဖုိင္ေတြကုိ ေဒါင္းလုတ္ဆြဲေနရင္ တကယ္လုိ႔ၾကားထဲက package ေတြပုိ႔ရာမွာ error ရွိခဲ့ရင္ ျပန္စစ္ျပီး ၾကားမွာ ေဒတာဆုံးရွဳံးမွဳမရွိေအာင္ ကုိင္တြယ္ေပးပါတယ္။ UDP ဆုိတာကေတာ့ ခုနကလုိ ၾကားထဲမွာ တစ္ခုခု error ရွိေနေပမယ့္လည္း Ignore လုပ္ပစ္ျပီး လက္ခံတဲ့ protocol အျဖစ္သတ္မွတ္ေစပါတယ္။ ဒါကုိ ‘unreliable connection’ လုိ႔ေခၚပါတယ္။

Network Layer
ဒီ Layer ကေတာ့ Internet Layer အျဖစ္လူသိမ်ားပါတယ္။ Network Layer မွာ IP Address ေတြပါလာမယ္။ ေနာက္အက်ယ္ခ်ဲျပီး ARP လုိ႔ေခၚတဲ့ Address Resolution Protocol ေတြပါလာမယ္။ ေနာက္ Internet Control Message Protocol (ICMP), Internet Group Management Protocol (IGMP) ဒါေတြပါလာမယ္။ ICMP Protocol ဆုိတာ ကြ်န္ေတာ္တုိ႔သုံးေနက် ping Command ျဖစ္ပါတယ္။

Data-Link Layer
Network Interface Layer လုိ႔လည္းေခၚပါတယ္။ ဒီ layer မွာ OS မွာပါတဲ့ Device Driver ေတြပါဝင္မယ္။ Network Interface Card (NIC) ေတြပါဝင္မယ္။ Device Driver နဲ႔ NIC ေတြက Cable ကေနပုိ႔လုိက္တဲ့ ေဒတာေတြကုိ အျခား ကြန္ပ်ဴတာေတြဆီကုိ Communication လုပ္ရမွာ အဆင္ေျပေစဖုိ႔ ထိန္းေက်ာင္းတာျဖစ္ပါတယ္။

TCP/IP Model
ကြ်န္ေတာ္တုိ႔ ေပၚမွာ layer ေတြအေၾကာင္း ေလ့လာျပီးေနာက္ Computer ႏွစ္ခု TCP/IP Model အေနနဲ႔ ဘယ္လုိဆက္သြယ္သလဲဆုိတာ ေလ့လာၾကည့္မယ္။ ဒါကေတာ့ client-server architecture အျဖစ္လူသိမ်ားတဲ့ ပုံစံပါပဲ။ 

ပုံမွာအတုိင္း ကြ်န္ေတာ္တုိ႔ PC ကေန data ေတြ http protocol ကေန Transport layer ဆီကုိသြားပါမယ္။ ေနာက္ TCP ကေန destination port, sequence number, စတဲ့ information ေတြကုိ assign လုပ္ပါမယ္။ IP Layer မွာေတာ့ Transport layer ကေနလာတဲ့ information ေတြကုိသူရဲ႕ သက္ဆုိင္ရာ information ေတြထပ္ေပါင္းလုိက္ပါတယ္။ source IP Address, Destination IP ဘာညာေပါ့။ ကဲ ေနာက္ဆုံး NIC ေတြက သက္ဆုိင္ရာ MAC Address ေတြကုိ Ethernet Network ကေန data ေတြပုိ႔မယ္။ ဟုိလက္ခံမယ့္ server ဘက္မွာလည္း အရင္ဆုံး Data-link layer ကေန information ေတြကုိအရင္ဖတ္မွာေပါ့ေနာ္။ ဒီလုိပဲ Network Layer, Transport Layer, Application layer ကုိျဖတ္ျပီး ေနာက္ဆုံး target (webserver) ဆီကုိေရာက္သြားပါျပီ။ ေနာက္တဖန္ server ကေန ခုနကလုိပဲ layer အဆင့္ဆင့္ကုိျဖတ္ျပီး webserver ကေန PC ဆီကုိျပန္သြားပါမယ္။ ဒါကေတာ့ TCP/IP အလုပ္လုပ္တဲ့ပုံစံအတုိခ်ဳပ္ေပါ့ဗ်ာ။ အေသးစိတ္ေျပာမယ္ဆုိရင္ ဒီပုိ႔စ္နဲ႔လုံေလာက္မွာမဟုတ္လုိ႔ပါ။ ဒီေလာက္ဆုိရင္ TCP/IP အေျခခံသေဘာတရားကုိ နားလည္သြားမယ္လုိ႔ေမ်ာ္လင့္ပါတယ္။

Ref: TCP/IP Foundations (Andrew G. Blank), thegeekstuff.com
http://www.4sectors.com/forum/showthread.php?tid=1765
Read more »

Reverse Engineering [article]

In Brief
Reverse Engineering ဆုိတာကုိ Reverse Engineering လုိ႔ပဲမွတ္ထားတာေကာင္းပါတယ္။ တခါတေလ Computer Term ေတြကုိျမန္မာလုိတုိက္ရုိက္ျပန္ရင္ ကဂ်ဳိးကေဂ်ာင္ႏုိင္လြန္းပါတယ္။ Reverse Engineering ဆုိတာ Device ဒါမွမဟုတ္ System တစ္ခုရဲ႕ Structure ကုိ Analysis လုပ္ျခင္းလုိ႔ ေယဘုယ်အားျဖင့္သတ္မွတ္ႏုိင္ပါတယ္။ဥပမာဗ်ာ ေလယာဥ္တစ္ခုရဲ႕တည္ေဆာက္ပုံကုိ ေသခ်ာနားလည္ဖုိ႔ အဲဒီေလယာဥ္ကုိ ျဖဳတ္ျပီး Analysis လုပ္မယ္။ disassembling လုိ႔ေခၚပါတယ္။ ေဆာ့ဝဲလ္ေတြကုိ Crack တယ္ဆုိတာလည္း ဒီသေဘာတရားပါပဲ။ ရည္ရြယ္ခ်က္ကေတာ့ အဲဒီ Hardware, Device, Tool တစ္ခုရဲ႕ အားနည္းခ်က္ (bug) ကုိရွာေဖြဖုိ႔၊ ပုိေကာင္းတဲ့ေနာက္တစ္ခုထပ္ထြင္ႏုိင္ဖုိ႔အတြက္ပါ။ Reverse Engineering ေၾကာင့္ ကြ်န္ေတာ္တုိ႔ ပုိေကာင္းတဲ့ ေမာ္ဒယ္ျမင့္ေလယာဥ္ေတြ။ ေဆာ့ဝဲလ္ဗားရွင္းေတြ၊ ထြက္လာတာေပါ့ေနာ္။


Reasons for reverse engineering:
Interfacing- မတူညီတဲ့ System ႏွစ္ခုကုိ ဆက္သြယ္ေပးဖုိ႔ ၾကားခံစနစ္အျဖစ္အသုံးခ်ရာမွာ Reverse Engineering ကုိအသုံးခ်ပါတယ္။ ဥပမာ iPod Device ကုိ Windows ကြန္ပ်ဴတာမွာ သိေအာင္ ဘာညာ။
Military or commercial espionage- စစ္ဘက္ဆုိင္ရာေတြမွာဆုိရင္ ရန္သူေတြရဲ႕ နည္းပညာနမူနာ prototype ေတြကုိ ခုိးျပီး dismantling လုပ္မယ္။ ျပီးရင္ အဲဒီထက္ပုိေကာင္းတဲ့ Device ကုိထြင္မယ္။ ဥပမာ အေမရိကန္က F35 ေလယာဥ္ထြင္ထားတယ္ဆုိရင္ ျမန္မာႏုိင္ငံက အဲဒီထက္အဆင့္ျမင့္တဲ့ ကုိယ္ေပ်ာက္ေလယာဥ္ အသံထက္ 50 ဆျမန္တဲ့ေလယာဥ္ထြင္မယ္။ သူတုိ႔နမူနာေလယာဥ္ရဲ႕ နည္းပညာေတြကုိ Reverse လုပ္ျပီးေတာ့။ ဟီး biggrin
Improve documentation shortcomings-အခ်ဳိ႕ေသာ Original designer ေတြက သူတုိ႔ရဲ႕ System ဒါမွမဟုတ္ Operation အတြက္ ထပ္ျပီး Develop လုပ္ဖုိ႔ Function မပါလာဘူး။ ဒီေနရာမွာ Reverse Engineering Software ေတြနဲ႔ Develop လုပ္ႏုိင္ေစတယ္။
Obsolescence-တခါတေလမွာ Integrated circuits ေတြဟာ design obsolete ျဖစ္လာတယ္။ နည္းပညာ ပေပ်ာက္ကုန္တာေပါ့ေနာ္။ သူကုိေနာက္ထပ္ develop လုပ္ဖုိ႔မလြယ္ကူေတာ့ဘူး။ အဲဒီအခ်ိန္မွာ Reverse Engineering နဲ႔ Design အသစ္ဆြဲႏုိင္ေစတယ္။
Product Security Analysis-ကုိယ္ေရးထားတဲ့ Tool/Software တစ္ခုရဲ႕ Security ကုိစစ္ေဆးဖုိ႔ အသုံးခ်ႏုိင္ပါတယ္။ ဥပမာ Copy Protection လုပ္ထားတာမ်ဳိး။
Bug fixing-ဒါေတာ့ အားလုံး သိထားၾကတဲ့အတုိင္းပါပဲ။ Tool/Software/Device ေတြဆုိတာ 100% perfect ဆုိတာမရွိဘူးေလ။ ဒီေတာ့ bug fix လုပ္ဖုိ႔လုိအပ္ပါတယ္။
Creation of unlicensed/unapproved duplicates-ဒါကုိေတာ့ Computer ေလာကမွာ Clone လုိ႔ေခၚပါတယ္။ ဥပမာ iPhone 5 အတု၊ Galaxy s4 အတု ဘာညာေပါ့။
Competitive technical intelligence-ကုိ္ယ့္ျပိဳင္ဖက္က ဘာေတြလုပ္ေနသလဲဆုိတာသိရဖုိ႔ အသုံးခ်ပါတယ္။ ဥပမာ Samsung က iPhone 5 နည္းပညာကုိခုိးခ်ပါတယ္။ iPhone ကလည္း Samsung နည္းပညာကုိခုိးခ်ပါတယ္ ေျပာသံေတြၾကားေနရတာပဲ။ ဒါပဲေနလိမ့္မယ္။


Usage of Reverse engineering
Reverse engineering ကုိအသုံးခ်တဲ့ေနရာေတြအမ်ားၾကီးပါပဲ။ အလြယ္ကူဆုံးဥပမာကေတာ့ ကြ်န္ေတာ္တုိ႔ Tool ေတြကုိ Crack လုပ္ထားတာပါပဲ။ Windows 8 ထြက္တာမၾကာေသးဘူး။ Crack Version ကထြက္လာျပီ။ Adobe Photoshop CS6 လာထား Crack version ရွိတယ္။ အဲသလုိေပါ့ဗ်ာ။ ဟီး။ ဒုတိယ ကမၻာစစ္တုန္းက အေမရိကန္ေတြ ဂ်ပန္ႏုိင္ငံေပၚကုိ ဗုံးၾကဲခဲ့တဲ့ B-29 ဗုံးၾကဲေလယာဥ္ဆုိတာ နာမည္ၾကီးပါပဲ။ အဲဒါကုိ ဆုိဗီယက္ေတြမွာမရွိေပမယ့္ ေကာ္ပီကူးျပီး Tu-4 ကုိထြင္လုိက္တယ္။ အားလုံးနီပါးတူပါသတဲ့။ Reverse Engineering နည္းနဲ႔ေပါ့။ တရုတ္ေတြဆုိ Reverse Engineering နဲ႔ အေနာက္တုိင္းက နည္းပညာေတြကုိ ခုိးခ်တာ ကမၻာအသိပါပဲ။ Cracking စာအုပ္ေတြဖတ္ၾကည့္လုိက္ဗ်ာ။ Tool တစ္ခုကုိဘယ္လုိ Crack ရမလဲဆုိတာ Tool ေတြ၊ နည္းေတြအမ်ားၾကီးေတြ႕ရလိမ့္မယ္။ decompiler, disassembler ေတြေနာက္ထပ္ အမ်ားၾကီးပါပဲဗ်ာ။

Legality
Reverse Engineering နည္းပညာကုိ မဟုတ္တဲ့ေနရာမွာ သုံးဖုိ႔ သူမ်ားႏုိင္ငံေတြမွာေတာ့ ခြင့္မျပဳပါဘူး။ ဒီအတြက္ Copyright Law ေတြရွိပါတယ္။ ကုိယ့္ျမန္မာႏုိင္ငံမွာေတာ့ ေသခ်ာမရွိေသးဘူးထင္တာပဲ။ ကုိယ္လုပ္လုိက္တဲ့ Tool ကုိ သူမ်ား Crack လုိက္ရင္ ဘယ္နား Complain တက္ရမယ္မသိဘူး။ ဒါကေတာ့ အမ်ားၾကီးလုိအုံးမယ္။ ထားပါေတာ့။ ေအာက္မွာ US ႏုိင္ငံမွာ သတ္မွတ္ထားတဲ့ အေျခေနတစ္ခုအတြင္း Reverse Engineering နည္းပညာကုိ အသုံးခ်ႏုိင္ပုံကုိ ေလ့လာႏုိင္ပါတယ္။ စာေတြကမ်ားလုိ႔ ဘာသာမျပန္ႏုိင္ေတာ့ဘူး။ ဟီး။

(f) Reverse Engineering.—
(1) Notwithstanding the provisions of subsection (a)(1)(A), a person who has lawfully obtained the right to use a copy of a computer program may circumvent a technological measure that effectively controls access to a particular portion of that program for the sole purpose of identifying and analyzing those elements of the program that are necessary to achieve interoperability of an independently created computer program with other programs, and that have not previously been readily available to the person engaging in the circumvention, to the extent any such acts of identification and analysis do not constitute infringement under this title.
(2) Notwithstanding the provisions of subsections (a)(2) and (b), a person may develop and employ technological means to circumvent a technological measure, or to circumvent protection afforded by a technological measure, in order to enable the identification and analysis under paragraph (1), or for the purpose of enabling interoperability of an independently created computer program with other programs, if such means are necessary to achieve such interoperability, to the extent that doing so does not constitute infringement under this title.
(3) The information acquired through the acts permitted under paragraph (1), and the means permitted under paragraph (2), may be made available to others if the person referred to in paragraph (1) or (2), as the case may be, provides such information or means solely for the purpose of enabling interoperability of an independently created computer program with other programs, and to the extent that doing so does not constitute infringement under this title or violate applicable law other than this section.
(4) For purposes of this subsection, the term 「interoperability」 means the ability of computer programs to exchange information, and of such programs mutually to use the information which has been exchanged.


Ref: Wekipedia
Read more »