發現大部分技術人,多多少少都會遇到下面的困惑,好比:前端
AJAX 跨域訪問時總被瀏覽器的同源策略阻止,其背後的原理及符合其設計思想的解決方案是什麼?面試
緩存能夠提高性能,但什麼樣的 HTTP 消息纔會被瀏覽器或者代理服務器緩存呢?編程
抓包時收到 4xx 或者 5xx HTTP 響應碼,這意味着服務器端發生了什麼?後端
當咱們維護 HTTPS 鏈接時,若是要優化TLS/SSL 的卸載性能,應該從哪裏入手?跨域
定位問題時,發現本地的 TCP 鏈接狀態中出現了FIN_WAIT、CLOSE_WAIT 或者TIME_WAIT,都是什麼緣由引發的?應該如何解決?瀏覽器
想要提高 TCP 鏈接的傳輸速度,可服務器上相關的系統參數多達數十個,究竟該怎麼調整?緩存
時下逐漸普及的 IPv6 ,在報文上到底與 IPv4 協議有何差異?性能優化
你會發現,這些問題其實都和 Web 協議密切相關。我經常聽到身邊人抱怨「學不動了」,之因此會這樣,大可能是由於沒有掌握好互聯網體系中的底層知識。這些知識點相對穩定,而其餘時刻變化的知識點是構建在這些知識點之上的。一旦掌握好,就能夠長久使用,而且保持快速學習的能力。服務器
Web 協議就是其中很是重要的一個模塊。雖然它經常要兼容 internet 中很是古老或者有着突破性創新的瀏覽器或者服務器,從而也在時刻進化,但只要咱們抓住它設計時背後的指導原則,系統地將 Web 協議轉化爲咱們頭腦中的結構體知識,就能夠對咱們學習先後端開發框架、面向鏈接的編程語言、各類分佈式組件、架構設計、微服務編程等都起到事半功倍的效果。網絡
能夠說,不管你是先後端工程師,仍是運維測試,若是想面試更高的職位,或者要站在更高的角度去理解技術業務架構,並能在問題出現時快速、高效地解決問題,Web 協議必定是你繞不過去的一道坎。熟練掌握各類經常使用 Web 協議,能夠幫你在工做中輕鬆應對各類網絡難題。
若是你是前端工程師,能夠快速定位問題的根源在後端仍是前端,對網頁性能的提高會有更多的思路。
若是你是後端工程師,能夠更清晰地理解Web容器的工做原理,在網絡層面快速縮小問題範圍。
若是你是運維工程師,能夠更明確地規劃硬件及網絡資源,對於故障節點的恢復也會有更系統的解決方案。
若是你是測試工程師,能夠對壓測工具的原理有更深刻的理解,對RPC測試用例的構造也會更全面。
若是你是架構師,將會對分佈式系統下的高可用架構設計和性能優化等問題有更加體系化的認識。
但是,想要真正掌握 Web 協議,並無想象中那麼容易。我發現大部分人在學習時,都卡在下面這些問題上:
Web協議的體系龐大,大多概念過於抽象,致使初學者很容易從入門到放棄。
很難快速上手,就算弄懂了複雜的概念,工做中一遇到複雜問題,仍是一頭霧水,不知道如何下手。
網上有不少文章能夠參考,但要不就是知識點零散,要不就是解釋得走馬觀花,沒法深刻到底層。
市面上相關的課程不多,要不就是僅僅講述某一個協議,要不就是隻從理論出發來說解,實戰性不強。
除此以外,不多有人會在文章或課程裏經過抓包去把 Web 協議的各個細節呈現出來,而後掰開揉碎了講給你們。基於此,我推薦你陶輝老師在極客時間開的《Web 協議詳解與抓包實戰》視頻課,徹底從實戰出發,在關鍵場景中結合抓包工具進行實戰分析,爲你深刻淺出地講解常見 Web 協議涉及到的核心知識,並完全掌握這些協議。
陶輝是誰?
陶輝,如今是智鏈達 CTO。他曾擔任阿里雲高級專家,也在華爲、騰訊、思科等公司從事過服務器端的研發工做。相信陶輝來說 Web 協議詳解與抓包實戰,必定會帶給你不同的收穫。爲何這麼說?
在華爲他負責 iMAP 網管系統的研發,在經過 SNMP 等協議管理衆多網絡設備的過程當中,對路由器交換機如何處理協議棧、選擇路由、轉發報文等流程有了深刻的理解;
在騰訊QQ空間,經過使用自定義的、基於 TCP 的 Qzone 協議傳遞巨量的數據,他對如何設計出高性能、可擴展的應用協議有了豐富的實踐經驗;
在思科他從事 Nginx 服務的研發,對 Web 服務器如何高效地處理 HTTP 協議有了全面的認識;
在阿里雲做爲 VPC 軟件自定義網絡項目中的管理系統架構師,他經過基於 Intel DPDK 自建網關、自定義網絡層協議等工做,對 IDC 內部網絡系統有了深入瞭解。
在《Web 協議詳解與抓包實戰》視頻課中,陶輝老師會把本身十幾年積累的第一手經驗毫無保留地分享給你們。
你能得到什麼?
陶輝老師會跟你一塊兒從應用層到底層,經過具體問題和場景來學習 Web 協議。具體來講,你能夠有下面 4 點收穫。
課程將基於應用場景深刻介紹Web協議棧中最經常使用的HTTP/1.一、Websocket、HTTP/2.0、TLS/SSL、TCP、IP協議,這些協議處在 OSI 網絡棧中的不一樣層級,每一層對上層協議封裝、隱藏其下層協議的實現細節,而上層協議必須理解其相鄰下層協議解決了什麼問題,有哪些約束條件。陶輝老師會帶你自上而下的學習這些協議的語法、應用場景,以創建起結構體的知識體系。
網絡問題最爲複雜,它涉及到多樣化的客戶端、技術相對封閉的網絡設備、層層可能修改消息的代理服務器、快速迭代中的源服務器等,當客戶端與服務器因爲編程、配置錯誤形成系統故障時,相比在某一端使用經驗式的排除法查錯,從網絡層面定位問題更爲科學、快速而有效。
陶輝老師會配合抓包實踐來帶你深刻了解協議細節。關於抓包工具的學習,則會遵循「即用即學」的原則,用到什麼學什麼,讓你快速上手。
對於HTTP報文的抓包實踐,主要使用 Chrome 瀏覽器提供的開發者工具 Network 面板,同時也將使用到 curl、telnet 命令行來模擬 HTTP 請求的發送。Wireshark是這門課程的主要抓包工具,包括過濾器、各面板的使用、如何基於統計分析報文等。對於服務器端的抓包咱們會使用 tcpdump工具,並配合 Wireshark 分析報文。
HTTP 最初用於解決人與機器的通信,瞭解指導其設計原則的REST架構,就能理解在空間上它如何應對全球性的巨型分佈式網絡,在時間上如何應對數十年的技術變遷。
在分層架構下各層都有其待解決的核心問題,TLS/SSL協議面對的是如何使用非對稱加密協商密鑰及驗證身份,TCP協議面對的則是可控流量下的可靠傳輸,IP協議則關注報文在主機間的可達性,帶着這些需求及約束,即可從容應對變化。