tft每日頭條

 > 生活

 > 熟悉http協議基本原理

熟悉http協議基本原理

生活 更新时间:2024-08-03 22:10:03
一、http協議的定義

HTTP是超文本傳輸協議的縮寫。是互聯網上使用最為廣泛的一種網絡協議,适用于www服務器傳輸超文本到本地浏覽器傳輸協議。它可以使浏覽器的傳輸更加高效,使網絡傳輸減少。他還能使計算機能快速準确的傳輸超文本文檔。HTTP是客戶端到服務端請求與應答的标準,http協議規定了超文本傳輸所要遵守的規則。客戶端是終端用戶(浏覽器),服務端是網站,當服務端發起一個指定端口的HTTP請求。

熟悉http協議基本原理(網絡協議HTTP詳解)1

二、http協議特性無狀态:

1、HTTP協議自身不對請求和響應之間的通信狀态進行保存。(即多個請求之間服務器并不知道是否是同一個客戶端的請求。)

無狀态存在的問題:

1、由于請求之間無狀态保持,服務器就無法進行身份識别,比如大部分網站都要求登錄後才能進行下一步操作,此時服務器就無法知道請求是哪一個客戶端發起的。

熟悉http協議基本原理(網絡協議HTTP詳解)2

解決無狀态問題的方法:1、cookie技術

cookie一種用來管理HTTP協議請求狀态技術。

Cookie 技術通過在請求和響應報文中寫入相應的Cookie 信息來控制客戶端的狀态。

1、當客戶端發起請求時,服務器端發送的響應報文内添加一個 Set-Cookie 的部字段信息, 通知客戶端保存Cookie。

2、當下次客戶端再次向服務器發送請求時, 客戶端的浏覽器會自動在請求報文中加入 Cookie字段和值後發送給服務器。

3、服務器端收到客戶端發送過來的 Cookie 後, 會将cookie的值與之前保存的cookie進行對比, 通過對比就可以知道是否值之前已經請求過客戶端, 也可以得到之前的狀态信息了。

如下是第一個是登錄請求

熟悉http協議基本原理(網絡協議HTTP詳解)3

熟悉http協議基本原理(網絡協議HTTP詳解)4

第二個是登錄後發起請求:

熟悉http協議基本原理(網絡協議HTTP詳解)5

熟悉http協議基本原理(網絡協議HTTP詳解)6

2、session

session 是一種基于cookie技術的讓服務器能識别某個用戶的「機制」,然也可以1特指服務器存儲的 session數據。

使用 Cookie 來 管理 Session,以彌補 HTTP 協議中不存在的狀态管理功能。

可以這麼認為session是對cookie的一種補充。

1.用戶在浏覽器輸入用戶名密碼提交給服務端,服務端驗證通過後會創建一個session對象用于記錄用戶的相關信息。

2.服務器創建session後,會生成的session信息 通過setCookie 字段添加到http響應頭部中返回給客戶端。

3、浏覽器處理請求的響應信息發現響應頭部有 set-cookie字段,就把這個cookie 保存浏覽器指定域名下

4、當浏覽器再次對服務器發起請求時,浏覽器會自動發送含有session的cookie,服務端接到請求後會通過驗證session是否已經存在,如果有,就證明這個用戶是登錄狀态。

熟悉http協議基本原理(網絡協議HTTP詳解)7

熟悉http協議基本原理(網絡協議HTTP詳解)8

三、Http協議狀态碼

最常見的http狀态碼:

200 : 請求已經被成功處理

302:302表示重定向,服務返回302時,返回的頭部信息中會包含一個 Location 字段,内容是重定向到的url地址,此時浏覽器會自動訪問該地址。

404:請求的資源不存在

500:服務器錯誤。無法響應

熟悉http協議基本原理(網絡協議HTTP詳解)9

四、http報文的組成HTTP請求報文:

http請求報文分為三部分:請求行(開始行)、請求首部(首部行)、請求體(實體主體)

熟悉http協議基本原理(網絡協議HTTP詳解)10

熟悉http協議基本原理(網絡協議HTTP詳解)11

請求行(開始行):請求的第一行是“方法、URL、協議/版本”

請求頭(請求首部):請求頭包含許多有關的客戶端環境和請求正文的有用信息。例如,請求頭可以聲明浏覽器所用的語言,請求正文的長度等

常見的請求頭參數:

Content-Type

是返回消息中非常重要的内容,表示後面的文檔屬于什麼MIME類型。Content-Type: [type]/[subtype]; parameter。例如最常見的就是text/html,它的意思是說返回的内容是文本類型,這個文本又是HTML格式的。原則上浏覽器會根據Content-Type來決定如何顯示返回的消息體内容

Host

指定請求資源的Intenet主機和端口号,必須表示請求url的原始服務器或網關的位置。HTTP/1.1請求必須包含主機頭域,否則系統會以400狀态碼返回

Accept

浏覽器可接受的MIME類型

Accept-Charset

浏覽器可接受的字符集

Accept-Encoding

浏覽器能夠進行解碼的數據編碼方式,比如gzip。Servlet能夠向支持gzip的浏覽器返回經gzip編碼的HTML頁面。許多情形下這可以減少5到10倍的下載時間

Accept-Language

浏覽器所希望的語言種類,當服務器能夠提供一種以上的語言版本時要用到

Authorization

授權信息,通常出現在對服務器發送的WWW-Authenticate頭的應答中

Connection

表示是否需要持久連接。如果Servlet看到這裡的值為“Keep- Alive”,或者看到請求使用的是HTTP1.1(HTTP 1.1默認進行持久連接),它就可以利用持久連接的優點,當頁面包含多個元素時(例如Applet,圖片),顯著地減少下載所需要的時間。要實現這一點,Servlet需要在應答中發送一個Content-Length頭,最簡單的實現方法是:先把内容寫入 ByteArrayOutputStream,然後在正式寫出内容之前計算它的大小

Content-Length

表示請求消息正文的長度

Cookie

這是最重要的請求頭信息之一

If-Modified-Since

隻有當所請求的内容在指定的日期之後又經過修改才返回它,否則返回304“Not Modified”應答

Referer

包含一個URL,用戶從該URL代表的頁面出發訪問當前請求的頁面

User-Agent

浏覽器類型,如果Servlet返回的内容與浏覽器類型有關則該值非常有用請求正文(請求體):

請求頭和請求正文之間用空行分隔,表示請求頭已經結束,接下來的是請求正文。請求正文中可以包含客戶提交的查詢字符串信息:

例如:elephone=xxxxx&userType=1&

HPPT響應報文:

http請求報文也分為三部分:狀态行(開始行)、響應首部(首部行)、響應體(實體主體)

熟悉http協議基本原理(網絡協議HTTP詳解)12

熟悉http協議基本原理(網絡協議HTTP詳解)13

狀态行:由協議版本、數字形式的狀态代碼、及相應的狀态描述,各元素之間以空格分隔。

響應頭:響應頭包含許多有關的服務端環境和服務端的信息

常見的響應頭

Server:

Server響應報頭域包含了服務器用來處理請求的軟件信息。它和User-Agent請求報頭域是相對應的,前者發送服務器端軟件的信息,後者發送客戶 端軟件(浏覽器)和操作系統的信息。下面是Server響應報頭域的一個例子:Server: Apache-Coyote/1.1

WWW-Authenticate:

WWW-Authenticate響應報頭域必須被包含在401(未授權的)響應消息中,這個報頭域和前面講到的Authorization請求報頭域是 相關的,當客戶端收到401響應消息,就要決定是否請求服務器對其進行驗證。如果要求服務器對其進行驗證,就可以發送一個包含了 Authorization報頭域的請求,下面是WWW-Authenticate響應報頭域的一個例子:WWW-Authenticate: Basic realm="Basic Auth Test!"

從這個響應報頭域,可以知道服務器端對我們所請求的資源采用的是基本驗證機制。

Content-Encoding:

Content-Encoding實體報頭域被使用作媒體類型的修飾符,它的值指示了已經被應用到實體正文的附加内容編碼,因而要獲得Content- Type報頭域中所引用的媒體類型,必須采用相應的解碼機制。Content-Encoding主要用語記錄文檔的壓縮方法,下面是它的一個例子: Content-Encoding: gzip。如果一個實體正文采用了編碼方式存儲,在使用之前就必須進行解碼。

Content-Language:

Content-Language實體報頭域描述了資源所用的自然語言。Content-Language允許用戶遵照自身的首選語言來識别和區分實體。 如果這個實體内容僅僅打算提供給丹麥的閱讀者,那麼可以按照如下的方式設置這個實體報頭域:Content-Language: da。

如果沒有指定Content-Language報頭域,那麼實體内容将提供給所以語言的閱讀者。

Content-Length:

Content-Length實體報頭域用于指明正文的長度,以字節方式存儲的十進制數字來表示,也就是一個數字字符占一個字節,用其對應的ASCII碼存儲傳輸。

要注意的是:這個長度僅僅是表示實體正文的長度,沒有包括實體報頭的長度。

Content-Type :

Content-Type實體報頭域用語指明發送給接收者的實體正文的媒體類型。例如:

Content-Type: text/html;charset=ISO-8859-1

Content-Type: text/html;charset=GB2312

Last-Modified :

Last-Modified實體報頭域用于指示資源最後的修改日期及時間。

五、http協議的請求方式
  • GET: 用于請求訪問已經被URI(統一資源标識符)識别的資源,可以通過URL傳參給服務器
  • POST:用于傳輸信息給服務器,主要功能與GET方法類似,但一般推薦使用POST方式。
  • PUT: 傳輸文件,報文主體中包含文件内容,保存到對應URI位置。
  • HEAD: 獲得報文首部,與GET方法類似,隻是不返回報文主體,一般用于驗證URI是否有效。
  • DELETE:删除文件,與PUT方法相反,删除對應URI位置的文件。
  • OPTIONS:查詢相應URI支持的HTTP方法。
最常用的get與post請求的區别:

1、get請求通常是向服務器獲取資源、post請求通常是向服務器發送數據

2、get傳輸數據是通過URL請求,以field(字段)= value的形式,置于URL後,并用"?"連接,多個請求數據間用"&"連接,傳輸的數據也是有限的(1M),如http://127.0.0.1/ogin.do?name=admin&password=admin

3、get請求是将請求參數放在請求的url中,相對來說不安全

4、post是通過表單的方式傳輸數據的,傳輸數據沒有限制、比get請求安全

六、HTTP與HTTPS

HTTP:是互聯網上應用最為廣泛的一種網絡協議,是一個客戶端和服務器端請求和應答的标準(TCP),用于從WWW服務器傳輸超文本到本地浏覽器的傳輸協議,它可以使浏覽器更加高效,使網絡傳輸減少。

  HTTPS:是以安全為目标的HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細内容就需要SSL。

  HTTPS協議的主要作用可以分為兩種:一種是建立一個信息安全通道,來保證數據傳輸的安全;另一種就是确認網站的真實性。

HTTP協議傳輸的數據都是明文的,使用HTTP協議傳輸隐私信息是不安全的,為了保證這些隐私數據能加密傳輸,于是設計了SSL(Secure Sockets Layer)協議用于對HTTP協議傳輸的數據進行加密,從而就誕生了HTTPS。簡單來說,HTTPS協議是由SSL HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,要比http協議安全。

  HTTPS和HTTP的區别主要如下:

  1、https協議需要到ca申請網站證書。

  2、http是超文本傳輸協議,信息是明文傳輸,https則是采用ssl加密傳輸協議。

  3、http和https采用不同的連接方式,用的端口也不一樣,http的默認端口是80,https的默認端口是443

https建立通信過程如下:

  (1)客戶使用https的URL訪問服務器,請求與服務器建立SSL連接。

  (2)服務器收到客戶端請求後,會将網站的證書信息(證書中包含公鑰)返回給客戶端。

  (3)客戶端的浏覽器與服務器進行協商SSL連接的安全等級,也就是信息加密的等級。

  (4)客戶端的浏覽器根據雙方同意的安全等級,建立會話密鑰,然後利用網站的公鑰将會話密鑰加密,并傳送給網站。

  (5)服務器利用自己的私鑰解密出會話密鑰。

  (6)服務器利用會話密鑰加密與客戶端之間的通信。

熟悉http協議基本原理(網絡協議HTTP詳解)14

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved