刨析 HTTP

栏目: IT技术 · 发布时间: 4年前

内容简介:是什么让HTTP成为互联网的流量担当?简单高效!是什么让HTTP/1.1二十多年依旧活力四射?简单高效!

刨析 HTTP

是什么让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

请求,响应,没了……

因为HTTP协议是基于TCP的应用协议,而TCP协议是可靠通信,所以完全可以 将HTTP通信简单的看作一来一往的两条数据流,甚至HTTP报文都是基于文本而不是二进制的 。下面老张将分别介绍一下请求报文和响应报文。

刨析 HTTP

7层网络模型和4层网络模型

02

请求报文

刨析 HTTP

HTTP请求报文结构

一条HTTP请求报文有三部分构成: 请求行,请求头,请求体 。其中请求体是可选的。

刨析 HTTP

请求行

请求行位于HTTP请求的开始,由请求方法、请求地址和使用的HTTP协议版本组成,它们之间通过空格分隔,最后用回车换行(\r\n)结束。上图中使用的请求方法是GET(比较常见的还有POST),请求的地址为http://www.example.com/index.html,使用的协议版本为HTTP/1.1。

刨析 HTTP

请求头

请求头由多个Key: Value形式组合而成,它们之间通过回车换行分割,最后通过两个连续的回车换行标识请求头的结束。

请求体一般出现POST或者PUT方式的请求中,其本身并不是请求报文的必须部分,这里老张不多介绍,现在一块来看一下一个完整的请求报文。

刨析 HTTP

注意最后的光标

03

响应报文

刨析 HTTP

HTTP响应报文结构

同请求报文一样,响应报文也是有三部分构成: 响应行、响应头和响应体

刨析 HTTP

响应行

响应行同样由三部分组成,但是又与请求行有所区别,分别是 响应协议,响应状态码和响应描述,以回车换行标识结束 。上图的响应行表示,服务器使用的HTTP版本是1.1,状态码200和状态描述OK表示正常生成了响应数据。

刨析 HTTP

响应头

同请求头一样, 应头也是一组Key:Value的组合,最后以两个连续的回车换行标识响应头的结束。

刨析 HTTP

响应体

响应体就是服务器返回给客户端的网络资源了,上图表示服务器返回了一条HTML格式的数据。

现在再来看一下一条完整的响应报文。

刨析 HTTP

可以看到响应头和响应体之间多了一个空行

04

结语

刨析 HTTP

整个流程在浏览器的展示

看完了老张的介绍,相信各位肯定也理解了HTTP协议的本质——请求+响应。

刨析 HTTP

下一篇老张准备在本文的基础上介绍一下爬虫以及如何应对“流氓爬虫”。

刨析 HTTP

刨析 HTTP

在看点这里

刨析 HTTP


以上所述就是小编给大家介绍的《刨析 HTTP》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Visual C#2005从入门到精通

Visual C#2005从入门到精通

夏普 / 周靖 / 清华大学出版社 / 2006-6 / 49.00元

《Visual C#2005从入门到精通/微软技术丛书》:微软技术丛书系列之一,建议一读! Microsoft Visual C#功能强大、使用简单。本书全面介绍了如何利用Visual Studio 2005和.NET Framework来进行C#编程。作者将C#的各种特性娓娓道来,以范例导航的方式,通过大量的练习引导读者逐步构建Windows窗体应用程序,访问Microsoft SQL Serv......一起来看看 《Visual C#2005从入门到精通》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具