輕松理解HTTP基本知識

引言

HTTP是一個屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議卸夕,由于其簡捷层释、快速的方式,適用于分布式超媒體信息系統(tǒng)快集。它于1990年提出贡羔,經(jīng)過幾年的使用與發(fā)展廉白,得到不斷地完善和擴(kuò)展。目前在WWW中使用的是HTTP/1.0的第六版乖寒,HTTP/1.1的規(guī)范化工作正在進(jìn)行之中猴蹂,而且HTTP-NG(Next Generation of HTTP)的建議已經(jīng)提出。

HTTP協(xié)議的特點

  1. 支持客戶/服務(wù)器模式楣嘁。

  2. 簡單快速:客戶向服務(wù)器請求服務(wù)時磅轻,只需傳送請求方法和路徑。請求方法常用的有GET马澈、HEAD瓢省、POST。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同痊班。由于HTTP協(xié)議簡單勤婚,使得HTTP服務(wù)器的程序規(guī)模小,因而通信速度很快涤伐。

  3. 靈活:HTTP允許傳輸任意類型的數(shù)據(jù)對象馒胆。正在傳輸?shù)念愋陀蒀ontent-Type加以標(biāo)記。

  4. 無連接:無連接的含義是限制每次連接只處理一個請求凝果。服務(wù)器處理完客戶的請求祝迂,并收到客戶的應(yīng)答后,即斷開連接器净。采用這種方式可以節(jié)省傳輸時間型雳。

  5. 無狀態(tài):HTTP協(xié)議是無狀態(tài)協(xié)議。無狀態(tài)是指協(xié)議對于事務(wù)處理沒有記憶能力山害。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息纠俭,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大浪慌。另一方面冤荆,在服務(wù)器不需要先前信息時它的應(yīng)答就較快。

HTTP協(xié)議的應(yīng)用場景

  • Web service权纤、WSDL钓简、小偷程序、采集程序汹想、爬蟲程序外邓、socket、防盜鏈

http協(xié)議執(zhí)行的粗糙流程

  1. chrome搜索自身的DNS緩存

  2. 搜索操作系統(tǒng)自身的DNS緩存(瀏覽器沒有找到緩存或緩存已經(jīng)失效古掏,緩存時間大概只有一分鐘)

  3. 讀取本地host文件

  4. 瀏覽器發(fā)起一個DNS 的一個系統(tǒng)調(diào)用

寬帶運(yùn)營商服務(wù)器查詢本地緩存

運(yùn)營商服務(wù)器發(fā)起一個迭代DNS解析請求

  1. 運(yùn)營商服務(wù)器把結(jié)果返回操作系統(tǒng)內(nèi)核同時緩存起來

  2. 操作系統(tǒng)內(nèi)核把結(jié)果返回瀏覽器

  3. 最終瀏覽器那桐了xxx.abc.com對應(yīng)的ip地址

  4. 瀏覽器獲得域名對應(yīng)的ip地址后坐榆,發(fā)起http“三次握手”

  5. TCP/IP連接建立起來,瀏覽器就可以向服務(wù)器發(fā)送http請求了使用了比如說冗茸,用http的get方式請求一個根域里的一個域名席镀,協(xié)議可以采用HTTP 1.1 的一個協(xié)議

  6. 服務(wù)器端接受到了這個請求匹中,根據(jù)路徑參數(shù),經(jīng)過后端的一些處理之后豪诲,把處理后的一個結(jié)果的數(shù)據(jù)返回給瀏覽器顶捷,如果是網(wǎng)站的頁面就會把完整的HTML頁面代碼返回給瀏覽器。

  7. 瀏覽器拿到了網(wǎng)站的完整的HTML頁面代碼屎篱,在解析和渲染這個頁面的時候服赎,里面的JS,CSS,圖片靜態(tài)資源,他們同樣也是一個HTTP請求交播,同需要經(jīng)過上面的主要七個步驟重虑。

  8. 瀏覽器根據(jù)拿到的資源對頁面進(jìn)行渲染,最終把一個完整的頁面呈現(xiàn)給用戶

http協(xié)議的組成部分

HTTP協(xié)議主要可以拆分兩大模塊 “請求”與“響應(yīng)”秦士, 他們都具備 HTTP頭 和 正文信息

詳細(xì)的消息報頭解釋可跳步《HTTP協(xié)議詳解之消息報頭篇

客戶端 請求報文信息

  • 報文首部(HTTP頭)

請求行:包栝請求方法缺厉,URL和HTTP協(xié)議版本

請求首部字段、通用首部字段隧土、實體首部字段提针、其他(包括請求的各種條件和屬性【值鍵值對】)

  • 空行(CR+LF)

  • 報文主體(正文信息【即用戶提交的表單數(shù)據(jù)】)

服務(wù)端 響應(yīng)報文信息

  • 報文首部(HTTP頭)

狀態(tài)行:包括響應(yīng)結(jié)果的HTTP協(xié)議版本、狀態(tài)碼曹傀、狀態(tài)描述

響應(yīng)首部字段辐脖、通用首部字段、實體首部字段皆愉、其他(包括響應(yīng)的各種條件和屬性【值鍵值對】)

  • 空行(CR+LF)

  • 報文主體(正文信息【即服務(wù)端返回的數(shù)據(jù)】)

telnet執(zhí)行的代碼案例


POST /test.php HTTP/1.1 (CRLF)  <請求行>

host:localhost  (CRLF)    <請求條件和屬性>

Accept-Language:zh-cn (CRLF)

Accept-Encoding:gzip,deflate (CRLF)

If-Modified-Since:Thu,08 Mar 201507:17:51 GMT (CRLF)

If-None-Match:W/"80b1a4c018f3c41:8317" (CRLF)

Connection:Keep-Alive (CRLF)

(CRLF)

v:1.0  <請求報文主體>

HTTP/1.1 200 OK    <狀態(tài)行>

Server: nginx      <響應(yīng)條件和屬性>

Date: Thu,08 Mar 201507:17:52 GMT

Connection: Keep-Alive

Content-Length: 23330

Content-Type: text/html

Cache-control: private

http test <響應(yīng)報文主體>

http-telnet.jpg

http請求方法

  • 請求方法(所有方法全為大寫)有多種嗜价,各個方法的解釋如下:

  • GET 請求獲取Request-URI所標(biāo)識的資源

  • POST 在Request-URI所標(biāo)識的資源后附加新的數(shù)據(jù)

  • HEAD 請求獲取由Request-URI所標(biāo)識的資源的響應(yīng)消息報頭

  • PUT 請求服務(wù)器存儲一個資源,并用Request-URI作為其標(biāo)識

  • DELETE 請求服務(wù)器刪除Request-URI所標(biāo)識的資源

  • TRACE 請求服務(wù)器回送收到的請求信息幕庐,主要用于測試或診斷

  • CONNECT 保留將來使用

  • OPTIONS 請求查詢服務(wù)器的性能久锥,或者查詢與資源相關(guān)的選項和需求

響應(yīng)狀態(tài)碼

  • 狀態(tài)代碼有三位數(shù)字組成,第一個數(shù)字定義了響應(yīng)的類別翔脱,且有五種可能取值:

  • 1xx:指示信息--表示請求已接收,繼續(xù)處理

  • 2xx:成功--表示請求已被成功接收媒鼓、理解届吁、接受

  • 3xx:重定向--要完成請求必須進(jìn)行更進(jìn)一步的操作

  • 4xx:客戶端錯誤--請求有語法錯誤或請求無法實現(xiàn)

  • 5xx:服務(wù)器端錯誤--服務(wù)器未能實現(xiàn)合法的請求


  • 常見狀態(tài)代碼、狀態(tài)描述绿鸣、說明:

  • 200 OK //客戶端請求成功

  • 400 Bad Request //客戶端請求有語法錯誤疚沐,不能被服務(wù)器所理解

  • 401 Unauthorized //請求未經(jīng)授權(quán),這個狀態(tài)代碼必須和WWW-Authenticate報頭域一起使用

  • 403 Forbidden //服務(wù)器收到請求潮模,但是拒絕提供服務(wù)

  • 404 Not Found //請求資源不存在亮蛔,eg:輸入了錯誤的URL

  • 500 Internal Server Error //服務(wù)器發(fā)生不可預(yù)期的錯誤

  • 503 Server Unavailable //服務(wù)器當(dāng)前不能處理客戶端的請求,一段時間后可能恢復(fù)正常

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末擎厢,一起剝皮案震驚了整個濱河市究流,隨后出現(xiàn)的幾起案子辣吃,更是在濱河造成了極大的恐慌,老刑警劉巖芬探,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件神得,死亡現(xiàn)場離奇詭異,居然都是意外死亡偷仿,警方通過查閱死者的電腦和手機(jī)哩簿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酝静,“玉大人节榜,你說我怎么就攤上這事”鹬牵” “怎么了宗苍?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長亿遂。 經(jīng)常有香客問我浓若,道長,這世上最難降的妖魔是什么蛇数? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任挪钓,我火速辦了婚禮,結(jié)果婚禮上耳舅,老公的妹妹穿的比我還像新娘碌上。我一直安慰自己,他們只是感情好浦徊,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布馏予。 她就那樣靜靜地躺著,像睡著了一般盔性。 火紅的嫁衣襯著肌膚如雪霞丧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天冕香,我揣著相機(jī)與錄音蛹尝,去河邊找鬼。 笑死悉尾,一個胖子當(dāng)著我的面吹牛突那,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播构眯,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼愕难,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起猫缭,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤葱弟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后饵骨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體翘悉,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年居触,在試婚紗的時候發(fā)現(xiàn)自己被綠了妖混。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡轮洋,死狀恐怖制市,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情弊予,我是刑警寧澤祥楣,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站汉柒,受9級特大地震影響误褪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜碾褂,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一兽间、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧正塌,春花似錦嘀略、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至鸠天,卻和暖如春讼育,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背稠集。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工奶段, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人巍杈。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓忧饭,卻偏偏與公主長得像扛伍,于是被迫代替她去往敵國和親筷畦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容