HTTP 协议图解

在这里插入图片描述

HTTP 协议是一个非常重要的网络协议,我们平时能够使用浏览器浏览网页,其中一个非常重要的条件就是HTTP 协议。

0,什么是网络协议

在这里插入图片描述

互联网的目的是分享信息,网络协议是互联网的重要组成部分。

在互联网诞生之前,计算机中的信息是无法跨机器传输的。为了更方便的分享信息,诞生了互联网。

信息能够在不同的计算机之间快速传输,其基础技术就是网络。信息的传输,则涉及到信息的发送与接收,那我们就得知道如何发送信息与如何接收信息。

协议就是约定,网络协议就约定了信息在网络之间是如何传输的,即如何发送与如何接收。

协议分层

网络协议不是一个协议,而是一堆协议。

网络是分层的,分层的好处是,层与层之间分工明确,互不干预。其可分为四层网络协议或五层网络协议或七层网络协议,粗略一点可以分为四层,详细一点则可以分为五层或七层。

每一层网络都有一组协议,被称为协议簇。

在这里插入图片描述

1,什么是HTTP 协议

HTTP 全称为HyperText Transfer Protocol,即超文本传输协议。从字面上理解,其作用就是传输超文本。超文本即超级文本,它用超级链接的方式,将互联网中无数的文档链接在一起。

可以简单的将超文本理解为我们平时上网浏览的网页,所以可以认为HTTP 协议的作用就是传输网页。

2,HTTP 的发展历史

在这里插入图片描述

HTTP 协议由英国计算机科学家蒂姆·伯纳斯于1989年在欧洲发起,蒂姆·伯纳斯 作为HTTP 的发明者,对HTTP 的发展起到了至关重要的作用,他被称为互联网之父。2017年,他因发明万维网、第一个浏览器和使万维网得以扩展的基本协议和算法而获得2016年度的图灵奖。

HTTP 协议标准由W3C 和IETF 共同制定,最终发布一系列的RFC。

HTTP 协议重要的发展阶段如下:

1989年,由蒂姆·伯纳斯 发起

1991年,发布HTTP/0.9,这是HTTP 协议的第一个版本,也是最简单的版本,只支持一个GET 方法,并且只能传输简单的文本字符串。

1996年,发布HTTP/1.0,其内容大大增加,可传输图像,视频,二进制格式等丰富的网页。支持GET,POST,HEAD 三种方法,增加了HTTP Header头信息,状态码,内容编码等功能。

1997年,发布HTTP1.1,是较为完整的版本。在之前的基础上,其主要引入了持久连接,分块传输等功能。另外,增加了OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT方法。对于客户端,引入了重要的Host 头部字段,用来指定服务器的域名,使得一个请求可以发往同一台服务器上的不同网站,为虚拟主机的流行打下基础。

2009年,谷歌公开了其自主研发的SPDY 协议,主要解决HTTP1.1 效率不高的问题。SPDY 协议的主要特性被引入了HTTP/2 中。

2015年,发布HTTP/2,而不是HTTP/2.0,是因为标准委员会不打算再发布子版本,下一个新版本将直接是 HTTP/3。

年份 事件
1989年   由蒂姆·伯纳斯 发起  
1991年   发布HTTP/0.9  
1996年   发布HTTP/1.0  
1997年   发布HTTP/1.1  
2009年   谷歌公布SPDY  
2015年   发布HTTP/2  
3,HTTP 所在的网络层次

HTTP 协议建立在Tcp/Ip 协议之上,HTTP 属于应用层协议。其协议层结构如下:

在这里插入图片描述

4,HTTP 请求与响应

HTTP 协议是一个请求-响应式协议,一般由客户端(比如浏览器)向服务端发起,服务端处理后,再向客户端返回信息。

客户端发出的消息称为HTTP 请求(Request),服务端返回的消息称为HTTP 响应(Response)。

在这里插入图片描述

每种协议都有它的消息结构,有了消息结构,发送方就知道以怎样的结构发送消息,接收方就知道以怎样的结构接收消息。下面介绍HTTP 消息结构。

5,HTTP 请求消息结构

在这里插入图片描述


由上图可看出,HTTP 请求由四部分组成:

请求行:分别是请求方法+空格+URL+空格+协议版本+\r\n

请求头部:由多个请求头部键值对组成,中间以冒号:隔开,每个键值对最后是\r\n

空行:即\r\n

请求包体:包体部分

例子:

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

其中:

第1行是请求行,GET 为请求方法,/ 为URL,HTTP1.0 为协议版本,中间以空格隔开。

第2行与第3行是请求头。

请求头下面的空行,这里没有显示。

一般GET 请求不包含请求体,所以本请求中没有请求体。

6,HTTP 请求响应结构

在这里插入图片描述

由上图可看出,HTTP 响应由四部分组成:

状态行:分别是协议版本+空格+状态码+空格+状态码描述+\r\n

响应头部:由多个响应头部键值对组成,中间以冒号:隔开,每个键值对最后是\r\n

空行:即\r\n

响应包体:包体部分

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyssgy.html