計算機網絡】應用層協議----HTTP

應用層負責應用程序間的溝通,即定義了位於不同主機中的多個應用進程之間通信的協議。滿足我們日常的網絡需求,比如SMTP(電子郵件傳輸)、FTP(文本傳輸協議)、HTTP(超文本傳輸協議)
上面提到了協議二字,簡單來說,協議就是一種“約定”,比如我們一會兒在哪見面,我們會提前約定好地點。應用層中應用最廣泛的協議就是HTTP協議了。

HTTP協議

客戶端和服務器的通信,必須要通過請求和響應的交換來達成通信,HTTP協議規定:客戶端先發出請求建立通信,服務器在沒有接收到請求時是不會響應的

HTTP的特點:
1.HTTP基於TCP/IP協議
2.通常使用的場景是基於CS/BS
3.無狀態無連接協議(後面有具體解釋)

HTTP的組成

由HTTP請求和HTTP響應組成
客戶端request:請求行、請求報頭、空行、請求正文
服務器response:響應行、響應報頭、空行、響應正文
在這裏插入圖片描述
請求行中:URI 、 version 、版本號,比如:HTTP/1.1
響應行中:
狀態碼:比如200(狀態碼解釋:OK//客戶端請求成功)
400 (狀態碼解釋:Bad Request//客戶端請求有語法錯誤,不能被服務器所理解)

報頭中放的是鍵值對(比如鍵:小聞,值:12345;小聞:12345就是一個鍵值對)
HTTP常見的Header
Content-Type:數據類型(比如text/html等)
Content-Length:Body的長度
Host:客戶端告知服務器,所請求的資源是在哪個主機的哪個端口上
User-Agent:聲明用戶的操作系統和瀏覽器版本信息
referer:當前頁面時從哪個頁面跳轉過來的
location:搭配3XX狀態碼使用,告訴客戶端接下去要去哪裏訪問
Cookie:用於在客戶端存儲少量信息,通常用於實現會話(session)的功能

HTTP的方法
請求資源的常見方法:GET方法通過請求行的URL傳參,POST方法通過請求正文傳參,下面更具體點:

方法 說明 支持HTTP協議版本
GET 獲取資源 1.0、1.1
POST 傳輸實體主體 1.0、1.1
PUT 傳輸文件 1.0、1.1
HEAD 獲得報文首部 1.0、1.1
DELETE 刪除文件 1.0、1.1
OPTIONS 詢問支持的方法 1.1
TRACE 追蹤路徑 1.1
CONNECT 要求用隧道協議連接代理 1.1
LINK 建立和資源之間的關係 1.0
UNLINE 斷開連接關係 1.0

HTTP的狀態碼

類別 原因短語
1XX Informational(信息性狀態碼) 接收的請求正在處理
2XX Success(成功狀態碼) 請求正常處理完畢
3XX Redirection(重定向狀態碼) 需要進行附加操作以完成請求
4XX Client Error(客戶端錯誤碼) 服務器無法處理請求
5XX Server Error(服務器錯誤狀態碼) 服務器處理請求出錯

常見的狀態碼:
200 (OK) 請求成功[一般用於Get和Post請求]
404 (Not Found) 客戶端請求有語法錯誤,服務器無法處理請求
403 (Forbidden) 服務器收到請求,但拒絕服務
301 (Moved Permanently) 永久重定向(請求的資源被永久移動到新的URI)
302 (Redirect) 臨時重定向(資源被臨時移動。客戶端應繼續使用原有的URI)
504 (Bad GateWay) 充當代理服務器,未及時從遠端服務器獲取請求

URI 和 URL
URI統一資源標識符,是用來唯一標識一個資源
URL(Uniform Resource Locateor)統一資源定位器,每個網頁都有一個唯一的名稱標識,這個標識就叫做URL,簡單的說,URL就是Web地址,俗稱“網址”
它是具體的URI,不僅標識了一個資源,還知名如何定位這個資源,具有全球唯一性

URL格式由三部分組成:
協議、存放該資源的主機IP地址(有時也包括端口號)、主機資源的具體地址
在這裏插入圖片描述
Windows主機不區分URL大小寫,但是,Unix/Linux主機區分大小寫

無連接無狀態:簡化了服務器,不會造成不必要的連接佔用,但請求可能會傳輸重複信息

無連接:每次連接只處理一個請求。請求時建連接,請求完斷連接(服務器處理完客戶端的請求,並收到客戶端的應答後,斷開連接)這種方式不僅節約傳輸時間,還可儘快把資源釋放出來服務其他客戶端

無狀態:指協議對事物處理沒有記憶能力(也就是服務器並不直到客戶端是什麼狀態,每個請求都是獨立的)。不過也有缺點:假如你後面要繼續處理前面的,那就必須要重傳了,這類情況就會導致連接傳送的數據量大。但是如果不需要之前信息時,應答就比較快了)

Cookie\Set-Cookie

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