作爲一個碼農,必須知道的 Web 協議有哪些?

嗨,大家好,我是八音弦。


還記得以前我提過的常見面試題麼:從瀏覽器地址欄輸入網址,到網頁徹底打開,中間都發生了什麼?從瀏覽器輸入網址,到網頁打開,發生了什麼,這題有多經典,很多業內技術大牛說用過這題面試過新人,你說經典不經典。


百度 FEX 前端團隊的負責人,T8 前端大佬吳多益寫了一篇文章:《從輸入 URL 到頁面加載完成的過程中都發生了什麼事情》。有興趣的可以翻翻八年前的這位頂尖架構師的舊文,他把整個過程拆成了六個問題:


  1. 從輸入 URL 到瀏覽器接收的過程中發生了什麼事情?

  2. 瀏覽器如何向網卡發送數據?

  3. 數據如何從本機網卡發送到服務器?

  4. 服務器接收到數據後會進行哪些處理?

  5. 服務器返回數據後瀏覽器如何處理?

  6. 瀏覽器如何將頁面展現出來?


每一個問題,多益都做了深入的講解,並給出了延伸學習的資料,讓人看後受益匪淺,大呼過癮。有人說他是在炫技,但是沒有如此強的技術功底,是沒法炫的如此漂亮的。


大部分技術人,可能多多少少都會遇到下面的困惑,比如:


  • AJAX 跨域訪問時總被瀏覽器的同源策略阻止,其背後的原理及符合其設計思想的解決方案是什麼?

  • 緩存可以提升性能,但什麼樣的 HTTP 消息纔會被瀏覽器或者代理服務器緩存呢?

  • 抓包時收到 4xx 或者 5xx HTTP 響應碼,這意味着服務器端發生了什麼?

  • 當我們維護 HTTPS 連接時,如果要優化TLS/SSL 的卸載性能,應該從哪裏入手?

  • 定位問題時,發現本地的TCP連接狀態中出現了FIN_WAIT、CLOSE_WAIT 或者TIME_WAIT,都是什麼原因引起的?應該如何解決?

  • 想要提升TCP連接的傳輸速度,可服務器上相關的系統參數多達數十個,究竟該怎麼調整?

  • 時下逐漸普及的 IPv6 ,在報文上到底與 IPv4 協議有何差別?


你會發現,這些問題其實都和 Web 協議密切相關。我常常聽到身邊人抱怨“學不動了”,之所以會這樣,大多是因爲沒有掌握好互聯網體系中的底層知識。這些知識點相對穩定,而其他時刻變化的知識點是構建在這些知識點之上的。一旦掌握好,就可以長久使用,並且保持快速學習的能力。


Web 協議有多重要,前面關於經典面試題的舊文已經提過,如果不能完整掌握協議的特徵和目的,很多優化,故障排查,無從談起,所幸協議層的進化並不如語言和工具那樣頻繁和激進,只要我們抓住它設計時背後的指導原則,系統地將 Web 協議轉化爲我們頭腦中的結構體知識,就可以對我們學習前後端開發框架、面向連接的編程語言、各種分佈式組件、架構設計、微服務編程等都起到事半功倍的效果。


可以說,無論你是前後端工程師,還是運維測試,如果想面試更高的職位,或者要站在更高的角度去理解技術業務架構,並能在問題出現時快速、高效地解決問題,Web 協議一定是你繞不過去的一道坎。甚至會頻繁出現在各個重要崗位的面試中,熟練掌握各種常用 Web 協議,可以幫你在工作中輕鬆應對各種網絡難題。


  • 如果你是前端工程師,可以快速定位問題的根源在後端還是前端,對網頁性能的提升會有更多的思路。

  • 如果你是後端工程師,可以更清晰地理解Web容器的工作原理,在網絡層面快速縮小問題範圍。

  • 如果你是運維工程師,可以更明確地規劃硬件及網絡資源,對於故障節點的恢復也會有更系統的解決方案。

  • 如果你是測試工程師,可以對壓測工具的原理有更深入的理解,對RPC測試用例的構造也會更全面。

  • 如果你是架構師,將會對分佈式系統下的高可用架構設計和性能優化等問題有更加體系化的認識。


可是,想要真正掌握 Web 協議,並沒有想象中那麼容易。我發現大部分人在學習時,都卡在下面這些問題上:


  • Web協議的體系龐大,大多概念過於抽象,如果缺乏場景觀,很多初學者會很容易從入門到放棄。

  • 很難快速上手,就算勉強弄懂了複雜的概念,工作中一遇到複雜問題,還是一頭霧水,不知道如何下手。

  • 網上有很多文章可以參考,但要不就是知識點零散,要不就是解釋得蜻蜓點水,無法深入到底層。即便是我前文推薦的頂尖架構師的博客,也需要有一定經驗和知識基礎,才能掌握其技巧核心。

  • 市面上相關的課程很少,要不就是僅僅講述某一個協議,要不就是隻從理論出發來講解,實戰性不強。


除此之外,很少有人會在文章或課程裏通過抓包去把 Web 協議的各個細節呈現出來,然後掰開揉碎了講給大家。基於此,我推薦你陶輝老師在極客時間開的《Web 協議詳解與抓包實戰》視頻課完全從實戰出發,在關鍵場景中結合抓包工具進行實戰分析,爲你深入淺出地講解常見 Web 協議涉及到的核心知識,並徹底掌握這些協議。

秒殺+口令「webxieyi6」立省 ¥85


原價¥199,僅限 50 個名額


作者陶輝,現在是智鏈達 CTO。他曾擔任阿里雲高級專家,也在華爲、騰訊、思科等公司從事過服務器端的研發工作。相信陶輝來講 Web 協議詳解與抓包實戰,一定會帶給你不一樣的收穫。爲什麼這麼說?


  • 在華爲他負責 iMAP 網管系統的研發,在通過 SNMP 等協議管理衆多網絡設備的過程中,對路由器交換機如何處理協議棧、選擇路由、轉發報文等流程有了深入的理解;

  • 在騰訊QQ空間,通過使用自定義的、基於 TCP 的 Qzone 協議傳遞巨量的數據,他對如何設計出高性能、可擴展的應用協議有了豐富的實踐經驗;

  • 在思科他從事 Nginx 服務的研發,對 Web 服務器如何高效地處理 HTTP 協議有了全面的認識;

  • 在阿里雲作爲 VPC 軟件自定義網絡項目中的管理系統架構師,他通過基於 Intel DPDK 自建網關、自定義網絡層協議等工作,對 IDC 內部網絡系統有了深刻了解。


在《Web 協議詳解與抓包實戰》視頻課中,陶輝老師會把自己十幾年積累的第一手經驗毫無保留地分享給大家。


你能獲得什麼?


陶輝老師會跟你一起從應用層到底層,通過具體問題和場景來學習 Web 協議。具體來說,你可以有下面 4 點收穫。


1. 深入理解常用 Web 協議

課程將基於應用場景深入介紹Web協議棧中最常用的HTTP/1.1、Websocket、HTTP/2.0、TLS/SSL、TCP、IP協議,這些協議處在 OSI 網絡棧中的不同層級,每一層對上層協議封裝、隱藏其下層協議的實現細節,而上層協議必須理解其相鄰下層協議解決了什麼問題,有哪些約束條件。陶輝老師會帶你自上而下的學習這些協議的語法、應用場景,以建立起結構體的知識體系。


2. 快速定位和解決網絡疑難雜症

網絡問題最爲複雜,它涉及到多樣化的客戶端、技術相對封閉的網絡設備、層層可能修改消息的代理服務器、快速迭代中的源服務器等,當客戶端與服務器由於編程、配置錯誤造成系統故障時,相比在某一端使用經驗式的排除法查錯,從網絡層面定位問題更爲科學、快速而有效。


3. 掌握常見抓包工具及報文分析方法

陶輝老師會配合抓包實踐來帶你深入瞭解協議細節。關於抓包工具的學習,則會遵循“即用即學”的原則,用到什麼學什麼,讓你快速上手。


對於HTTP報文的抓包實踐,主要使用 Chrome 瀏覽器提供的開發者工具 Network 面板,同時也將使用到 curl、telnet 命令行來模擬 HTTP 請求的發送。Wireshark是這門課程的主要抓包工具,包括過濾器、各面板的使用、如何基於統計分析報文等。對於服務器端的抓包我們會使用 tcpdump工具,並配合 Wireshark 分析報文。


4. 熟悉 Web 協議的架構和設計原則

HTTP 最初用於解決人與機器的通訊,瞭解指導其設計原則的REST架構,就能理解在空間上它如何應對全球性的巨型分佈式網絡,在時間上如何應對數十年的技術變遷。


在分層架構下各層都有其待解決的核心問題,TLS/SSL協議面對的是如何使用非對稱加密協商密鑰及驗證身份,TCP協議面對的則是可控流量下的可靠傳輸,IP協議則關注報文在主機間的可達性,帶着這些需求及約束,便可從容應對變化。


內容有多幹貨,看看目錄就知道。



老規矩我的粉絲享有專屬優惠:


秒殺+口令「webxieyi6」立省 ¥85


原價¥199,僅限 50 個名額


幫你到這了


金三銀四跳槽季,只有把當前級別的事情做好了,纔有機會薪資翻倍,這是漲薪的第一條邏輯。在當前級別做下一級別事情的人,纔有機會晉升,這是漲薪的第二條邏輯。

一頓飯錢就能跟着技術大牛學會高效解決網絡難題,想要升職加薪,建議你 一定要好好看這個視頻課。
 

👆掃碼免費試看
 

👇點「閱讀原文」,掃碼免費試讀。

以最低價 ¥114 入手,

僅限前 50 人,手慢無!


本文分享自微信公衆號 - FunTester(NuclearTester)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章