HTTP之简介与请求响应流程

  • Post author:
  • Post category:其他



目录


一、HTTP版本


1.HTTP/0.9


2.HTTP/1.0


3.HTTP/1.1


4.HTTP/2


二、HTTP与HTTPS区别


1.是否收费


2.是否加密


3.连接方式


4.安全性


三、请求与响应流程


四、HTTP请求报文


1.请求行


2.请求头


3.请求体(浏览器发送给服务器的数据)


五、HTTP响应报文


1.响应行


2.响应头


3.响应体 (服务器返回给浏览器的数据)


一、HTTP版本

1.HTTP/0.9

HTTP 0.9是第一个版本的HTTP协议,1991年发布。它的组成极其简单,


只允许客户端发送GET这一种请求


,且不支持MIME类型和请求头。由于没有协议头,造成了HTTP 0.9协议


只支持一种内容,即纯文本


。不过网页仍然支持用HTML语言格式化,同时无法插入图片。

HTTP 0.9具有典型的无状态性,每个事务独立进行处理,


事务结束时就释放这个连接


。由此可见,HTTP协议的无状态特点在其第一个版本0.9中已经成型。一次HTTP 0.9的传输首先要建立一个由客户端到Web服务器的TCP连接,由客户端发起一个请求,然后由Web服务器返回页面内容,然后连接会关闭。


如果请求的页面不存在,也不会返回任何错误码


2.HTTP/1.0

HTTP/1.0是在1996年发布,在原来HTTP/0.9的版本上添加了许多方法,


各种HTTP首部


,以及


对多媒体对象的处理


,是请求和响应消息的协议版本。


除了GET命令


,还


引入了POST命令


。HTTP的请求和回应格式也变了,除了数据部分,每次通信都必须包含头信息(HTTP Header),用来描叙一些元数据。相对于HTTP/0.9,HTTP/1.0也支持了


MIME


,使HTTP协议扩大了处理的数据类型,支持对多媒体流信息的处理。

虽然,HTTP/1.0相对于HTTP/0.9有了革命性的改变,但HTTP/1.0依然有一些缺点,主要就是


每个TCP连接只能发生一个请求,发送数据完毕之后连接就会自动关闭


,如果还要再请求其他的资源,就要再创建一个连接。有些浏览器为了解决这个问题,用了一个非标准的Connection头部,也就是Keep-Alive模式(Connection:Keep-Alive)来避免了重新建立连接。但这个不是标准头部,各个浏览器和服务器实现可能不一致,因此不是根本解决办法。

3.HTTP/1.1

HTTP/1.1在1999年正式发布,是


目前用得最广泛的协议版本


HTTP1.1在HTTP1.0的基础上实现的一次飞跃,主要的改进集中在性能、安全、数据类型处理等方面提出Server端缓冲 对象的概念,是减少网络上相同类型内容的反复传送,提高访问速度。默认的是Keep-Alive模式(


持久连接


),提高了性能。同时还增加了


Host协议头





Range分段请求





分块传输编码(chucked)





缓存处理





请求的流水线处理


等功能。

4.HTTP/2

HTTP/2是最新的HTTP协议,与2015年5月发布,谷歌、IE11以及火狐等浏览器已经支持HTTP/2协议了。

注意是HTTP/2而不是HTTP/2.0,因为IEFT(互联网工程任务组)认为HTTP/2已经很成熟了,没有必要再发布子版本了,以后要是有重大改动就直接发布HTTP/3。而HTTP/2与HTTP/1.1也存在着挺大的差别,HTTP/2增加了


二进制协议





多路复用





头部压缩





服务器推送


等功能。

二、HTTP与HTTPS区别



超文本传输协议


HTTP协议


被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以


明文方式


发送内容,


不提供任何方式的数据加密


,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。

为了解决HTTP协议的这一缺陷,需要使用另一种协议:


安全套接字层SSL


超文本传输协议


HTTPS


。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

HTTPS和HTTP的区别主要为以下四点:

1.是否收费

HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费。

2.是否加密

HTTP是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。

3.连接方式

HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,


前者是80





后者是443


4.安全性

HTTP的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。

三、请求与响应流程

四、HTTP请求报文

1.请求行

POST /ECAS2017_war_exploded/system/loginController/login HTTP/1.1

(1)


POST





请求方法


。以post方式去提交请求

(2)


/ECAS2017_war_exploded/system/loginController/login





URL请求地址

(3)


HTTP/1.1





协议版本

2.请求头

请求头部为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔

请求头 说明
Accept 通知服务器端可以发送的数据类型
Content-Type 提交的数据类型
Host 接收请求的服务器地址,可以使IP:端口号,也可以是域名
Referer 真正请求的地址路径,全路径
User-Agent 向服务器表明,当前来访的客户端信息
Host 主机地址
Connection 指定相关连接的属性,如Connection:Keep-Active
Accept-Charset 通知服务端可以发送的编码格式
Accept-Encoding 通知服务端可以发送的数据压缩格式
Accept-Language 通知服务端可以发送的语言
Cache-Control 对缓存的操作

3.请求体(浏览器发送给服务器的数据)

userName=admin&userPwd=e10adc3949ba59abbe56e057f20f883e

五、HTTP响应报文

1.响应行

HTTP/1.1 200 OK

(1)


HTTP/1.1





协议版本

(2)


200





状态码

(3)


OK





状态码描述

2.响应头

响应头 说明
Server 服务器类型
Content-Type 服务器返回给客户端的数据类型
Content-Length 返回的数据长度
Date 通讯的日期,响应的时间

3.响应体 (服务器返回给浏览器的数据)



版权声明:本文为mmake1994原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。