为什么 HTTP3.0 使用 UDP 协议?
還記得以前我提過的常見面試題么:從瀏覽器地址欄輸入網(wǎng)址,到網(wǎng)頁(yè)徹底打開,中間都發(fā)生了什么?從瀏覽器輸入網(wǎng)址,到網(wǎng)頁(yè)打開,發(fā)生了什么,這題有多經(jīng)典,很多業(yè)內(nèi)技術(shù)大牛說用過這題面試過新人,你說經(jīng)典不經(jīng)典。
百度 FEX 前端團(tuán)隊(duì)的負(fù)責(zé)人,T8 前端大佬吳多益寫了一篇文章:《從輸入 URL 到頁(yè)面加載完成的過程中都發(fā)生了什么事情》。有興趣的可以翻翻八年前的這位頂尖架構(gòu)師的舊文,他把整個(gè)過程拆成了六個(gè)問題:
從輸入 URL 到瀏覽器接收的過程中發(fā)生了什么事情?
瀏覽器如何向網(wǎng)卡發(fā)送數(shù)據(jù)?
數(shù)據(jù)如何從本機(jī)網(wǎng)卡發(fā)送到服務(wù)器?
服務(wù)器接收到數(shù)據(jù)后會(huì)進(jìn)行哪些處理?
服務(wù)器返回?cái)?shù)據(jù)后瀏覽器如何處理?
瀏覽器如何將頁(yè)面展現(xiàn)出來?
每一個(gè)問題,多益都做了深入的講解,并給出了延伸學(xué)習(xí)的資料,讓人看后受益匪淺,大呼過癮。有人說他是在炫技,但是沒有如此強(qiáng)的技術(shù)功底,是沒法炫的如此漂亮的。
大部分技術(shù)人,可能多多少少都會(huì)遇到下面的困惑,比如:
AJAX 跨域訪問時(shí)總被瀏覽器的同源策略阻止,其背后的原理及符合其設(shè)計(jì)思想的解決方案是什么?
緩存可以提升性能,但什么樣的 HTTP 消息才會(huì)被瀏覽器或者代理服務(wù)器緩存呢?
抓包時(shí)收到 4xx 或者 5xx HTTP 響應(yīng)碼,這意味著服務(wù)器端發(fā)生了什么?
當(dāng)我們維護(hù) HTTPS 連接時(shí),如果要優(yōu)化TLS/SSL 的卸載性能,應(yīng)該從哪里入手?
定位問題時(shí),發(fā)現(xiàn)本地的 TCP 連接狀態(tài)中出現(xiàn)了FIN_WAIT、CLOSE_WAIT 或者TIME_WAIT,都是什么原因引起的?應(yīng)該如何解決?
想要提升 TCP 連接的傳輸速度,可服務(wù)器上相關(guān)的系統(tǒng)參數(shù)多達(dá)數(shù)十個(gè),究竟該怎么調(diào)整?
時(shí)下逐漸普及的 IPv6 ,在報(bào)文上到底與 IPv4 協(xié)議有何差別?
你會(huì)發(fā)現(xiàn),這些問題其實(shí)都和 Web 協(xié)議密切相關(guān)。我常常聽到身邊人抱怨“學(xué)不動(dòng)了”,之所以會(huì)這樣,大多是因?yàn)闆]有掌握好互聯(lián)網(wǎng)體系中的底層知識(shí)。這些知識(shí)點(diǎn)相對(duì)穩(wěn)定,而其他時(shí)刻變化的知識(shí)點(diǎn)是構(gòu)建在這些知識(shí)點(diǎn)之上的。一旦掌握好,就可以長(zhǎng)久使用,并且保持快速學(xué)習(xí)的能力。
Web 協(xié)議有多重要,前面關(guān)于經(jīng)典面試題的舊文已經(jīng)提過,如果不能完整掌握協(xié)議的特征和目的,很多優(yōu)化,故障排查,無從談起,所幸協(xié)議層的進(jìn)化并不如語(yǔ)言和工具那樣頻繁和激進(jìn),只要我們抓住它設(shè)計(jì)時(shí)背后的指導(dǎo)原則,系統(tǒng)地將 Web 協(xié)議轉(zhuǎn)化為我們頭腦中的結(jié)構(gòu)體知識(shí),就可以對(duì)我們學(xué)習(xí)前后端開發(fā)框架、面向連接的編程語(yǔ)言、各種分布式組件、架構(gòu)設(shè)計(jì)、微服務(wù)編程等都起到事半功倍的效果。
可以說,無論你是前后端工程師,還是運(yùn)維測(cè)試,如果想面試更高的職位,或者要站在更高的角度去理解技術(shù)業(yè)務(wù)架構(gòu),并能在問題出現(xiàn)時(shí)快速、高效地解決問題,Web 協(xié)議一定是你繞不過去的一道坎。甚至?xí)l繁出現(xiàn)在各個(gè)重要崗位的面試中,熟練掌握各種常用 Web 協(xié)議,可以幫你在工作中輕松應(yīng)對(duì)各種網(wǎng)絡(luò)難題。
如果你是前端工程師,可以快速定位問題的根源在后端還是前端,對(duì)網(wǎng)頁(yè)性能的提升會(huì)有更多的思路。
如果你是后端工程師,可以更清晰地理解Web容器的工作原理,在網(wǎng)絡(luò)層面快速縮小問題范圍。
如果你是運(yùn)維工程師,可以更明確地規(guī)劃硬件及網(wǎng)絡(luò)資源,對(duì)于故障節(jié)點(diǎn)的恢復(fù)也會(huì)有更系統(tǒng)的解決方案。
如果你是測(cè)試工程師,可以對(duì)壓測(cè)工具的原理有更深入的理解,對(duì)RPC測(cè)試用例的構(gòu)造也會(huì)更全面。
如果你是架構(gòu)師,將會(huì)對(duì)分布式系統(tǒng)下的高可用架構(gòu)設(shè)計(jì)和性能優(yōu)化等問題有更加體系化的認(rèn)識(shí)。
可是,想要真正掌握 Web 協(xié)議,并沒有想象中那么容易。我發(fā)現(xiàn)大部分人在學(xué)習(xí)時(shí),都卡在下面這些問題上:
Web協(xié)議的體系龐大,大多概念過于抽象,如果缺乏場(chǎng)景觀,很多初學(xué)者會(huì)很容易從入門到放棄。
很難快速上手,就算勉強(qiáng)弄懂了復(fù)雜的概念,工作中一遇到復(fù)雜問題,還是一頭霧水,不知道如何下手。
網(wǎng)上有很多文章可以參考,但要不就是知識(shí)點(diǎn)零散,要不就是解釋得蜻蜓點(diǎn)水,無法深入到底層。即便是我前文推薦的頂尖架構(gòu)師的博客,也需要有一定經(jīng)驗(yàn)和知識(shí)基礎(chǔ),才能掌握其技巧核心。
市面上相關(guān)的課程很少,要不就是僅僅講述某一個(gè)協(xié)議,要不就是只從理論出發(fā)來講解,實(shí)戰(zhàn)性不強(qiáng)。
除此之外,很少有人會(huì)在文章或課程里通過抓包去把 Web 協(xié)議的各個(gè)細(xì)節(jié)呈現(xiàn)出來,然后掰開揉碎了講給大家。基于此,我推薦你陶輝老師在極客時(shí)間開的《Web 協(xié)議詳解與抓包實(shí)戰(zhàn)》視頻課,完全從實(shí)戰(zhàn)出發(fā),在關(guān)鍵場(chǎng)景中結(jié)合抓包工具進(jìn)行實(shí)戰(zhàn)分析,為你深入淺出地講解常見 Web 協(xié)議涉及到的核心知識(shí),并徹底掌握這些協(xié)議。
新人限時(shí)特惠?¥69.9
老用戶用口令「webxieyi6」立省?85?元,
到手僅 ¥ 114,僅限「前 50 人」有效
作者陶輝,現(xiàn)在是智鏈達(dá) CTO。他曾擔(dān)任阿里云高級(jí)專家,也在華為、騰訊、思科等公司從事過服務(wù)器端的研發(fā)工作。相信陶輝來講 Web 協(xié)議詳解與抓包實(shí)戰(zhàn),一定會(huì)帶給你不一樣的收獲。為什么這么說?
在華為他負(fù)責(zé) iMAP 網(wǎng)管系統(tǒng)的研發(fā),在通過 SNMP 等協(xié)議管理眾多網(wǎng)絡(luò)設(shè)備的過程中,對(duì)路由器交換機(jī)如何處理協(xié)議棧、選擇路由、轉(zhuǎn)發(fā)報(bào)文等流程有了深入的理解;
在騰訊QQ空間,通過使用自定義的、基于 TCP 的 Qzone 協(xié)議傳遞巨量的數(shù)據(jù),他對(duì)如何設(shè)計(jì)出高性能、可擴(kuò)展的應(yīng)用協(xié)議有了豐富的實(shí)踐經(jīng)驗(yàn);
在思科他從事 Nginx 服務(wù)的研發(fā),對(duì) Web 服務(wù)器如何高效地處理 HTTP 協(xié)議有了全面的認(rèn)識(shí);
在阿里云作為 VPC 軟件自定義網(wǎng)絡(luò)項(xiàng)目中的管理系統(tǒng)架構(gòu)師,他通過基于 Intel DPDK 自建網(wǎng)關(guān)、自定義網(wǎng)絡(luò)層協(xié)議等工作,對(duì) IDC 內(nèi)部網(wǎng)絡(luò)系統(tǒng)有了深刻了解。
在《Web 協(xié)議詳解與抓包實(shí)戰(zhàn)》視頻課中,陶輝老師會(huì)把自己十幾年積累的第一手經(jīng)驗(yàn)毫無保留地分享給大家。
你能獲得什么?
陶輝老師會(huì)跟你一起從應(yīng)用層到底層,通過具體問題和場(chǎng)景來學(xué)習(xí) Web 協(xié)議。具體來說,你可以有下面 4 點(diǎn)收獲。
1. 深入理解常用 Web 協(xié)議
課程將基于應(yīng)用場(chǎng)景深入介紹Web協(xié)議棧中最常用的HTTP/1.1、Websocket、HTTP/2.0、TLS/SSL、TCP、IP協(xié)議,這些協(xié)議處在 OSI 網(wǎng)絡(luò)棧中的不同層級(jí),每一層對(duì)上層協(xié)議封裝、隱藏其下層協(xié)議的實(shí)現(xiàn)細(xì)節(jié),而上層協(xié)議必須理解其相鄰下層協(xié)議解決了什么問題,有哪些約束條件。陶輝老師會(huì)帶你自上而下的學(xué)習(xí)這些協(xié)議的語(yǔ)法、應(yīng)用場(chǎng)景,以建立起結(jié)構(gòu)體的知識(shí)體系。
2. 快速定位和解決網(wǎng)絡(luò)疑難雜癥
網(wǎng)絡(luò)問題最為復(fù)雜,它涉及到多樣化的客戶端、技術(shù)相對(duì)封閉的網(wǎng)絡(luò)設(shè)備、層層可能修改消息的代理服務(wù)器、快速迭代中的源服務(wù)器等,當(dāng)客戶端與服務(wù)器由于編程、配置錯(cuò)誤造成系統(tǒng)故障時(shí),相比在某一端使用經(jīng)驗(yàn)式的排除法查錯(cuò),從網(wǎng)絡(luò)層面定位問題更為科學(xué)、快速而有效。
3. 掌握常見抓包工具及報(bào)文分析方法
陶輝老師會(huì)配合抓包實(shí)踐來帶你深入了解協(xié)議細(xì)節(jié)。關(guān)于抓包工具的學(xué)習(xí),則會(huì)遵循“即用即學(xué)”的原則,用到什么學(xué)什么,讓你快速上手。
對(duì)于HTTP報(bào)文的抓包實(shí)踐,主要使用 Chrome 瀏覽器提供的開發(fā)者工具 Network 面板,同時(shí)也將使用到 curl、telnet 命令行來模擬 HTTP 請(qǐng)求的發(fā)送。Wireshark是這門課程的主要抓包工具,包括過濾器、各面板的使用、如何基于統(tǒng)計(jì)分析報(bào)文等。對(duì)于服務(wù)器端的抓包我們會(huì)使用 tcpdump工具,并配合 Wireshark 分析報(bào)文。
4.?熟悉 Web 協(xié)議的架構(gòu)和設(shè)計(jì)原則
HTTP 最初用于解決人與機(jī)器的通訊,了解指導(dǎo)其設(shè)計(jì)原則的REST架構(gòu),就能理解在空間上它如何應(yīng)對(duì)全球性的巨型分布式網(wǎng)絡(luò),在時(shí)間上如何應(yīng)對(duì)數(shù)十年的技術(shù)變遷。
在分層架構(gòu)下各層都有其待解決的核心問題,TLS/SSL協(xié)議面對(duì)的是如何使用非對(duì)稱加密協(xié)商密鑰及驗(yàn)證身份,TCP協(xié)議面對(duì)的則是可控流量下的可靠傳輸,IP協(xié)議則關(guān)注報(bào)文在主機(jī)間的可達(dá)性,帶著這些需求及約束,便可從容應(yīng)對(duì)變化。
內(nèi)容有多干貨,看看目錄就知道。
給你們申請(qǐng)了粉絲專屬優(yōu)惠:
新人限時(shí)特惠?¥69.9
老用戶拼團(tuán)+口令「webxieyi6」立省 ¥85
原價(jià) ¥199,口令僅「前 50 人」有效
金三銀四跳槽季,只有把當(dāng)前級(jí)別的事情做好了,才有機(jī)會(huì)薪資翻倍,這是漲薪的第一條邏輯。在當(dāng)前級(jí)別做下一級(jí)別事情的人,才有機(jī)會(huì)晉升,這是漲薪的第二條邏輯。
一頓飯錢就能跟著技術(shù)大牛學(xué)會(huì)高效解決網(wǎng)絡(luò)難題,想要升職加薪,我建議你一定要好好看這個(gè)視頻課。
?
????掃碼免費(fèi)試看
?
???? 點(diǎn)擊「閱讀原文」
新人限時(shí)特惠?¥69.9
老用戶輸入粉絲專屬口令「webxieyi6」
以?最低價(jià) ¥114?入手,僅限?前 50 人
總結(jié)
以上是生活随笔為你收集整理的为什么 HTTP3.0 使用 UDP 协议?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Uno 平台 一 WinUI终极跨平台方
- 下一篇: .net5或.net6(Preview)