一: 結(jié)構(gòu)圖:

二 : http特性
狀態(tài)碼:
1: http響應(yīng)報(bào)文中狀態(tài)碼的意義: 不僅作為錯(cuò)誤碼使用, 而且有指示客戶端下一步如何行動(dòng)的用途. 有點(diǎn)像連麥服務(wù)器: 推流過載時(shí)返回客戶端(“嘗試下一個(gè)ip”)
2:狀態(tài)碼不見得只有200是正確的, 204也是ok的
3:實(shí)際項(xiàng)目中可以用狀態(tài)碼, 作為客戶端是否可以繼續(xù)重試的標(biāo)準(zhǔn)
重要頭部字段學(xué)習(xí)
1:accept語義: 希望我這邊接受什么數(shù)據(jù)類型,Content-Type: 對(duì)方應(yīng)該按什么類型解析
http傳輸大文件的方法
1: 壓縮
2: 化整為零: 分塊傳輸:chunk
3: 范圍請(qǐng)求: accept-range
總結(jié):以上3中方法, 可以混合使用
http連接管理
1: 短連接: 效率慢
2: 長(zhǎng)鏈接: 解決1的問題, 提高傳輸效率
3: pipeline: 解決4問題: 但是有缺點(diǎn): 可以發(fā)送一批請(qǐng)求, 某種意義上做到了并發(fā). ?但是有限制: 就是不能立即回復(fù), 按請(qǐng)求順序發(fā)送回復(fù). 嚴(yán)格意義并沒有解決隊(duì)頭阻塞問題, 本質(zhì)原因: 沒有辦法將請(qǐng)求和響應(yīng)用序號(hào)對(duì)應(yīng)起來. 所以必須按順序發(fā)送回復(fù)
4: 隊(duì)頭阻塞: 只有前面的請(qǐng)求處理處理完之后收到回復(fù)才會(huì)發(fā)送下一個(gè)請(qǐng)求
解決方案: 1: 并發(fā)連接 ?2: {3}
http中的重定向
應(yīng)用場(chǎng)景: 網(wǎng)站變更, 域名變更, 服務(wù)器臨時(shí)維護(hù)
http中的cookie機(jī)制
1: 彌補(bǔ)無狀態(tài)的缺點(diǎn)
2: 增加記憶能力
3: 使用第三方cookie: 意味無論你在那里服務(wù)器都會(huì)認(rèn)識(shí)你, 實(shí)現(xiàn)廣告的精準(zhǔn)投放
4: ?服務(wù)器生成, 瀏覽器緩存
http中的緩存機(jī)制
1: 服務(wù)器告訴瀏覽器是否可以緩存, 并且可以告訴緩存的時(shí)間大小
2: 瀏覽器也可以強(qiáng)制刷新數(shù)據(jù), 無視緩存
http代理
1: http代理如果想要知道客戶端的真實(shí)IP地址,可以使用字段“X-Forwarded-For”和“X-Real-IP“.
2: 專門的“代理協(xié)議”可以在不改動(dòng)原始報(bào)文的情況下傳遞客戶端的真實(shí)IP。
http緩存服務(wù)器:
1: 類似于代理服務(wù)器
2: 需要cache-control和purge的控制
http優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
1:簡(jiǎn)單, 靈活, 易于擴(kuò)展,
2:無狀態(tài)
缺點(diǎn):
1: head用明文傳輸, 用抓包工具可以看到, 不安全
2:隊(duì)頭阻塞
三: http/2
1: 主要目標(biāo): 對(duì)http做性能優(yōu)化
2: 頭部壓縮: ?http/1主要的壓縮是對(duì)body進(jìn)行的, 但卻忽視了header: 采用hpack算法
3: 采用二進(jìn)制形式: 體積小, 速度快, 原來的header和body變成二進(jìn)制幀
4: 虛擬化stream概念: 同消息往返的幀有相同唯一的stream_id, 可以理解為里面流動(dòng)的有許多steam, 但是同stream的幀是有先后順序的. 從stream層面看, 二進(jìn)制幀是有順序的, 但是從連接層面的, 是無序的; 由于有了streamid, 可以將請(qǐng)求和回復(fù)對(duì)應(yīng)在一起, 也就沒有了隊(duì)頭阻塞問題
5: 改變了請(qǐng)求-應(yīng)答模型, 服務(wù)器可以主動(dòng)push消息

在概念上,?個(gè)HTTP/2的流就等同于?個(gè)HTTP/1?的“請(qǐng)求-應(yīng)答”。在HTTP/1??個(gè)“請(qǐng)求-響應(yīng)”報(bào)?來回是?次HTTP通信,在HTTP/2??個(gè)流也承載了相同的功能。
四: http3.0
1:完全解決了隊(duì)頭阻塞的問題: 將底層的tcp換成udp, 因?yàn)閠cp的有序性天然存在隊(duì)頭阻塞問題
2:使用quic協(xié)議: ?支持連接遷移 比如網(wǎng)絡(luò)切換不需要重新建立連接
五: Cdn
1: 可以加速訪問http服務(wù)
2: 解決跨網(wǎng)訪問慢的問題
3: cdn運(yùn)行原理: 全局負(fù)載均衡 + 緩存系統(tǒng)
全局負(fù)載均衡: 尋找邊緣節(jié)點(diǎn), 按地理位置, 運(yùn)營(yíng)商網(wǎng)絡(luò), 負(fù)載能力.
六: Websocket
1: 解決http實(shí)時(shí)通信難的問題
2: 全雙工, http是半雙工
3: 采用二進(jìn)制幀結(jié)構(gòu)
七: http性能優(yōu)化

1: cdn解決了中間一公里的問題
2:企業(yè)應(yīng)該致力于解決第一公里的問題
3:最后一公里無法控制