總結:
這本書圖文并茂讓人很容易理解,但好多知識點都是蜻蜓點水,講得不深入。我在閱讀的過程就有一下的疑問:
1、把數據信息包裝起來叫:封裝。那么首部信息是什么?
2、IP協議:包含IP地址,Mac地址。那么MAC具體有什么用?
4、URI 和URL的區別
5、HTTP傳輸中用編碼提升輸出速率?是內容變小
6、報文主體與實體主體區別
7、代理、網關、隧道的區別?參考資料1、資料2
8、TCP是如何復用鏈接的?利用均衡負載器
個人建議可以當這本書當做HTTP導讀來看待,如果想要了解HTTP的話,還是去啃HTTP權威指南吧。
圖解HTTP
1 0、簡單的HTTP協議
1.1 HTTP協議可以明確區分客戶端/服務端
1.2 HTTP協議無狀態協議,可由Cookie管理狀態
1.3 HTTP協議的請求方法:是一種發送請求報文的方式
1.3.1 HEAD:和GET一樣,只返回報文首部:狀態等信息
1.3.2 PUT:傳輸文件
1.3.2.1 DELETE:刪除文件
1.3.3 OPTIONS:查詢請求支持的方法
1.4 TCP鏈接要經過三次握手,所以會添加傳輸過程中的流量
1.4.1 HTTP/1.1 --持久連接(默認)
1.5 持久連接中的 管線化 --同時并行發送多個請求,不需要一個個等待響應
2 1、了解web及網絡基礎
2.1 WWW:萬維網
2.1.1 是web瀏覽器用來瀏覽超文本的客戶端應用程序的名稱
2.1.2 表示:HTML、HTTP、URL的集合
2.2 網絡基礎TCP/IP(各類協議族的總稱)
2.2.1 子集:HTTP
2.2.2 分四層:應用層、傳輸層、網絡層、數據鏈路層
2.3 與HTTP關系密切的協議
2.3.1 IP
2.3.1.1 網絡協議,確定發送/接收方的位置
2.3.1.2 重要條件:IP地址、MAC地址
2.3.2 TCP
2.3.2.1 把大塊數據分割成以報文段為單位的數據包進行管理
2.3.3 ARP
2.3.3.1 解析地址的協議,根據IP地址反查出對應的MAC地址
2.3.4 DNS
2.3.4.1 提供域名到IP地址之間的解析服務
2.3.5 URI與URL的聯系
2.3.5.1 URI(統一資源標識符)包含URL、URN(統一資源名稱)
2.3.5.2 URL,統一資源定位符(具體位置),URN(確認一個名字)
3 3、HTTP報文內的HTTP信息
3.1 用于HTTP協議交互的信息被稱為HTTP報文
3.1.1 報文的首部
3.1.1.1 請求行、各種首部字段
3.1.2 報文的主體
3.1.2.1 內容
3.1.3 結構圖
3.1.3.1
3.2 報文的主體/實體的主體
3.2.1 只有傳輸中進行了編碼操作是,兩者才有區別
3.3 內容編碼
3.3.1 gzip、compress、deflat、identity
3.4 發送的報文主體的類型(content-type)
3.4.1 multipart/form-data、multipart/by teranges等
3.5 獲取部分內容的范圍請求Range
3.5.1 用于斷點下載/上傳
4 4、返回結果的HTTP狀態碼
4.1 狀態碼描述返回的請求結果
4.1.1 1XX:接收的請求正在處理
4.1.2 2XX:請求正常處理完畢
4.1.3 3XX:需要進行附加操作以完成:例如:重定向狀態
4.1.4 4XX:服務器無法處理請求
4.1.5 5XX:服務器處理請求出錯
5 5、與HTTP協作的web服務器
5.1 虛擬主機
5.1.1 單臺虛擬主機實現多個域名(就是:一臺服務器內托管多個域名)
5.1.2 虛擬主機寄存多個不同主機名和域名的web網站。用于區分相同IP地址下的不同域名請求
5.2 通信數據轉發程序
5.2.1 代理(使用相同協議)
5.2.1.1 服務器和客戶端的“中間人”的角色,過程不改變請求URI
5.2.2 網關(使用不同的請求協議)
5.2.2.1 網間連接器、協議轉換器,是一個翻譯器;可以讓HTTP請求,轉化為其他協議的通訊
5.2.3 隧道
5.2.3.1 按要求建立一條與其他服務器的通信線路,可以使用ssl等加密手段進行通信
6 6、HTTP首部
6.1 請求報文
6.1.1 報文首部
6.1.1.1 請求行
6.1.1.1.1 方法、URI、HTTP版本
6.1.1.2 請求首部字段
6.2 響應報文
6.2.1 HTTP版本、狀態碼、HTTP首部字段
6.3 HTTP首部
6.3.1 首部的類型
6.3.1.1 End-to-end
6.3.1.1.1 必須轉發
6.3.1.2 Hop-to-hop
6.3.1.2.1 單次轉發有有效,緩存和代理不在轉發:就是會忽略了
6.3.1.2.2 除了8個是,其中有Connection
6.3.2 首部字段類型
6.3.2.1 通用首部字段、請求首部字段、響應首部字段
6.3.2.2 實體首部字段
6.3.2.2.1 Allow:資源可支持HTTP的方法
6.3.2.2.2 補充資源內容更新的時間等與實體有關的信息
6.3.3 首部字段結構
6.3.3.1 首部字段命:字段值
6.3.3.2 如果字段名重復了,就根據瀏覽器內部處理邏輯的不同,結果可能不同
7 7、確保web安全的HTTPS
7.1 HTTP的不足
7.1.1 1、通信用明文,內容被竊聽
7.1.2 2、不驗證通信方的身份,遭遇偽裝
7.1.3 3、無法證明報文的完整性,內容可能遭篡改
7.1.3.1 中間人攻擊:通信中,遭攻擊者攔截并篡改內容的攻擊
7.2 解決方法:HTTPS
7.2.1 身披SSL外殼的HTTP
7.2.2 通訊過程
7.2.2.1 1、公開密鑰來交換共享密鑰
7.2.2.2 2、使用共享的密鑰來交換通信數據
7.2.3 SSL
7.2.3.1 1、加密
7.2.3.2 2、提供認證,確定身份。
7.2.3.3 3、摘要功能:完整性
8 8、確認訪問用戶身份的認證
8.1 1、BASIC認證 (基本認證)
8.1.1 HTTP/1.0
8.1.2 狀態碼401要求客戶端輸入進行認證 客戶端講用戶ID和密碼以Base64編碼后發送 (相當于明文,密碼容易泄露)
8.2 2、DIGEST認證 (摘要認證)
8.2.1 HTTP/1.1
8.3 3、SSL客戶端認證
8.4 4、FormBase認證(基于表單認證)
8.4.1 使用cookies來管理鏈接狀態
9 9、基于HTTP的功能追加協議
9.1 Ajax 局部更新
9.2 Comet 延遲響應直到服務器有更新
9.3 SPDY
9.3.1 在HTTP于TCP之前,都用SSL,解決HTTP性能瓶頸問題
9.3.2 優點
9.3.2.1 1、多路復用TCP【但目前只是將單個域名的通信多路復用】
9.3.2.2 賦予請求優先級、壓縮HTTP首部、推送功能
9.4 WebSocket
9.4.1 web瀏覽器與web服務器之間全雙工通信標準
9.4.2 建立在HTTP基礎上的協議,有客戶端發起請求,建立后雙方可以主動互相通信
9.5 HTTP/2.0
9.5.1 集SPDY、WebSocket的優勢
10 10、構建Web內容的技術
10.1 HTML
10.1.1 超文本標記語言。超文本是一種文檔系統,將文檔中任意位置的信息與其它信息建立關聯,即超鏈接文本
10.2 CSS
10.2.1 指定如何展現HTML內的各種元素。目的是讓文檔的結構和設計分離
10.3 JavaScript
10.3.1 實現對HTML的web頁面的動態改造。
10.4 DOM
10.4.1 將HTML內的元素當做對象操作。js對DOM的操作,簡單控制HTML改變
10.5 數據發布的格式及語言
10.5.1 XML
10.5.1.1 可拓展標記語言,是一種記錄數據的結構
10.5.1.2 RSS數據結構就是用XML
10.5.1.2.1 是發布新聞、博客日志更新信息文檔的格式總稱
10.5.2 JSON
10.5.2.1 是一種以Javascript的對象表示法為基礎的輕量級數據標記語言。