1. 程式人生 > >TCP/IP五層(四層)模型——應用層

TCP/IP五層(四層)模型——應用層

應用層

應用層是TCP/IP五層(四層)模型的最頂層,主要負責程式間的溝通,如簡單電子郵件傳輸(SMTP),檔案傳輸協議(FTP),網路遠端訪問協議(Telnet)等,網路程式設計主要就是針對應用層

HTTP協議——超文字傳輸協議

1 HTTP協議介紹

HTTP協議是程式設計師自己定義的一個應用層協議,由請求和響應構成,是一個標準的客戶端伺服器模型。HTTP是一個無狀態的協議。
HTTP協議(HyperText Transfer Protocol)是用於從WWW伺服器傳輸超文字到本地瀏覽器的傳送協議。它可以使瀏覽器更加高效,使網路傳輸減少。它不僅保證計算機正確快速地傳輸超文字文件,還確定傳輸文件中的哪一部分,以及哪部分內容首先顯示(如文字先於圖形)等。

2 URL介紹
2.1 URL格式及欄位

這裡寫圖片描述
其實我們俗稱的“網址”就是URL,詳細見上面圖中的例子
(1)協議方案名:訪問網站時所遵循的協議,通常為http、https
(2)登入資訊:一般格式為 使用者名稱:密碼,但是這項一般都省略
(3)伺服器地址:訪問的網站所在的主機地址,域名
(4)服務埠號:伺服器程式是該主機中的哪個程序,由埠號給出。HTTP的預設埠號為80,可以省略
(5)帶層次的檔案路徑:所請求檔案在主機的路徑,其中第一條 / 表示Web的根目錄
(6)查詢字串:?之後的為查詢字串,表示請求的內容(若沒有,可省略)
(7)片段識別符號:可省略

在上面瞭解過URL的格式後,但是在查詢一些包含特殊字元的資訊時卻看到一些不一樣的資訊

這裡寫圖片描述
在問號?後面的欄位是查詢字串,我們查詢的內容為C++,那麼在問號後面顯示的資訊應該為wd=C++,但是實際上顯示的內容為wd=C%2B%2B,這是為什麼??
因為在URL中本身是包含一些字元的,所以URL就規定在引數中出現的特殊字元必須進行轉義——將字元變為16進位制,然後從右到左取四位,每兩位做一位,前面加上%,所以就變為上面的格式了

3 HTTP協議格式

HTTP協議分為HTTP請求和HTTP響應,因此兩種格式也不相同,但是大體分為四部分
這裡寫圖片描述

3.1 HTTP請求格式

這裡寫圖片描述

主要分為四部分:
(1)請求行:在HTTP請求報文中第一行,以空格為界,分為三個區域:【請求方法,常為GET/POST】+【請求的資源URL】+【HTTP協議版本,常為1.0/1.1】;
(2)請求報頭Header:在HTTP請求報文中從第二行到空行之前的即為請求報頭,是請求屬性,均以冒號分割的鍵值對形式呈現,每組屬性間用 \n 分隔;
(3)空行:表示報頭已完,不能省略
(4)請求正文Body:空行以後的均是請求正文,表示要提交給瀏覽器看的訊息,允許為空字串。
其中:
1)GET方法:請求訊息在正文中
2)POST方法:請求訊息在報文中

3.2 HTTP響應格式

這裡寫圖片描述

主要分四部分:
(1)響應行:在HTTP請求報文中第一行,以空格為界,分為三個區域:【協議版本號】+【狀態碼】+【狀態碼解釋】;
(2)響應報頭Header:在HTTP請求報文中從第二行到空行之前的即為請求報頭,表示請求的屬性;
(3)空行:表示報頭已完,不能省略;
(4)響應正文Body:空行以後的均是請求正文,允許為空字串,這部分內容為真實能夠看到的(HTML/JS/CSS頁面)

下面是一個例項
這裡寫圖片描述

4 HTTP的方法

這裡寫圖片描述

5 HTTP狀態碼

這裡寫圖片描述
比較常見的狀態碼:200(OK),404(Not Found),403(Forbidden),302(Redirect,重定向)