HTTP協(xié)議

一. HTTP簡介

HTTP(Hypertext transfer protocol)超文本傳輸協(xié)議,是一種詳細(xì)規(guī)定了瀏覽器和萬維網(wǎng)服務(wù)器之間互相同行,通過互聯(lián)網(wǎng)傳文檔的數(shù)據(jù)傳送協(xié)議.

HTTP可以使瀏覽器更加高效,使網(wǎng)絡(luò)傳輸減少,他不僅保證了計算機(jī)正確快速的傳輸文檔,還確定傳輸文檔中的那一部分,以及那部分內(nèi)容首先顯示等.

HTTP協(xié)議是一個應(yīng)用層協(xié)議,有請求和響應(yīng)構(gòu)成,是一個標(biāo)準(zhǔn)的客戶端服務(wù)器模型,HTTP協(xié)議是一個無狀態(tài)的協(xié)議.

HTTP默認(rèn)的端口號是80,HTTPS的端口號是443.

二. URL和URI

(一)URI:統(tǒng)一資源標(biāo)識符

Web上可用的每種資源如HTML文檔蕴忆、圖像三圆、視頻片段低散、程序等都是一個來URI來定位的,URI一般由三部組成:

訪問資源的命名機(jī)制

存放資源的主機(jī)名

資源自身的名稱浮毯,由路徑表示杨伙,著重強(qiáng)調(diào)于資源。

(二)URL:統(tǒng)一資源定位符

URL是Internet上用來描述信息資源的字符串,主要用在各種WWW客戶程序和服務(wù)器程序上儡司,特別是著名的Mosaic。采用URL可以用一種統(tǒng)一的格式來描述各種信息資源余指,包括文件捕犬、服務(wù)器的地址和目錄等。URL一般由三部組成:

協(xié)議(或稱為服務(wù)方式)

存有該資源的主機(jī)IP地址(有時也包括端口號)

主機(jī)資源的具體地址或听。如目錄和文件名等

三. HTTP請求

HTTP的請求報文由3部分組成,分別是:請求行,請求頭,請求正文

1. GET方法

//請求行 格式:請求方式 請求地址? 協(xié)議名稱/版本

GET /http/userLogin.php?username=wanlum&password=123456 HTTP/1.1

//請求頭

Host: localhost

Connection: keep-alive

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

Referer: http://localhost/day02-http&ajax/4-code/02-http/userLogin.html

Accept-Encoding: gzip, deflate, br

Accept-Language: zh-CN,zh;q=0.8

//請求正文

username=json&password=123456

2. POST方法

//請求行 格式:請求方式 請求地址? 協(xié)議名稱/版本

POST /http/userLogin.php HTTP/1.1

//請求頭

代表主機(jī)名稱

Host: localhost

代表是否開啟長鏈接

Connection: keep-alive

代表請求內(nèi)容的長度(中文一個占三個字節(jié))

Content-Length: 31

是否開啟緩存? ? 開啟緩存 但是立即刪除

Cache-Control: max-age=0

域名的源

Origin: http://localhost

安全請求

Upgrade-Insecure-Requests: 1

用戶代理

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36

告訴服務(wù)器請求內(nèi)容是表單的url的編碼

Content-Type: application/x-www-form-urlencoded

瀏覽器告訴服務(wù)器我能接受的內(nèi)容的類型

image/png image/jpg? audio/mp3? 我們把這樣的格式? 大類型/具體類型? 叫做MIME類型

作用是告訴對方用什么樣的方式去解析內(nèi)容

Accept: text/html,application/xhtml+xml,application/xml;q=0.9, image/webp,image/apng,*/*;q=0.8

當(dāng)前的頁面是從那個頁面跳轉(zhuǎn)過來的()

Referer: http://localhost/http/userLogin.html

瀏覽器告訴服務(wù)器能接受的內(nèi)容的壓縮格式

Accept-Encoding: gzip, deflate,

瀏覽器告訴服務(wù)器我所能接受的語言

Accept-Language: zh-CN,zh;q=0.8

//請求正文

username=json&password=123456

四. HTTP響應(yīng)

HTTP的請求報文由3部分組成,分別是:請求行,請求頭,請求正文

//響應(yīng)行 格式:協(xié)議/版本號 狀態(tài)碼? 狀態(tài)碼描述

HTTP/1.1 200 OK

//響應(yīng)頭

Date: Fri, 07 Jul 2017 06:44:11 GMT

Server: Apache/2.2.21 (Win32) PHP/5.3.10

網(wǎng)站用什么技術(shù)開發(fā)的

X-Powered-By: PHP/5.3.10

響應(yīng)內(nèi)容的長度

Content-Length: 60

長連接的時間? 5s以后算超時? 超時之后 開始嘗試鏈接 嘗試一次max-1? 直到100被減完了 就不再嘗試了

Keep-Alive: timeout=5, max=100

Connection: Keep-Alive

服務(wù)器告訴瀏覽器我給你的內(nèi)容的格式

Content-Type: text/html

//響應(yīng)正文

Array ( [username] => json[password] => 123456 )

五. HTTP狀態(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)碼:

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ù)正常

六. HTTP請求方法

GET? ? 請求指定的頁面信息袖订,并返回實體主體氮帐。

HEAD? ? 類似于get請求,只不過返回的響應(yīng)中沒有具體的內(nèi)容上沐,用于獲取報頭。

POST? ? 向指定資源提交數(shù)據(jù)進(jìn)行處理請求(例如提交表單或者上傳文件)参咙。數(shù)據(jù)被包含在請求體中。POST請求可能會導(dǎo)致新的資源的建立和/或已有資源的修改蕴侧。

PUT? ? 從客戶端向服務(wù)器傳送的數(shù)據(jù)取代指定的文檔的內(nèi)容。

DELETE? ? ? 請求服務(wù)器刪除指定的頁面戈盈。

CONNECT? ? HTTP/1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器。

OPTIONS? ? 允許客戶端查看服務(wù)器的性能谆刨。

TRACE? ? 回顯服務(wù)器收到的請求,主要用于測試或診斷痊夭。

七. 關(guān)于HTTP協(xié)議的面試題

1. 請簡要描述在客戶端瀏覽器中輸入域名之后,到用戶看到頁面的整個過程.

(1) 將域名發(fā)送到DNS服務(wù)器,DNS服務(wù)器解析域名,DNS服務(wù)器將域名解析成IP地址

(2) DNS服務(wù)器將IP地址傳入到瀏覽器中.

(3) 瀏覽器通過收到的IP地址,給Web服務(wù)器發(fā)送請求.

(4) Web服務(wù)器解析收到的請求信息,將響應(yīng)信息傳遞回瀏覽器

2. HTTP的三次握手.

在TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務(wù)她我,采用三次握手建立一個連接迫横。

第一次握手:建立連接時酝碳,客戶端發(fā)送syn包(syn=j)到服務(wù)器矾踱,并進(jìn)入SYN_SEND狀態(tài)疏哗,等待服務(wù)器確認(rèn)呛讲;

第二次握手:服務(wù)器收到syn包返奉,必須確認(rèn)客戶的SYN(ack=j+1),同時自己也發(fā)送一個SYN包(syn=k)芽偏,即SYN+ACK包,此時服務(wù)器進(jìn)入SYN_RECV狀態(tài)污尉;

第三次握手:客戶端收到服務(wù)器的SYN+ACK包膀哲,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1)被碗,此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài)蛮放,完成三次握手奠宜。 完成三次握手包颁,客戶端與服務(wù)器開始傳送數(shù)據(jù).

3. GET方法和POST方法的區(qū)別.

GET提交的數(shù)據(jù)會放在URL之后,以?分割URL和傳輸數(shù)據(jù),參數(shù)之間以&相連,而POST方法會把數(shù)據(jù)放在請求正文中.

GET提交的數(shù)據(jù)大小有限制,最多只有1024個字節(jié),而POST方法體檢的數(shù)據(jù)沒有限制.

GET方法提交數(shù)據(jù),因為通過URL傳遞關(guān)系,所以不能傳遞例如用戶密碼和用戶名等涉及用戶隱私的信息. 相對的,POST方法比GET方法安全.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末压真,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子滴肿,更是在濱河造成了極大的恐慌,老刑警劉巖泼差,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異堆缘,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)吼肥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進(jìn)店門麻车,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人动猬,你說我怎么就攤上這事×蘖” “怎么了?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵序目,是天一觀的道長。 經(jīng)常有香客問我猿涨,道長,這世上最難降的妖魔是什么叛赚? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮俺附,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘事镣。我一直安慰自己,他們只是感情好揪胃,可當(dāng)我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著随闪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪骚勘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天当宴,我揣著相機(jī)與錄音,去河邊找鬼泽疆。 笑死,一個胖子當(dāng)著我的面吹牛于微,可吹牛的內(nèi)容都是我干的青自。 我是一名探鬼主播,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼延窜,長吁一口氣:“原來是場噩夢啊……” “哼抹锄!你這毒婦竟也來了逆瑞?” 一聲冷哼從身側(cè)響起伙单,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吻育,沒想到半個月后念秧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體布疼,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年游两,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贱案。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖宝踪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情肴沫,我是刑警寧澤蕴忆,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布颤芬,位于F島的核電站套鹅,受9級特大地震影響站蝠,放射性物質(zhì)發(fā)生泄漏卓鹿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一吟孙、第九天 我趴在偏房一處隱蔽的房頂上張望聚蝶。 院中可真熱鬧,春花似錦藻治、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽雏节。三九已至,卻和暖如春钩乍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背件蚕。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留排作,地道東北人牵啦。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓妄痪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親衫生。 傳聞我的和親對象是個殘疾皇子裳瘪,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,652評論 2 354

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