http1详解

1、http1.1请求处理流程

http属于TCP/IP模型中的应用层协议,而两个应用程序(此处指浏览器与服务器)之间要进行相互通信,首先得建立TCP连接,然后浏览器才能向服务器发送请求信息,服务器在接受到请求信息后,返回相应的应答信息,浏览器接收到来自服务器的应答信息后,对这些数据进行解释执行。

1)http1.0的版本中,浏览器的每次请求(即对每个页面的访问)都要求建立一次单独的TCP连接,在处理完每一个的请求后,就自动释放连接。如下图:

 

也就是说,在http1.0中,当建立连接后,客户端发送一个请求,服务器端返回一个信息后就关闭连接,当浏览器下次请求的时候又要建立连接,显然这种不断建立连接的方式,会造成很多问题。

2)http1.1则可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后再发送下一个请求。如下图所示:


 

也就说,在http1.1中,引入了持续连接的概念,通过这种连接,浏览器可以建立一个连接之后,发送请求并得到返回信息,然后继续发送请求再次等到返回信息,即客户端可以连续发送多个请求,而不用等待每一个响应的到来。

3)Http工作过程:

a、客户机(web浏览器)与服务器建立TCP连接(TCP的三个握手)

b、Web浏览器向web服务器发送请求Http命令

c、Web服务器接受请求并返回http响应

d、服务器关闭TCP连接(TCP的四次挥手)

e、客户端浏览器解析HTML内容

注意:如果浏览器或者服务器在其头信息加入了这行代码Connection:keep-alive时,TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

2、http1.1请求方法

http协议中,http请求可以使用多种请求方法,这些方法指明了要以何种方式来访问Request-URL所标识的资源。http1.1支持的请求方法如下:

(1)Get

Get方法用于获取由Request-URL所标识的资源的信息。Get方法时默认的http请求方法。

(2)Post

请求服务器,让其接受请求中的实体,以作为被请求资源的一个新的从属物。

该方法的响应是不可缓存的。

(3)Put

Put方法请求服务器去把请求里的实体存储在请求URL(Request-URL)标识下。

该方法的响应是不可缓存的,除非响应里有合适的cache-Control或者Expires头域。

(4)Delete

Delete方法请求源服务器删除请求URL指定的资源。

该方法的响应是不能被缓存的。

(5)Head

获取请求实体的头域信息而不需要传输实体主体。

该方法的响应是可缓存的。

(6)Options

获取请求/响应过程中,目标资源(URL执行的资源)可以使用的通信选项信息,检查服务器的性能

该方法的响应是不能被缓存的。

(7)Trace

用于激发一个远程的,应用层的请求消息回路。

该方法的响应是不能被缓存的。

(8)Connect

动态切换到隧道的代理。

注意:这是http1.1协议规范保留的一个方法。

3、http1.1浏览器缓存

浏览器缓存包括页面Html,image,js,css等资源的缓存

(1)缓存工作原理

a) 第一次请求:浏览器通过http的header报头,附带Expires,cache-Control,last-modified/Etag向服务器请求,此时服务器记录第一次请求的last-modified/Etag

b) 再次请求:当浏览器再次请求的时候,请求头附带Expires,cache-Control,ifmodified/Etag向服务器请求

c) 服务器根据第一次记录的last-modified/Etag和再次请求的if-modified/Etag做对比,判断是否需要更新,服务器通过这两个头判断本地资源未发生变化,客户端不需要重新下载,返回304响应。

(2)缓存的优点

a) 服务器响应更快:因为请求从缓存服务器(离客户端最近)而不是源服务器被响应,这个过程耗时更少,让服务器看上去响应更快。

b) 减少网络带宽消耗:当副本被重用时会减少客户端的带宽消耗;客户可以节省带宽费用,控制带宽需求的增长并易于管理。

总之:

(1)http1.0协议使用非持久连接,即在非持久连接下,一个TCP连接只能传输一个web对象。

(2)http/1.1默认使用持久连接(然而,http/1.1协议的客户机和服务器可以配置成使用非持久连接)。在持久连接下,不必为每个web对象的传送建立一个新的连接,一个连接中可以传输多个对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值