内容简介:是什么让HTTP成为互联网的流量担当?简单高效!是什么让HTTP/1.1二十多年依旧活力四射?简单高效!
是什么让HTTP成为互联网的流量担当?简单高效!
是什么让HTTP/1.1二十多年依旧活力四射?简单高效!
但恰恰是因为HTTP简单高效,导致很多开发者对其视而不见。老张之所以把HTTP报文放在《Web开发进阶》的第二篇,正是因为“千里之行,始于足下”。理解不了HTTP报文,Web开发始终会处在云里雾里,知其然而不知其所以然。
01
—
概述
诞生于上世纪九十年代初的HTTP协议,如今已经迎来而立之年,期间有过多个版本的更迭。最新的是去年推出的HTTP/3.0,应用最广泛的却是二十多年前的HTTP/1.1。
HTTP/0.9 | |
HTTP/1.0 | |
HTTP/1.1 | 1999 |
HTTP/2.0 | 2014 |
HTTP/3.0 | 2019 |
简单高效是一剂猛药,但也并非没有副作用,恰恰因为其HTTP/1.1版本的简单高效导致其二十多年驻足不前。 可能有 小伙伴经常在技术网站 看到过于HTTP/ 2.0 , 甚至是HTTP / 3.0 的讨论,但 残酷的 是 嘴上都说HTTP/2.0怎么怎么高效,但是实际应用还是摆脱不了HTTP/1.1的真香定律 。所以今天老张介绍的也是以HTTP/1.1为主。
说了这么多的HTTP简单,到底有多简单呢?
请求,响应,没了……
因为HTTP协议是基于TCP的应用协议,而TCP协议是可靠通信,所以完全可以 将HTTP通信简单的看作一来一往的两条数据流,甚至HTTP报文都是基于文本而不是二进制的 。下面老张将分别介绍一下请求报文和响应报文。
7层网络模型和4层网络模型
02
—
请求报文
HTTP请求报文结构
一条HTTP请求报文有三部分构成: 请求行,请求头,请求体 。其中请求体是可选的。
请求行
请求行位于HTTP请求的开始,由请求方法、请求地址和使用的HTTP协议版本组成,它们之间通过空格分隔,最后用回车换行(\r\n)结束。上图中使用的请求方法是GET(比较常见的还有POST),请求的地址为http://www.example.com/index.html,使用的协议版本为HTTP/1.1。
请求头
请求头由多个Key: Value形式组合而成,它们之间通过回车换行分割,最后通过两个连续的回车换行标识请求头的结束。
请求体一般出现POST或者PUT方式的请求中,其本身并不是请求报文的必须部分,这里老张不多介绍,现在一块来看一下一个完整的请求报文。
注意最后的光标
03
—
响应报文
HTTP响应报文结构
同请求报文一样,响应报文也是有三部分构成: 响应行、响应头和响应体 。
响应行
响应行同样由三部分组成,但是又与请求行有所区别,分别是 响应协议,响应状态码和响应描述,以回车换行标识结束 。上图的响应行表示,服务器使用的HTTP版本是1.1,状态码200和状态描述OK表示正常生成了响应数据。
响应头
同请求头一样, 响 应头也是一组Key:Value的组合,最后以两个连续的回车换行标识响应头的结束。
响应体
响应体就是服务器返回给客户端的网络资源了,上图表示服务器返回了一条HTML格式的数据。
现在再来看一下一条完整的响应报文。
可以看到响应头和响应体之间多了一个空行
04
—
结语
整个流程在浏览器的展示
看完了老张的介绍,相信各位肯定也理解了HTTP协议的本质——请求+响应。
下一篇老张准备在本文的基础上介绍一下爬虫以及如何应对“流氓爬虫”。
在看点这里
以上所述就是小编给大家介绍的《刨析 HTTP》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Large-Scale Inference
Bradley Efron / Cambridge University Press / 2010-8-5 / GBP 48.00
We live in a new age for statistical inference, where modern scientific technology such as microarrays and fMRI machines routinely produce thousands and sometimes millions of parallel data sets, each ......一起来看看 《Large-Scale Inference》 这本书的介绍吧!