總結(jié):
這本書圖文并茂讓人很容易理解,但好多知識點(diǎn)都是蜻蜓點(diǎn)水,講得不深入。我在閱讀的過程就有一下的疑問:
1、把數(shù)據(jù)信息包裝起來叫:封裝。那么首部信息是什么?
2、IP協(xié)議:包含IP地址,Mac地址。那么MAC具體有什么用?
4、URI 和URL的區(qū)別
5、HTTP傳輸中用編碼提升輸出速率?是內(nèi)容變小
6、報文主體與實(shí)體主體區(qū)別
7、代理、網(wǎng)關(guān)、隧道的區(qū)別?參考資料1、資料2
8、TCP是如何復(fù)用鏈接的?利用均衡負(fù)載器
個人建議可以當(dāng)這本書當(dāng)做HTTP導(dǎo)讀來看待,如果想要了解HTTP的話,還是去啃HTTP權(quán)威指南吧。

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