思維導圖分析http之http協議版本

1.結構總覽

??wKioL1kyuazTOXDFAABFCiDhnU0272.png

??在http協議這一章,我將先后介紹上圖六個部分,本文先介紹http的協議版本。

2.http協議版本

wKiom1kyumOy55t4AAAhzZljj44537.png

? http協議的歷史并不長,從1991的0.9版本到現在(2017)僅僅才20多年,算算下來,http還是正處青年,正是大好發展的好時光。雖然短短不到27年,卻改變了人類認識世界的方式。在這里,必須給偉大的先賢們鞠躬致敬。

wKiom1kyvALTOwIwAACB_MQAMRg571.png

? 0.9版本功能十分簡單,僅僅一個get功能,get翻譯過來就是獲得,在這里指獲取資源。因為功能簡陋,自然得不到很大的應用,所以在五年之后發布了新的版本1.0。

? 1.0版本內容豐富,增加了很多的功能。get獲取資源,post發送資源,head保存了資源的首部信息。多用途互聯網郵件擴展(MIME,Multipurpose Internet Mail Extensions)是一個互聯網標準,它擴展了電子郵件標準,支持多媒體數據傳送,極大了豐富了http協議。

wKioL1kyvXrTnyG9AABEuFqPHtw111.png

? http1.0版本請求格式形如這樣: ? ?

1
2
3
????GET?/?HTTP/1.0
????User-Agent:?Mozilla/5.0?(Macintosh;?Intel?Mac?OS?X?10_10_5)
????Accept:?*/*

?回應格式形如這樣: ? ?

1
2
3
4
5
6
7
8
9
????HTTP/1.0?200?OK?
????Content-Type:?text/plain
????Content-Length:?137582
????Expires:?Thu,?05?Dec?1997?16:00:00?GMT
????Last-Modified:?Wed,?5?August?1996?15:55:28?GMT
????Server:?Apache?0.84????
????<html>
??????<body>Hello?World</body>
????</html>

? 盡管http1.0功能已經十分強大,但仍然還有缺點。每個TCP連接只能發送一個請求,因此TCP連接的新建成本很高,效率低下,因此后來引入了keep-alive機制,即持久連接。簡單理解,即長時間連接不間斷。

?http1.0功能十分強大,因此加大了人們對http協議的依賴,有了廣泛的應用與觀眾的掌聲,http協議的研發人員像是打了雞血一般,僅僅時隔半年版就發布了http1.1。人們常說慢工出細活,對不起,在這不適用。在這里更像是時間的濃縮的產品就是精華。http1.1功能更為強大,以至于到今天還在應用。

?http1.1協議的優點如下: ? ? ? ?

1
2
3
4
5
6
????1.增強了緩存功能,目前流行版本
????2.引入了持久連接(persistent?connection)
????3.引入了管道機制(pipelining),客戶端可以同時發送多個請求。
????4.引入Content-Length字段,標記內容長度
????5.引入分塊傳輸編碼,極大增加了傳輸的速度
????6.更豐富的method:GET,?POST,?HEAD,PUT,?DELETE,TRACE,?OPTIONS,HOST

?http1.1的數據按次序通信,有隊頭堵塞問題。阻塞了自然要疏通,疏通的常見方式有兩種:

1
2
????1.減少請求數
????2.同時多開持久連接

?減少請求數很好理解,不再啰嗦。多開持久連接,本質上也是減少請求數,規避不必要的去頻繁斷開。因這兩種方式,由此產生了很多解決技巧,技巧有如下:

1
2
3
????1.合并腳本和樣式表,
????2.將圖片嵌入CSS代碼
????3.域名分片(domain?sharding)

?基于效率以及安全的考慮,http2強勢登場。http2的前身是google公司的SPDY協議,SPDY協議非常強大,http研發工程師,自感亞歷山大,所以又火急火燎地研發除了http2協議。http2有如下特點:

1
2
3
4
5
6
????1.前身:SPDY?協議(google)
????2.徹底的二進制協議,頭信息和數據體都是二進制,效率提升,加大安全
????3.多路復用(MultiPlexing),即連接共享,規避隊頭堵塞
????4.數據流傳輸,增加傳輸效率
????5.頭信息壓縮,減小了傳輸的大小
????6.服務器推送

?至此,http協議版本介紹完畢,感謝觀賞,下一節介紹一次完整的http請求過程。



本文轉自 PowerMichael 51CTO博客,原文鏈接:http://blog.51cto.com/huwho/1931998,如需轉載請自行聯系原作者

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/392161.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/392161.shtml
英文地址,請注明出處:http://en.pswp.cn/news/392161.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

分布與并行計算—生產者消費者模型RabbitMQ(Java)

連接工具 public class ConnectionUtil {public static final String QUEUE_NAME"firstQueue";private static final String RABBIT_HOST "11";private static final String RABBIT_USERNAME "";private static final String RABBIT_PASSWORD…

飛騰 linux 內核,FT2004-Xenomai

移植Xenomai到基于飛騰FT2004 CPU的FT Linux系統1 目前飛騰FT2000/4相關設備驅動還沒有開源&#xff0c;需要先聯系飛騰軟件生態部獲取FT Linux源代碼2 如需在x86交叉編譯arm64內核&#xff0c;推薦使用Linaro gcc編譯器&#xff0c;鏈接如下&#xff1a;https://releases.lina…

使用管道符組合使用命令_如何使用管道的魔力

使用管道符組合使用命令Surely you have heard of pipelines or ETL (Extract Transform Load), or seen some method in a library, or even heard of any tool to create pipelines. However, you aren’t using it yet. So, let me introduce you to the fantastic world of…

關于網頁授權的兩種scope的區別說明

關于網頁授權的兩種scope的區別說明 1、以snsapi_base為scope發起的網頁授權&#xff0c;是用來獲取進入頁面的用戶的openid的&#xff0c;并且是靜默授權并自動跳轉到回調頁的。用戶感知的就是直接進入了回調頁&#xff08;往往是業務頁面&#xff09; 2、以snsapi_userinfo為…

安卓流行布局開源庫_如何使用流行度在開源庫之間進行選擇

安卓流行布局開源庫by Ashish Singal通過Ashish Singal 如何使用流行度在開源庫之間進行選擇 (How to choose between open source libraries using popularity) Through my career as a product manager, I’ve worked closely with engineers to build many technology prod…

TCP/IP分析(一) 協議概述

各協議層分工明確 轉載于:https://www.cnblogs.com/HonkerYblogs/p/11247604.html

window 下分linux分區,如何在windows9x下訪問linux分區

1. 簡 介Linux 內 核 支 持 眾 多 的 文 件 系 統 類 型, 目 前 它 可 以 讀 寫( 至 少 是 讀) 大 部 分 的 文 件 系 統.Linux 經 常 與Microsoft Windows 共 存 于 一 個 系 統 或 者 硬 盤 中.Linux 對windows9x/NT 的 文 件 系 統 支 持 的 很 好, 反 之 你 想 在windows 下…

C# new關鍵字和對象類型轉換(雙括號、is操作符、as操作符)

一、new關鍵字 CLR要求所有的對象都通過new來創建,代碼如下: Object objnew Object(); 以下是new操作符做的事情 1、計算類型及其所有基類型(一直到System.Object,雖然它沒有定義自己的實例字段)中定義的所有實例字段需要的字節數.堆上每個對象都需要一些額外的成員,包括“類型…

JDBC01 利用JDBC連接數據庫【不使用數據庫連接池】

目錄&#xff1a; 1 什么是JDBC 2 JDBC主要接口 3 JDBC編程步驟【學渣版本】 5 JDBC編程步驟【學神版本】 6 JDBC編程步驟【學霸版本】 1 什么是JDBC JDBC是JAVA提供的一套標準連接數據庫的接口&#xff0c;規定了連接數據庫的步驟和功能&#xff1b;不同的數據庫提供商提供了一…

leetcode 778. 水位上升的泳池中游泳(并查集)

在一個 N x N 的坐標方格 grid 中&#xff0c;每一個方格的值 grid[i][j] 表示在位置 (i,j) 的平臺高度。 現在開始下雨了。當時間為 t 時&#xff0c;此時雨水導致水池中任意位置的水位為 t 。你可以從一個平臺游向四周相鄰的任意一個平臺&#xff0c;但是前提是此時水位必須…

2020年十大幣預測_2020年十大商業智能工具

2020年十大幣預測In the rapidly growing world of today, when technology is expanding at a rate like never before, there are plenty of tools and skills to explore, learn, and master. In this digital and data age, Business Information and Intelligence have cl…

如何使用MySQL和JPA使用Spring Boot構建Rest API

Hi Everyone! For the past year, I have been learning JavaScript for full-stack web development. For a change, I started to master Java — the powerful Object Oriented Language.嗨&#xff0c;大家好&#xff01; 在過去的一年中&#xff0c;我一直在學習用于全棧W…

翻譯

令 $m>n>1$ 為正整數. 一個集合含有 $m$ 個給定的實數. 我們從中選取任意 $n$ 個數, 記作 $a_1$, $a_2$, $\dotsc$, $a_n$, 并提問: 是否 $a_1<a_2<\dotsb < a_n$ 正確? 證明: 我們可以最多問 $n!-n^22n-2m(n-1)(1\lfloor \log_{n} m \rfloor)-m$ 個問題&#…

720 智能硬件與 LeanCloud 云端的默契協作

【 玩轉 LeanCloud 】開發者經驗分享&#xff1a; 作者&#xff1a;謝子超 720技術負責人&#xff0c;從業十余年&#xff0c;一直負責軟件開發工作。 我們的產品是與監控和改善室內空氣質量相關的智能硬件&#xff0c;我們使用 LeanCloud 平臺已經有 2 年多了&#xff0c;借此…

linux cifs windows 慢,windows上使用dockerIO特別慢有沒有更優的解決方案?

復制一個大佬的回答Docker for Windows是在Hyper-V虛擬機上跑Linux&#xff0c;文件掛載是通過SMB協議從Windows掛載到Linux&#xff0c;文件讀寫都經過網絡&#xff0c;遇到Laravel這種每次啟動就要加載幾百個文件的框架&#xff0c;文件性能問題就尤其明顯。最好的驗證方法就…

編譯原理—詞法分析器(Java)

1.當運行程序時&#xff0c;程序會讀取項目下的program.txt文件 2. 程序將會逐行讀取program.txt中的源程序&#xff0c;進行詞法分析&#xff0c;并將分析的結果輸出。 3. 如果發現錯誤&#xff0c;程序將會中止讀取文件進行分析&#xff0c;并輸出錯誤提示 所用單詞的構詞規…

【BZOJ4653】[Noi2016]區間 雙指針法+線段樹

【BZOJ4653】[Noi2016]區間 Description 在數軸上有 n個閉區間 [l1,r1],[l2,r2],...,[ln,rn]。現在要從中選出 m 個區間&#xff0c;使得這 m個區間共同包含至少一個位置。換句話說&#xff0c;就是使得存在一個 x&#xff0c;使得對于每一個被選中的區間 [li,ri]&#xff0c;都…

為什么我們需要使用Pandas新字符串Dtype代替文本數據對象

We have to represent every bit of data in numerical values to be processed and analyzed by machine learning and deep learning models. However, strings do not usually come in a nice and clean format and require a lot preprocessing.我們必須以數值表示數據的每…

遞歸方程組解的漸進階的求法——代入法

遞歸方程組解的漸進階的求法——代入法 用這個辦法既可估計上界也可估計下界。如前面所指出&#xff0c;方法的關鍵步驟在于預先對解答作出推測&#xff0c;然后用數學歸納法證明推測的正確性。 例如&#xff0c;我們要估計T(n)的上界&#xff0c;T(n)滿足遞歸方程&#xff1a;…

【轉載】C# 理解泛型

術語表 generics&#xff1a;泛型type-safe&#xff1a;類型安全collection: 集合compiler&#xff1a;編譯器run time&#xff1a;程序運行時object: 對象.NET library&#xff1a;.Net類庫value type: 值類型box: 裝箱unbox: 拆箱implicity: 隱式explicity: 顯式linked list:…