HTTP協議簡介

2021-09-01 12:35:22 字數 4703 閱讀 9985

簡單來講通常我們上網輸入**之後,實質是瀏覽器會自動為我們封裝乙個http請求報文傳送給伺服器,然後伺服器響應,瀏覽器再解析展示給我們。

c/s模式:client/server 客戶端加服務端 單機遊戲不需要聯網,沒有服務端

http協議,中文名稱為超文字傳輸協議(hypertext【'haɪpɚ』超】 transfer protocol ['protə』kɔl]),http協議位於tcp/ip協議族中第七層,即應用層。主要作用是規定網路上兩台需要通訊的計算機(即伺服器和客戶端)的通訊格式,http協議預設使用80埠

(1)應用層:決定向使用者提**用服務時通訊的活動

(2)傳輸層:提供處於網路連線中兩台計算機(即伺服器和客戶端)數 據傳輸,著名的tcp/ udp協議都在這一層

(3)網路層:處理流動的網路資料報,規定資料報經什麼路徑從出發點 到達目的地

(4)鏈路層:處理網路連線相關硬體工作

當乙個http請求被發起時,應用層把資料交給傳輸層,傳輸層收到資料後將資料分割打上標記序號和埠號後將資料交給網路層,網路層增加通訊目的地的mac位址後發給鏈路層,鏈路層將其傳送出去;同理,服務端接收到資料後,逐層向上傳遞,解除每一層的部首資訊,將報文拼接成原始的樣子後進行處理

在tcp/ip協議族中,有3個協議與http有非常密切的關係:

(1)ip協議,位於網路層,負責資料報的投遞。主要依靠ip、mac以及arp協議;

(2)tcp協議,提供可靠的位元組流服務,主要用於分割資料,並確保資料投遞到達目的地。該協議有著名的『三次握手』策略

(3)dns服務,位於應用層,提供網域名稱到ip位址的解析服務(mac位址需要靠ip位址進行反查得到)

http協議的特點

(1)簡單快速:客戶向伺服器請求服務時,只需傳輸方法和路徑。請求方法常用的有get head post

(2)靈活:http允許傳輸任意型別的資料物件

(3)無連線:無連線的含義是限制每次連線只處理乙個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連線。採用這種方式可以節省傳輸時間

(4)無狀態:http協議是無狀態協議。無狀態是指協議對於事物處理沒有記憶能力。再次處理事物需要重新傳輸。(cookie session解決)

首先明確以下三點基礎知識:

(1)兩台計算機在使用http協議進行通訊時,一端必須為伺服器(server),另一端必須為客戶端(client);

(2)http協議規定請求(request)由客戶端發起,伺服器負責響應(response)並返回資料

(3)http協議是無狀態協議,需由cookie/session技術實現狀態保持

示例請求:

get /http/1.1 (get是請求方法,http/1.1協議及版本號)

host:www.baidu.com(請求的伺服器主機位址),接下來是

請求首部字段

請求引數(即請求主體)

示例響應:

http/1.1 200 ok (協議版本 狀態碼 狀態碼原因短語)

響應首部字段

一行空格(用cr+lf表示換行)

響應主體

(1)在http/1.1當中,提供了若干種不同的方法對應不同的需求,下面簡 要介紹一下(重點需要了解get和post方法,其他比較少用):

get方法:獲取資源。請求引數附在位址列後面,可見的;

post方法:傳輸實體主體。一般用於提交表單等操作,且請求的表單內容在位址列是不可見的(適合請求傳送大的檔案和二進位制檔案)

(2)get請求和post請求的區別

a.區別在於乙個修改資源和獲取資源

b.get可以用於儲存收藏連線位址

c.post請求可以把請求的內容放在報文裡面

(3)說get方法沒post方法安全,說法是錯誤,因為兩種方法都是將請求引數放在報文裡面,要獲取你的請求引數都可以在報文裡面找到,因此get方法也不必post方法安全。基於get方法會將請求引數附在位址列後面,對於填寫乙個表單有時會填寫很多資訊,提交時全顯示在url位址列會不太好,這時採用post比較好,直接存放在報文裡面,對於一些大的檔案也同理採用post好一點,還有二進位制檔案傳送也通常用post方法。

(1)客戶端第一次請求:伺服器生成cookie記住該客戶端,生成後將cookie在響應當中返回給客戶端,客戶端自動儲存

(2)第二次請求:客戶端在請求上主動加上cookie,伺服器根據該cookie可判斷客戶端身份,達到狀態保持的效果

用於http協議互動的資訊被稱為http報文。客戶端的http報文叫做請求報文,伺服器的http叫做響應報文。http報文是有多行資料構成的字串文字,大致可分為:報文部首(必有的)、報文主體(不一定非要有)

(1)http報文主體用於傳輸請求或者響應的實體主體。

(2)狀態碼,http狀態碼的類別如下:

1xx 資訊狀態碼(information) 接收到的請求正在處理

2xx 成功狀態碼(success) 請求正常處理完畢

3xx 重定向狀態碼(redirection) 需要進行附加的操作完成請求

4xx 客戶端錯誤狀態碼(client error) 伺服器無法處理請求

5xx 伺服器錯誤狀態碼(server error) 伺服器處理請求出錯

(1)http報文部

乙個完整的http報文應該有以下結構:

a.(http)報文部首

b.空行(cr+lf)

c.(http)報文主體

(2)http首部字段

http首部欄位是構成http報文的要素之一

首部欄位的結構如下:

首部欄位名稱:字段值

//example

content-type/html

keep-alive:timeout=15,max=100

a.通用首部字段,請求和響應報文都會使用的部首

b.請求首部字段,客戶端使用的首部,補充請求的附加資訊

c.響應首部字段,伺服器使用的首部,補充響應的附加資訊

d.實體首部字段,針對報文實體使用的首部,補充資源內容更新等於 實體有關資訊

(3)cookie服務的首部字段

首部欄位名:set-cookie 說明:開始狀態管理所使用的cookie信 息 首部型別:響應首部字段

cookie 伺服器收到的cookie資訊,請求首部字段

其中需要注意的乙個屬性是expires,它指定了瀏覽器可傳送cookie的有效期。過了有效期,則無法狀態保持,需要重新登陸傳輸

(4)session

cookie特點就是存在客戶端中,而session則是存在於伺服器中

(5)csrf攻擊

csrf是什麼?(cross site request forgery,跨站域請求偽造)是一種網路的攻擊方式

csrf攻擊理解:攻擊者盜用了你的身份,以你的名義傳送惡意請求。

攻擊者要完成csrf攻擊,受害則必須依次完成兩個步驟:

登陸受信任**a,並在本地生成cookie;在不登出a的情況下,訪問危險**b。只要這兩個步驟其中乙個不發生就不會受到csrf攻擊;因此要防範csrf攻擊可以在登陸授信**後登出登陸(注意關閉瀏覽器不等於結束了乙個回會話或者登出了登陸)。或者不訪問其他危險**

post方法:傳輸實體主體

post型別的csrf防護:在表單中加入token來防護

安全套接字(secure [sə』kjʊr] socket ['sɑkɪt] layer,即ssl)協議是web瀏覽器與web伺服器之間安全交換資訊的協議

ssl協議的三個特性:

(1)保密:在握手協議中定義了會話秘鑰後,所有的訊息都被加密;

(2)鑑別:可選的客戶端認證,和強制的伺服器端認證;

(3)完整性:傳送的訊息包括訊息完整性檢查(使用mac)

https基於ssl的http協議

https(全稱:hyper text transfer protocol over secure socket layer)是以安全為目標的http通道,簡單講是http的安全版;即http下加入ssl層

簡單來說,https協議是由ssl+http協議構建的可進行加密傳輸、身份認證的網路協議,要比http協議安全。

https和http的區別主要如下:

a.https協議需要到ca申請證書,一般免費證書較少,因而需要一定費用。

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

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

d.http的連線很簡單,是無狀態的;https協議是由ssl+http協議構建的可進行加密傳輸、身份認證的網路協議,比http協議安全。 https互動過程: 客戶端請求建立ssl連線,並將自己支援的一套加密規則傳送給**。 **從中選出一組加密演算法與hash演算法,並將自己的身份資訊以證書的形式發回給瀏覽器。證書裡面包含了**位址,加密公鑰,以及證書的頒發機構等資訊 獲得**證書之後瀏覽器要做以下工作:

e.驗證證書的合法性

f.如果證書受信任,瀏覽器會生成一串隨機數的密碼,並用證書中提供的公鑰加密。

g.使用約定好的hash計算握手訊息,

h.使用生成的隨機數對訊息進行加密,最後將之前生成的所有資訊傳送給**。 **接收瀏覽器發來的資料之後要做以下的操作:

i.使用自己的私鑰將資訊解密取出密碼

j.使用密碼解密瀏覽器發來的握手訊息,並驗證hash是否與瀏覽器發來的一致。

k.使用密碼加密一段握手訊息,傳送給瀏覽器 瀏覽器解密並計算握手訊息的hash,如果與服務端發來的hash一致,此時握手結束。 使用隨機密碼和對稱加密演算法對傳輸的資料加密,傳輸。

HTTP協議簡介

現在web發展如火如荼,web開發人員也越來越多,但有幾個對支援web的http協議有了解呢?底層協議基礎不紮實,高層應用是很難做到極致的。帶著好奇心,開始學習吧!http hypertext transfer protocol 即超文字傳輸協議,是瀏覽器和伺服器之間互相通訊的一種約定,通過網際網路...

HTTP協議 簡介

全稱為超文字傳輸協議 hypertext transfer protocol 設計之初是為了將超文字標記語言 html 文件從web伺服器傳送到客戶端的瀏覽器。現在http的作用已不侷限於html的傳輸。url url示例 解釋 scheme 指定低層使用的協議 例如 http,https,ftp ...

http協議簡介

摘要 本文 go web程式設計 一書,覺得說的比較好,特轉過來收藏。我們平時瀏覽網頁的時候,會開啟瀏覽器,輸入 後按下回車鍵,然後就會顯示出你想要瀏覽的內容。在這個看似簡單的使用者行為背後,到底隱藏了些什麼呢?對於普通的上網過程,系統其實是這樣做的 瀏覽器本身是乙個客戶端,當你輸入url的時候,首...