1. 程式人生 > >Linux__計算機網路(應用層/HTTP協議)

Linux__計算機網路(應用層/HTTP協議)

     重點知識:          ·理解應用層協議,學習HTTP協議          ·理解傳輸層的作用和TCP的機制和特性          ·理解網路層的作用和IP協議          ·理解資料鏈路層的作用和ARP協議          ·理解TCP/IP協議          ·分析網路問題的工具和方法應用層     最貼近於實際,解決日常需求的網路應用,就是在這一層,也是和使用者最緊密的。     協議     協議是一種“約定”,而在計算機學科,一般而言,協議,就是網路協議的簡稱,網路協議是通訊計算機雙方必須遵守的一組約定,例如如何去建立連線,怎樣去互相識別等等。只有遵守這個約定,計算機之間才能相互通訊交流。他的三要素是:語法,語義,時序     先舉一個簡單的例子,例如一個網路版的計算器,他是怎麼工作的呢?首先要由客戶端將需要處理的資料傳送給服務端,然後伺服器獲取到資料,進行運算,再把結果返回給客戶端。而這個時候就需要一些約定,不能出現你發你的,我收我的,這樣可能導致雙方都得不到正確的處理。因此需要有約定:         約定一:          ·客戶端傳送形如“1+1”的字串,這個字串有兩個運算元,都是整形;          ·兩個數字之間有一個字元是運算子,運算子只能是+;          ·數字和運算子之間沒有空格;     約定二:          ·定義一個結構體來表示我們需要互動的資訊;          ·傳送資料時將這個結構體按照一個規則轉換成字串,接收到資料的時候在按照相同的規則把字串轉化為結構體;          ·類似於這樣的過程,我們稱之為“序列化”和“反序列化”HTTP協議     關於HTTP協議,百度詞條上是這麼說的:
超文字傳輸協議
(HTTP,HyperText Transfer Protocol)是網際網路上應用最為廣泛的一種網路協議。所有的WWW檔案都必須遵守這個標準。設計HTTP最初的目的是為了提供一種釋出和接收HTML頁面的方法。1960年美國人Ted Nelson構思了一種通過計算機處理文字資訊的方法,並稱之為超文字(hypertext),這成為了HTTP超文字傳輸協議標準架構的發展根基。Ted Nelson組織協調全球資訊網協會(World Wide Web Consortium)和網際網路工程工作小組(Internet Engineering Task Force )共同合作研究,最終釋出了一系列的
RFC,其中著名的RFC 2616定義了HTTP 1.1。
其實,這就是一種約定,是被定義好的,現成的可用的,被大家接受的協議,供我們參考使用。要認識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的方法
方法說明支援的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
其中最常用的就是GET和POST方法HTTP的狀態碼
類別原因短語
1XXinformational(資訊性狀態碼)接受的請求正在處理
2XXSuccess(成功狀態碼)請求正常處理完畢
3XXRedirection(重定向狀態碼)需要進行附加操作以完成請求
4XXClient Error(客戶端錯誤狀態碼)伺服器無法處理請求
5XXServer Error(伺服器錯誤狀態碼)伺服器處理請求出錯
     最常見的狀態碼,比如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)的功能;