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)的功能;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章