極客時間出品的《透視HTTP協議》由羅劍鋒(Chrono)所作,羅劍鋒(Chrono)是奇虎360技術專家,Nginx/OpenResty開源專案貢獻者。本課深入理解HTTP協議本質與應用。用我的邀請購買,還會額外返現12元給你噢。
課程介紹
HTTP是一個在計算機世界裡專門在兩點之間傳輸文字、圖片、音訊、視訊等超文字資料的約定和規範。簡單來說,如果你不懂HTTP協議,那就相當於是個只有“半桶水”的程式設計師。
- HTTP協議看起來偏理論,但是實踐中卻總是有它的影子。比如:
- 用Nginx搭建Web伺服器,照著網上的文章配好了,但裡面那麼多的指令,什麼keepalive、rewrite、proxy_pass都是怎麼回事?為什麼要這麼配置?
- 用Python寫爬蟲,URI、URL“傻傻分不清”,有時裡面還會加一些奇怪的字元,怎麼處理才好?
- 都說HTTP快取很有用,可以大幅度提升系統效能,可它是怎麼做到的?又應該用在何時何地?
- HTTP和HTTPS是什麼關係?還經常聽說有SSL\/TLS\/SNI\/OCSP\/ALPN……這麼多稀奇古怪的縮寫,頭都大了,實在是搞不懂。
- 據說又出了新的HTTP\/2、HTTP\/3,是不是要考慮學習一下呢?
如果這些問題你都深有感受,那麼“透視HTTP協議”專欄就是專門為你打造的。
在這個專欄中,Chrono會帶你撥開HTTP紛繁複雜的表象,帶你重新梳理出簡潔明瞭的知識框架,新手可以由淺入深、系統學習,老手可以溫故知新、查漏補缺。
Chrono長期從事Web後臺伺服器的研發工作,深知HTTP的邏輯、基本原理與應用。在這個專欄中,他會帶你一起,花最少的時間,用最少的精力,掌握最多、最全面、最系統的HTTP相關知識。
透視HTTP協議專欄作者
羅劍鋒,網名“Chrono”。畢業於北京理工大學計算機專業, 奇虎360技術專家,Nginx\/OpenResty開源專案貢獻者,熟悉各種網路應用協議,專注於C\/C++、Linux、高效能程式設計等領域,著有《C++11\/14高階程式設計》《Boost程式庫完全開發指南》《Nginx完全開發指南》《OpenResty完全開發指南》等暢銷書。
你好,我是羅劍鋒,一名埋頭於前線,辛勤“耕耘”了十餘載的資深“碼農”。
當極客時間的編輯聯絡我,要我寫 HTTP 專欄的時候,我的第一反應是:“HTTP 協議好簡單的,有這個必要嗎?”
你可能也會有同樣的想法:“HTTP 不就是請求 / 響應、GET/POST、Header/Body 嗎?網路上的資料一抓一大把,有什麼問題搜一下就是了。”
不瞞你說,我當時就是這麼想的,在之前的工作中也是一直這麼做的,而且一直“感覺良好”,覺得 HTTP 就是這個樣子,沒有什麼特別的地方,沒有什麼值得講的。
但在編輯的一再堅持下,我“勉為其難”接下了這個任務。然後做了一個小範圍的“調查”,問一些周圍的同事,各個領域的都有,比如產品、開發、運維、測試、前端、後端、手機端……想看看他們有什麼意見。
出乎我的意料,他們無一例外都對這個“HTTP 專欄”有很強烈的需求,想好好“補補課”,系統地學習瞭解 HTTP,這其中甚至還包括有七、八年(甚至更多)工作經驗的老手。
這不禁讓我陷入了思考,為什麼如此“簡單”的協議卻還有這麼多的人想要學呢?
我想,一個原因可能是 HTTP 協議“太常見”了。就像現實中的水和空氣一樣,如此重要卻又如此普遍,普遍到我們幾乎忽視了它的存在。真的很像那句俗語所說:“魚總是最後看見水的”,但水對魚的生存卻又是至關重要。
我認真回憶了一下這些年的工作經歷,這才發現 HTTP 只是表面上顯得簡單,而底層的執行機制、工作原理絕不簡單,可以說是非常地複雜。只是我們平常總是“KPI 優先”,網上抓到一個解決方法用過就完事了,沒有去深究裡面的要點和細節。
下面的幾個場景,都是我周圍同事的實際感受,你是否也在工作中遇到過這樣的困惑呢?你能把它們都解釋清楚嗎?
- 用 Nginx 搭建 Web 伺服器,照著網上的文章配好了,但裡面那麼多的指令,什麼 keepalive、rewrite、proxy_pass 都是怎麼回事?為什麼要這麼配置?
- 用 Python 寫爬蟲,URI、URL“傻傻分不清”,有時裡面還會加一些奇怪的字元,怎麼處理才好?
- 都說 HTTP 快取很有用,可以大幅度提升系統效能,可它是怎麼做到的?又應該用在何時何地?
- HTTP 和 HTTPS 是什麼關係?還經常聽說有 SSL/TLS/SNI/OCSP/ALPN……這麼多稀奇古怪的縮寫,頭都大了,實在是搞不懂。
其實這些問題也並不是什麼新問題,把關鍵字貼上進搜尋欄,再點一下按鈕,搜尋引擎馬上就能找出幾十萬個相關的頁面。但看完第一頁的前幾個連結後,通常還是有種“懵懵懂懂”“似懂非懂”的感覺,覺得說的對,又不全對,和自己的思路總是不夠“Match”。
不過大多數情況下你可能都沒有時間細想,優先目標是把手頭的工作“對付過去”。長此以來,你對 HTTP 的認識也可能僅限於這樣的“知其然,而不知其所以然”,實際情況就是 HTTP 天天用,時時用,但想認真、系統地學習一下,梳理出自己的知識體系,經常會發現無從下手。
我把這種 HTTP 學習的現狀歸納為三點:正式資料“少”、網上資料“雜”、權威資料“難”
這三個問題就像是“三座大山”,阻礙了像你這樣的很多有心人去學習、瞭解 HTTP 協議。那麼,怎麼才能更好地學習 HTTP 呢?
我為這個專欄定了一個基調:“要有廣度,但更要有深度”。目標是成為含金量最高的 HTTP 學習資料,新手可以由淺入深、系統學習,老手可以溫故知新、查缺補漏,讓你花最少的時間,用最少的精力,掌握最多、最全面、最系統的知識。
由於 HTTP 應用得非常廣泛,幾乎涉及到所有的領域,所以我會在廣度上從 HTTP 儘量向外擴充套件,不只講協議本身,與它相關的 TCP/IP、DNS、SSL/TLS、Web Server 等都會講到,而且會把它們打通串聯在一起,形成知識鏈,讓你知道它們之間是怎麼聯絡、怎麼執行的。
專欄文章的深度上我也是下足了功夫,全部基於最新的 RFC 標準文件,再結合我自己多年的實踐體會,力求講清講透,能讓你看了以後有豁然開朗的感覺。
《透視HTTP協議》專欄模組
專欄共計40講,分為7大模組。
破冰篇
破冰篇會帶你從0開始帶你建立並梳理HTTP知識框架,打通相關知識點,串聯成知識鏈,讓你知道它們之間是怎麼聯絡、怎麼執行的。手把手帶你搭建HTTP實驗環境,為進入正式學習做好準備。
基礎篇
基礎篇將帶你快速進入狀態,從一個“最小化”的HTTP實驗環境出發,深入理解HTTP工作的全過程;進而講解報文、請求方法、網址、響應狀態碼、HTTP的特點和優缺點。帶你打好HTTP的實踐基礎。
進階篇
進階篇將為你詳細解析HTTP裡的各種頭欄位,包括定義、功能、使用方式、注意事項等等,幫助你理解每一個常用、實用的知識點,讓你的HTTP實踐能力成功進階。
安全篇
網際網路中的安全不可忽視,安全篇會告訴你為什麼要有HTTPS?SSL\/TLS又是什麼?並深入淺出地為你講解讓HTTP協議固若金湯的根本知識,包括對稱加密、非對稱加密、數字簽名與證照。此外,這一模組還會為你解析TLS1.2、TLS1.3的特性,並講解HTTPS的優化方法。
飛翔篇
隨著時代的發展,最初的HTTP已經不能滿足時代的需要。飛翔篇中的內容為你深入闡釋HTTP\/2和HTTP\/3的優勢並補充實踐內容。
探索篇
HTTP的應用廣泛,探索篇中的內容不只侷限在HTTP本身,還會講到與它相關的Nginx、OpenResty、WAF、CDN、WebSocket等等。
總結篇
這一模組會通過分析HTTP效能優化,為整個專欄做個總結,內容貫穿全鏈路分析、硬體軟體、內部外部、前端後端等多個方面,整體梳理協議相關知識。
《透視HTTP協議》專欄詳細目錄
開篇詞 To Be a HTTP Hero
破冰篇
時勢造英雄:HTTP協議的前世今生
HTTP是什麼? HTTP又不是什麼?
HTTP世界全覽(上):與HTTP相關的各種概念
HTTP世界全覽(下):與HTTP相關的各種協議
“七層”和“四層”是什麼? “五層”“六層”哪去了?
域名裡有哪些門道?
自己動手,搭建HTTP實驗環境
基礎篇
鍵入網址後按下回車,後面究竟發生了什麼?
HTTP報文是什麼樣子的?
應該如何理解謂求方法?
你能寫出正確的網址嗎?
響應狀態碼該怎麼用?
HTTP協議有哪些特點?
HTTP有哪些優點和缺點?
進階篇
海納百川:HTTP的實體資料
把大象裝進冰箱:HTTP傳輸大檔案的方法
排隊也要講效率:HTTP的連線管理
四通八達:HTTP重定向和跳轉
讓我知道你是誰:HTTP的Cookie機制
生鮮速遞:HTTP的快取控制
良心中間商:HTTP的代理服務
冷鏈週轉:HTTP的快取代理
安全篇
HTTPS是什麼? SSL/TLS又是什麼?
固若金湯的根本(上):對稱加密與非對稱加密
固若金湯的根本(下):數字簽名與證照
信任始於握手:TLS1.2連線過程解析
更好更快的握手:TLS1.3特性解析
連線太慢該怎麼辦:HTTPS的優化
我應該遷移到HTTPS嗎?
飛翔篇
時代之風(上):HTTP/2特性概覽
時代之風(下):HTTP/2核心剖析
未來之路:HTTP/3展望
我應該遷移到HTTP/2嗎?
探索篇
Nginx:高效能的Web伺服器
OpenResty:更好的 Nginx
WAF:保護我們的網路服務
CDN:讓網站坐上噴氣飛機
WebSocket:更好的 TCP
總結篇
HTTP效能優化面面觀(上)
HTTP效能優化面面觀(下)
我的公眾號:猿人學 Python 上會分享更多心得體會,敬請關注。
***版權申明:若沒有特殊說明,文章皆是猿人學 yuanrenxue.com 原創,沒有猿人學授權,請勿以任何形式轉載。***