網路協議分析3 HTTP

2021-09-11 05:29:48 字數 4248 閱讀 5905

在瀏覽器輸入url,回車以後發生了什麼?

第一,找到伺服器

第二,建立tcp連線

第三,建立http連線

第四,斷開tcp連線

客戶端和伺服器端的通訊遵守了http協議,自然需要封裝http報文:

http請求報文:

請求行:方法(get/post/…) 、url、版本(1.1/…)

http協議的請求方法有:

get、post、head、put、delete、options、trace、connect

請求頭:如下

常見的請求頭欄位

解釋accept

可接受的響應內容型別(content-types)

origin

發起乙個針對跨域資源共享的請求

host

客戶端的主機、埠號

user-agent

客戶端程式

connection

tcp連線持久或非持久

accept

客戶端能接受的**格式

accept-encoding

可接受的響應內容的編碼方式

accept-language

客戶端能處理的編碼方案

cookie

把該cookie發給伺服器

cache-control

快取機制(是否可快取這個物件及快取有效時間)

content-length

請求體的長度

content-type

請求體的mime型別

date

傳送該訊息的日期和時間

user-agent

瀏覽器的身份標識字串

http響應報文:

響應行:版本(1.1/…)、狀態(200/…)、短語(ok/…)

http響應狀態碼:

1xx資訊提示。表示請求已被伺服器接受,但需要繼續處理,範圍為100~101

2xx請求成功。範圍為200~206

3xx客戶端重定向。重定向狀態碼用於告訴客戶端瀏覽器,它們訪問的資源已被移動,並告訴客戶端新的資源位置。客戶端收到重定向會重新對新資源發起請求。範圍為300~305

4xx客戶端資訊錯誤。客戶端可能傳送了伺服器無法處理的東西,比如請求的格式錯誤,或者請求了乙個不存在的資源。範圍為400~415

5xx伺服器出錯。客戶端傳送了有效的請求,但是伺服器自身出現錯誤,比如web程式執行出錯。範圍是500~505

常見的狀態碼:

200客戶端請求成功

204:請求成功,到找不到資源

206:只請求一部分資源,請求成功

301:永久重定向

302:臨時重定向

303:重定向,並要求改用get

304伺服器上資源沒有改動,告訴你不必再請求

307:同302,但禁止post改為get

400:請求語法錯誤,伺服器無法理解

404請求資源不存在

403:伺服器拒絕提供服務

500伺服器內部錯誤

503:伺服器當前不能處理客戶端請求,可能需要一段時間後才能恢復正常

響應頭:如下

常見的響應頭

解釋access-control-allow-origin

指定哪些**可以跨域源資源共享

allow

對於特定資源的有效動作(get, head…)

server

content-type

請求體的mime型別

content-language

語言content-length

文件長度

content-encoding

編碼型別

set-cookie

設定http cookie

cache-control

快取機制(是否可快取這個物件及快取有效時間)

date

此條訊息被傳送時的日期和時間

age響應物件在**快取中存在的時間

refresh

用於重定向,或者當乙個新的資源被建立時。缺省會在5秒後重新整理重定向

status

當前http連線的響應狀態

connection

針對該連線所預期的選項

**:原封不動地將請求/響應進行**

https協議和http協議的區別:

1.http是超文字傳輸協議,資訊是明文傳輸,https 則是具有安全性的 ssl加密傳輸協議。

2.http的連線很簡單,是無狀態的;而https由ssl+http協議構建的可進行加密傳輸、身份認證的網路協議, 要比http協議安全

2.http和https使用的是完全不同的連線方式用的埠也不一樣,前者是80,後者是443

3.在 osi 網路模型中,http 工作於應用層,而https 工作在傳輸層

https的工作原理:

https在傳輸資料之前需要客戶端(瀏覽器)與服務端(**)之間進行一次握手,在握手過程中將確立雙方加密傳輸資料的密碼資訊。tls/ssl中使用了非對稱加密,對稱加密以及hash演算法

1.瀏覽器將自己支援的一套加密規則傳送給**。

2.**從中選出一組加密演算法與hash演算法,並將自己的身份資訊以證書的形式發回給瀏覽器。證書裡面包含了**位址,加密公鑰,以及證書的頒發機構等資訊。

3.瀏覽器獲得**證書之後瀏覽器要做以下工作:

a) 驗證證書的合法性

b) 如果證書受信任,或者是使用者接受了不受信的證書,瀏覽器會生成一串隨機數的密碼,並用證書中提供的公鑰加密。

c) 使用約定好的hash演算法計算握手訊息,並使用生成的隨機數對訊息進行加密,最後將之前生成的所有資訊傳送給**。

4.**接收瀏覽器發來的資料之後要做以下的操作:

a) 使用自己的私鑰將資訊解密取出密碼,使用密碼解密瀏覽器發來的握手訊息,並驗證hash是否與瀏覽器發來的一致。

b) 使用密碼加密一段握手訊息,傳送給瀏覽器。

5.瀏覽器解密並計算握手訊息的hash,如果與服務端發來的hash一致,此時握手過程結束,之後所有的通訊資料將由之前瀏覽器生成的隨機密碼並利用對稱加密演算法進行加密。

cookie技術的組成:

(1)在web伺服器端有乙個cookie資料庫

(2)在http響應報文中有乙個set-cookie欄位

(3)在http請求報文中有乙個cookie欄位

(4)在客戶端中儲存乙個cookie檔案

http使用 cookie ,允許web站點跟蹤使用者。

舉栗子:,

①客戶端第一次訪問乙個**,該**將產生乙個唯一標識碼,儲存在cookie資料庫中;

②後台伺服器用乙個包含set-cookie的http響應報文給客戶端瀏覽器;

③客戶端瀏覽器在自己的cookie檔案中新增一行;

④客戶端繼續瀏覽**時,每請求乙個web頁面,都會從cookie檔案中獲取**的識別碼,放到http請求報文頭部的cookie欄位裡,帶著去訪問頁面;

⑤後台伺服器可根據該識別碼跟蹤客戶在該站點的活動。

檢視本機中的cookie檔案:

c:\documents and settings\ administrator \ local settings \temporary internet files

設定本機瀏覽器接受cookie的條件:

瀏覽器/工具/internet選項/隱私/

uri和url

uri:統一資源識別符號 (用字串標識網路中某一資源)

url:統一資源定位符(資源的地點)

url是 uri 的子集。

HTTP協議3 HTTP請求方法

根據http標準,http請求可以使用多種請求方法。http1.0定義了三種請求方法 get,post 和 head方法。http1.1新增了五種請求方法 options,put,delete,trace 和 connect 方法。序號 方法描述 1get 請求指定的頁面資訊,並返回實體主體。2he...

HTTP協議基礎 3 HTTP訊息

http基於客戶端 伺服器體系結構模型和無狀態請求 響應協議,該協議通過可靠的tcp ip連線交換訊息來執行。本篇就來學習http訊息,可以說請求是乙個訊息,響應也是這個訊息。通過學習http訊息,接下來學習http請求和響應會更順利一些。http 客戶端 是為了傳送乙個或多個http請求訊息而與伺...

Http協議 3 HTTP實體和編碼

http實體實現目標 可以被正確識別 通過content type和content launage 可以被正確解包 通過content lenght首部和content encoding首部 是最新的 通過實體驗證碼和快取過期控制 符合使用者需要 基於accept系列的內容協商首部 在網路上可以快速...