《圖解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請求轉化為其他協議通訊;提高通訊的安全性
隧道:遠距離;安全通訊
快取是指代理伺服器或客戶端本地磁碟儲存的資源副本。利用快取可以減少對源伺服器的訪問,也就節省了通訊流量的通訊時間。
代理伺服器轉發伺服器響應時,會儲存一份資源副本。客戶端快取是儲存在本地磁碟內的臨時網路檔案。如果瀏覽器快取有效,就不必再向伺服器請求相同的資源了。