天天看點

http協定理論

常見面試題:https://www.cnblogs.com/sunny-sl/p/6529830.html

講解http: https://www.cnblogs.com/jycboy/p/http1.html

http協定理論

1.http定義:

http是一種網絡傳輸協定,工作于用戶端/服務端架構。用戶端發起請求,伺服器回送響應。請求/響應模式。

2.http特性:

無連接配接:每次連接配接隻處理一個請求,伺服器處理完客戶的請求,并收到客戶的應答後,即斷開連接配接。

媒體獨立:隻要用戶端和伺服器知道如何處理的資料内容,任何類型的資料都可以通過HTTP發送

無狀态:沒有記憶能力,如果後續處理需要前面的資訊,則必須重新傳輸

3.消息結構

用戶端:浏覽器

伺服器:Web服務(如Apache Web伺服器或IIS伺服器)

http使用URL(統一資源辨別符)傳輸資料、建立連接配接

URL:描述資訊資源,包括協定、存有該資源的伺服器的IP位址(域名)和伺服器資源的具體位址(如目錄和檔案名等)

http協定理論

4.請求:

用戶端請求消息:請求行、請求頭部、空行和請求資料四個部分組成。

http協定理論

請求方法:

GET:請求指定頁面的資訊,并傳回實體

POST : 向指定資源送出資料進行處理請求(例如送出表單或者上傳檔案)。資料被包含在請求體中。POST請求可能會導緻新資源的建立和/或已有資源的修改。

HEAD:類似GET,但傳回的響應中沒有具體的内容,用于擷取報頭

PUT:從用戶端向伺服器傳送資料取代指定文檔的内容。

DELETE 請求伺服器删除指定的頁面。

CONNECT HTTP/1.1協定中預留給能夠将連接配接改為管道方式的代理伺服器。

OPTIONS 允許用戶端檢視伺服器的性能。

TRACE 回顯伺服器收到的請求,主要用于測試或診斷。

1.GET請求(點選網頁上的連結,在浏覽器的位址欄輸入網址)

請求資料以位址的形式表現在請求行,位址中”?”之後的部分就是通過GET發送的請求資料,各個資料之間用”&”符号隔開

GET /search?hl=zh-CN&source=hp&q=domety&aq=f&oq= HTTP/ 
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, 
application/msword, application/x-silverlight, application/x-shockwave-flash, */* 
Referer: <a href="http://www.google.cn/" target="_blank" rel="external nofollow" >http://www.google.cn/</a> 
Accept-Language: zh-cn 
Accept-Encoding: gzip, deflate 
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; TheWorld) 
Host: <a href="http://www.google.cn" target="_blank" rel="external nofollow" >www.google.cn</a> 
Connection: Keep-Alive 
Cookie: PREF=ID=80a06da87be9ae3c:U=f7167333e2c3b714:NW=1:TM=1261551909:LM=1261551917:S=ybYcq2wpfefs4V9g; NID=31=ojj8d-IygaEtSxLgaJmqSjVhCspkviJrB6omjamNrSm8lZhKy_yMfO2M4QMRKcH1g0iQv9u-2hfBW7bUFwVh7pGaRUb0RnHcJU37y-FxlRugatx63JLv7CWMD6UB_O_r
           

請求行:請求方法+URL+協定版本。說明請求類型+要通路的資源+所使用的HTTP版本

GET為表示請求方法是GET;請求參數hl=zh-CN&source=hp&q=domety;HTTP/1.1表示使用協定版本為HTTP/1.1

請求頭部:請求行的後面行,說明伺服器要使用的附加資訊

HOST指出請求的目的地

Accept:可處理的媒體類型

Accept-Language:浏覽器可接受的語言

Accept-Encoding:浏覽器可接受的内容編碼

Connection:

空行:請求頭部後面必須是空行,即使最後的請求資料為空,請求頭部後面也要加空行

請求資料為空

2.POST請求

請求行中不包含請求參數,請求參數在消息的請求資料中

POST /search HTTP/1.1 
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, 
application/msword, application/x-silverlight, application/x-shockwave-flash, */* 
Referer: <a href="http://www.google.cn/">http://www.google.cn/</a> 
Accept-Language: zh-cn 
Accept-Encoding: gzip, deflate 
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; TheWorld) 
Host: <a href="http://www.google.cn">www.google.cn</a> 
Connection: Keep-Alive 
Cookie: PREF=ID=80a06da87be9ae3c:U=f7167333e2c3b714:NW=1:TM=1261551909:LM=1261551917:S=ybYcq2wpfefs4V9g; NID=31=ojj8d-IygaEtSxLgaJmqSjVhCspkviJrB6omjamNrSm8lZhKy_yMfO2M4QMRKcH1g0iQv9u-2hfBW7bUFwVh7pGaRUb0RnHcJU37y-FxlRugatx63JLv7CWMD6UB_O_r

hl=zh-CN&source=hp&q=domety
           

請求行:POST請求類型,http1.1版本

請求頭部:

空行:

請求資料:hl=zh-CN&source=hp&q=domety

GET和POST的差別:

1.資源擷取/發送

GET從伺服器擷取資源

POST向伺服器發送資源

2.傳輸資料形式(安全性)

GET傳輸資料通過URL請求,使用者可見,不安全。資料會放在URL之後,以?分割URL和傳輸資料,如http://127.0.0.1/Test/login.action?name=admin&password=admin

POST傳輸資料放在HTTP包的Body中,将字段與對應值封存在請求實體中發送給伺服器,這個過程對使用者是不可見,安全。

GET送出的資料會在位址欄中顯示出來,而POST送出,位址欄不會改變

3.傳輸資料大小

GET:特定浏覽器和伺服器對URL長度有限制

POST:WEB伺服器會規定對post送出資料大小進行限制

4.GET方式需要使用Request.QueryString來取得變量的值,而POST方式通過Request.Form來擷取變量的值。

5.http響應:

狀态行、消息報頭、空行和響應正文

http協定理論

狀态行:http協定版本+狀态碼+狀态消息

消息報頭:說明用戶端要使用的附加消息

Date生成響應的日期和時間;Content-Type:實體主類的類型,指定了MIME類型的HTML(text/html),編碼類型是UTF-8;Content-Length:實體主體的的位元組數

空行:消息報頭後是空行

響應正文:

HTTP工作原理

HTTP協定定義Web用戶端如何從Web伺服器請求Web頁面,以及伺服器如何把Web頁面傳送給用戶端。HTTP協定采用了請求/響應模型。用戶端向伺服器發送一個請求封包,請求封包包含請求的方法、URL、協定版本、請求頭部和請求資料。伺服器以一個狀态行作為響應,響應的内容包括協定的版本、成功或者錯誤代碼、伺服器資訊、響應頭部和響應資料。

http協定理論

以下是 HTTP 請求/響應的步驟:

1、用戶端連接配接到Web伺服器

一個HTTP用戶端,通常是浏覽器,與Web伺服器的HTTP端口(預設為80)建立一個TCP套接字連接配接。例如,http://www.oakcms.cn。

2、發送HTTP請求

通過TCP套接字,用戶端向Web伺服器發送一個文本的請求封包,一個請求封包由請求行、請求頭部、空行和請求資料4部分組成。

3、伺服器接受請求并傳回HTTP響應

Web伺服器解析請求,定位請求資源。伺服器将資源複本寫到TCP套接字,由用戶端讀取。一個響應由狀态行、響應頭部、空行和響應資料4部分組成。

4、釋放連接配接TCP連接配接

若connection 模式為close,則伺服器主動關閉TCP連接配接,用戶端被動關閉連接配接,釋放TCP連接配接;若connection 模式為keepalive,則該連接配接會保持一段時間,在該時間内可以繼續接收請求;

5、用戶端浏覽器解析HTML内容

用戶端浏覽器首先解析狀态行,檢視表明請求是否成功的狀态代碼。然後解析每一個響應頭,響應頭告知以下為若幹位元組的HTML文檔和文檔的字元集。用戶端浏覽器讀取響應資料HTML,根據HTML的文法對其進行格式化,并在浏覽器視窗中顯示。

例如:在浏覽器位址欄鍵入URL,按下回車之後會經曆以下流程:

1、浏覽器向 DNS 伺服器請求解析該 URL 中的域名所對應的 IP 位址;

2、解析出 IP 位址後,根據該 IP 位址和預設端口 80,和伺服器建立TCP連接配接;

3、浏覽器發出讀取檔案(URL 中域名後面部分對應的檔案)的HTTP 請求,該請求封包作為 TCP 三次握手的第三個封包的資料發送給伺服器;

4、伺服器對浏覽器請求作出響應,并把對應的 html 文本發送給浏覽器;

5、釋放 TCP連接配接;

6、浏覽器将該 html 文本并顯示内容;