Linux__計算機網路(應用層/HTTP協議)
阿新 • • 發佈:2019-01-27
重點知識: ·理解應用層協議,學習HTTP協議 ·理解傳輸層的作用和TCP的機制和特性 ·理解網路層的作用和IP協議 ·理解資料鏈路層的作用和ARP協議 ·理解TCP/IP協議 ·分析網路問題的工具和方法應用層 最貼近於實際,解決日常需求的網路應用,就是在這一層,也是和使用者最緊密的。 協議 協議是一種“約定”,而在計算機學科,一般而言,協議,就是網路協議的簡稱,網路協議是通訊計算機雙方必須遵守的一組約定,例如如何去建立連線,怎樣去互相識別等等。只有遵守這個約定,計算機之間才能相互通訊交流。他的三要素是:語法,語義,時序 先舉一個簡單的例子,例如一個網路版的計算器,他是怎麼工作的呢?首先要由客戶端將需要處理的資料傳送給服務端,然後伺服器獲取到資料,進行運算,再把結果返回給客戶端。而這個時候就需要一些約定,不能出現你發你的,我收我的,這樣可能導致雙方都得不到正確的處理。因此需要有約定: 約定一: ·客戶端傳送形如“1+1”的字串,這個字串有兩個運算元,都是整形; ·兩個數字之間有一個字元是運算子,運算子只能是+; ·數字和運算子之間沒有空格; 約定二: ·定義一個結構體來表示我們需要互動的資訊; ·傳送資料時將這個結構體按照一個規則轉換成字串,接收到資料的時候在按照相同的規則把字串轉化為結構體; ·類似於這樣的過程,我們稱之為“序列化”和“反序列化”HTTP協議 關於HTTP協議,百度詞條上是這麼說的:
其實,這就是一種約定,是被定義好的,現成的可用的,被大家接受的協議,供我們參考使用。要認識HTTP,首先我們來認識一下URL;
urlencode和urlecode在url裡像/?:等等的字元,已經被url當做特殊意義理解了。因此這些字元不能隨意出現。當出現這些字元,就會被轉義,轉義規則如下: 將需要轉碼的字元轉為16進位制,然後從右到左,取4位(不足四位直接處理),每兩位做一位,前面加上%,編碼成%XY格式。HTTP協議格式 HTTP請求
·首行:[方法]+[url]+[版本]·Header:請求的屬性,冒號是分割的鍵值對;煤堆屬性之間使用\n分割;遇到空行表示Header部分結束·Body:空行後面的內容都是Body。Body允許為空字串。如果Body存在,則在Header終會有一個Content-Length屬性來標識Body的長度 HTTP響應
·首行:[版本號]+[狀態碼]+[狀態碼解釋]·Header:請求的屬性,冒號分割的鍵值對;每組屬性之間使用\n分割;遇到空行表示Header部分結束·Body:空行後面的內容都是body,Body允許為空字串。如果Body存在,則在Header中會有一個Content-Length屬性來標識Body的長度。如果伺服器返回了一個html頁面,那麼html頁面內容就是在body中。HTTP的方法
其中最常用的就是GET和POST方法HTTP的狀態碼
最常見的狀態碼,比如200(OK),404(Not Found),403(Forbidden),302(Redirect,重定向),504(Bad Gateway)HTTP常見Header ·Content-Type: 資料型別(text/html)等 ·Content-Length: Body的長度 ·Host: 客戶端告知伺服器,所請求的資源是在哪個知己的哪個埠上; ·User-Agent: 宣告使用者的作業系統和瀏覽器版本資訊 ·referer: 當前頁面是從哪個頁面跳轉過來的 ·location: 搭配3XX狀態碼使用,告訴客戶端接下來要去哪裡訪問 ·Cookie: 用於在客戶端儲存少量資訊,通常用於實現會話(session)的功能;
urlencode和urlecode在url裡像/?:等等的字元,已經被url當做特殊意義理解了。因此這些字元不能隨意出現。當出現這些字元,就會被轉義,轉義規則如下: 將需要轉碼的字元轉為16進位制,然後從右到左,取4位(不足四位直接處理),每兩位做一位,前面加上%,編碼成%XY格式。HTTP協議格式 HTTP請求
·首行:[方法]+[url]+[版本]·Header:請求的屬性,冒號是分割的鍵值對;煤堆屬性之間使用\n分割;遇到空行表示Header部分結束·Body:空行後面的內容都是Body。Body允許為空字串。如果Body存在,則在Header終會有一個Content-Length屬性來標識Body的長度 HTTP響應
·首行:[版本號]+[狀態碼]+[狀態碼解釋]·Header:請求的屬性,冒號分割的鍵值對;每組屬性之間使用\n分割;遇到空行表示Header部分結束·Body:空行後面的內容都是body,Body允許為空字串。如果Body存在,則在Header中會有一個Content-Length屬性來標識Body的長度。如果伺服器返回了一個html頁面,那麼html頁面內容就是在body中。HTTP的方法
方法 | 說明 | 支援的HTTP協議版本 |
GET | 獲取資源 | 1.0、1.1 |
POST | 傳輸實體主體 | 1.1、1.1 |
PUT | 傳輸檔案 | 1.1、1.1 |
HEAD | 獲得報文首部 | 1.1、1.1 |
DELETE | 刪除檔案 | 1.1、1.1 |
OPTIONS | 詢問支援的方法 | 1.1 |
TRACE | 追蹤路徑 | 1.1 |
CONNECT | 採用隧道協議代理連結 | 1.1 |
LINK | 建立和資源之間的聯絡 | 1.0 |
UNLINE | 斷開連線關係 | 1.0 |
類別 | 原因短語 | |
1XX | informational(資訊性狀態碼) | 接受的請求正在處理 |
2XX | Success(成功狀態碼) | 請求正常處理完畢 |
3XX | Redirection(重定向狀態碼) | 需要進行附加操作以完成請求 |
4XX | Client Error(客戶端錯誤狀態碼) | 伺服器無法處理請求 |
5XX | Server Error(伺服器錯誤狀態碼) | 伺服器處理請求出錯 |