標籤:
之前一段時間將http協議的一些基礎的知識學習並且整理了筆記,發到了部落格上,最近間歇性看更深入的一些關於http協議的東西,順帶也整理上來。。。。。。
當然,可能有些內容會和之前的部落格內容重疊,但基本都是在其基礎上進行了加深鞏固,後面,估計會順帶說一下TCP協議的一點東西,嗯,就這樣。。。
——參考書籍《HTTP權威指南》
1、web用戶端和伺服器
http用戶端發出請求,其中包含請求內容,發給伺服器,伺服器再返回內容中回送請求的資料,http用戶端和伺服器構成了全球資訊網的基本組件
我們常說的用戶端,就是web瀏覽器,比如微軟的IE、Google的chrome,Firefox的Firefox等,瀏覽器向伺服器發送http請求對象,並將對象顯示在你的螢幕上
2、資源
web伺服器是web資源的宿主,源頭;最簡單的web資源就是伺服器檔案系統中的靜態檔案,其中可能包含很多內容:文字檔、HTML檔案、word檔案、圖片檔案、AVI電影檔案、Adobe的acrobat檔案等所有你可以想象到的檔案
但資源不局限於靜態檔案,它還可以根據需要產生軟體程式(比如照相機中活生生的照片、股票交易、房產交易的資料庫、線上商店中的禮物等等)
總之,所有類型的內容都來源於資源。。。
2.1 媒體類型
互連網上有數千種不同的資料類型,http給每種需要通過http傳輸的對象都打上了MIME類型(MIME type)的資料格式標籤
MIME:多用途英特網郵件擴充
web瀏覽器每次從伺服器取回一個對象時,會先查看其MIME類型,看看能否處理該類型;大多數瀏覽器都可以處理數百種常見的物件類型
MIME類型是一種文本標記,表示一種主要的物件類型和一個特定的子類型,中間由一條斜杠來分隔,例如
HTML格式的文字文件:test.html
普通的ASCII文字文件:test/plain
圖片類型:image/jpeg、image/gif
2.2 URI
每個伺服器資源都有一個名字,這樣用戶端就可以說明它對什麼資源感興趣
伺服器資源名稱被稱為:統一資源識別項(Uniform Resource Identifier,URI)
URI就像網際網路上的郵政地址一樣,在世界範圍內唯一標識並且定位資訊資源
2.3 URL
URL:統一資源定位器是資源最常見的形式,它描述了一台特定伺服器上某資源的特定資源,明確說明了如何從一個精確、固定的位置擷取資源
的URL說明了協議、伺服器和本地資源
大部分URL遵循一種標準格式,該格式包含三個部分:
第一部分:方案;說明了訪問資源所使用的協議類型,通常為http協議:hhtp://
第二部分:地址;比如:www.baidu.com
第三部分:指定伺服器上某個資源,比如:specisal/saw-blade.gif
2.4 URN
URI的第二種方式就是URN:統一資源名;URN是作為特定內容的唯一名稱使用的,與目前的資源所在地無關,使用URN,可以將資源四處轉移,還可用同一個名字通過多種網路通訊協定來訪問資源
URN還處於實驗階段,因為其有效工作需要一個支撐架構來解析資源的位置。而此類架構比較缺乏,後面詳解介紹
3、事務
一個事務由一條請求命令和一條響應結果構成,這種通訊時通過http報文(HTTP message)的格式化資料區塊進行的
事務也可以理解為從用戶端到伺服器再到用戶端,一次完整通訊的過程
3.1方法
http支援八種不同的請求命令,被稱為方法,每條請求報文都包含一個方法,告訴伺服器要執行什麼動作,之前有專門介紹過這幾種方法,傳送門:http://www.cnblogs.com/imyalost/p/5630940.html
3.2狀態代碼
每條響應報文都會攜帶一個狀態代碼,用以告知用戶端,請求結果,或是否需要其他動作,之前也有介紹過這幾種狀態代碼,傳送門:http://www.cnblogs.com/imyalost/p/5688169.html
3.3一個web介面中可以包含多個對象
通常並不是單個資源,而是一組資源的集合(一個事務獲得一種資源,不同的資源【甚至分布在不同伺服器上】組合構成一個介面)
4、報文
構成:一行行簡單的字串組成
特點:純文字,方便讀寫
請求報文(request message):從用戶端發往伺服器
響應報文(response message):從伺服器發往用戶端
http報文包括以下三個部分:
起始行:報文第一行,用來說明要做什麼,出現了什麼情況
首部欄位:位於起始行後面,有零個或者多個,每個首部欄位都包含一個名字和一個值,便於解析,之間用冒號(:)隔開,以一個空行結束
主體:空行下面為報文主體,其中包含了所有類型的資料
5、連線協定
5.1 TCP/IP
http協議是位於整個資料轉送通訊的最上層應用程式層協議,不關注細節,負責通訊細節的協議為傳輸層控制協議(Transmission Control Protocl,TCP)
TCP特點:1)無差錯的資料轉送
2)按序傳輸(按照資料發送順序到達伺服器)
3)未分段的資料流(任意時刻任何大小將資料發出去)
英特網是全世界電腦和網路裝置最常用的層次化封包交換網路通訊協定集,其隱藏了網路和硬體的特點和弱點,使各類型的電腦和網路都能進行可靠的通訊
下面是互連網協議的五層協議棧
5.2 串連、IP地址及連接埠號碼
用戶端向伺服器發送請求報文之前,需要用網際協議(Internet Protocol,IP)地址和連接埠號碼在用戶端和伺服器之間建立一條TCP/IP串連通道
URL是資源的地址,自然能夠為我們提供儲存資源的機器的地址,看下面幾個URL:
http://207.200.83.29:80/index.html
http://www.netscape.com:80/index.html
http://www.netscape.com/index.html
第一個使用了機器的IP地址207.200.83.29,以及連接埠號碼80
第二個使用了文本形式的網域名稱(主機名稱:IP地址比較人性化的別稱)。通過網域名稱服務 (DNS)(Domain Name Service,DNS)機制對主機名稱進行轉換,後面詳細介紹這一部分
第三個沒有連接埠號碼,這種情況一般預設連接埠號碼為80。
為瀏覽器通過http顯示伺服器中某個簡單HTML資源的流程導圖
步驟如下:
1)瀏覽器從URL中解析出伺服器主機名稱;
2)瀏覽器將主機名稱轉換為伺服器的IP地址;
3)瀏覽器將連接埠號碼(如果有)從URL中解析出來;
4)瀏覽器建立一條與伺服器的串連TCP串連通道;
5)瀏覽器向伺服器發送一條http請求報文;
6)伺服器向瀏覽器發送一條http響應報文;
7)結束通訊,關閉串連,瀏覽器顯示具體資源;
說到這裡,我很想寫寫關於資料通訊時候所謂的“三向交握”,但之前的http協議基礎中已經介紹過,還不懂的可以去裡面找找,其實就是資料的封裝
6、協議版本
目前我們使用的http協議版本是http1.1,其重點關注的是校正http設計中的結構性缺陷,明確語義,引入重要的效能最佳化措施,並刪除一些不好的特性
HTTP-NG(http2.0):是http1.1後繼結構的原型建議,重點關注效能的大幅最佳化,以及更強大的服務邏輯遠程執行架構
目前http2.0還在不斷商議中,可能被應用到的新技術預計有以下7種,不排除有重大更改的可能性
7、web的結構組件
web的應用程式,除了瀏覽器和伺服器之外,還有其他幾個很重要的組件(以前的部落格中有介紹,所以這裡就大致說下,後面具體解釋他們的功能用處)
7.1 代理:位於用戶端和伺服器之間的http中間實體
web安全、應用整合以及效能最佳化的重要組成模組
出於通訊安全考慮,會將代理做為轉寄所有web資料流的可信任中間節點使用,還可對請求響應進行過濾,後面詳細介紹
7.2 緩衝:http倉庫,使常用頁面資源可以儲存在離用戶端更近的地方
web緩衝或者代理緩衝,可以將經過代理傳送的常用的允許緩衝的資源儲存下來,下一個請求若有相同的資源,可直接享受該資源
http對緩衝定義了很多功能,使緩衝更高效,並規範了緩衝資源的有效期間和隱私性,後面詳細介紹
7.3 網關:串連其他應用程式的特殊web伺服器
網關通常將http資料流轉換成其他的協議,接受請求時就好像自己是資源的原始伺服器,例如
一個http/ftp網關會http請求接受對ftp-URL的請求,但通過ftp協議來擷取資源,得到的資源被封裝成一條http報文,發送給用戶端
關於具體的網關的內容,後面詳細介紹
7.4 隧道:對http通訊報文進行盲轉寄的特殊http應用程式
隧道常用的方式是通過http串連承載加密的安全套接層(Secure Scokets Layer,SSL)資料流,這樣SSL資料流可以穿過只允許web資料流通過的防火牆
隧道可以在非http網路上轉寄資料(顯示的是HTTP/SSL隧道)
7.5 Agent代理:代表使用者發起自動http請求的半智能web用戶端程式
其他類型:對web上閑逛的自動使用者採用Agent代理,無人監視下發布http事務並擷取內容,比如:“網路蜘蛛”、“網路機器人”等
自動搜尋引擎“網路蜘蛛”就是Agent代理,可以全世界範圍內擷取web頁面
基本上這些內容和之前的http協議隨筆有很多是重疊的,不過是更深入的去介紹了,這些只是我的一些學習筆記,從一些資料書籍中提取重點做一個總結,
接下來一段時間,我會整理更多的學習筆記,如果有描述不正確或者遺漏的,希望看到的朋友可以評論區提出來,我及時更新,謝謝。。。。。。
http協議進階(一)http概述