大話HTTP[第一集]

我所認識的HTTP

咱們都知道HTTP是超文本協議。但更具體一點,咱們應該怎麼去理解協議?有人說能夠類比咱們說的語言,由於語言是咱們人類交流的基礎。加上目前HTTP所造成的技術家族,把它類比成語言一點不爲過,基於HTTP的應用有不少,它們都經過HTTP來傳輸信息。典型的應用就是瀏覽器與Web服務器。類比雖然是成立的,可是好像不能幫助咱們去理解HTTP,這是由於咱們的語言自己也夠抽象了,至少不能讓咱們直觀地認識到HTTP是什麼了。html

爲了更好的理解HTTP,咱們能夠追溯到HTTP的早期版本,那個時候HTTP仍是一個簡單的協議,爲互聯網通訊提供了基礎,爲了應對互聯網的不肯定性,就須要設計一系列的策略去規避問題同時保證信息可以順利傳輸,解決的是單個場景的問題。而這種場景相對比較簡單,咱們能夠想象生活中的一個例子,有人找你借錢,你會發現他找的時機特別合適,好比你剛領了工資,再加上他的借錢理由完勝你不想借的理由,你有多不捨,他就有多執着,這個場景和你老婆壓縮你零用錢的場景如出一轍,成年人的奔潰是從借錢開始的,在你猶豫不覺時,他又補了一刀,說回頭就給你,這樣他順利借走了你的錢,終結了工資帶給你的短暫喜悅。咱們把借錢看成一個場景,借錢的人考慮了不少已知和未知的場景,而且處理的很是得當,他借走了你的錢。整個流程的處理特別想早期版本的HTTP。瀏覽器

HTTP協議在Web中屬於底層知識,又或者說是網絡架構,而Web開發人員來講很難有機會去接觸它,由於B/S架構中,瀏覽器已經封裝了HTTP,咱們更多的是處理咱們的業務場景。服務器

目前來講,互聯網上存在着數以億萬計的資源文件信息,而且這些分佈在全球各個地方,咱們可使用電腦或者手機經過HTTP來訪問這些信息,由於HTTP是可靠的數據傳輸協議,這種可靠能夠保證數據在傳輸時不會被損壞或則丟失,這一點對於用戶或者Web開發者來講都是一件好事,開發者能夠專一業務的開發。網絡

Web服務器也叫HTTP服務器,由於Web服務器使用是HTTP協議,這些HTTP服務器存儲着互聯網上絕大部分的數據,並在有HTTP請求時返回這些數據給HTTP客戶端,其中最多見的客戶端就是瀏覽器。架構

對於Web資源來講,它能夠是你可以想到的任何格式,好比文本,圖片,音視頻等,這些資源一般稱做爲靜態資源,可是須要注意一點的是,Web資源除了靜態資源之外,還能夠是軟件根據須要生成資源,好比依據身份不一樣而產生的不一樣內容。ide

Web資源有不少類型,HTTP爲了可以更好的識別不一樣的數據類型,引入了媒體類型,也叫MIME
類型,它是一種數據格式標籤,當瀏覽器從Web服務器上獲取到一個資源時,會首先查看該資源的MIME類型,以便如何處理這個資源。MIME的格式,一般是一個大類型/子類型。
HTML格式的文本使用text/html來標記,JPEG的圖片使用image/jpeg來標記。
常見的MIME有上百個。設計

爲了準確的獲取到目標資源,HTTP引入了統一資源標識符,URI,它是全世界範圍內的惟一標識符,HTTP能夠經過統一資源標識符準確地定位資源文件。同時URI有兩種形式,URL和URN.
URL,統一資源定位符,也是目前最多見的資源標識符形式,描述了特定服務器上的特定資源的位置。第一部分,訪問資源的協議類型(scheme);第二部分,服務器的互聯網地址;第三部分,資源文件的路徑。目前來講,URI和URL是等價的。
URN,統一資源名,是一種與資源名稱有關,而與資源地址無關。使用場景在,經過一個名字,可使用多作網絡協議去訪問。但URN還存於試驗階段,沒有大範圍使用。code

相關文章
相關標籤/搜索