重點知識:
·理解應用層協議,學習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的狀態碼
類別 | 原因短語 | |
1XX | informational(信息性狀態碼) | 接受的請求正在處理 |
2XX | Success(成功狀態碼) | 請求正常處理完畢 |
3XX | Redirection(重定向狀態碼) | 需要進行附加操作以完成請求 |
4XX | Client Error(客戶端錯誤狀態碼) | 服務器無法處理請求 |
5XX | Server 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)的功能;