婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > HTTP協議入門_動力節點Java學院整理

HTTP協議入門_動力節點Java學院整理

熱門標簽:承德地圖標注公司收費 鶴壁外呼系統公司 臨沂ai電銷機器人招商 外呼系統號顯示星號怎么看 suitecrm 地圖標注 揭陽電腦外呼系統公司 華創e路航彩票銷售點地圖標注 高德地圖標注常顯 銀川語音外呼系統中心

HTTP 協議是互聯網的基礎協議,也是網頁開發的必備知識,最新版本 HTTP/2 更是讓它成為技術熱點。

本文介紹 HTTP 協議的歷史演變和設計思路。

一、HTTP/0.9

HTTP 是基于 TCP/IP 協議的應用層協議。它不涉及數據包(packet)傳輸,主要規定了客戶端和服務器之間的通信格式,默認使用80端口。

最早版本是1991年發布的0.9版。該版本極其簡單,只有一個命令GET

GET /index.html

上面命令表示,TCP 連接(connection)建立后,客戶端向服務器請求(request)網頁index.html

協議規定,服務器只能回應HTML格式的字符串,不能回應別的格式。

html>
body>Hello World/body>
/html>

服務器發送完畢,就關閉TCP連接。

二、HTTP/1.0

2.1 簡介

1996年5月,HTTP/1.0 版本發布,內容大大增加。

首先,任何格式的內容都可以發送。這使得互聯網不僅可以傳輸文字,還能傳輸圖像、視頻、二進制文件。這為互聯網的大發展奠定了基礎。

其次,除了GET命令,還引入了POST命令和HEAD命令,豐富了瀏覽器與服務器的互動手段。
再次,HTTP請求和回應的格式也變了。除了數據部分,每次通信都必須包括頭信息(HTTP header),用來描述一些元數據。

其他的新增功能還包括狀態碼(status code)、多字符集支持、多部分發送(multi-part type)、權限(authorization)、緩存(cache)、內容編碼(content encoding)等。

2.2 請求格式

下面是一個1.0版的HTTP請求的例子。

GET/ HTTP/1.0
User-Agent: Mozilla/5.0(Macintosh;Intel Mac OSX10_10_5)
Accept: */*

可以看到,這個格式與0.9版有很大變化。
第一行是請求命令,必須在尾部添加協議版本(HTTP/1.0)。后面就是多行頭信息,描述客戶端的情況。

2.3 回應格式

服務器的回應如下。

HTTP/1.0200OK
Content-Type: text/plain
Content-Length: 137582
Expires: Thu,05Dec199716:00:00GMT
Last-Modified: Wed,5August199615:55:28GMT
Server: Apache0.84

html>
body>Hello World/body>
/html>

回應的格式是”頭信息 + 一個空行(\r\n) + 數據”。其中,第一行是”協議版本 + 狀態碼(status code) + 狀態描述”。

2.4 Content-Type 字段

關于字符的編碼,1.0版規定,頭信息必須是 ASCII 碼,后面的數據可以是任何格式。因此,服務器回應的時候,必須告訴客戶端,數據是什么格式,這就是Content-Type字段的作用。
下面是一些常見的Content-Type字段的值。

text/plain
text/html
text/css
image/jpeg
image/png
image/svg+xml
audio/mp4
video/mp4
application/java
application/pdf
application/zip
application/atom+xml

這些數據類型總稱為MIME type,每個值包括一級類型和二級類型,之間用斜杠分隔。
除了預定義的類型,廠商也可以自定義類型。
application/vnd.debian.binary-package

上面的類型表明,發送的是Debian系統的二進制數據包。
MIME type還可以在尾部使用分號,添加參數。
Content-Type: text/html; charset=utf-8

上面的類型表明,發送的是網頁,而且編碼是UTF-8。
客戶端請求的時候,可以使用Accept字段聲明自己可以接受哪些數據格式。
Accept: */*

上面代碼中,客戶端聲明自己可以接受任何格式的數據。
MIME type不僅用在HTTP協議,還可以用在其他地方,比如HTML網頁。

meta http-equiv="Content-Type"content="text/html; charset=UTF-8"/>
!-- 等同于 -->
meta charset="utf-8"/>

2.5 Content-Encoding 字段

由于發送的數據可以是任何格式,因此可以把數據壓縮后再發送。Content-Encoding字段說明數據的壓縮方法。
Content-Encoding: gzip
Content-Encoding: compress
Content-Encoding: deflate

客戶端在請求時,用Accept-Encoding字段說明自己可以接受哪些壓縮方法。
Accept-Encoding: gzip, deflate

2.6 缺點

HTTP/1.0 版的主要缺點是,每個TCP連接只能發送一個請求。發送數據完畢,連接就關閉,如果還要請求其他資源,就必須再新建一個連接。
TCP連接的新建成本很高,因為需要客戶端和服務器三次握手,并且開始時發送速率較慢(slow start)。所以,HTTP 1.0版本的性能比較差。隨著網頁加載的外部資源越來越多,這個問題就愈發突出了。
為了解決這個問題,有些瀏覽器在請求時,用了一個非標準的Connection字段。
Connection: keep-alive
這個字段要求服務器不要關閉TCP連接,以便其他請求復用。服務器同樣回應這個字段。
Connection: keep-alive
一個可以復用的TCP連接就建立了,直到客戶端或服務器主動關閉連接。但是,這不是標準字段,不同實現的行為可能不一致,因此不是根本的解決辦法。

三、HTTP/1.1

1997年1月,HTTP/1.1 版本發布,只比 1.0 版本晚了半年。它進一步完善了 HTTP 協議,一直用到了20年后的今天,直到現在還是最流行的版本。

3.1 持久連接

1.1 版的最大變化,就是引入了持久連接(persistent connection),即TCP連接默認不關閉,可以被多個請求復用,不用聲明Connection: keep-alive
客戶端和服務器發現對方一段時間沒有活動,就可以主動關閉連接。不過,規范的做法是,客戶端在最后一個請求時,發送Connection: close,明確要求服務器關閉TCP連接。

Connection: close

目前,對于同一個域名,大多數瀏覽器允許同時建立6個持久連接。

3.2 管道機制

1.1 版還引入了管道機制(pipelining),即在同一個TCP連接里面,客戶端可以同時發送多個請求。這樣就進一步改進了HTTP協議的效率。
舉例來說,客戶端需要請求兩個資源。以前的做法是,在同一個TCP連接里面,先發送A請求,然后等待服務器做出回應,收到后再發出B請求。管道機制則是允許瀏覽器同時發出A請求和B請求,但是服務器還是按照順序,先回應A請求,完成后再回應B請求。

3.3 Content-Length 字段

一個TCP連接現在可以傳送多個回應,勢必就要有一種機制,區分數據包是屬于哪一個回應的。這就是Content-length字段的作用,聲明本次回應的數據長度。
Content-Length: 3495
上面代碼告訴瀏覽器,本次回應的長度是3495個字節,后面的字節就屬于下一個回應了。
在1.0版中,Content-Length字段不是必需的,因為瀏覽器發現服務器關閉了TCP連接,就表明收到的數據包已經全了。

3.4 分塊傳輸編碼
使用Content-Length字段的前提條件是,服務器發送回應之前,必須知道回應的數據長度。
對于一些很耗時的動態操作來說,這意味著,服務器要等到所有操作完成,才能發送數據,顯然這樣的效率不高。更好的處理方法是,產生一塊數據,就發送一塊,采用”流模式”(stream)取代”緩存模式”(buffer)。
因此,1.1版規定可以不使用Content-Length字段,而使用“分塊傳輸編碼”(chunked transfer encoding)。只要請求或回應的頭信息有Transfer-Encoding字段,就表明回應將由數量未定的數據塊組成。

Transfer-Encoding: chunked

每個非空的數據塊之前,會有一個16進制的數值,表示這個塊的長度。最后是一個大小為0的塊,就表示本次回應的數據發送完了。下面是一個例子。
HTTP/1.1200OK
Content-Type: text/plain
Transfer-Encoding: chunked
25
Thisisthe data inthe first chunk
1C
andthisisthe second one
3
con
8
sequence
0

3.5 其他功能

1.1版還新增了許多動詞方法:PUT、PATCH、HEAD、 OPTIONS、DELETE。
另外,客戶端請求的頭信息新增了Host字段,用來指定服務器的域名。
Host: www.example.com
有了Host字段,就可以將請求發往同一臺服務器上的不同網站,為虛擬主機的興起打下了基礎。

3.6 缺點

雖然1.1版允許復用TCP連接,但是同一個TCP連接里面,所有的數據通信是按次序進行的。服務器只有處理完一個回應,才會進行下一個回應。要是前面的回應特別慢,后面就會有許多請求排隊等著。這稱為“隊頭堵塞”(Head-of-line blocking)。
為了避免這個問題,只有兩種方法:一是減少請求數,二是同時多開持久連接。這導致了很多的網頁優化技巧,比如合并腳本和樣式表、將圖片嵌入CSS代碼、域名分片(domain sharding)等等。如果HTTP協議設計得更好一些,這些額外的工作是可以避免的。

四、SPDY 協議

2009年,谷歌公開了自行研發的 SPDY 協議,主要解決 HTTP/1.1 效率不高的問題。
這個協議在Chrome瀏覽器上證明可行以后,就被當作 HTTP/2 的基礎,主要特性都在 HTTP/2 之中得到繼承。

五、HTTP/2

2015年,HTTP/2 發布。它不叫 HTTP/2.0,是因為標準委員會不打算再發布子版本了,下一個新版本將是 HTTP/3。

5.1 二進制協議

HTTP/1.1 版的頭信息肯定是文本(ASCII編碼),數據體可以是文本,也可以是二進制。HTTP/2 則是一個徹底的二進制協議,頭信息和數據體都是二進制,并且統稱為”幀”(frame):頭信息幀和數據幀。
二進制協議的一個好處是,可以定義額外的幀。HTTP/2 定義了近十種幀,為將來的高級應用打好了基礎。如果使用文本實現這種功能,解析數據將會變得非常麻煩,二進制解析則方便得多。

5.2 多工

HTTP/2 復用TCP連接,在一個連接里,客戶端和瀏覽器都可以同時發送多個請求或回應,而且不用按照順序一一對應,這樣就避免了”隊頭堵塞”。
舉例來說,在一個TCP連接里面,服務器同時收到了A請求和B請求,于是先回應A請求,結果發現處理過程非常耗時,于是就發送A請求已經處理好的部分, 接著回應B請求,完成后,再發送A請求剩下的部分。
這樣雙向的、實時的通信,就叫做多工(Multiplexing)。

5.3 數據流

因為 HTTP/2 的數據包是不按順序發送的,同一個連接里面連續的數據包,可能屬于不同的回應。因此,必須要對數據包做標記,指出它屬于哪個回應。

HTTP/2 將每個請求或回應的所有數據包,稱為一個數據流(stream)。每個數據流都有一個獨一無二的編號。數據包發送的時候,都必須標記數據流ID,用來區分它屬于哪個數據流。另外還規定,客戶端發出的數據流,ID一律為奇數,服務器發出的,ID為偶數。

數據流發送到一半的時候,客戶端和服務器都可以發送信號(RST_STREAM幀),取消這個數據流。1.1版取消數據流的唯一方法,就是關閉TCP連接。這就是說,HTTP/2 可以取消某一次請求,同時保證TCP連接還打開著,可以被其他請求使用。
客戶端還可以指定數據流的優先級。優先級越高,服務器就會越早回應。

5.4 頭信息壓縮

HTTP 協議不帶有狀態,每次請求都必須附上所有信息。所以,請求的很多字段都是重復的,比如Cookie和User Agent,一模一樣的內容,每次請求都必須附帶,這會浪費很多帶寬,也影響速度。

HTTP/2 對這一點做了優化,引入了頭信息壓縮機制(header compression)。一方面,頭信息使用gzip或compress壓縮后再發送;另一方面,客戶端和服務器同時維護一張頭信息表,所有字段都會存入這個表,生成一個索引號,以后就不發送同樣字段了,只發送索引號,這樣就提高速度了。

5.5 服務器推送

HTTP/2 允許服務器未經請求,主動向客戶端發送資源,這叫做服務器推送(server push)。

常見場景是客戶端請求一個網頁,這個網頁里面包含很多靜態資源。正常情況下,客戶端必須收到網頁后,解析HTML源碼,發現有靜態資源,再發出靜態資源請求。其實,服務器可以預期到客戶端請求網頁后,很可能會再請求靜態資源,所以就主動把這些靜態資源隨著網頁一起發給客戶端了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • Java下載遠程服務器文件到本地(基于http協議和ssh2協議)
  • Java與Http協議的詳細介紹
  • HTTP協議詳解_動力節點Java學院整理
  • HTTP協議簡介_動力節點Java學院整理
  • Java HTTP協議收發MQ 消息代碼實例詳解
  • javaweb中Http協議詳解
  • 基于JAVA中Jersey處理Http協議中的Multipart的詳解
  • 使用 Java 類 實現Http協議

標簽:棗莊 忻州 汕尾 咸寧 許昌 三沙 七臺河 萊蕪

巨人網絡通訊聲明:本文標題《HTTP協議入門_動力節點Java學院整理》,本文關鍵詞  HTTP,協議,入門,動力,節點,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《HTTP協議入門_動力節點Java學院整理》相關的同類信息!
  • 本頁收集關于HTTP協議入門_動力節點Java學院整理的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲制服丝袜在线| 国产一区二区精品在线观看| 日本韩国欧美一区| 色94色欧美sute亚洲13| 在线国产电影不卡| 国产精品午夜在线| 久久电影网电视剧免费观看| 日本福利一区二区| 日韩一级片在线观看| 国产精品国产成人国产三级 | 久久在线观看免费| 午夜精品一区在线观看| 91黄色免费版| 中文字幕佐山爱一区二区免费| 老司机免费视频一区二区| 欧美日韩国产首页| 亚洲图片欧美一区| 欧美婷婷六月丁香综合色| 亚洲视频一区二区在线| caoporn国产一区二区| 久久久久久久久久久99999| 日本不卡的三区四区五区| 在线综合视频播放| 日本不卡的三区四区五区| 日韩欧美一区二区免费| 免费人成精品欧美精品| 日韩一区二区精品| 狠狠v欧美v日韩v亚洲ⅴ| 精品av综合导航| 国产精品一二三四区| 亚洲国产高清aⅴ视频| 国产成人免费xxxxxxxx| 国产精品伦理一区二区| 99久久精品国产导航| 亚洲欧美偷拍另类a∨色屁股| 99久久精品国产一区| 一区二区三区四区五区视频在线观看 | 亚洲乱码国产乱码精品精可以看| 99久久99久久免费精品蜜臀| 日韩理论片中文av| 欧美午夜精品一区| 日本欧美韩国一区三区| 国产午夜精品美女毛片视频| 99精品国产99久久久久久白柏| 亚洲免费观看视频| 欧美日韩在线播放三区四区| 免费成人深夜小野草| 久久久久国产精品厨房| av在线不卡电影| 亚洲一卡二卡三卡四卡五卡| 制服视频三区第一页精品| 精品无码三级在线观看视频| 国产精品免费网站在线观看| 欧美日韩高清不卡| 国产精品综合视频| 亚洲精品网站在线观看| 欧美一区二区三区免费大片| 国产一区欧美二区| 一区二区三区鲁丝不卡| 久久久亚洲午夜电影| 色先锋aa成人| 久久不见久久见中文字幕免费| 国产精品对白交换视频| 91麻豆精品国产91| 国产精品欧美一级免费| 欧美精品在线观看播放| 国产精品自拍三区| 亚洲国产成人av网| 国产日产欧美一区二区视频| 欧美色倩网站大全免费| 国产91清纯白嫩初高中在线观看| 亚洲高清三级视频| 国产精品毛片无遮挡高清| 欧美一级黄色片| 欧美亚洲综合一区| youjizz久久| 国产综合色视频| 男女性色大片免费观看一区二区 | 99久久国产综合精品女不卡| 麻豆精品国产91久久久久久| 亚洲一区二区影院| 国产精品嫩草久久久久| 精品国产乱码91久久久久久网站| 精品视频一区 二区 三区| 97se亚洲国产综合自在线不卡| 国产一区二区三区电影在线观看| 日韩av一区二| 亚洲444eee在线观看| 亚洲精品免费电影| 成人欧美一区二区三区1314 | 久久综合九色综合欧美亚洲| 欧美日韩国产一级二级| av网站一区二区三区| 久久99国产乱子伦精品免费| 日韩电影一二三区| 亚洲小少妇裸体bbw| 一区二区欧美国产| 亚洲精品欧美在线| 亚洲色图欧洲色图婷婷| 中文字幕成人网| 欧美一级精品大片| 日本高清不卡视频| av激情综合网| 国产福利电影一区二区三区| 手机精品视频在线观看| 日韩精品亚洲专区| 夜夜夜精品看看| 久久蜜臀中文字幕| 久久久久久久久一| 欧美伊人久久久久久久久影院 | 91国模大尺度私拍在线视频| 日韩av不卡在线观看| 日韩国产欧美三级| 中文字幕制服丝袜一区二区三区| 国产精品网站在线播放| 国产亚洲精品久| 欧美不卡激情三级在线观看| 日韩欧美一区在线| 69堂成人精品免费视频| 欧美一区在线视频| 欧美日韩高清一区二区| 精品视频在线免费观看| 欧美日韩一区二区三区视频| 91捆绑美女网站| 日本欧美一区二区| 日韩电影一二三区| 激情久久久久久久久久久久久久久久| 亚洲国产精品一区二区久久恐怖片| 亚洲成av人综合在线观看| 一区二区三区.www| 麻豆成人免费电影| 久久99久久99小草精品免视看| 国产麻豆一精品一av一免费| 久久国产婷婷国产香蕉| 国产激情91久久精品导航| 国产91精品久久久久久久网曝门| 91性感美女视频| 国产成a人无v码亚洲福利| 色婷婷久久久亚洲一区二区三区| 老司机精品视频导航| 麻豆精品蜜桃视频网站| 99在线精品视频| 91啪在线观看| 欧美一级爆毛片| 欧美精品一区二区三区一线天视频| 国产精品乱码一区二区三区软件 | 日本韩国欧美一区二区三区| 又紧又大又爽精品一区二区| 亚洲福利视频一区| 国模少妇一区二区三区| 国产黄色成人av| 欧美日韩中文一区| 欧美videos大乳护士334| 综合久久综合久久| 日韩福利视频导航| 成人av在线影院| 在线免费观看不卡av| 国产欧美日韩在线看| 一区二区成人在线| 青青草国产成人av片免费| 国产尤物一区二区| 色素色在线综合| 日本一区二区三区在线不卡 | 天天av天天翘天天综合网| 精品一区二区三区在线播放| 色噜噜夜夜夜综合网| 欧美一区二区三区色| 亚洲一区二区三区中文字幕在线| 免费的国产精品| 欧美视频一区二区三区四区| 精品精品欲导航| 一区二区三区免费看视频| 26uuu国产一区二区三区| 樱花影视一区二区| 丁香一区二区三区| 欧美三日本三级三级在线播放| 国产精品色哟哟| 日韩专区一卡二卡| 在线观看成人小视频| 久久麻豆一区二区| 男男成人高潮片免费网站| 国产自产视频一区二区三区| 4438x亚洲最大成人网| 亚洲男人的天堂在线观看| 日韩不卡手机在线v区| 欧美日韩国产一级二级| 国产精品久久免费看| 精品午夜久久福利影院| 日本韩国精品一区二区在线观看| 国产精品乱码久久久久久| 美国毛片一区二区| 欧美一区2区视频在线观看| xfplay精品久久| 久久国产精品露脸对白| 在线综合亚洲欧美在线视频| 国产精品国产三级国产aⅴ原创 | av资源站一区| 久久久噜噜噜久久人人看| 亚洲精品国产成人久久av盗摄| 国产黄色91视频|