现在的位置: 首页 > 综合 > 正文

http 基本知识

2018年05月11日 ⁄ 综合 ⁄ 共 1847字 ⁄ 字号 评论关闭

1、http请求的完整事务

2、URL:但部分组成,schema(方案)、服务器的位置、资源路径。方案://服务器位置/路径

方案规定了如何访问指定资源,告诉负责解析URL的应用程序应该使用什么样的协议。

片段:#

为了避开安全字符集表示法带来的限制,设计了一种编码机制,用来在url中表示各种不安全的字符。这种机制就是通过一种“转义”表示法来表示不安全字符的,这种转义表示法包含一个%,后面跟着两个表示字符ASCII嘛的十六进制数。

3、http报文的格式 - 起始行
请求报文:
响应报文:
响应状态码:在下面某个区间内的大致就是那个分类的意思

4、http报文的格式 - 首部
首部就是添加了一些附加的信息,一些名/值对的列表。
通用首部:即可以出现在请求报文中,也可以出现在响应报文中;

请求首部

响应首部

实体首部:描述主体的长度和内容,或资源本身
扩展首部:规范中没有定义的新首部

5、请求方法
head方法:类似于get,但是响应中只有首部,没有主体部分。使用head,可以再不获取资源的情况下了解资源的情况;通过查看响应中的状态码,看看某个对象是否存在;通过查看首部,测试资源是否被修改。

trace方法:允许客户端在最终将请求发送给服务器是,请求是否被修改。trace请求会在目的服务器端发起一个环回诊断响应,在响应主体中携带了请求的原始报文。【trace请求中不能带有实体的主体部分】

options方法:请求web服务器告知其支持的各种功能。可以询问服务器通常支持那些方法,或者对某些资源支持那些方法。

6、HTTp请求的性能

TCP连接的握手延时:小的HTTP事务节能会在YCP连接建立上花费50%,或跟多的时间。【重用现存连接,来减少这个建立连接的损耗】
延时确认:tcp实现了自己的确认机制来确保数据的成功传输,就是在每收到一个分组时,发送确认分组给发送者。发送者如果没有在指定的窗口时间内收到确认信息,就会重新发送数据。延时确认可以有效的利用互联网的流量,但是会照成时延,导致重发。
TCP慢启动:tcp为了防止网络的突然过载,实现了自我的协调,这样,新连接的传输速度会比已经交换过数据的连接要慢一些。

串行事务处理,tcp的性能延时是被叠加的,每个事务都建立一条新的连接,那么连接延时和慢启动延时就会被叠加起来。可以采用:
并行连接:通过多条tcp连接发起并发的http请求。

但是现实中,并行连接并不实际,首先打开大量的连接会很消耗资源,对客户端不利,对服务端也是很耗资源的。
持久连接:重用tcp连接,消除连接和关闭的延时。

初始化了对服务器http请求的应用程序大多会在不久又对这台服务器发起请求,这种性质被称为站点本地性。http1.1允许http设备在事务处理结束后将tcp连接保持在打开的状态,这就是持久连接。非持久连接会在每个事务结束后关闭,持久连接则会在不同事务之间保持打开状态,直到客户端或服务器决定关闭为止。
持久连接有两种类型:
->http/1.0+keep-alive连接:实现http/1.0 keep-alive连接的客户端可以通过包含connection:keep-alive首部请求将一条连接保持在打开状态。如果服务器愿意为下一条请求将连接保持在打开状态,就在响应中包含相同的首部;如果响应中没有connection:keep-alive首部,客户端就认为服务器不支持keep-alive,会在大会响应报文之后关闭连接。

keep-alive并不是默认使用的,客户端必须发送connection:keep-alive请求首部来激活keep-alive连接。
max是服务器还希望够为多少个事务保持此连接的活跃状态;timeout估计了服务器希望将连接保持在活跃状态的时间。

->http/1.1持久连接:http1.1持久连接在默认情况下是激活的,要结束持久连接,http1.1应用程序必须向报文中显示地添加一个connection:close首部。客户端除非在响应中包含了connection:close首部,否则http1.1连接就维持在打开的状态。
如果客户端想关闭持久连接,就在最后一条请求中发送一个connection:close请求首部。

管道化连接:通过共享的tcp连接发起并发的http请求。

这是在持久连接上的进一步优化,在响应到达之前,将多条请求放入到队列。当上一条请求达到服务端时,下面的请求就开始发送了,而不是等到响应才开始发送。
复用的连接:交替传送请求和响应报文。

【上篇】
【下篇】

抱歉!评论已关闭.