日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

先生,要点单吗? (HTTP协议概览)

發布時間:2024/8/23 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 先生,要点单吗? (HTTP协议概览) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HTTP協議概覽

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

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

HTTP協議解決文件傳輸的問題。HTTP是應用層協議,主要建立在TCP協議之上(偶爾也可以UDP為底層)。它隨著萬維網的發展而流行。HTTP協議目的是,如何在萬維網的網絡環境下,更好的利用TCP協議,以實現文件,特別是超文本文件的傳輸。

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



點單


HTTP實現了資源的訂購和傳送。其工作方式類似于快餐點單。

  • 請求(request): 顧客向服務員提出請求:“來個雞腿漢堡”。

  • 回復(response):服務員根據情況,回應顧客的請求

  • 根據情況的不同,服務員的回應可能有很多,比如:

    • 服務員準備雞腿漢堡,將雞腿漢堡交給顧客。(一切OK)

    • 服務員發現自己只是個甜品站。他讓顧客前往正式柜臺點單。(重新定向)

    • 服務員告訴顧客雞腿漢堡沒有了。(無法找到)

    交易結束后,服務員就將剛才的交易拋到腦后,準備服務下一位顧客。

    ?

    下面來看一下HTTP是如何具體實現的。

    ?


    格式


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

    ?

    ?

    ?

    HTTP協議規定了請求和回復的格式:

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

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

    ?

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

    Content-type: text/plain

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

    ?

    主體部分包含了具體的資源。上圖的請求中并沒有主體,因為我們只是在下單,而不用管后廚送什么東西 (請求是可以有主體內容的)。回復中包含的主體是一段文本文字(Hello World!)。這段文本文字正是顧客所期待的,雞腿漢堡。

    ?


    請求


    我們深入一些細節。先來看一下請求:

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

    ?

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

    • GET 方法。用于說明想要服務器執行的操作。

    • /index.html 資源的路徑。這里指向服務器上的index.html文件。

    • HTTP/1.1 協議的版本。HTTP第一個廣泛使用的版本是1.0,當前版本為1.1。

    ?

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

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

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

    ?

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

    (參看IP地址與TCP端口)

    ?


    回復


    服務器在接收到請求之后,會根據程序,生成對應于該請求的回復,比如:

    HTTP/1.1 200 OK Content-type: text/plain Content-length: 12Hello World!

    回復的起始行同樣包含三段信息

    • HTTP/1.1?協議版本

    • 200?狀態碼(status code)。

    • OK?狀態描述

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

    其它常見的狀態碼還有:

    • 302重新定向(redirect): 我這里沒有你想要的資源,但我知道另一個地方xxx有,你可以去那里找。

    • 404,無法找到(not found): 我找不到你想要的資源,無能為力。

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

    ?

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

    • text/plain 普通文本

    • text/html HTML文本

    • image/jpeg jpeg圖片

    • image/gif gif圖片

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

    ?

    回應的主體部分為一段普通文本,即

    Hello World!

    ?


    無狀態


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

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

    ?

    隨著HTTP協議的發展,HTTP協議允許TCP連接復用,以節省建立連接所耗費的時間。但HTTP協議依然保持無狀態的特性。

    ?


    總結


    HTTP協議實現了萬維網上的資源傳輸,采用request-response的工作方式。

    GET, POST

    無狀態

    作者:Vamei

    來源:http://www.cnblogs.com/vamei



    ? ?哈爾莫斯:怎樣做數學研究

    ? ?扎克伯格2017年哈佛大學畢業演講

    ? ?線性代數在組合數學中的應用

    ? ?你見過真的菲利普曲線嗎?

    ? ?支持向量機(SVM)的故事是這樣子的

    ? ?深度神經網絡中的數學,對你來說會不會太難?

    ? ?編程需要知道多少數學知識?

    ? ?陳省身——什么是幾何學

    ? ?模式識別研究的回顧與展望

    ? ?曲面論

    ? ?自然底數e的意義是什么?

    ? ?如何向5歲小孩解釋什么是支持向量機(SVM)?

    ? ?華裔天才數學家陶哲軒自述

    ? ?代數,分析,幾何與拓撲,現代數學的三大方法論

    算法數學之美微信公眾號歡迎賜稿

    稿件涉及數學、物理、算法、計算機、編程

    等相關領域。

    稿件一經采用,我們將奉上稿酬。

    投稿郵箱:math_alg@163.com

    商務合作:微信號hengzi5809

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的先生,要点单吗? (HTTP协议概览)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。