HTTP協議筆記整理

有人說過,精通HTTP協議能贏過95%的前端工程師,所以我毅然的踏上這條路,哈哈哈,接下來把自己的學習筆記整理出來。

我會從比較底層的模型開始:

1、網絡的五層模型

2、TCP/IP協議

3、HTTP協議

4、端口的作用

5、響應碼

6、HTTPS協議

7、資源跨域共享(CORS)

 

一:網絡的五層模型

網絡的五層模型如下圖:

物理層主要功能:爲數據端設備提供傳送數據通路、傳輸數據。數據通路可以是一個物理媒體,也可以是多個物理媒體連接而成,物理層的媒體包括架空明線、平衡電纜、光纖、無線信道等,處於最底層,卻是整個開放系統的基礎。

 數據鏈路層:在物理層提供的服務的基礎上向網絡層提供服務,主要功能有:將數據組合成數據塊,控制數據塊在物理信道上的傳輸,在兩個網絡實體之間提供數據鏈路通路的建立、維持和釋放的管理。

網絡層:數據鏈路層提供的兩個相鄰端點之間的數據幀的傳送功能上,進一步管理網絡中的數據通信,將數據設法從源端經過若干個中間節點傳送到目的端,從而向運輸層提供最基本的端到端的數據傳送服務。網絡層的目的是實現兩個端系統之間的數據透明傳送,具體功能包括尋址和路由選擇、連接的建立、保持和終止等。

運輸層:作用是在優化網絡服務的基礎上,爲源主機和目標主機之間提供可靠的價格合理的透明數據傳輸,使高層服務用戶在相互通信時不必關心通信子網實現的細節,是整個協議中最核心的一層。

應用層的核心功能:需要完成數據的管理和數據的處理,將這些數據與各行業應用相結合。

 

網絡五層模型及對應的協議:

 

二:TCP/IP協議

早期的計算機網絡都是由各廠商自己規定一套協議,互不兼容。計算機爲了聯網,規定了一套通用的協議,就是互聯網協議(TCP/IP協議)

IP協議:

IP是每個網卡上網的唯一身份標識,是TCP/IP協議中的強制標準。這不是說每個主機只有一個IP地址,IP地址對應的是計算機的網絡接口,通常是網卡。

IP協議負責把IP數據包從一臺計算機通過網絡發送到另一臺計算機。即數據被分割成一小塊一小塊,然後通過IP包發送出去。由於它的這種特性,所以IP包的特點是按塊發送,途徑多個路由,不保證能到達,也不保證順序到達。

IP數據包包括首部和數據,首部中包括源地址和目標地址,源端口和目標端口。

 

 

 

 TCP協議:

TCP協議是建立在IP協議之上的,就是爲了解決IP協議的不可靠性和不連續性。TCP協議負責在兩臺計算機之間建立可靠連接,保證數據包按順序到達。

TCP協議會通過握手建立連接,對每個IP數據包編號,確保對方按順序收到,如果包丟了,就會自動重發。

更高級的協議建立在TCP協議基礎上,比較FTP文件傳輸協議、SMTP郵件傳輸協議、HTTP超文本傳輸協議等等。

 

三:HTTP協議

HTTP協議在棧中的位置:

HTTP是在網絡上傳輸HTML的協議,用於瀏覽器和服務器的通信,以明文方式發送內容,不提供任何方式的數據加密。

在WEB應用中,服務器把網頁傳給瀏覽器,實際上就是把網頁的HTML代碼發送給瀏覽器,讓瀏覽器渲染出來。

HTTP協議的主要特點:

1、支持客戶/服務器模式

2、簡單快速:客戶端向服務器請求服務時,只需發送請求方法和路徑

3、靈活:HTTP允許傳輸任意類型的數據對象

4、無連接:限制每次連接只處理一個請求,服務器處理完客戶的請求並收到客戶的應答後,就會斷開連接

5、無狀態:是指協議對於事務處理沒有記憶能力,缺少狀態意味着如果後續處理需要前面的信息,則必須重傳,這樣可能導致每次連接傳送的數據量增大,所以cookie是爲了解決這個問題

 

http://120.77.171.182:80/

http表示要通過HTTP協議來定位網絡資源;

120.77.171.182表示合法的IP地址,當然也可以是主機域名;

80是指定的一個端口號,省略了也會默認80端口;

通常有一些url地址會在端口號後面跟上/index.html之類,端口之後的是請求資源的URI;如果沒有,瀏覽器會自動以‘/’的形式給出。

 

在地址欄輸入http://120.77.171.182/

瀏覽器發給服務器的請求

GET表示一個讀取請求,將從服務器獲得網頁數據,/表示URL的路徑,URL總是以/開頭,/就表示首頁,最後的HTTP/1.1指示採用的HTTP協議版本是1.1。

Host表示請求的域名

 

顯示服務器返回的原始響應數據

200表示一個成功的響應,後面的OK是狀態描述。

瀏覽器就是依靠Content-Type來判斷響應的內容是網頁還是圖片,是視頻還是音樂。

當瀏覽器讀取到新浪首頁的HTML源碼後,它會解析HTML,顯示頁面,然後,根據HTML裏面的各種鏈接,再發送HTTP請求給新浪服務器,拿到相應的圖片、視頻、Flash、JavaScript腳本、CSS等各種資源,最終顯示出一個完整的頁面。

 

HTTP請求流程

步驟1:瀏覽器首先向服務器發送HTTP請求,請求包括:

方法:GET還是POST,GET僅請求資源,POST會附帶用戶數據;

路徑:/full/url/path;

域名:由Host頭指定:Host: 120.77.171.182

以及其他相關的Header;

如果是POST,那麼請求還包括一個Body,包含用戶數據。

步驟2:服務器向瀏覽器返回HTTP響應,響應包括:

響應代碼:200表示成功,3xx表示重定向,4xx表示客戶端發送的請求有錯誤,5xx表示服務器端處理時發生了錯誤;

響應類型:由Content-Type指定;text/html是純網頁內容、text/plain是純文本、image/jpeg是圖片資源

以及其他相關的Header;

通常服務器的HTTP響應會攜帶內容,也就是有一個Body,包含響應的內容,網頁的HTML源碼就在Body中。

步驟3:如果瀏覽器還需要繼續向服務器請求其他資源,比如圖片,就再次發出HTTP請求,重複步驟1、2。

 

四:端口的作用

在一臺服務器上通常只有一個IP地址,但是服務可能有很多個,比如一臺計算機有qq、瀏覽器、視頻多種應用,數據傳送過來無法知道該傳給哪一個服務,所以有了端口號作以區分。

作用:區分服務類別和在同一時間進行多個會話。

80端口:Web服務默認端口號

21端口:telnet協議的端口

 

五:響應碼

1XX:信息響應類,表示接收到請求並且繼續處理
2XX:處理成功響應類,表示動作被成功接受、理解和接受
3XX:重定向響應類,爲了完成指定的動作,必須接受進一步處理
4XX:客戶端錯誤,客戶請求包含語法錯誤或者不能正確執行
5XX:服務端錯誤,服務器不能正確執行一個正確的請求

 

六:HTTPS協議

是以安全爲目標的HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層。

一般意義上的https,就是服務器有一個證書

http和https的對比

        

 

HTTP和HTTPS的區別:

 

七:跨域資源共享CORS

允許瀏覽器向跨源服務器發出XMLHttpRequest請求,從而克服了AJAX只能同源使用的限制

一般是在服務器端進行控制,在服務器編寫一個跨域資源共享接口。

Access-Control-Allow-Origin:*       表示接受任意域名的請求,該字段是必須的。

Access-Control-Allow-Credentials:true      表示是否允許發送Cookie

Access-Control-Request-Method      該字段是必須的,用來列出瀏覽器的CORS請求會用到哪些HTTP方法

 

今天整理到這裏了,歡迎指正!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章