1. 程式人生 > >《圖解http》讀書筆記(一)

《圖解http》讀書筆記(一)

《圖解http》是http入門級別的書,圖文並茂,對初學者十分友好。強烈推薦~最近又看了一遍,簡單地寫一下讀書筆記吧。【第一至五章】

第一章 網路基礎

輸出一串url,點選回車就可以看到web頁面,web頁面是怎麼顯示出來的呢?web瀏覽器向web伺服器傳送請求,獲取資源,web頁面顯示。web是基於http協議進行通訊的。http通訊又是基於TCP建立連線的,圖為通訊過程。

應用層:決定了向用戶提供服務時通訊的活動。應用層的協議: HTTP、FTP、DNS。

傳輸層: 提供網路連線中兩臺計算機之間的資料傳輸。傳輸層的協議:TCP、UDP。

網路層: 處理在網路上流動的資料包。網路層的協議:IP

鏈路層:處理連線網路的硬體部分。

Tcp提供可靠的位元組流服務:三次握手建立連線,資料傳送過程中,傳送端發包,接收端收包之後會發送一個確認包,否則傳送端會再發包。

第二章 簡單的HTTP協議

  • http協議用於客戶端和伺服器端的通訊
  • http協議是不儲存狀態的協議

什麼是客戶端? 主動發請求的就是客戶端。像通過請求獲取伺服器資源的web瀏覽器等,都可稱為客戶端。

HTTP的方法 作用

GET

獲取資源

POST

傳輸實體主體  (增加資源)
PUT 修改資源

DELETE

刪除資源

HEAD

和GET 方法一樣,只是不返回報文主體部分,用於確認URI的有效性和資源更新的日期時間等。

OPTIONS

詢問支援的方法,用於查詢針對請求URI指定的資源支援的方法

TRACE

追蹤路徑(不常用,容易引發XST攻擊)
CONNECT 要求應隧道協議連線代理

HTTP 協議是無狀態協議,引入Cookie來管理客戶端的狀態。

首次通訊時,客戶端沒有Cookie,登入成功後,伺服器端會生成Cookie並返回響應,響應欄位裡面包含一個Set-Cookie,客戶端收到響應,儲存cookie,下次發請求時會帶上cookie。 Cookie裡面的sessionid用於唯一標識一個使用者。

第三章 HTTP報文內的HTTP資訊

用於http協議互動的資訊稱為http報文。http報文字身是由多行資料構成的字串文字,報文分為報文首部和報文主體兩塊。

報文:http報文是http通訊的基本單位,由8位組位元組流組成,通過http通訊傳輸

實體:請求或響應的有效載荷資料。實體包含在報文裡面,通常,報文主體等於實體主體。只有當傳輸中進行編碼操作時,實體主體的內容發生變化,實體主體和報文主體才會產生差異。

http的內容編碼可以實現實體的壓縮。

常用的內容編碼:

  • gzip
  • compress
  • deflate 
  • identity (不進行壓縮)

第四章 HTTP狀態碼

http狀態碼用來描述伺服器端返回請求的結果。

1xx

請求正在處理

2xx

請求被成功處理

3xx

重定向

4xx

客戶端出錯

5xx

伺服器端出錯

常用的http狀態碼:

200  OK

請求被正常處理

204 No Content

請求已成功處理,但返回的響應不包含(也不允許包含)實體的主體部分

206 Partial Content

範圍請求被成功處理

301 Moved Permanently

永久重定向

302 Found

臨時重定向

303 See Other

與302有著相同的功能,但是303明確表示客戶端應使用GET方法獲取資源

304 Not Modified

請求的資源未過期,響應不包含主體部分

307  Temporary Redirect

臨時重定向,但是會遵守瀏覽器標準,禁止POST 變成GET

400 Bad Request

請求報文中存在語法錯誤

401 Unauthorized

請求需要認證,如果已經認證過,則表示使用者認證失敗

403 Forbidden

禁止訪問,使用者沒有許可權訪問

404 Not Found

沒有找到請求的資源

500 Internal Server Error

伺服器端在執行請求時發生了錯誤

503 Service Unavailable

伺服器無法處理請求

當返回301、302、 303時,幾乎所有的瀏覽器都會把POST 改成GET,並刪除請求報文內的主體,之後請求自動重發。

301、302標準禁止將POST 改成GET,但是實際使用時大家都會這麼做。

第五章 web伺服器

一臺web伺服器可搭建多個獨立域名的web網站,也可作為通訊路徑上的中轉伺服器提升傳輸效率。

利用虛擬主機的功能,一臺web伺服器可搭建多個web站點,若www.tricode.jp與www.hackr.jp 搭建在同一臺伺服器上面,則通過DNS解析出的ip地址是相同的,因此,http請求,必須指定完整的主機名或域名的URI。

通訊資料轉發程式:代理、閘道器、隧道

代理伺服器:接受請求(或響應)並轉發。

好處: 利用快取技術減少網路頻寬的流量,組織內部針對特定網站的訪問控制,以獲取日誌為主要目的等等。

閘道器: 可以是http請求轉化為其他協議通訊;提高通訊的安全性

隧道:遠距離;安全通訊

快取是指代理伺服器或客戶端本地磁碟儲存的資源副本。利用快取可以減少對源伺服器的訪問,也就節省了通訊流量的通訊時間。

代理伺服器轉發伺服器響應時,會儲存一份資源副本。客戶端快取是儲存在本地磁碟內的臨時網路檔案。如果瀏覽器快取有效,就不必再向伺服器請求相同的資源了。