自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

HTTP知識(shí)點(diǎn),考試中不可路過(guò)的一關(guān)

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
HTTP協(xié)議是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫(xiě),是用于從萬(wàn)維網(wǎng)(WWW:World Wide Web )服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議

詳細(xì)介紹http

HTTP協(xié)議是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫(xiě),是用于從萬(wàn)維網(wǎng)(WWW:World Wide Web )服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。在 OSI 七層模型中,HTTP協(xié)議位于最頂層的應(yīng)用層中。通過(guò)瀏覽器訪問(wèn)網(wǎng)頁(yè)就直接使用了 HTTP 協(xié)議。使用 HTTP 協(xié)議時(shí),客戶端首先與服務(wù)端的 80 端口建立一個(gè) TCP 連接,然后在這個(gè)連接的基礎(chǔ)上進(jìn)行請(qǐng)求和應(yīng)答,以及數(shù)據(jù)的交換。

[[283611]]

HTTP 有兩個(gè)常用版本,分別是 HTTP1.0和 HTTP1.1。主要區(qū)別在于 HTTP1.0 中每次請(qǐng)求和應(yīng)答都會(huì)使用一個(gè)新的 TCP 連接,而從 HTTP1.1 開(kāi)始,運(yùn)行在一個(gè) TCP 連接上發(fā)送多個(gè)命令和應(yīng)答。因此大幅度減少了 TCP 連接的建立和斷開(kāi),提高了效率。

特點(diǎn)

  • 簡(jiǎn)單快速:客戶向服務(wù)器請(qǐng)求服務(wù)時(shí),只需傳送請(qǐng)求方法和路徑。請(qǐng)求方法常用的有GET、HEAD、POST。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同。由于HTTP協(xié)議簡(jiǎn)單,使得HTTP服務(wù)器的程序規(guī)模小,因而通信速度很快。
  • 靈活:HTTP允許傳輸任意類型的數(shù)據(jù)對(duì)象。正在傳輸?shù)念愋陀蒀ontent-Type加以標(biāo)記。
  • 無(wú)連接:無(wú)連接的含義是限制每次連接只處理一個(gè)請(qǐng)求。服務(wù)器處理完客戶的請(qǐng)求,并收到客戶的應(yīng)答后,即斷開(kāi)連接。采用這種方式可以節(jié)省傳輸時(shí)間。
  • 無(wú)狀態(tài):HTTP協(xié)議是無(wú)狀態(tài)協(xié)議。無(wú)狀態(tài)是指協(xié)議對(duì)于事務(wù)處理沒(méi)有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。另一方面,在服務(wù)器不需要先前信息時(shí)它的應(yīng)答就較快。
  • 支持B/S及C/S模式。

請(qǐng)求消息Request

  • 請(qǐng)求行,用來(lái)說(shuō)明請(qǐng)求類型,要訪問(wèn)的資源以及所使用的HTTP版本.
  • 請(qǐng)求頭部,緊接著請(qǐng)求行(即第一行)之后的部分,用來(lái)說(shuō)明服務(wù)器要使用的附加信息從第二行起為請(qǐng)求頭部,HOST將指出請(qǐng)求的目的地.User-Agent,服務(wù)器端和客戶端腳本都能訪問(wèn)它,它是瀏覽器類型檢測(cè)邏輯的重要基礎(chǔ).該信息由你的瀏覽器來(lái)定義,并且在每個(gè)請(qǐng)求中自動(dòng)發(fā)送等等
  • 空行,請(qǐng)求頭部后面的空行是必須的
  • 請(qǐng)求數(shù)據(jù)也叫主體,可以添加任意的其他數(shù)據(jù)。

響應(yīng)消息Response

  • 狀態(tài)行,由HTTP協(xié)議版本號(hào), 狀態(tài)碼, 狀態(tài)消息 三部分組成。
  • 消息報(bào)頭,用來(lái)說(shuō)明客戶端要使用的一些附加信息
  • 空行,消息報(bào)頭后面的空行是必須的
  • 響應(yīng)正文,服務(wù)器返回給客戶端的文本信息。

狀態(tài)碼

  • 200 OK //客戶端請(qǐng)求成功
  • 301 Moved Permanently //永久重定向,使用域名跳轉(zhuǎn)
  • 302 Found // 臨時(shí)重定向,未登陸的用戶訪問(wèn)用戶中心重定向到登錄頁(yè)面
  • 400 Bad Request //客戶端請(qǐng)求有語(yǔ)法錯(cuò)誤,不能被服務(wù)器所理解
  • 401 Unauthorized //請(qǐng)求未經(jīng)授權(quán),這個(gè)狀態(tài)代碼必須和WWW-Authenticate報(bào)頭域一起使用
  • 403 Forbidden //服務(wù)器收到請(qǐng)求,但是拒絕提供服務(wù)
  • 404 Not Found //請(qǐng)求資源不存在,eg:輸入了錯(cuò)誤的URL
  • 500 Internal Server Error //服務(wù)器發(fā)生不可預(yù)期的錯(cuò)誤
  • 503 Server Unavailable //服務(wù)器當(dāng)前不能處理客戶端的請(qǐng)求,一段時(shí)間后可能恢復(fù)正常

http的方法

  • get:客戶端向服務(wù)端發(fā)起請(qǐng)求,獲得資源。請(qǐng)求獲得URL處所在的資源。
  • post:向服務(wù)端提交新的請(qǐng)求字段。請(qǐng)求URL的資源后添加新的數(shù)據(jù)。
  • head:請(qǐng)求獲取URL資源的響應(yīng)報(bào)告,即獲得URL資源的頭部
  • patch:請(qǐng)求局部修改URL所在資源的數(shù)據(jù)項(xiàng)
  • put:請(qǐng)求修改URL所在資源的數(shù)據(jù)元素。
  • delete:請(qǐng)求刪除url資源的數(shù)據(jù)

https是如何保證數(shù)據(jù)傳輸?shù)陌踩?/strong>

https實(shí)際就是在TCP層與http層之間加入了SSL/TLS來(lái)為上層的安全保駕護(hù)航,主要用到對(duì)稱加密、非對(duì)稱加密、證書(shū),等技術(shù)進(jìn)行客戶端與服務(wù)器的數(shù)據(jù)加密傳輸,最終達(dá)到保證整個(gè)通信的安全性。點(diǎn)擊這里弄懂 https 的 9 個(gè)問(wèn)題。

SSL/TLS協(xié)議作用:

  • 認(rèn)證用戶和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶機(jī)和服務(wù)器;
  • 加密數(shù)據(jù)以防止數(shù)據(jù)中途被竊取;
  • 維護(hù)數(shù)據(jù)的完整性,確保數(shù)據(jù)在傳輸過(guò)程中不被改變。

Http協(xié)議由什么組成?

請(qǐng)求報(bào)文包括三部分:

  • 請(qǐng)求行:包含請(qǐng)求方法,URI,HTTP版本協(xié)議
  • 請(qǐng)求首部字段
  • 請(qǐng)求內(nèi)容實(shí)體

響應(yīng)報(bào)文包含三部分:

  • 狀態(tài)行:包含HTTP版本,狀態(tài)碼,狀態(tài)碼原因短語(yǔ)
  • 響應(yīng)首部字段
  • 響應(yīng)內(nèi)容實(shí)體

冪等

一個(gè)冪等操作的特點(diǎn)是其任意多次執(zhí)行所產(chǎn)生的影響均與一次執(zhí)行的影響相同。冪等函數(shù),或冪等方法,是指可以使用相同參數(shù)重復(fù)執(zhí)行,并能獲得相同結(jié)果的函數(shù)。這些函數(shù)不會(huì)影響系統(tǒng)狀態(tài),也不用擔(dān)心重復(fù)執(zhí)行會(huì)對(duì)系統(tǒng)造成改變。例如,“getUsername()和setTrue()”函數(shù)就是一個(gè)冪等函數(shù).

長(zhǎng)連接

1. 基于http協(xié)議的長(zhǎng)連接

在HTTP1.0和HTTP1.1協(xié)議中都有對(duì)長(zhǎng)連接的支持。其中HTTP1.0需要在request中增加”Connection: keep-alive“ header才能夠支持,而HTTP1.1默認(rèn)支持.

http1.0請(qǐng)求與服務(wù)端的交互過(guò)程:

  • 客戶端發(fā)出帶有包含一個(gè)header:”Connection: keep-alive“的請(qǐng)求
  • 服務(wù)端接收到這個(gè)請(qǐng)求后,根據(jù)http1.0和”Connection: keep-alive“判斷出這是一個(gè)長(zhǎng)連接,就會(huì)在response的header中也增加”Connection: keep-alive“,同是不會(huì)關(guān)閉已建立的tcp連接.
  • 客戶端收到服務(wù)端的response后,發(fā)現(xiàn)其中包含”Connection: keep-alive“,就認(rèn)為是一個(gè)長(zhǎng)連接,不關(guān)閉這個(gè)連接。并用該連接再發(fā)送request.轉(zhuǎn)到a),點(diǎn)擊這里了解 http 1.0 vs 2.0 區(qū)別。

2. 發(fā)心跳包。每隔幾秒就發(fā)一個(gè)數(shù)據(jù)包過(guò)去

Http協(xié)議中Http1.0和1.1區(qū)別?

在http1.0中,當(dāng)建立連接后,客戶端發(fā)送一個(gè)請(qǐng)求,服務(wù)器端返回一個(gè)信息后就關(guān)閉連接,當(dāng)瀏覽器下次請(qǐng)求的 時(shí)候又要建立連接,顯然這種不斷建立連接的方式,會(huì)造成很多問(wèn)題。

Http協(xié)議實(shí)現(xiàn)的原理機(jī)制:

  • 域名解析過(guò)程:
  • 三次握手過(guò)程
  • 發(fā)起Http請(qǐng)求
  • 響應(yīng)Http請(qǐng)求并得到HTML代碼
  • 瀏覽器解析HTML代碼
  • 瀏覽器對(duì)頁(yè)面進(jìn)行渲染呈現(xiàn)給用戶

Cookie是否會(huì)被覆蓋,localStorage是否會(huì)被覆蓋

Cookie是可以覆蓋的,如果重復(fù)寫(xiě)入同名的Cookie,那么將會(huì)覆蓋之前的Cookie。

如果要?jiǎng)h除某個(gè)Cookie,只需要新建一個(gè)同名的Cookie,并將maxAge設(shè)置為0,并添加到response中覆蓋原來(lái)的Cookie。注意是0而不是負(fù)數(shù)。負(fù)數(shù)代表其他的意義。

localStorage存儲(chǔ)在一個(gè)對(duì)象中,有鍵值對(duì)。

什么是localStorage,在HTML5中,新加入了一個(gè)localStorage特性,這個(gè)特性主要是用來(lái)作為本地存儲(chǔ)來(lái)使用的,解決了cookie存儲(chǔ)空間不足的問(wèn)題(cookie中每條cookie的存儲(chǔ)空間為4k),localStorage中一般瀏覽器支持的是5M大小,這個(gè)在不同的瀏覽器中l(wèi)ocalStorage會(huì)有所不同。

localStorage的優(yōu)勢(shì)

  • localStorage拓展了cookie的4K限制
  • localStorage會(huì)可以將第一次請(qǐng)求的數(shù)據(jù)直接存儲(chǔ)到本地,這個(gè)相當(dāng)于一個(gè)5M大小的針對(duì)于前端頁(yè)面的數(shù)據(jù)庫(kù),相比于cookie可以節(jié)約帶寬,但是這個(gè)卻是只有在高版本的瀏覽器中才支持的

localStorage的局限

  • 瀏覽器的大小不統(tǒng)一,并且在IE8以上的IE版本才支持localStorage這個(gè)屬性
  • 目前所有的瀏覽器中都會(huì)把localStorage的值類型限定為string類型,這個(gè)在對(duì)我們?nèi)粘1容^常見(jiàn)的JSON對(duì)象類型需要一些轉(zhuǎn)換
  • localStorage在瀏覽器的隱私模式下面是不可讀取的
  • localStorage本質(zhì)上是對(duì)字符串的讀取,如果存儲(chǔ)內(nèi)容多的話會(huì)消耗內(nèi)存空間,會(huì)導(dǎo)致頁(yè)面變卡
  • localStorage不能被爬蟲(chóng)抓取到

localStorage與sessionStorage的唯一一點(diǎn)區(qū)別就是localStorage屬于永久性存儲(chǔ),而sessionStorage屬于當(dāng)會(huì)話結(jié)束的時(shí)候,sessionStorage中的鍵值對(duì)會(huì)被清空

Cookie和Session的區(qū)別

HTTP 是一種無(wú)狀態(tài)的連接,客戶端每次讀取 web頁(yè)面時(shí),服務(wù)器都會(huì)認(rèn)為這是一次新的會(huì)話。但有時(shí)候我們又需要持久保持某些信息,比如登錄時(shí)的用戶名、密碼,用戶上一次連接時(shí)的信息等。這些信息就由 Cookie 和 Session 保存。

1. Cookie

cookie實(shí)際上是一小段文本信息。客戶端請(qǐng)求服務(wù)器,如果服務(wù)器需要記錄該用戶狀態(tài),就使用response向客戶端瀏覽器頒發(fā)一個(gè)cookie,客戶端瀏覽器會(huì)把cookie保存起來(lái),當(dāng)瀏覽器再次請(qǐng)求訪問(wèn)該網(wǎng)站時(shí),瀏覽器把請(qǐng)求的網(wǎng)站連同該cookie一同提交給服務(wù)器,服務(wù)器檢查該cookie,以此來(lái)辨認(rèn)用戶狀態(tài)。

簡(jiǎn)單來(lái)說(shuō),cookie的工作原理可總結(jié)如下:

  • client連接server
  • client生成cookie(有效期),再次訪問(wèn)時(shí)攜帶cookie
  • server根據(jù)cookie的信息識(shí)別用戶身份

2. Session

Session是服務(wù)器端使用的一種記錄客戶端狀態(tài)的機(jī)制,使用上比Cookie簡(jiǎn)單一些。同一個(gè)客戶端每次和服務(wù)端交互時(shí),不需要每次都傳回所有的 Cookie 值,而是只要傳回一個(gè) ID,這個(gè) ID 是客戶端第一次訪問(wèn)服務(wù)器的時(shí)候生成的,而且每個(gè)客戶端是唯一的。這樣每個(gè)客戶端就有了一個(gè)唯一的 ID,客戶端只要傳回這個(gè) ID 就行了,這個(gè) ID 通常是 name為 JSESIONID 的一個(gè) Cookie。Session依據(jù)這個(gè)id來(lái)識(shí)別是否為同一用戶(只認(rèn)ID不認(rèn)人)。

Cookies是一種能夠讓網(wǎng)站服務(wù)器把少量數(shù)據(jù)儲(chǔ)存到客戶端的硬盤(pán)或內(nèi)存,或是從客戶端的硬盤(pán)讀取數(shù)據(jù)的一種技術(shù)。Cookies是當(dāng)你瀏覽某網(wǎng)站時(shí),由Web服務(wù)器置于你硬盤(pán)上的一個(gè)非常小的文本文件,它可以記錄你的用戶ID、密碼、瀏覽過(guò)的網(wǎng)頁(yè)、停留的時(shí)間等信息。session: 當(dāng)用戶請(qǐng)求來(lái)自應(yīng)用程序的 Web 頁(yè)時(shí),如果該用戶還沒(méi)有會(huì)話,則 Web 服務(wù)器將自動(dòng)創(chuàng)建一個(gè) Session 對(duì)象。當(dāng)會(huì)話過(guò)期或被放棄后,服務(wù)器將終止該會(huì)話。cookie機(jī)制:采用的是在客戶端保持狀態(tài)的方案,而session機(jī)制采用的是在服務(wù)端保持狀態(tài)的方案。同時(shí)我們看到由于服務(wù)器端保持狀態(tài)的方案在客戶端也需要保存一個(gè)標(biāo)識(shí),所以session機(jī)制可能需要借助cookie機(jī)制來(lái)達(dá)到保存標(biāo)識(shí)的目的。

Session是服務(wù)器用來(lái)跟蹤用戶的一種手段,每個(gè)Session都有一個(gè)唯一標(biāo)識(shí):session ID。當(dāng)服務(wù)器創(chuàng)建了Session時(shí),給客戶端發(fā)送的響應(yīng)報(bào)文包含了Set-cookie字段,其中有一個(gè)名為sid的鍵值對(duì),這個(gè)鍵值Session ID??蛻舳耸盏胶缶桶袰ookie保存瀏覽器,并且之后發(fā)送的請(qǐng)求報(bào)表都包含SessionID。HTTP就是通過(guò)Session和Cookie這兩個(gè)發(fā)送一起合作來(lái)實(shí)現(xiàn)跟蹤用戶狀態(tài),Session用于服務(wù)端,Cookie用于客戶端:

  • cookie數(shù)據(jù)存放在客戶的瀏覽器上,session數(shù)據(jù)放在服務(wù)器上。
  • cookie不是很安全,別人可以分析存放在本地的COOKIE并進(jìn)行COOKIE欺騙??紤]到安全應(yīng)當(dāng)使用session。
  • session會(huì)在一定時(shí)間內(nèi)保存在服務(wù)器上。當(dāng)訪問(wèn)增多,會(huì)比較占用你服務(wù)器的性能 考慮到減輕服務(wù)器性能方面,應(yīng)當(dāng)使用COOKIE。
  • 單個(gè)cookie保存的數(shù)據(jù)不能超過(guò)4K,很多瀏覽器都限制一個(gè)站點(diǎn)最多保存20個(gè)cookie。

Http與Https的區(qū)別:

  • HTTP 的URL 以http:// 開(kāi)頭,而HTTPS 的URL 以https:// 開(kāi)頭
  • HTTP 是不安全的,而 HTTPS 是安全的
  • HTTP 標(biāo)準(zhǔn)端口是80 ,而 HTTPS 的標(biāo)準(zhǔn)端口是443
  • 在OSI 網(wǎng)絡(luò)模型中,HTTP工作于應(yīng)用層,而HTTPS 的安全傳輸機(jī)制工作在傳輸層
  • HTTP 無(wú)法加密,而HTTPS 對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行加密
  • HTTP無(wú)需證書(shū),而HTTPS 需要CA機(jī)構(gòu)wosign的頒發(fā)的SSL證書(shū)

什么是Http協(xié)議無(wú)狀態(tài)協(xié)議?怎么解決Http協(xié)議無(wú)狀態(tài)協(xié)議?

無(wú)狀態(tài)協(xié)議對(duì)于事務(wù)處理沒(méi)有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息

也就是說(shuō),當(dāng)客戶端一次HTTP請(qǐng)求完成以后,客戶端再發(fā)送一次HTTP請(qǐng)求,HTTP并不知道當(dāng)前客戶端是一個(gè)”老用戶“。

可以使用Cookie來(lái)解決無(wú)狀態(tài)的問(wèn)題,Cookie就相當(dāng)于一個(gè)通行證,第一次訪問(wèn)的時(shí)候給客戶端發(fā)送一個(gè)Cookie,當(dāng)客戶端再次來(lái)的時(shí)候,拿著Cookie(通行證),那么服務(wù)器就知道這個(gè)是”老用戶“。

URI和URL的區(qū)別

1. URI

URI,是uniform resource identifier,統(tǒng)一資源標(biāo)識(shí)符,用來(lái)唯一的標(biāo)識(shí)一個(gè)資源。

Web上可用的每種資源如HTML文檔、圖像、視頻片段、程序等都是一個(gè)來(lái)URI來(lái)定位的

URI一般由三部組成:

  • 訪問(wèn)資源的命名機(jī)制
  • 存放資源的主機(jī)名
  • 資源自身的名稱,由路徑表示,著重強(qiáng)調(diào)于資源。

2. URL

URL是uniform resource locator,統(tǒng)一資源定位器,它是一種具體的URI,即URL可以用來(lái)標(biāo)識(shí)一個(gè)資源,而且還指明了如何locate這個(gè)資源。

URL是Internet上用來(lái)描述信息資源的字符串,主要用在各種WWW客戶程序和服務(wù)器程序上,特別是著名的Mosaic。

采用URL可以用一種統(tǒng)一的格式來(lái)描述各種信息資源,包括文件、服務(wù)器的地址和目錄等。

URL一般由三部組成:

  • 協(xié)議(或稱為服務(wù)方式)
  • 存有該資源的主機(jī)IP地址(有時(shí)也包括端口號(hào))
  • 主機(jī)資源的具體地址。如目錄和文件名等

URN,uniform resource name,統(tǒng)一資源命名,是通過(guò)名字來(lái)標(biāo)識(shí)資源,比如mailto:java-net@java.sun.com。

URI是以一種抽象的,高層次概念定義統(tǒng)一資源標(biāo)識(shí),而URL和URN則是具體的資源標(biāo)識(shí)的方式。URL和URN都是一種URI?;\統(tǒng)地說(shuō),每個(gè) URL 都是 URI,但不一定每個(gè) URI 都是 URL。這是因?yàn)?URI 還包括一個(gè)子類,即統(tǒng)一資源名稱 (URN),它命名資源但不指定如何定位資源。上面的 mailto、news 和 isbn URI 都是 URN 的示例。

在Java的URI中,一個(gè)URI實(shí)例可以代表絕對(duì)的,也可以是相對(duì)的,只要它符合URI的語(yǔ)法規(guī)則。而URL類則不僅符合語(yǔ)義,還包含了定位該資源的信息,因此它不能是相對(duì)的。

在Java類庫(kù)中,URI類不包含任何訪問(wèn)資源的方法,它唯一的作用就是解析。

相反的是,URL類可以打開(kāi)一個(gè)到達(dá)資源的流。

HTTP之URL

HTTP使用統(tǒng)一資源標(biāo)識(shí)符(Uniform Resource Identifiers, URI)來(lái)傳輸數(shù)據(jù)和建立連接。URL是一種特殊類型的URI,包含了用于查找某個(gè)資源的足夠的信息

URL,全稱是UniformResourceLocator, 中文叫統(tǒng)一資源定位符,是互聯(lián)網(wǎng)上用來(lái)標(biāo)識(shí)某一處資源的地址。以下面這個(gè)URL為例,介紹下普通URL的各部分組成:

http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name

從上面的URL可以看出,一個(gè)完整的URL包括以下幾部分:

  • 協(xié)議部分:該URL的協(xié)議部分為“http:”,這代表網(wǎng)頁(yè)使用的是HTTP協(xié)議。在Internet中可以使用多種協(xié)議,如HTTP,F(xiàn)TP等等本例中使用的是HTTP協(xié)議。在"HTTP"后面的“//”為分隔符
  • 域名部分:該URL的域名部分為“www.aspxfans.com”。一個(gè)URL中,也可以使用IP地址作為域名使用
  • 端口部分:跟在域名后面的是端口,域名和端口之間使用“:”作為分隔符。端口不是一個(gè)URL必須的部分,如果省略端口部分,將采用默認(rèn)端口
  • 虛擬目錄部分:從域名后的第一個(gè)“/”開(kāi)始到最后一個(gè)“/”為止,是虛擬目錄部分。虛擬目錄也不是一個(gè)URL必須的部分。本例中的虛擬目錄是“/news/”
  • 文件名部分:從域名后的最后一個(gè)“/”開(kāi)始到“?”為止,是文件名部分,如果沒(méi)有“?”,則是從域名后的最后一個(gè)“/”開(kāi)始到“#”為止,是文件部分,如果沒(méi)有“?”和“#”,那么從域名后的最后一個(gè)“/”開(kāi)始到結(jié)束,都是文件名部分。本例中的文件名是“index.asp”。文件名部分也不是一個(gè)URL必須的部分,如果省略該部分,則使用默認(rèn)的文件名
  • 錨部分:從“#”開(kāi)始到最后,都是錨部分。本例中的錨部分是“name”。錨部分也不是一個(gè)URL必須的部分
  • 參數(shù)部分:從“?”開(kāi)始到“#”為止之間的部分為參數(shù)部分,又稱搜索部分、查詢部分。本例中的參數(shù)部分為“boardID=5&ID=24618&page=1”。參數(shù)可以允許有多個(gè)參數(shù),參數(shù)與參數(shù)之間用“&”作為分隔符。

(原文:http://blog.csdn.net/ergouge/article/details/8185219 )

HTTPS工作原理

  • 首先HTTP請(qǐng)求服務(wù)端生成證書(shū),客戶端對(duì)證書(shū)的有效期、合法性、域名是否與請(qǐng)求的域名一致、證書(shū)的公鑰(RSA加密)等進(jìn)行校驗(yàn);
  • 客戶端如果校驗(yàn)通過(guò)后,就根據(jù)證書(shū)的公鑰的有效, 生成隨機(jī)數(shù),隨機(jī)數(shù)使用公鑰進(jìn)行加密(RSA加密);
  • 消息體產(chǎn)生的后,對(duì)它的摘要進(jìn)行MD5(或者SHA1)算法加密,此時(shí)就得到了RSA簽名;
  • 發(fā)送給服務(wù)端,此時(shí)只有服務(wù)端(RSA私鑰)能解密。
  • 解密得到的隨機(jī)數(shù),再用AES加密,作為密鑰(此時(shí)的密鑰只有客戶端和服務(wù)端知道)。

一次完整的HTTP請(qǐng)求所經(jīng)歷的7個(gè)步驟

HTTP通信機(jī)制是在一次完整的HTTP通信過(guò)程中,Web瀏覽器與Web服務(wù)器之間將完成下列7個(gè)步驟:

1. 建立TCP連接

在HTTP工作開(kāi)始之前,Web瀏覽器首先要通過(guò)網(wǎng)絡(luò)與Web服務(wù)器建立連接,該連接是通過(guò)TCP來(lái)完成的,該協(xié)議與IP協(xié)議共同構(gòu)建 Internet,即著名的TCP/IP協(xié)議族,因此Internet又被稱作是TCP/IP網(wǎng)絡(luò)。HTTP是比TCP更高層次的應(yīng)用層協(xié)議,根據(jù)規(guī)則, 只有低層協(xié)議建立之后才能,才能進(jìn)行更層協(xié)議的連接,因此,首先要建立TCP連接,一般TCP連接的端口號(hào)是80。

Web瀏覽器向Web服務(wù)器發(fā)送請(qǐng)求行

一旦建立了TCP連接,Web瀏覽器就會(huì)向Web服務(wù)器發(fā)送請(qǐng)求命令。例如:GET /sample/hello.jsp HTTP/1.1。

2. Web瀏覽器發(fā)送請(qǐng)求頭

瀏覽器發(fā)送其請(qǐng)求命令之后,還要以頭信息的形式向Web服務(wù)器發(fā)送一些別的信息,之后瀏覽器發(fā)送了一空白行來(lái)通知服務(wù)器,它已經(jīng)結(jié)束了該頭信息的發(fā)送。

3. Web服務(wù)器應(yīng)答

客戶機(jī)向服務(wù)器發(fā)出請(qǐng)求后,服務(wù)器會(huì)客戶機(jī)回送應(yīng)答, HTTP/1.1 200 OK ,應(yīng)答的第一部分是協(xié)議的版本號(hào)和應(yīng)答狀態(tài)碼。

4. Web服務(wù)器發(fā)送應(yīng)答頭

正如客戶端會(huì)隨同請(qǐng)求發(fā)送關(guān)于自身的信息一樣,服務(wù)器也會(huì)隨同應(yīng)答向用戶發(fā)送關(guān)于它自己的數(shù)據(jù)及被請(qǐng)求的文檔。

5. Web服務(wù)器向?yàn)g覽器發(fā)送數(shù)據(jù)

Web服務(wù)器向?yàn)g覽器發(fā)送頭信息后,它會(huì)發(fā)送一個(gè)空白行來(lái)表示頭信息的發(fā)送到此為結(jié)束,接著,它就以Content-Type應(yīng)答頭信息所描述的格式發(fā)送用戶所請(qǐng)求的實(shí)際數(shù)據(jù)。

6. Web服務(wù)器關(guān)閉TCP連接

一般情況下,一旦Web服務(wù)器向?yàn)g覽器發(fā)送了請(qǐng)求數(shù)據(jù),它就要關(guān)閉TCP連接,然后如果瀏覽器或者服務(wù)器在其頭信息加入了這行代碼:

7. Connection:keep-alive

TCP連接在發(fā)送后將仍然保持打開(kāi)狀態(tài),于是,瀏覽器可以繼續(xù)通過(guò)相同的連接發(fā)送請(qǐng)求。保持連接節(jié)省了為每個(gè)請(qǐng)求建立新連接所需的時(shí)間,還節(jié)約了網(wǎng)絡(luò)帶寬。

建立TCP連接->發(fā)送請(qǐng)求行->發(fā)送請(qǐng)求頭->(到達(dá)服務(wù)器)發(fā)送狀態(tài)行->發(fā)送響應(yīng)頭->發(fā)送響應(yīng)數(shù)據(jù)->斷TCP連接

常見(jiàn)的HTTP相應(yīng)狀態(tài)碼

  • 200:請(qǐng)求被正常處理
  • 204:請(qǐng)求被受理但沒(méi)有資源可以返回
  • 206:客戶端只是請(qǐng)求資源的一部分,服務(wù)器只對(duì)請(qǐng)求的部分資源執(zhí)行GET方法,相應(yīng)報(bào)文中通過(guò)Content-Range指定范圍的資源。
  • 301:永久性重定向
  • 302:臨時(shí)重定向
  • 303:與302狀態(tài)碼有相似功能,只是它希望客戶端在請(qǐng)求一個(gè)URI的時(shí)候,能通過(guò)GET方法重定向到另一個(gè)URI上
  • 304:發(fā)送附帶條件的請(qǐng)求時(shí),條件不滿足時(shí)返回,與重定向無(wú)關(guān)
  • 307:臨時(shí)重定向,與302類似,只是強(qiáng)制要求使用POST方法
  • 400:請(qǐng)求報(bào)文語(yǔ)法有誤,服務(wù)器無(wú)法識(shí)別
  • 401:請(qǐng)求需要認(rèn)證
  • 403:請(qǐng)求的對(duì)應(yīng)資源禁止被訪問(wèn)
  • 404:服務(wù)器無(wú)法找到對(duì)應(yīng)資源
  • 500:服務(wù)器內(nèi)部錯(cuò)誤
  • 503:服務(wù)器正忙

HTTP工作原理

HTTP協(xié)議定義Web客戶端如何從Web服務(wù)器請(qǐng)求Web頁(yè)面,以及服務(wù)器如何把Web頁(yè)面?zhèn)魉徒o客戶端。HTTP協(xié)議采用了請(qǐng)求/響應(yīng)模型。客戶端向服務(wù)器發(fā)送一個(gè)請(qǐng)求報(bào)文,請(qǐng)求報(bào)文包含請(qǐng)求的方法、URL、協(xié)議版本、請(qǐng)求頭部和請(qǐng)求數(shù)據(jù)。服務(wù)器以一個(gè)狀態(tài)行作為響應(yīng),響應(yīng)的內(nèi)容包括協(xié)議的版本、成功或者錯(cuò)誤代碼、服務(wù)器信息、響應(yīng)頭部和響應(yīng)數(shù)據(jù)。

以下是 HTTP 請(qǐng)求/響應(yīng)的步驟:

  • 客戶端連接到Web服務(wù)器:一個(gè)HTTP客戶端,通常是瀏覽器,與Web服務(wù)器的HTTP端口(默認(rèn)為80)建立一個(gè)TCP套接字連接。例如,http://www.oakcms.cn。
  • 發(fā)送HTTP請(qǐng)求:通過(guò)TCP套接字,客戶端向Web服務(wù)器發(fā)送一個(gè)文本的請(qǐng)求報(bào)文,一個(gè)請(qǐng)求報(bào)文由請(qǐng)求行、請(qǐng)求頭部、空行和請(qǐng)求數(shù)據(jù)4部分組成。
  • 服務(wù)器接受請(qǐng)求并返回HTTP響應(yīng):Web服務(wù)器解析請(qǐng)求,定位請(qǐng)求資源。服務(wù)器將資源復(fù)本寫(xiě)到TCP套接字,由客戶端讀取。一個(gè)響應(yīng)由狀態(tài)行、響應(yīng)頭部、空行和響應(yīng)數(shù)據(jù)4部分組成。
  • 釋放連接TCP連接

 

責(zé)任編輯:趙寧寧 來(lái)源: 今日頭條
相關(guān)推薦

2020-12-28 08:16:30

前端開(kāi)發(fā)技術(shù)熱點(diǎn)

2020-12-28 08:13:01

前端開(kāi)發(fā)技術(shù)熱點(diǎn)

2018-11-28 14:30:09

MySQLL索引設(shè)計(jì)數(shù)據(jù)庫(kù)

2010-09-02 10:11:11

華為認(rèn)證

2023-06-26 14:11:06

SQLC++語(yǔ)言

2012-04-23 15:49:04

2010-06-04 16:26:02

2016-05-30 17:31:34

Spring框架

2020-08-24 11:03:36

IP路由網(wǎng)絡(luò)

2010-08-17 14:56:00

HCNE認(rèn)證

2011-04-15 12:25:21

BGP路由

2014-06-10 13:44:58

iOSUIImage知識(shí)點(diǎn)

2020-11-06 00:50:16

JavaClassLoaderJVM

2010-05-11 19:04:56

Unix系統(tǒng)

2023-09-27 18:02:31

2021-04-29 10:01:30

JavaMathJava編程

2010-05-26 17:40:14

MySQL數(shù)據(jù)庫(kù)

2021-04-13 08:25:12

測(cè)試開(kāi)發(fā)Java注解Spring

2011-04-01 15:28:40

Zabbix配置安裝

2010-05-26 10:32:47

SVN管理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)