九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
協(xié)議森林15 先生,要點(diǎn)單嗎? (HTTP協(xié)議概覽)

作者:Vamei 出處:http://www.cnblogs.com/vamei 歡迎轉(zhuǎn)載,也請保留這段聲明。謝謝!

 

我在TCP流通信中說明了,TCP協(xié)議實(shí)現(xiàn)了數(shù)據(jù)流的傳輸。然而,人們更加習(xí)慣以文件為單位傳輸資源,比如文本文件,圖像文件,超文本文檔(hypertext document)。

*** 超文本文檔中包含有超鏈接,指向其他的資源。超文本文檔是萬維網(wǎng)(World Wide Web,即www)的基礎(chǔ)。

 

HTTP協(xié)議解決文件傳輸?shù)膯栴}。HTTP是應(yīng)用層協(xié)議,主要建立在TCP協(xié)議之上(偶爾也可以UDP為底層)。它隨著萬維網(wǎng)的發(fā)展而流行。HTTP協(xié)議目的是,如何在萬維網(wǎng)的網(wǎng)絡(luò)環(huán)境下,更好的利用TCP協(xié)議,以實(shí)現(xiàn)文件,特別是超文本文件的傳輸。

早期的HTTP協(xié)議主要傳輸靜態(tài)文件,即真實(shí)存儲在服務(wù)器上的文件。隨著萬維網(wǎng)的發(fā)展,HTTP協(xié)議被用于傳輸“動態(tài)文件”,服務(wù)器上的程序根據(jù)HTTP請求即時(shí)生成的動態(tài)文件。我們將HTTP的傳輸對象統(tǒng)稱為資源(resource)。

 

點(diǎn)單

HTTP實(shí)現(xiàn)了資源的訂購和傳送。其工作方式類似于快餐點(diǎn)單。

  1. 請求(request): 顧客向服務(wù)員提出請求:“來個(gè)雞腿漢堡”。
  2. 回復(fù)(response):服務(wù)員根據(jù)情況,回應(yīng)顧客的請求

根據(jù)情況的不同,服務(wù)員的回應(yīng)可能有很多,比如:

  • 服務(wù)員準(zhǔn)備雞腿漢堡,將雞腿漢堡交給顧客。(一切OK)
  • 服務(wù)員發(fā)現(xiàn)自己只是個(gè)甜品站。他讓顧客前往正式柜臺點(diǎn)單。(重新定向)
  • 服務(wù)員告訴顧客雞腿漢堡沒有了。(無法找到)

交易結(jié)束后,服務(wù)員就將剛才的交易拋到腦后,準(zhǔn)備服務(wù)下一位顧客。

 

下面來看一下HTTP是如何具體實(shí)現(xiàn)的。

 

格式

HTTP協(xié)議的通信是一次request-responce交流。客戶端(guest)向服務(wù)器發(fā)出請求(request),服務(wù)器(server)回復(fù)(response)客戶端。

 

 

 

HTTP協(xié)議規(guī)定了請求和回復(fù)的格式:

起始行 (start line)頭信息 (headers)主體(entity body)

起始行只有一行。它包含了請求/回復(fù)最重要的信息。請求的起始行表示(顧客)“想要什么”?;貜?fù)的起始行表示(后廚)“發(fā)生什么”。

 

頭信息可以有多行。每一行是一對鍵值對(key-value pair),比如:

Content-type: text/plain 

它表示,包含有一個(gè)名為Content-type的參數(shù),該參數(shù)的值為text/plain。頭信息是對起始行的補(bǔ)充。請求的頭信息對服務(wù)器有指導(dǎo)意義 (好像在菜單上注明: 雞腿不要辣)?;貜?fù)的頭信息則是提示客戶端(比如,在盒子上注明: 小心燙)

 

主體部分包含了具體的資源。上圖的請求中并沒有主體,因?yàn)槲覀冎皇窃谙聠?,而不用管后廚送什么東西 (請求是可以有主體內(nèi)容的)?;貜?fù)中包含的主體是一段文本文字(Hello World!)。這段文本文字正是顧客所期待的,雞腿漢堡。

 

請求

我們深入一些細(xì)節(jié)。先來看一下請求:

GET /index.html HTTP/1.1Host: www.example.com

 

在起始行中,有三段信息:

  • GET 方法。用于說明想要服務(wù)器執(zhí)行的操作。
  • /index.html 資源的路徑。這里指向服務(wù)器上的index.html文件。
  • HTTP/1.1 協(xié)議的版本。HTTP第一個(gè)廣泛使用的版本是1.0,當(dāng)前版本為1.1。

 

早期的HTTP協(xié)議只有GET方法。遵從HTTP協(xié)議,服務(wù)器接收到GET請求后,會將特定資源傳送給客戶。這類似于客戶點(diǎn)單,并獲得漢堡的過程。使用GET方法時(shí),是客戶向服務(wù)器索取資源,所以請求往往沒有主體部分。

GET方法也可以用于傳輸一些不重要的數(shù)據(jù)。它是通過改寫URL的方式實(shí)現(xiàn)的。GET的數(shù)據(jù)利用URL?變量名=變量值的方法傳輸。比如向http://127.0.0.1發(fā)送一個(gè)變量“q”,它的值為“a”。那么,實(shí)際的URL為http://127.0.0.1?q=a。服務(wù)器收到請求后,就可以知道'q'的值為'a'。

GET方法之外,最常用的是POST方法。它用于從客戶端向服務(wù)器提交數(shù)據(jù)。使用POST方法時(shí),URL不再被改寫。數(shù)據(jù)位于http請求的主體。POST方法最用于提交HTML的form數(shù)據(jù)。服務(wù)器往往會對POST方法提交的數(shù)據(jù)進(jìn)行一定的處理,比如存入服務(wù)器數(shù)據(jù)庫。

 

樣例請求中有一行頭信息。該頭信息的名字是Host。HTTP的請求必須有Host頭信息,用于說明服務(wù)器的地址和端口。HTTP協(xié)議的默認(rèn)端口是80,如果在HOST中沒有說明端口,那么將默認(rèn)采取該端口。在該例子中,服務(wù)器的域名為www.example.com,端口為80。域名將通過DNS服務(wù)器轉(zhuǎn)換為IP地址,從而確定服務(wù)器在互聯(lián)網(wǎng)上的地址。

(參看IP地址TCP端口)

 

回復(fù)

服務(wù)器在接收到請求之后,會根據(jù)程序,生成對應(yīng)于該請求的回復(fù),比如:

HTTP/1.1 200 OKContent-type: text/plainContent-length: 12Hello World!

回復(fù)的起始行同樣包含三段信息

  • HTTP/1.1 協(xié)議版本
  • 200 狀態(tài)碼(status code)。
  • OK 狀態(tài)描述

OK是對狀態(tài)碼200的文字描述,它只是為了便于人類的閱讀。電腦只關(guān)心三位的狀態(tài)碼(status code),即這里的200。200表示一切OK,資源正常返回。狀態(tài)碼代表了服務(wù)器回應(yīng)動作的類型。

其它常見的狀態(tài)碼還有:

  • 302,重新定向(redirect): 我這里沒有你想要的資源,但我知道另一個(gè)地方xxx有,你可以去那里找。
  • 404,無法找到(not found): 我找不到你想要的資源,無能為力。

(重新定向時(shí),客戶端可以根據(jù)302的建議前往xxx尋找資源,也可以忽略該建議。)

 

Content-type說明了主體所包含的資源的類型。根據(jù)類型的不同,客戶端可以啟動不同的處理程序(比如顯示圖像文件,播放聲音文件等等)。下面是一些常見的資源

  • text/plain 普通文本
  • text/html HTML文本
  • image/jpeg jpeg圖片
  • image/gif gif圖片

Content-length說明了主體部分的長度,以字節(jié)(byte)為單位。

 

回應(yīng)的主體部分為一段普通文本,即

Hello World!

 

無狀態(tài)

根據(jù)早期的HTTP協(xié)議,每次request-reponse時(shí),都要重新建立TCP連接。TCP連接每次都重新建立,所以服務(wù)器無法知道上次請求和本次請求是否來自于同一個(gè)客戶端。因此,HTTP通信是無狀態(tài)(stateless)的。服務(wù)器認(rèn)為每次請求都是一個(gè)全新的請求,無論該請求是否來自同一地址。

想象高級餐廳和快餐店。高級餐廳會知道客人所在的位置,如果新增點(diǎn)單,那么服務(wù)員知道這和上一單同一桌。而在快餐店中,不好意思,服務(wù)員并不記錄客人的特征。想再次點(diǎn)單?請重新排隊(duì)……

 

隨著HTTP協(xié)議的發(fā)展,HTTP協(xié)議允許TCP連接復(fù)用,以節(jié)省建立連接所耗費(fèi)的時(shí)間。但HTTP協(xié)議依然保持無狀態(tài)的特性。

 

總結(jié)

HTTP協(xié)議實(shí)現(xiàn)了萬維網(wǎng)上的資源傳輸,采用request-response的工作方式。

GET, POST

無狀態(tài)

 

歡迎繼續(xù)閱讀“協(xié)議森林”系列

 

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
HTTP協(xié)議用于客戶端和服務(wù)器端之間的通信(下)
一次完整的http請求的過程是怎樣的?
http協(xié)議學(xué)習(xí)和總結(jié)系列
WWW的核心——HTTP協(xié)議 - song2004
Http、socket和TCP/IP
J2EE筆記(一) — HTTP協(xié)議
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服