小夥伴們在面試過程當中會遇到一些HTTP/網絡TCP/IP相關問題web
我大概收集整理了下面試
這些問題咱們均可以在如下文章中找到答案緩存
無狀態協議服務器
解決:cookie
websocket
每次請求,從新鏈接,增長開銷cookie
解決:keep-alive
網絡
一條鏈接只能發一個請求併發
解決:管線化
負載均衡
請求只能從客戶端開始socket
解決:SPDY/comet/websocket
請求/響應首部未壓縮 解決:SPDY
爲了提升http性能 SPDY以會話層形式加入 HTTP —> SPDY(會話層) -> SSL -> TCP ... 實現如下功能
利用 tcp 握手揮手 任意一端沒有提出斷開,則保持鏈接狀態 一個TCP連接能夠處理多個http請求
依賴持久化連接 管線化技術 可實現併發請求
多個HTTP請求發送能夠一塊兒發送
根據 從 服務器端發送的響應報文 set-cookie 首部字段信息,通知客戶端保存 cookie 客戶端再次請求時,自動在請求報文中加入cookie發出
服務器端有更新,不會等待請求,而是直接返回響應,延遲應答模式
客戶端請求,服務端響應掛起,有內容更新時返回,
缺點:爲了保留響應,一次鏈接時間變長,消耗資源
服務端和客戶端創建通訊鏈接,以後可互相發送數據
本文重點不在websocket,不會詳細講解
改善用戶使用web速度體驗,基於 SPDY 設計
http1.1即使是經過管道同時發送了多個請求,服務端也是按請求的順序依次給出響應的;而客戶端在未收到以前所發出全部請求的響應以前,將會阻塞後面的請求(排隊等待),這稱爲"隊頭堵塞"
解決 : 多路複用
http2.0雖然依然遵循請求-響應模式,但客戶端發送多個請求和服務端給出多個響應的順序不受限制,這樣既避免了"隊頭堵塞",又能更快獲取響應。在複用同一個TCP鏈接時,服務器同時(或前後)收到了A、B兩個請求,先回應A請求,但因爲處理過程很是耗時,因而就發送A請求已經處理好的部分, 接着迴應B請求,完成後,再發送A請求剩下的部分
HTTP1.x 採用文本格式
HTTP2.0 採用二進制格式
方便且健壯
基於 SPDY
基於 SPDY
TCP鏈接複用是將多個客戶端的HTTP請求複用到一個服務器端TCP鏈接上:
主要利用負載均衡
技術,