網路基礎 應用層(HTTP協議)

2021-08-20 03:39:50 字數 3128 閱讀 1459

我們寫的解決我們實際問題的網路程式都是在應用層。

今天我們詳細來了解一下應用層的http協議。

協議就是一種約定,socket apide 介面,在讀寫資料時,都是按字串的方式來傳送接收的。如果我們要傳輸一些結構化的資料怎麼辦呢?

我們可以約定:

定義乙個結構體來標識我們需要互動的資訊,傳送資料時將這個結構體按照乙個規則轉換成字串,接收到資料的時候再按照相同的規則把字串轉化為結構體。

這個過程叫做「序列化」和「反序列化」。

當然了,我們也可以有其他的約定方案並且按照約定執行,只要能夠保證,一端傳送時構造的資料在另一端能夠正確的進行解析,這就是可行的,這種約定就是應用層協議。http協議:超文字傳輸協議首先我們需要認識一下url:平時我們所說的**就是url

urlencode和urldecode

像 /?:等這樣的字元,已經被url當做特殊意義理解了,因此這些字元不能隨意出現。比如某個引數中需要帶有這些特殊字元,就必須先對特殊字元進行轉義。

轉義規則:將需要轉碼的字元轉為16進製制,然後從右到左取4位(不足4為的直接處理),每兩位做一次前面加上%,編碼成%xy格式。

就比如我們搜尋c++時,發現這裡的+就被轉義成%2b。

urldecode就是urlencode的逆過程。

http協議格式http請求

http的請求方法:方法

說明支援的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.1trace

追蹤路徑

1.1connect

要求用隧道協議連線**

1.1link

建立和資源之間的聯絡

1.0unline

斷開連線關係

1.0

請求報頭(header):請求的屬性,為一對冒號分割的鍵值對,屬性與屬性之間用\n分割;如果遇到空行表示header部分結束。

請求正文(body):空行後面的內容都是正文部分,允許為空字串。一旦正文存在,則header中的content-length實行用來表示body的長度。

http響應

響應行:版本號+空格+狀態碼+空格+狀態碼解釋

響應報頭(header):請求的屬性,冒號分割的鍵值對,每組屬性之間使用\n分割;遇到空行表示header部分結束

響應正文(body):空行後面的內容都是body,允許為空字串,如果body存在則在header中會有乙個content-length屬性來標識body的長度;如果伺服器返回了乙個html頁面,那麼頁面內容就是在body中。

http的狀態碼:http狀態碼查詢大全/類別

原因短語

1xxinformational(資訊性狀態碼)

接受的請求正在處理

2xxsuccess(成功狀態碼)

請求正常處理完畢

3xxredirection(重定向狀態碼)

需要進行附加操作以完成請求

4xxclient error(客戶端錯誤狀態碼)

伺服器無法處理請求

5xxserver error(伺服器錯誤狀態碼)

伺服器處理請求出錯

常見的狀態碼:200(ok),404(not found)403(forbidden),302(redirect重定向),504(bad gateway)。

http的header常見屬性:

1、content-type:資料型別(text/html等)

2:、content-length:body的長度

3、host:客戶端告知伺服器,所請求的資源是在那個主機的那個埠上

4:、user-agent:宣告使用者的作業系統和瀏覽器版本資訊

5、referer:當前頁面是從那個頁面跳轉過來的

6、location:搭配3xx狀態碼使用,告訴客戶端接下來要去**訪問

7、connection屬性:該屬性有兩種取值(close和keep-alive),keep-alive也就是長鏈結,所謂的長連線就是一次鏈結好了就長時間保持不斷開,要知道http是基於tcp實現的,而tcp獲得乙個鏈結就要經過3次握手,而斷開更是要經過4次揮手,如果我們獲得乙個鏈結完成了一件事情以後就斷開鏈結想要再完成別的事情時就需要再次獲得鏈結,試想如果需要完成的事情有很多很多,那麼就會有很多的時間花費在鏈結的連線和斷開上,這樣的話效能就會大大的降低。因此使用長鏈結在很多情況下能夠重用連線,減少資源消耗,縮短響應時間,從而提高效能。

8、cokie:儲存在使用者瀏覽器端的乙個本地檔案,用來儲存使用者資訊從而標識乙個使用者,例如儲存使用者的賬號和密碼,會話id等資訊。瀏覽器接收了cookie以後,這個cookie和對遠端web伺服器的連續請求將一起被瀏覽器傳送給伺服器。

網路基礎 應用層HTTP協議

目錄 應用層 tcp ip協議中的應用層 http協議 http協議 url 統一資源定位符 urlencode urldecode http協議格式 概述 http 請求訊息request 響應訊息response 首行 請求 request 首行 響應 response 首行 頭部 正文 實現乙...

應用層(HTTP協議)

應用層 負責應用程式之間的溝通 結構化傳輸協議 方便資料式的組織與解析 1.作用 傳輸檔案,網頁 採用tcp協議 tcp協議詳解 2.url 統一資源定位符 相對路徑是根目錄下的相對路徑 3.urlencode 編碼 和urldecode 解碼 乙個字元8位,前4位 編成1位,後4位 編成1位,再加...

應用層 HTTP協議

應用層 應用層和應用程式直接相關,這是和程式設計師打交道最多的地方。自定製協議 不重要 1 約定好客戶端請求 request 包含什麼資訊,伺服器響應 response 包含什麼資訊 2 約定好資料按照什麼格式來組織,本質上網際網路傳輸的都是 二進位制 字串 序列化 反序列化 已有協議 重要 htt...