Tuesday, June 5, 2012

Introduction to HTTP Protocol



ဒီ post ေလးထဲမွာ HTTP Protocol အေၾကာင္းနည္းနည္းေလးေၿပာခ်င္ပါတယ္။

HTTP (Hyper Text Transfer Protocol) ဆိုတာ ကမၻာေပၚမွာအသံုးအမ်ားဆံုး protocol တခုပါ။ သူ.ကုိဘယ္ေနရာမွာ သံုးလဲဆုိေတာ့ ကြ်န္ေတာ္တုိ.ေန.တုိင္းသံုးေနၿမင္ေန ထိေတြ.ေနရတဲ. World Wide Web ၾကီးေပါ့ဗ်ာ။ကြ်န္ေတာ္တုိ. အေနနဲ.တကယ္လို. WWW ကုိသံုးေတာ့မယ္ဆုိရင္ မရိွမၿဖစ္လုိတဲ့အရာ ႏွစ္ခုရိွပါတယ္။ ပထမ တခုက browser ပါ။သူကေတာ့ client ေပါ့။ေနာက္တခုက ေတာ့ client ကုိ service ေပးမဲ့ server ေပါ့အဲဒါကေတာ့ web server ပါပဲ။ အသံုးမ်ားတဲ့ browser ေတြကေတာ့ firefox, Internet Explorer ေပါ့ဗ်ာ။ အသံုးမ်ားတဲ့ Web Server ေတြကေတာ့ IIS နဲ. Apache Web Server ေပါ့။ ကြ်န္ေတာ္တုိ.က ၾကိဳက္တဲ့ဆုိက္ကို ၾကိဳက္တဲ့ browser နဲ.ၾကည့္လို.ရတယ္ဗ်ာ။ အဲ web browser နဲ. အမ်ိဳးမ်ိဳးေသာ မတူညီတဲ့ Web Server ေတြဘယ္လုိဆက္သြယ္သလဲ အလုပ္လုပ္သလဲေပ့ါ။ အဲဒီမွာ မင္းသားၾကီးကေတာ့ HTTP protocol ေပါ့ဗ်ာ ။ Protocol ကုိၿမန္မာမွု.ၿပဳရင္ေတာ့ Client ကြန္ပ်ဳတာနဲ. Server ကြန္ပ်ဳတာၾကား နားလည္မွု.ယူထားတဲ့ လုိက္နာရမဲ့စည္းကမ္းေတြေပါ့။ ဟ ဘာစည္းကမ္းေတြတုံုးဆုိေတာ့ browser က server နဲ. Html ဖုိင္တခုကိုလိုခ်င္ရင္ ဘယ္လုိဆက္သြယ္ရမယ္။ ေဟာ server အေနနဲ. ဖုိင္ကုိရွာေပးနုိင္ရင္ client ကုိဘယ္လိုၿပန္အေၾကာင္းၿပန္ရမယ္ သူ.ရဲ. content ေတြကိုဘယ္လုိ ၿပန္ေပးရမယ္ စသည္ၿဖင့္ေပါ့ အဲဒါေတြကို သတ္မွတ္ထားတာေပါ့ဗ်ာ။
HTTP protocol က Network Layer ေတြရဲ.ဘယ္အေပၚမွာ အလုပ္လုပ္သလဲဆုိေတာ့ Transport Layer အေပၚမွာအလုပ္လုပ္ပါတယ္ ။ Transport Layer မွာ သူက TCP protocol ကုိသံုးပါတယ္. ဘာလုိ.လဲဆုိေတာ့ TCP ရဲ.သေဘာသဘာ၀က reliable data transfer ကိုေပးႏုိင္လုိ.ပါပဲ။ Reliable Data Transfer ဆိုတာကေတာ့ဗ်ာ တဖက္ကပုိ.လုိက္တဲ့ data packet ေတြကဟာမေပ်ာက္ပဲနဲ. တဖက္ကိုေရာက္ရိွႏုိင္တာကိုေၿပတာပါ။ အၿခားေသာ pouplar protocol ေတြၿဖစ္တဲ့ အီေမး ေတြအတြက္သံးုတဲ့ ွSMTP ဟာလည္း HTTP ကဲ့သုိ. TCP ကိုသံုးပါတယ္။ HTTP protocol ဟာ text based protocol ၿဖစ္ပါတယ္။ ဆုိခ်င္တာက မိတ္ေဆြအေနနဲ. HTTP protocol ကုိဖတ္ၿပီးေတာ့နားလည္ႏုိင္ပါတယ္ ဘာလုိ.လဲဆုိေတာ့ သူရဲ. Format က text ၿဖစ္တဲ့အတြက္ပါပဲ။ binary ဆုိရင္ေတာ့ ဖတ္လို.ခက္ပါလိမ့္မယ္။
Web Server ေတြနဲ. Web Client ေတြဟာ HTTP ကုိသံုးၿပီးဆက္သြယ္ပါတယ္။ ဆက္သြယ္မွု.ပံုစံကေတာ့ Request, Response model ၿဖစ္ပါတယ္။ Request, Response model ဆိုတာကေတာ့ဗ်ာ Web client က Web Server ဆီက တခုခုလိုခ်င္တယ္ဆုိပါေတာ့ အဲဒီအခ်ိန္မွာ Web Client ကေန Web Server ဆီကို HTTP request တခုလႊတ္လုိက္ပါတယ္။ အဲဒီ request ကုိ Web Server ကေနနားလည္ၿပီးေတာ့ web client ေတာင္းဆုိတာကို message တခုအေနနဲ.ၿပန္ေပးပါတယ္ response ေပါ့ဗ်ာ။ ဆုိခ်င္တာက HTTP Protocol အေပၚမွာဘာပဲလုပ္လုပ္ resquest လာမယ္ ၿပီးရင္ server ကေန response ၿပန္လာမယ္ေပါ့။ ဒီလိုနည္းနဲ.ပဲအလုပ္လုပ္ၾကပါတယ္။ ေနာက္ၿပီးေတာ့ resquest တခုနဲ.တခုကလဲ အဆက္အသြယ္ relation မရိွၾကပါဘူး။ အဲဒီမွာၾကံဳေတြ.ရတဲ့ၿပႆနာကေတာ့ session ၿပႆနာပါပဲ။ HTTP ဟာ request, response နဲ.သံုးတဲ့ stateless protocol ၿဖစ္တာေၾကာင့္ session ကုိ cookies ဒါမွမဟုတ္ တၿခားနည္းေတြနဲ.ေၿဖရွင္းရပါတယ္။ HTTP ဟာ statelss ၿဖစ္တယ္ဆုိတာ ေတာ့ ပထမလႊတ္လုိက္တဲ့ request နဲ. ဒုတိယလႊတ္လိုက္တဲ့ request ေတြဟာတူညီတဲ့ client ေတြၿဖစ္တယ္ဆုိတာ တနည္းအားၿဖင့္သူတုိ.ေတြဟာတဆက္တည္းၿဖစ္တယ္ဆုိတာ related ၿဖစ္တယ္ဆုိတာမသိတာပါပဲ။
ကဲ အခု HTTP Client ကေန Web Server ကိုဘယ္လုိ Request လႊတ္သလဲ Response ၿပန္သလဲဆုိတာကိုရွင္းပါ့မယ္။ Request, Response အားလံုးဟာ HTTP Message ေတြပါ။ သူတုိ.မွာတိက်တဲ့ format ပံုစံရိွပါတယ္ ဒါမွသာလွ်င္ various Web Server ေတြ Web Client ေတြဟာအတူတကြအလုပ္လုပ္ႏိုင္မွာပါ။ HTTP message ေတြမွာ request အတြက္ format တမ်ိဳး, response အတြက္ေတာ့သက္သက္တမ်ိဳးထားပါတယ္ ေအာက္ကပံုမွာ အဲဒါေတြကိုၿပထားပါတယ္။


အေပၚဆံုးပံုက က request message ကုိၿပထားတာပါ။
ဒုတိယပံုကေတာ့ reponse message ကုိၿပထားတပါ။ ဆုိပါေတာ့ဗ်ာ ကြ်န္ေတာ္တို.က server တခု ကေန /pet-products.txt ဖုိင္တဖုိင္ကုိလုိခ်င္တယ္ဆုိပါေတာ့ ဒါဆုိရင္ ပထမဆံုးပံု ပါအတုိင္းေတာင္းရမွာပါ။ အဲလုိေတာင္းမယ္ဆုိရင္ server အေနနဲ. ေတာင္းတဲ့ဖုိင္ကိုေပးႏုိင္တယ္ ဆုိရင္ ဒုတိယပံု အတုိင္း ၿပန္ေပးပါလိမ့္မယ္။ Request Message ကိုေသေသခ်ာခ်ာၾကည့္ရေအာင္ သူ.မွာ ႏွစ္ပုိင္းပါ ပါတယ္ ။ Strat Line ရယ္ request line ရယ္ေပါ့ဗ်ာ။ Start Line ဆုိတာ GET /pet-products. HTTP/1.1ေပါ့။ အဲ့မွာသံုးပုိင္းပါ ပါတယ္ GET ဆုိတာရယ္ /pet-products.txt ရယ္ HTTP/1.1 ရယ္ေပါ့။ GET ကေတာ့ HTTP method တခုပါ။ ဘယ္ေနရာမွာသံုးတာလဲဆုိေတာ့ resource တခုခုကို server ကေနေတာင္းခ်င္ရင္ သို.မဟုတ္ server side program တခုခုကို run ခ်င္ရင္သံုးပါတယ္။ ကြ်န္ေတာ္တုိ.ဟာ အခု /pet-products.txt ကိုေတာင္းတာၿဖစ္တဲ့အတြက္ GET ကုိသံုးတာပါ။ image တခုကိုလုိခ်င္ရင္လဲအဲလုိပဲေတာင္းရမွာပါ။ HTTP method ေနာက္မွလုိက္ရတာက ေတာ့လုိခ်င္တဲ့ resource ေပါ့ အခု ဒီမွာဆုိရင္ေတာ့ /pet-products.txt ေပါ့ဗ်ာ ။ ေနာက္ဆံုးအပုိင္းကေတာ့ HTTP protocol version ေပါ့။ ေလာေလာဆယ္ အသံုးအမ်ားဆံုး version ကေတာ့ HTTP/1.1 ပါပဲ။ HTTP/1.0 ကေတာ့ browser အေဟာင္းေတြမွာသံုးပါတယ္ ေတြ.ရခဲပါတယ္။ HTTP request နဲ.ေနာက္တပုိင္းကေတာ့ request line သို.မဟုတ္ body ေပါ့ဗ်ာ သူကေတာ့ request မွာလိုအပ္တဲ့တၿခား metadata ေတြကိုထည့္ေပးလုိက္ဖုိ.သံုးပါတယ္။ ဒီမွာဆုိရင္ Accept: ဆုိတဲ့ metadata ပါပါတယ္ သူကဘာေၿပာတာလဲဆုိရင္ client ကေနလက္ခံႏုိင္တဲ့ content type အမ်ိဳးအစားေတြပါ။ ဒီဥပမာ မွာဆုိရင္ အားလံုးလက္ခံတယ္ေပါ့ ။ေနာက္တခုက Host: ပါ အဲဒါကေတာ့ကြ်န္ေတာ္တုိ. Request ကိုလႊတ္တဲ့ computer ရဲ. IP သို.မဟုတ္ domain name ေပါ့ဗ်ာ။ အခုဥပမာေပးထားတဲ့ request ကုိ နားလည္ေအာင္ေၿပာရရင္ေတာ့ ေဟ့ web server ေရ ငါ့ကို /pet-products.txt ေပးစမ္းကြာ။ ငါက HTTP/1.1 ကုိသံုးထားတာကြ။ ငါကို.ရိွတာေပး လက္ခံႏုိင္တယ္ကြာ ေပါ့ဗ်ာ ။file ေတြပဲကြ။ ငါ့ရဲ. Host name က www.joes-hardware.com ကြလို.ေၿပာလိုက္တာပါ။ ဒီ request ကို TCP အေပၚကေန လုိခ်င္တဲ့ server ဆီကိုပုိ.လုိက္ရပါတယ္။ Web Serverေတြဟာမ်ားေသာအားၿဖင့္ TCP port 80 မွာ connection ေတြကိုလက္ခံၿပီးအလုပ္လုပ္ပါတယ္။ ဒီ request ကို web server ကနားလည္ၿပီးေတာ့ သူညြန္ၾကားတဲ့အတုိင္းလုပ္ပါလိမ့္မယ္။ အဆင္ေၿပရင္ response ၿပန္ေပးပါလိမ့္မယ္။ GET အၿပင္တၿခား HTTP method ေတြလဲရိွပါေသးတယ္။ popular ၿဖစ္တာကေတာ့ POST ေပါ့ ။သူက server မွာရိွတဲ့ program ကုိ run ဖုိ.အတြက္သံုးတာပါပဲ။ ကဲ GET နဲ.လဲလုပ္လုိ.ရသားနဲ. ဘာလုိ. POST ကုိသံုးတာလဲေပါ့။ GET နဲ.သာ server side program ကိုလွမ္း run မယ္ဆုိရင္ program အတြက္လုိအပ္တဲ့ parameter ေတြဟာ HTTP message ရဲ. Header သို.မဟုတ္ start line ကေနပို.တဲ့အတြက္ parameter ေတြကိုၿမင္ေနရပါတယ္။ POST ကုိသံုးတဲ့အခါ က်ေတာ့ parameter ေတြကိုmessage ရဲ. Body ကေနပို.တာၿဖစ္တဲ့အတြက္မၿမင္ရေတာ့ပါဘူး။ ေနာက္ သံုးလုိ.ရတဲ့ HTTP method ေတြကေတာ့
HEAD သူကေတာ့ header inforamation ေတာင္းရင္သံုးပါတယ္ ဥပမာ server အမ်ိဳးအစားနဲ. Versoin အဲဒါေတြလုိခ်င္ရင္သံုးပါတယ္။
PUT ကေတာ့ဗ်ာ တခုခုကို server မွာသြားတင္ခ်င္ရင္သံုးပါတယ္ server ေတာ္ေတာ္မ်ားမ်ားကအဲဒါကိုေပးမသံုးပါဘူးပိတ္ထားတတ္ပါတယ္
TRACE ကေတာ့ proxy server ေတြကေန web server ကုိဘယ္လိုသြားတယ္ဆုိတာသိခ်င္ရင္သံုးပါတယ္
OPTIONS ကေတာ့ server ကဘယ္ method ေတြကိုေပးသုံးလဲနဲ. ဘာေတြကို Handle လုပ္ႏုိင္လဲဆုိတာအတြက္သံုးပါတယ္
DELETE သူကေတာ့ server မွာရိွတဲ့ ဖုိင္ေတြကိုဖ်က္ဖုိ.သံုးပါတယ္ သူ.ကိုလဲ သာမာန္အားၿဖင့္ေပးမသံုးပါဘူး ပိတ္ထားေလ့ရိွပါတယ္။
အခု response message အေၾကာင္းရွင္းၾကရေအာင္။ ကြ်န္ေတာ္တုိ.ပို.လုိက္တဲ့ message ကုိ server ကနားလည္ၿပီးေတာ့ေတာင္းတာကိုေပးႏုိင္တယ္ဆုိပါေတာ့ဒါဆုိရင္ ဒုတိယပံု မွာပါတဲ့အတုိင္းၿပန္ေပးပါလိမ့္မယ္။ Response မွာသံုးပိုင္းပါပါတယ္ start line, header ရယ္ body ရယ္ေပါ့။ start line မွာေတာ့ HTTP/1.1 200 OK ဆုိတာေလးကိုေတြ.ပါလိမ့္မယ္ HTTP/1.1 ကေတာ့ version ပါ။ 200 ကေတာ့ server ဟာ client ရဲ. Request ကိုေအာင္ၿမင္တယ္ အုိေကတယ္ကိုအေၾကာင္းၿပန္တာပါ။ အဲဒါကို status code လို.ေခၚပါတယ္ ေအာင္ၿမင္ရင္ 200 ေပ့ါဗ်ာ သူ.ေနာက္က ok ကေတာ့ 200 ကုိ ကုိယ္စားၿပဴတဲ့စာသားပါပဲ။ status code ကိုၾကည့္ၿပီးေတာ့မွ browser ဟာသူဘာဆက္လုပ္ရမယ္ဆိုတာသိပါလိမ့္မယ္။ 200 အၿပင္တၿခားေသာ status code ေတြလဲရိွပါေသးတယ္။ အဲဒါေတြကထဲမွာအသံုးမ်ားတာ 403 Bad request, နဲ. 500 Internal Server Error တုိ.ပါပဲ။ start line ၿပီးသြားရင္ response header လာပါၿပီ။သူ.မွာလဲ response နဲ.ပတ္သတ္ၿပီးေတာ့ metadata ေတြကိုထည့္ဖုိ.သံုးတာပါပဲ။ ဥပမာ sound ဖုိင္တဖုိင္ဆုိရင္ ဘယ္လုိ အမ်ိဳးအစားလဲ အဲလိုအမ်ိဳးအစားသိေတာ့မွ ဘယ္ player နဲ. Run ရမယ္ဆုိတာ browser ကသိမွာပါ။ဒီ ဥပမာမွာၿပန္လာတာကေတာ့ Content-Type: text/plain ၿဖစ္ပါတယ္ ဒါဆုိရင္ browser အေနနဲ.အခုၿပန္လာတာဟာ text file တခုၿဖစ္တယ္ဆုိတာသိပါၿပီ အဲဒီေတာ့ ဒီ text file ကုိ display လုပ္ပါလိမ့္မယ္ အကယ္လုိ.သာ သူဟာ text/html ၿဖစ္ေနတယ္ဆုိရင္ အဲဒီ content ကုိ html အေနနဲ. Render (ပံုေဖာ္)ဖုိ.လုပ္မွာပါ။ Content-Type ေနာက္မွာပါလာတာကေတာ့ Content-Length: 19 ၿဖစ္ပါတယ္ သူကဘာကိုရည္ညြန္းတာလဲဆုိရင္ ၿပန္လာတဲ့ respone ရဲ. Message body ဟာ 56 bytes ရိွတယ္လုိ.ေၿပာတာပါ။အဲဒါကုိသိတဲ့အတြက္သာ web browser ဟာ messge body ထဲကေန ဘယ္ ႏွစ္byte ဖတ္ရမလဲဆုိတာသိမွာပါ။ ေၿပာဖို.က်န္ခဲ့တာကေတာ့ Start Line, message header, body ေတြကို \r\n newline နဲ.ၿခားထားတယ္ဆုိတာပါပဲ။ ေနာက္ဆံုးအပုိင္းကေတာ့ content ပါပဲ။ ကြ်န္ေတာ္တုိ.က text file တခုကိုေတာင္းတဲ့အတြက္ text ေတြပါလာတာပါ။ တကယ္လို. Html ဖုိင္တခုကုိသာေတာင္းခဲ့မယ္ဆုိရင္ html content ေတြရမွာပါ။ၿပန္လာတဲ့ response ကုိၾကည့္ၿပီးေတာ့ browser အေနနဲ. Content ကို render လုပ္ႏုိင္ပါၿပီ။ ကဲ အဆင္ေၿပမယ္လုိ.ေတာ့ေမွ်ာ္လင့္ပါတယ္ဗ်ာ။ HTTP protocol ကုိတကယ္စမ္းခ်င္ရင္ေတာ့ netcat, ဒါမွမဟုတ္ telnet နဲ.စမ္းလုိ.ရပါတယ္။ 

source http://mmcyberdevils.com/index.php?/topic/69-introduction-to-http-protocol/

ROCK FOREVER (MUSIC)

Pageviewers

CBOX

Manutd-Results

Label

Android (3) autorun (3) Backtrack (8) batch file (19) blogger (10) Botnet (2) browser (5) Brute Force (6) cafezee (2) cmd (5) Cookies (2) crack (12) Cracking (2) crypter (7) DDos (20) deepfreeze (4) defacing (1) defence (16) domain (4) Dos (9) downloader (4) ebomb (2) ebook (48) Exploit (26) firewall (3) game (2) gmail (11) google hack (16) Hacking Show (3) Hash (4) hosting (1) icon changer (1) ip adress (6) Keygen (1) keylogger (8) knowledge (67) locker (1) maintainence (8) network (17) news (31) other (35) passwoard viewer (7) password (12) Philosophy (6) Phishing (8) premium account (2) proxy (7) RAT (10) run commands (4) script (27) Shell code (10) shortcut Key (2) SMTP ports (1) social engineering (7) spammer (1) SQL Injection (30) Stealer.crack (5) tools (125) Tools Pack (4) tutorial (107) USB (3) virus (32) website (84) WiFi (4) word list (2)

Blogger templates

picoodle.com

Blogger news

HOW IS MY SITE?

Powered by Blogger.

Followers

About Me

My Photo
Hacking= intelligent+techonology+psychology