http協(xié)議
超文本傳輸協(xié)議(HTTP,HyperText Transfer Protocol)是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議。所有的WWW文件都必須遵守這個標(biāo)準(zhǔn)。設(shè)計HTTP最初的目的是為了提供一種發(fā)布和接收HTML頁面的方法。1960年美國人Ted Nelson構(gòu)思了一種通過計算機處理文本信息的方法,并稱之為超文本(hypertext),這成為了HTTP超文本傳輸協(xié)議標(biāo)準(zhǔn)架構(gòu)的發(fā)展根基。Ted Nelson組織協(xié)調(diào)萬維網(wǎng)協(xié)會(World Wide Web Consortium)和互聯(lián)網(wǎng)工程工作小組(Internet Engineering Task Force )共同合作研究,最終發(fā)布了一系列的RFC,其中著名的RFC 2616定義了HTTP 1.1。
技術(shù)架構(gòu)
HTTP是一個客戶端和服務(wù)器端請求和應(yīng)答的標(biāo)準(zhǔn)(TCP)。客戶端是終端用戶,服務(wù)器端是網(wǎng)站。通過使用Web瀏覽器、網(wǎng)絡(luò)爬蟲或者其它的工具,客戶端發(fā)起一個到服務(wù)器上指定端口(默認端口為80)的HTTP請求。(我們稱這個客戶端)叫用戶代理(user agent)。應(yīng)答的服務(wù)器上存儲著(一些)資源,比如HTML文件和圖像。(我們稱)這個應(yīng)答服務(wù)器為源服務(wù)器(origin server)。在用戶代理和源服務(wù)器中間可能存在
多個中間層,比如代理,網(wǎng)關(guān),或者隧道(tunnels)。盡管TCP/IP協(xié)議是互聯(lián)網(wǎng)上最流行的應(yīng)用,HTTP協(xié)議并沒有規(guī)定必須使用它和(基于)它支持的層。 事實上,HTTP可以在任何其他互聯(lián)網(wǎng)協(xié)議上,或者在其他網(wǎng)絡(luò)上實現(xiàn)。HTTP只假定(其下層協(xié)議提供)可靠的傳輸,任何能夠提供這種保證的協(xié)議都可以被其使用。
通常,由HTTP客戶端發(fā)起一個請求,建立一個到服務(wù)器指定端口(默認是80端口)的TCP連接。HTTP服務(wù)器則在那個端口監(jiān)聽客戶端發(fā)送過來的請求。一旦收到請求,服務(wù)器(向客戶端)發(fā)回一個狀態(tài)行,比如"HTTP/1.1 200 OK",和(響應(yīng)的)消息,消息的消息體可能是請求的文件、錯誤消息、或者其它一些信息。
HTTP使用TCP而不是UDP的原因在于(打開)一個網(wǎng)頁必須傳送很多數(shù)據(jù),而TCP協(xié)議提供傳輸控制,按順序組織數(shù)據(jù),和錯誤糾正。
通過HTTP或者HTTPS協(xié)議請求的資源由統(tǒng)一資源標(biāo)示符(Uniform Resource Identifiers)(或者,更準(zhǔn)確一些,URLs)來標(biāo)識。
過程解析
http一次請求的過程大概如下:
- 用戶在瀏覽器輸入m.jrrswxmm.cn
- dns服務(wù)器解析/或者本機hosts,路由器hosts對比 獲得ip
- 瀏覽器訪問默認端口80,則訪問的tcp地址為 ip:80
- tcp協(xié)議3次握手,建立連接
- 發(fā)送一個http request請求頭
- 服務(wù)器獲得http request請求頭,表明該次訪問為http訪問,解析http請求頭,獲得請求類型,請求格式,以及請求數(shù)據(jù)(cookie,get,post數(shù)據(jù))
- 服務(wù)器發(fā)送response響應(yīng)數(shù)據(jù),主動斷開
- 瀏覽器接收response響應(yīng)數(shù)據(jù),解析響應(yīng)文本類型,解析數(shù)據(jù),斷開連接
https協(xié)議中,在請求以及響應(yīng)時多了一層tls,ssl加密解密協(xié)議,默認端口從80變?yōu)榱?43
phper中的http
由于php大部分時候都是用于web服務(wù)器,所以php開發(fā)者接觸最多的協(xié)議也就是基于tcp/ip協(xié)議的http協(xié)議了
在php初級程序員中,其實沒有詳細的了解過http協(xié)議,但是可以通過瀏覽器的f12->network去查看http協(xié)議具體的請求頭,以及服務(wù)端發(fā)送的響應(yīng)頭