HTTP

Page 1

UC101

TCP/IP 報告 HTTP(Hypertext Transfer Protocol) 資策會第 79 期網路工程師養成班

指導老師:戴致禮老師 

學員:范紘瑄 KIMO

撰稿日期:2010/03/25─03/28


目錄 HTTP 的濫觴

................................................................................................

HTTP 的基本原理

..............................................................................................

3 3

TCP 的三方交握 ................................................................................................... 4 .....................................................................................................................

5

............................................................................................................................

5

Cookie TLS

HTTP 持續性連線 HTTP 實驗解析

...............................................................................................

6

.........................................................................................

6

﹝實驗一﹞OSI 七層架構解析 Facebook 封包狀況 ....................................................................................................................

6

﹝實驗二﹞觀察 Facebook 持續性連線 .................................................................................................................

11

﹝實驗三﹞觀察 Facebook 的應用成是封包狀況 .................................................................................................................

12

﹝實驗四﹞觀察 Facebook TLS 的部分並與 HTTP 網頁比較 .................................................................................................................

15

總結

...........................................................................................................

17

註解

...........................................................................................................

17

參考資料

..................................................................................................

18 2


HTTP 介紹 HTTP 的濫觴: HTTP(Hypertext Transfer Protocol)即是超文字傳輸協定,主要功用是使 用於存取全球資訊網(World Wide Web,WWW)的資料,全球資訊網為各式 各樣資訊的儲存庫,一開始 HTML 是構成網路資料最基礎的元件,而 HTTP 創建的目的便是要去解讀 HTML。為了要獲取這些資訊,必須透過通訊協 定去達成,而在全球資訊網上最常使用的通訊協定便是 HTTP。

HTTP 的基本原理: HTTP 本身即是第七層 Application Layer 的協定,並且也是在主從式的 架構下的應用。在用戶端與伺服端兩者傳送資料的過程,都必須遵守此協 定。其運作的功能像是 FTP 及 SMTP 的組合,FTP 在傳送資料時是透過第 四層 Transport 層的 TCP 及 UDP 服務來傳送檔案,而 HTTP 相較於 FTP 則簡 單許多,HTTP 是只使用 TCP 此協定,因此兩者的共通點便是都有使用 TCP 服務傳送資料;而 HTTP 像 SMTP 是因為 HTTP 的資料傳送也是在用戶端與 伺服端之間傳送,此外在全球資訊網中使用的 HTTP 協定也使用了 MIME 的框架。 而用戶端要透過 HTTP 獲取在 Web 上的資訊,必須透過瀏覽器 ﹝Browser﹞去解釋及顯示 Web 上的這些資料,下方的<圖 1>是透過 Browser 瀏覽 IGoogle 網頁:

註解 [W使1]: 請參考<註解 1>

<圖 1>

3


在<圖 1>中,可發現 http://www.google.com.tw/為一個 URL,URL 為 全球資源定位器﹝Uniform Resource Locator﹞,用來存取分散在全球的文 件,藉由定位器,可以快速且正確蒐尋到所尋找的資訊。

TCP 的三方交握: 在 HTTP 當中,為了讓資料能正確傳遞,因此在第四層 Transport Layer 當中是走 TCP 協定,而使用 TCP 協定的原因是因為當開啟一個網頁時,需 要傳送相當大量的資料,而 TCP 協定提供了傳輸控制,並且可以按順序將 資料組織起來,此外倘若資料在傳輸過程當中遺失的話,TCP 協定也會做 回應程序及區段遺失或損壞再次重新傳送的機制。而當雙方要建立 TCP 連 線時,即會進行三方交握﹝Three-way handshaking﹞的動作。在接下來的 Http 實驗解析會清楚標明出三方交握的部份,而<圖 2>即為 TCP 三方交握 的示意圖: <圖 2>

4


Cookie: Cookie 是為了讓現今的 WEB 具有其它的功能,例如讓只有註冊的用戶 端登入,或者是線上購物等功能所發明的。 但是何謂 Cookie?Cookie 即是當用戶端發送的第一個封包到伺服器端, 伺服器端將第一個封包的資訊封裝起來產生一個 Cookie,而 Cookie 便會隨 著第二個封包一起傳送到第一個封包內所標示的來源位址。倘若用戶端的 來源位址正確,收到第二個封包之後,便會傳送第三個封包給伺服器端, 而第三個封包內會包含了未經過更改的 Cookie,伺服器端便可以對用戶端 的 IP 做驗證並配置資源。而 Cookie 內容則包括一些伺服器端蒐集到的相 關用戶端的資料,如帳號及密碼,此外在用戶端接收到伺服器端的回應之 後,便會將 Cookie 儲存到 Cookie 的目錄,<圖 3>便是 Cookie 的目錄。

<圖 3>

TLS: 由於我所實驗的主要是以連線 Facebook 為主,Facebook 為了保障註冊

5


的使用者帳號密碼能經由安全的傳送,是以 TLS 來提供服務,因此以 TLS 為說明。 TLS 即為傳輸層安全通訊協定﹝Transport Layer Security﹞,是為了提供 傳輸層的安全性所設計的,其是由 SSL﹝Secure Sockets Layer﹞所衍生出的。 TLS 是算在 TCP/IP 架構中應用層與 TCP 之間層,相當於 OSI 第六層 Presentation Layer 將資料做加密,TLS 為了使雙方在安全的環境下傳送訊息, 必須先通訊雙方先對三個通訊協定作協議,分別是實體認證協定、訊息認 證協定以及加解密通訊協定,透過這三個協定,可以將所需金鑰以及對應 的參數傳送給雙方,將資料作加密處理,因此 TLS 能夠讓雙方在安全的環 境下交換訊息。

HTTP 持續性連線: 持續性連線是關於到 HTTP 版本,HTTP 在 1.1 版前的版本是使用非持 續性的連線,而使用非持續性連線,每一次的要求回應就建立一個 TCP 連 線,並在讀取完資料之後,將連線關閉,對於伺服器端而言,倘若使用者 讀取更多的檔案,便會做多次 TCP 連線開啟與關閉的動作,因此會產生相 當多的負擔;而持續性連線則為傳送回應之後仍維持著連線的開啟,並等 待用戶端更多的要求。

HTTP 實驗解析:

﹝實驗一﹞ 實驗目的:利用 Wireshark 擷取連線至 Facebook 的封包,並觀察其 OSI 七層架構的情形。 實驗環境:利用 VM 建置出的 DNS 去解析 Facebook 的 IP,並於 Facebook 上執行多項應用程式。 實驗軟體:Wireshark

6


實驗步驟: 先開啟瀏覽器,鍵入 Facebook 的 URL:Http://www.facebook.com/ 並觀察到 Wireshark 中已抓取到的封包,而<圖 4>為 DNS 解析 Facebook 的 IP。 <圖 4>

<圖 5>

從<圖 5>可以觀察到 TCP 三向交握: 步驟一:52861 即為實驗中的用戶端 Port 編號,由 52861 向 HTTP 發出一

7


個[SYN]要求﹝Seq=0,flag=SYN﹞ 步驟二:當 HTTP 收到要求之後,便傳送一個區段,用來批准來資用戶端 的要求﹝Seq=0,Ack=1,flag=SYN,ACK﹞ 步驟三:用戶端回應伺服器端,並且建立連線。﹝Ack=1,flag=ACK﹞

<圖 6>

<圖 6>為連線至 Facebook 網頁的封包,經由三方交握之後,可發現在 Hypertext Transfer Protocol 中,client 端去連線到 Host:www.facebook.com, 確認連線建立。而 Get /home.php? HTTP/1.1\r\n,php 即為一個動態文件, 而後段的 1.1 即為 HTTP 的版本,目前最新版本便是 1.1。

8


接下來便以 OSI 各層解析封包的狀況: <圖 7>

<圖 7>為此登入 Facebook 封包的狀況:Frame 59 為封包的編號,此封 包為 685bytes,封包到達時間為 Mar 22,2010 22:08:30.867400000。 <圖 8>

<圖 8>為第二層 Data Link layer,標示出了封包的目的位址以及來源位 址,而各位址並包含了廠牌的序號以及 MacAddress﹝流水號﹞。

9


<圖 9>

<圖 9>為 Network Layer,顯示的是 IP 協定的表頭,並可以觀察到來源 端以及目的端的 IP。 <圖 10>

<圖 10>為 Transport Layer,顯示的是此封包的協定的資訊,從圖中可 看出為 TCP 協定的資訊,包括了來源端及目的端的 Port 編號,還有 Ack 和 長度等資訊。而我們的主題 HTTP 則預設便為 80Port。

10


<圖 11>

<圖 11>為 Application Layer,從圖中可以觀察到為連線 Facebook 網頁 的動作,並且可以觀察到 Cookie 以及 HTTP 的版本。

﹝實驗二﹞ 實驗目的:觀察 Facebook 的持續性連線,因為 Facebook 的登入之後閒置 一段時間會有逾時請重新登入的情況,則此便是關係到持續性 連線的部份。 <圖 12>

11


<圖 12>為建立連線成功之後,,可觀察到其 Connection 為 Keep-Alive,保 持連線的狀態,接下來將網頁閒置不做任何動作。 <圖 13>

<圖 13>可觀察到其 X-Cnection 為 Close 狀態,因此驗證了 HTTP 1.1 版本逾 時一段時間之後即會中斷連線。驗證的過程時間為:67.390981 秒─ 283.183802 秒此段時間,封包編號為 59 及 2036。

﹝實驗三﹞ 實驗目的:觀察 Facebook 的應用程式封包狀況,由於 Facebook 含多種功 能及應用程式,在下列實驗中,以觀察 Facebook 的 Poke 功能 以及觀察 Facebook 開心農場兩種封包狀況為實驗。

12


Poke 功能:Poke 功能為 Facebook 其中一項功能之一,如圖<14>所示, 可以在網頁上〝戳〞好友,並可進行對話。<圖 15>即為發佈對話給好友, TEST!!TEST!!TEST!!TEST!!TEST!!的訊息可以從 Hypertext Transfer Protocol 中 發現到對話內容,Poke 封包內容如<圖 15>:

<圖 14>

13


<圖 15>

而開心農場的封包觀察結果可發現則多為好幾個 JPEG、JFIF 以及 FLASH 等封包,開心農場為一動態網頁,要將傳輸的資料轉換為 JPEG 及等圖文並 茂的網頁,便是透過 Presentation Layer 轉換表達的方式,下方<圖 15>便是 其封包內容。

14


<圖 15>

﹝實驗四﹞ 實驗目的:在連線至 Facebook 網頁時,可發現其封包經過 TLS 加密的關係, 因此可以做到帳號及密碼的保護,此實驗觀察 Facebook 封包的 TLS 以及以自己在 VM 環境中所架設 IIS 簡單網頁並連線去觀察 封包。

15


<圖 16>

<圖 16>是連線至 Facebook 的封包,可發現經由加密過後,下方顯示 的則為亂碼,而<圖 17>為自己 IIS 網頁,並以登入方式觀察封包,可發現 輸入的帳號密碼皆為明碼的方式,缺乏安全性,<圖 18>則為連線至 IIS 網 頁的封包內容: <圖 17>

16


<圖 18>

總結: 從實驗中可觀察出 Facebook 的 OSI 七層情況,實驗的兩個應用程式 Poke 為明碼情形可以觀察到對話;開心農場則為經由 Presentation Layer 轉換為用戶端看得懂的格式。並且可以從封包中分析出 Facebook 經由 TLS 服務可以將帳號及密碼作保護。

註解: 註解<1>:MIME 是多用途網際網路郵件擴展(Multipurpose Internet Mail

17


Extensions)是一個網際網路標準,它擴展了電子郵件標準,使電子郵件能 夠支持非 ASCII 字元等多種格式的消息。

參考資料: TCP/IP 通訊協定﹝第三版﹞13、22、28 章節 ─ 作者:Behrouz A. Forouzan 及 Sophia Chung Fegan <2> 資訊通訊網路﹝第四版﹞ ─ 作者 Behrouz A. Forouzan <3> WIKI 百科全書 ─ http://zh.wikipedia.org/wiki/Wiki <1>

18


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.