HTTP1.0、1.1、2.0及HTTPS

本文详细介绍了HTTP协议的不同版本,包括HTTP1.0、1.1、2.0的特点,如持久连接、请求管道化、首部压缩等,并对比了HTTP与HTTPS的区别,探讨了HTTPS的安全性和优化策略。
摘要由CSDN通过智能技术生成

目录

HTTP协议过程

一、客户端发送请求:

二.服务器发送响应

HTTP协议1.0、1.1、2.0以及HTTPS的区别

HTTP1.0

1.浏览器与服务器只保持短暂的连接

2.head of line blocking 队头阻塞问题

HTTP1.1

 1.支持持久连接

2. 支持请求管道化(pipelining)

3.缓存处理 

4.支持断点传输/分块传输

5.增加Host字段

6.缺点

HTTP2.0

1.二进制分帧

2.多路复用(Multiplexing,解决队头阻塞问题)

3.首部压缩(Header Compression)

4.服务端推送(Server Push)

HTTPS

HTTP与HTTPS的区别

HTTPS优化


HTTP协议过程

HTTP协议是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据。目前任何终端(手机,笔记本电脑。。)之间进行任何一种通信都必须按照HTTP协议进行,否则无法连接。

基于HTTP协议的客户端/服务器请求响应机制的信息交换过程包含下面几个步骤:

1)     建立连接:客户端与服务器建立TCP连接(三次握手)

2)     客户端发送请求:打开一个连接后,客户端把请求信息发送到服务器的相应端口上,完成请求动作提交。

3)     服务器发送响应:服务器在处理完客户端请求之后,要向客户端发送响应消息。

4)     关闭连接:客户端和服务器端都可以关闭套接字来结束TCP/IP对话(四次挥手)

下面针对每一步进行讲解:

一、客户端发送请求:

1.一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成

(1)请求行

请求行由请求方法、请求地址和协议版本三部分组成。

HTTP协议的常用请求方法有以下几种:

HTTP请求方法(所有方法全为大写)有多种,各个方法的解释如下:
GET     请求获取Request-URL所标识的资源(向服务器请求资源)
POST    在Request-URL所标识的资源后附加新的数据(常用于提交表单)
HEAD    请求获取由Request-URL所标识的资源的响应消息报头
PUT     请求服务器存储一个资源,并用Request-URL作为其标识
DELETE  请求服务器删除Request-URL所标识的资源
TRACE   请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT 保留将来使用
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求

GET与POST的区别

1、get在浏览器回退时是无害的,而post会再次提交请求。(记住)
2、get请求会被浏览器主动缓存,而post不会,除非手动设置。(记住)
3、get产生的url地址可以被收藏,而post不可以。
4、get请求只能进行url编码,而post支持多种编码方式。
5、get请求参数会被完整保留在浏览器历史记录里,而post中的参数不会被保留。(记住)
6、get参数通过url传递,post放在request body 中。(记住)
7、get请求在url中传送的参数是有长度限制的,而post没有限制。
8、对参数的数据类型,get只接受ASCII字符,而post没有限制。
9、get比post更不安全,因为参数直接暴露在url上,所以不能用来传递敏感信息。

请求地址 

即为URL:统一资源定位符,是一种资源位置的抽象唯一识别方法。

组成:<协议>://<主机>:<端口>/<路径>(端口和路径有时可以省略,HTTP默认端口号是80)

协议版本

协议版本的格式为:HTTP/主版本号.次版本号,常用的有HTTP/1.0和HTTP/1.1

(2)请求头部

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

(3)空行

表示请求头部结束,接下来为请求数据,这一行非常重要,必不可少。

(4)请求数据

下面是一个post请求的请求数据示例

POST  /index.php HTTP/1.1    请求行
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2  请求头
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://localhost/
Content-Length:25
Content-Type:application/x-www-form-urlencoded
  空行
username=aa&password=1234  请求数据

二.服务器发送响应

HTTP响应报文主要由状态行、响应头部、空行以及响应数据组成。

(1)状态行

由3部分组成,分别为:协议版本,状态码,状态码描述。

其中协议版本与请求报文一致,状态码描述是对状态码的简单描述,所以这里就只介绍状态码。

常见状态码

状态代码为3位数字。
1xx:指示信息–表示请求已接收,继续处理。
2xx:成功–表示请求已被成功接收、理解、接受。
3xx:重定向–要完成请求必须进行更进一步的操作。
4xx:客户端错误–请求有语法错误或请求无法实现。
5xx:服务器端错误–服务器未能实现合法的请求。

(2)响应头部

与请求头部类似,为响应报文添加了一些附加信息

(3)响应数据

以下为一个响应示例

 HTTP/1.1 200 OK  状态行
Date: Sun, 17 Mar 2013 08:12:54 GMT  响应头部
Server: Apache/2.2.8 (Win32) PHP/5.2.5
X-Powered-By: PHP/5.2.5
Set-Cookie: PHPSESSID=c0huq7pdkmm5gg6osoe3mgjmm3; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 4393
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8
  空行
  响应数据

HTTP响应示例


Hello HTTP!

 HTTP请求与响应的流程图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值