看完讓你有一種恍然大悟醍醐灌頂的感覺 http服務器是什么?

我是一名程序員,我的主要編程語言是 Java,我更是一名 Web 開發人員,所以我必須要了解 HTTP,所以本篇文章就來帶你從 HTTP 入門到進階,看完讓你有一種恍然大悟、醍醐灌頂的感覺 。
最初在有網絡之前,我們的電腦都是單機的,單機系統是孤立的,我還記得 05 年前那會兒家里有個電腦,想打電腦游戲還得兩個人在一個電腦上玩兒,及其不方便 。 我就想為什么家里人不讓上網,我的同學 xxx 家里有網,每次一提這個就落一通批評:xxx上xxx什xxxx么xxxx網xxxx看xxxx你xxxx考xxxx的xxxx那xxxx點xxxx分 。 雖然我家里沒有上網,但是此時互聯網已經在高速發展了,HTTP 就是高速發展的一個產物 。
認識 HTTP首先你聽的最多的應該就是 HTTP 是一種 超文本傳輸協議(Hypertext Transfer Protocol),這你一定能說出來,但是這樣還不夠,假如你是大廠面試官,這不可能是他想要的最終結果,我們在面試的時候往往把自己知道的盡可能多的說出來,才有和面試官談價錢的資本 。 那么什么是超文本傳輸協議?
超文本傳輸協議可以進行文字分割:超文本(Hypertext)、傳輸(Transfer)、協議(Protocol),它們之間的關系如下
按照范圍的大小 協議 > 傳輸 > 超文本 。 下面就分別對這三個名次做一個解釋 。
什么是超文本在互聯網早期的時候,我們輸入的信息只能保存在本地,無法和其他電腦進行交互 。 我們保存的信息通常都以文本即簡單字符的形式存在,文本是一種能夠被計算機解析的有意義的二進制數據包 。 而隨著互聯網的高速發展,兩臺電腦之間能夠進行數據的傳輸后,人們不滿足只能在兩臺電腦之間傳輸文字,還想要傳輸圖片、音頻、視頻,甚至點擊文字或圖片能夠進行超鏈接的跳轉,那么文本的語義就被擴大了,這種語義擴大后的文本就被稱為超文本(Hypertext) 。
什么是傳輸那么我們上面說到,兩臺計算機之間會形成互聯關系進行通信,我們存儲的超文本會被解析成為二進制數據包,由傳輸載體(例如同軸電纜,電話線,光纜)負責把二進制數據包由計算機終端傳輸到另一個終端的過程(對終端的詳細解釋可以參考 你說你懂互聯網,那這些你知道么?這篇文章)稱為傳輸(transfer) 。
通常我們把傳輸數據包的一方稱為請求方,把接到二進制數據包的一方稱為應答方 。 請求方和應答方可以進行互換,請求方也可以作為應答方接受數據,應答方也可以作為請求方請求數據,它們之間的關系如下
如圖所示,A 和 B 是兩個不同的端系統,它們之間可以作為信息交換的載體存在,剛開始的時候是 A 作為請求方請求與 B 交換信息,B 作為響應的一方提供信息;隨著時間的推移,B 也可以作為請求方請求 A 交換信息,那么 A 也可以作為響應方響應 B 請求的信息 。
什么是協議協議這個名詞不僅局限于互聯網范疇,也體現在日常生活中,比如情侶雙方約定好在哪個地點吃飯,這個約定也是一種協議,比如你應聘成功了,企業會和你簽訂勞動合同,這種雙方的雇傭關系也是一種 協議 。 注意自己一個人對自己的約定不能成為協議,協議的前提條件必須是多人約定 。
那么網絡協議是什么呢?
網絡協議就是網絡中(包括互聯網)傳遞、管理信息的一些規范 。 如同人與人之間相互交流是需要遵循一定的規矩一樣,計算機之間的相互通信需要共同遵守一定的規則,這些規則就稱為網絡協議 。
沒有網絡協議的互聯網是混亂的,就和人類社會一樣,人不能想怎么樣就怎么樣,你的行為約束是受到法律的約束的;那么互聯網中的端系統也不能自己想發什么發什么,也是需要受到通信協議約束的 。
那么我們就可以總結一下,什么是 HTTP?可以用下面這個經典的總結回答一下: HTTP 是一個在計算機世界里專門在兩點之間傳輸文字、圖片、音頻、視頻等超文本數據的約定和規范
與 HTTP 有關的組件隨著網絡世界演進,HTTP 協議已經幾乎成為不可替代的一種協議,在了解了 HTTP 的基本組成后,下面再來帶你進一步認識一下 HTTP 協議 。
網絡模型網絡是一個復雜的系統,不僅包括大量的應用程序、端系統、通信鏈路、分組交換機等,還有各種各樣的協議組成,那么現在我們就來聊一下網絡中的協議層次 。
為了給網絡協議的設計提供一個結構,網絡設計者以分層(layer)的方式組織協議,每個協議屬于層次模型之一 。 每一層都是向它的上一層提供服務(service),即所謂的服務模型(service model) 。 每個分層中所有的協議稱為 協議棧(protocol stack) 。 因特網的協議棧由五個部分組成:物理層、鏈路層、網絡層、運輸層和應用層 。 我們采用自上而下的方法研究其原理,也就是應用層 -> 物理層的方式 。

推薦閱讀