HTTP網路協議(一)
阿新 • • 發佈:2018-11-04
1.瞭解Web及網路基礎
TCP/IP協議族按層次可以分為下面四層:
- 應用層:決定了向用戶提供應用服務時通訊的活動,TCP/IP協議族內預存了各類通用的應用服務,比如:FTP(檔案傳輸協議)和DNS(域名系統)服務就是其中兩類,HTTP協議也處於該層。
- 傳輸層:對上層應用,提供處於網路連線中的兩臺計算機之間的資料傳輸。在傳輸層有兩個性質不同的協議:TCP(傳輸控制協議)和UDP(使用者資料報協議)
- 網路層:用來處理在網路上流動的資料包,資料包是網路的傳輸最小資料單位,該層規定了通過怎樣的路徑(所謂的傳輸路線)到達對方計算機,並把資料包傳送給對方。與對方計算機之間通過多臺計算機或網路裝置進行傳輸時,網路層所起的作用就是在眾多的選項內選擇一條傳輸路線。
- 鏈路層:用來處理連線網路的硬體部分,包括控制作業系統,硬體的裝置驅動,NIC,及光纖等物理可見部分(還包括聯結器等一切傳輸媒介),硬體上的範疇均在鏈路層的作用範圍之內。
利用TCP/IP協議族進行網路通訊時,會通過分層順序與對方進行通訊,傳送端從應用層往下走,接收端則往應用層往上走,就拿傳送端的客戶端在應用層(HTTP協議)發出一個想看某個Web頁面的HTPP請求為例,如下圖示:
傳送端在層與層之間傳輸資料時,每經過一層時必定會被打上一個該層所屬的首部資訊,反之,接收端在層與層傳輸資料時,每經過一層時會把對應的首部消去,這種把資料資訊包裝起來的做法稱為封裝。
負責傳輸的IP協議:作用是把各種資料包傳送給對方,其指明瞭節點被分配到的地址,而MAC地址是指網絡卡所屬的固定地址,IP間的通訊依賴MAC地址,在網路上,通訊的雙方在同一區域網內的情況較少,通常是經過多臺計算機和網路裝置中轉才能連線到對方,在中轉時,會利用下一站中轉裝置的MAC地址來搜尋下一個中轉目標,這時,會採用ARP協議(ARP是一種用以解析地址的協議,根據通訊方的IP地址就可以反查出對應的MAC地址)。例子如圖:
TCP協議為了準確無誤的將資料送達目標處,TCP協議採用了三次握手策略,其握手過程中用了三個標記:FLAG-SYN和ACK,該過程如圖:
注意:若在握手過程中某個階段莫名中斷,TCP協議會再次以相同的順序傳送相同的資料包。*
DNS服務是和HTTP協議一樣位於應用層的協議,它提供域名到IP地址之間的解析服務其兩者關係如圖:
各種協議與HTTP協議的關係就如圖所示:
URI用字元標識某一網際網路資源,而URL表示資源的地點(網際網路上所處的位置),故URL是URI的子集。
URI格式通常包括以下幾個: - 登陸資訊
- 伺服器地址(IP或域名)
- 伺服器埠號
- 帶層次的檔案路徑
- 查詢字串
- 片段標識
URI格式例子如圖:
黑色:協議方案名
紅色:登陸資訊(認證)
淺綠色:伺服器地址
淺藍色:伺服器埠號
紫色:帶層次的檔案路徑
深藍色:查詢字串
深綠色:片段識別符號
2.簡單的HTTP協議
請求報文:是由請求方法,請求URI,協議版本,可選的請求首部欄位和內容實體構成的。
響應報文:基本上由協議版本,狀態碼(表示請求成功或失敗的數字程式碼),用以解釋狀態碼的原因短語,可選的響應首部欄位以及實體主體構成。
HTTP是一種不儲存狀態的協議,即不保留之前一切的請求或響應報文的資訊,為了解決這問題,許多網站引入了Cookie技術,例如:許多登陸網站就是用Cookie技術來保持登陸狀態。
告知伺服器意圖的HTTP方法有以下幾個:
- GET:獲取資源,如果請求的資源是文字,那就保持原樣返回,如果是像CGI那樣的程式,則返回經過執行後的輸出結果。
- POST:主要用來傳輸實體的主體,而不是獲取響應的主體內容。
- PUT:傳輸檔案,要求請求報文中包含檔案內容,但是HTTP/1.1PUT方法自身不帶驗證機制,任何人都可以上傳檔案,存在安全性問題,故一般有開發此功能的Web網站都會配合Web應用程式的驗證機制,如:REST機制。
- HEAD:不獲取返回報文主體部分,而是獲取其URI的有效性及資源更新的日期時間等首部欄位。
- DELETE:用來刪除檔案,但是HTTP/1.1Delete方法自身也不帶驗證機制,任何人都可以刪除檔案,存在安全性問題,故一般有開發此功能的Web網站都會配合Web應用程式的驗證機制,如:REST機制。
- OPTIONS:用來查詢針對請求URI指定的資源。
- TRACE:在用其傳送請求時,在Max-Forwards首部欄位中填入數值,每經過一個伺服器端就將該數字減1,當數值剛好減到0時,就停止繼續傳輸,最後接收到請求的伺服器端則返回狀態碼200OK的響應,因此可以查詢傳送出去的請求是怎樣被加工修改的。
- CONNECT:要求在與代理伺服器通訊時建立隧道,實現用隧道協議進行TCP通訊,主要使用SSL和TLS協議把通訊內容加密後經網路隧道傳輸。
HTTP持久連線:keep-alive(持久連線)的特點是,只要任意一端沒有明確提出斷開連線,則保持TCP連線狀態,好處在於減少了TCP連線的重複建立和斷開所造成的額外開銷,減輕了伺服器端的負載,也減少了開銷的那部分時間,是HTTP請求和響應能夠更早的結束。
管管線化技術可以讓客戶端同時並行傳送多個請求,而不需要一個接一個地等待響應。
HTTP是無狀態協議優勢在於它減少伺服器的CPU及記憶體資源的消耗,但它不能保持之前的狀態進行請求處理,這樣需要在登陸認證的Web頁面中那個,每次請求 跳轉頁面都需要再次認證登陸或附上請求認證引數,因此為了解決這個問題,可以引用Cookie技術,該過程如圖:
轉自 http://blog.csdn.net/xuguoli_beyondboy/article/details/47928829