真正“搞”懂HTTP協議02之空間穿梭

時隔四年,這個系列鴿了四年 , 我終于覺得我可以按照自己的思路和想法把這個系列完整的表達出來了 。
想起四年前,那時候還是2018年的六月份,那時候我還工作不到兩年,那時候我翻譯了RFC2616的部分內容 , 發布在了博客園上,并在翻譯不久后想要開始整理并學習HTTP相關的知識內容,那時候我以為我可以了 。
但是在第一篇《真正“搞”懂http協議01之背景故事發布》之后 , 我發現我對整個系列的內容分布完全無從下手 。這期間我也發布了很多系列內容(其實就是抄抄書),但是一方面沒有花時間去刻意的學習,另外一方面覺得對于HTTP的了解還不足以去寫一個系列的博客 。
剛好 , 最近想要有一些變化了,所以開始學習HTTP,并且再加上這些年的工作經驗大致對于HTTP有了一定的認識和了解,可以按照自己想要的思路來完成這一系列 。
那么本系列的設想大致是這樣的 。
先聊聊HTTP在互聯網絡模型中的位置以及有哪些互聯網絡模型,并且不同的互聯網絡模型是如何分層的,以及整個互聯網絡模型的數據流轉是什么樣的 。嗯~也就是本篇的內容 。
下一篇會再講講HTTP的歷史,各階段的HTTP發展及其核心內容,比如各個版本的HTTP都涵蓋了哪些頭字段,有哪些變化,隨著時間的變遷增加了哪些方法,以及更安全的HTTPS、還有性能更優良的QUIC也就是HTTP3 。
以上兩篇內容,核心就是HTTP在空間和時間上是怎樣流轉和發展的,其目的是為了讓大家對于HTTP在空間和時間上處于怎樣的位置,學習HTTP又不能局限于HTTP 。
然后,我會根據HTTP在歷史上的發展,按照時間線,以一個前端開發的角度(主要是因為我也沒別的角度了)帶大家深入的去學習HTTP的各項內容并加以分析 。
好啦 , 敘舊就到此為止,我們正式開始吧 。
一、互聯網絡模型在第一篇背景故事里 , 我簡單的介紹了互聯網絡模型 , 特別簡單的那種 。讓人苦惱的是,互聯網絡模型并不只是單單一種,歷史上的大佬根據不同的場景和階段所產生的不同的需求都對互聯網絡模型加以不同的分層 。
那么這一小節,我們先來簡單的了解下什么是互聯網絡模型 。但是在開始聊模型之前 , 我們得先了解下什么是網絡 。
【真正“搞”懂HTTP協議02之空間穿梭】網絡,可以說是計算機網絡的簡稱,當然,計算機網絡是一個很基礎的學科,如果大學是計算機專業的一定學過這些 。而我們在工作和生活中最常見的網絡就是萬維網,也即WWW(World Wide Web),是一個透過互聯網訪問的,由許多互相鏈接的超文本組成的信息系統 。
除了萬維網,還有互聯網 , 局域網 , 等等等等 , 而萬維網其實是互聯網的一個子集 。我們在工作和生活中最常用的就是萬維網 , 我們通常所說的上網,也即是上萬維網,它是基于HTTP協議的,傳輸 HTML 等超文本資源的,能力也就被限制在 HTTP 協議之內 。
OK,我們基本了解了什么是網絡 。
但是要了解HTTP處于網絡中怎樣的位置,我們還得看看互聯網絡模型是什么樣的 。誒?你叫做互聯網絡模型,不是叫做萬維網絡模型?說明了什么?
四層網絡模型(TCP/IP網絡分層模型 || DoD模型)額~~~你聊網絡模型,怎么聊到TCP/IP了?TCP不是協議?IP不也是協議?嗯~~毛病倒是沒有,但是TCP/IP協議族是……額……不太好形容,它是互聯網中最為**經典的**、**事實的**通信協議標準 。
整個TCP/IP協議棧并不單純的代表TCP和IP,而是代表完整的網絡通信家族 , 由于它創造性的分層設計,所以也叫做**TCP/IP協議棧** 。而TCP和IP則是整個家族中最早通過的標準 。這些協議最早發源于美國國防部(縮寫為DoD)的ARPA網項目 , 因此也稱作DoD模型(DoD Model) 。
我們來看張圖,整個DoD模型(下面我都這么叫,因為字少~)是這樣的:

真正“搞”懂HTTP協議02之空間穿梭

文章插圖
嗯~就這么簡單,層數是由下往上計算的,分別是鏈接層、網絡層、傳輸層以及應用層 。所以,HTTP在哪一層呢?我相信大家都知道HTTP在應用層 。
我們從下到上,依次來簡單說下各層負責的內容以及各層都大概涵蓋了哪些協議 , 為啥是大概涵蓋呢?額~因為整個TCP/IP協議族太大了,有幾十個甚至上百個協議,是不是有點夸張 。
先來說說DoD模型的第一層,也就是鏈接層 。負責在以太網、WiFi 這樣的底層網絡上發送原始數據包,工作在網卡這個層次,使用 MAC 地址來標記網絡上的設備,所以有時候也叫 MAC 層 。注意,這里你尤其要注意下MAC這個詞 。稍后我們捋線的時候會用到 。

推薦閱讀