HTTP

HTTPS是HTTP的安全版本,有加密的.

HTTP:(超文本传输协议)
HTTP协议通信的网络应用只能由客户端主动发起,服务端被动响应。
HTTP是基于TCP/IP协议的应用层协议,不涉及数据包的传输,主要是规定了客户端和服务器之间的通信格式。

HTTP各版本上的区别
HTTP 0.9:
只允许客户端发送一种GET请求,并且不支持请求头,因为没有协议头的原因,HTTP 0.9只支持纯文本一种内容,不支持POST方法,所以被弃用
HTTP 1.0:
可传输任何格式的文件。
支持长链接,但是默认情况还是短链接。需要使用keep-alive参数来告知服务器建立一个长链接。
1.HTTP的请求和回应格式也发生了变化,除了要传输的数据之外,每次通信都包含头信息,用来描述一些信息。
2.还增加了状态码(status code)、多字符集支持、多部分发送(multi-part type)、权限(authorization)、缓存(cache)、内容编码(content encoding)等
HTTP 1.1:
使用最多的版本
1.默认长链接,客户端或者服务器如果长时间发现对方没有活动就会关闭链接。
2.节约带宽,HTTP1.1支持只发送header头信息不带任何body信息,如果服务器认为客户端有权限请求指定数据那就返回100,没有就返回401,当客户端收到100的时候可以才把要请求的信息发给服务器。并且1.1还支持了请求部分内容,如果当前客户端已经有一部分资源了,只需要向服务器请求另外的部分资源即可,这也是支持文件断点续传的基础。
3.1.1版本中增加了host处理,在HTTP1.0中认为每台服务器都绑定一个唯一的ip地址,因此在URL中并没有传递主机名,但是随着虚拟机技术的发展,可能在一台物理机器上存在多个虚拟主机,并且他们共享了一个ip地址,http1.1中请求消息和响应消息都支持host头域,如果不存在还会报出错误。
4.新增了Cookie
HTTP 2.0:
1.HTTP2.0版本中支持多路复用,支持同一个链接并发处理多个请求,并且并发请求的数量要比以前高出很多的数量级。
2.更节约带宽:通过算法把header进行了压缩这样数据体积就更小,在网络上传输就更快。
3.支持服务器推送,服务器推送是当客户端请求一定数据的时候,服务器会额外的推送一些客户端可能会用到的信息,这样当客户端再次请求这个信息的时候,就可以直接从本机缓存中读取而不需要再次向服务器请求数据了。

在Http1.0中每一个命令和应答都会触发一次TCP连接的建立和断开。而从HTTP1.0开始,允许在一个TCP连接上发送多个命令和应答。由此大量减少了TCP连接的建立和断开操作,从而提高了效率。

状态码分类描述
1 信息,服务器收到请求,需要请求者继续执行操作
2成功,操作被成功接收并处理
200 请求已成功,请求所希望的响应头或数据体将随此响应返回。
204 No Content(没有内容需要返回)
206 Partial Content(服务器已经完成了部分GET请求)
3 重定向,需要进一步的操作以完成请求
301 Moved Permanently(永久重定向)
302 Found (临时重定向)
303 See Other(表示请求资源存在另一个URI)
304 Not Modified(客户端发送附带条件的请求)
307 Temporary Redirect(临时重定向)/和重定向有相同含义
4 客户端错误,请求包含语法错误或无法完成请求
401 Unauthorized 发送的请求需要有HTTP认证信息或者是认证失败了
403 Forbidden 请求资源的访问被服务器拒绝了
404 Not Found 服务器找不到你请求的资源
5 服务器错误,服务器在处理请求的过程中发生了错误
500 Internal Server Error 服务器执行请求的时候出错了
502 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
503 Service Unavailable 服务器超负载或正停机维护,无法处理请求

OPTIONS:询问支持的方法
用来查询针对请求URI指定的资源支持的方法。
如响应中:Allow:GET,POST,HEAD,OPTIONS

TRACE:追踪路径
CONNECT:要求应隧道协议连接代理
LINK:建立和资源之间的联系(1.1后废弃)
UNLINK:断开连接关系(1.1后废弃)

管线化技术:
不用等待响应就可以发送下一次请求。

请求报文和响应报文:
在这里插入图片描述

Cache-Control:no-cache 代表不缓存过期的资源,缓存会向源服务器进行有效期确认后处理资源。
Cache-Control:no-store 代表不进行缓存。

HTTP的缺点:
1.通信使用明文,内容可能会被窃听。
2.不验证通信方的身份,因此有可能遭遇伪装。
3.无法证明报文的完整性,所以有可能会被纂改。

明文被窃听:
HTTP本身不具备加密的功能。

不验证通信方的身份可能遭遇伪装:
HTTP协议不管是谁发送过来的请求都会返回响应。
1.无法确定请求发送至目标的Web服务器是否是按真实意图返回响应的那台服务器。有可能是已伪装的Web服务器。
2.无法确定响应返回到的客户端是否是按真实意图接收响应的那个客户端。有可能是伪装的客户端。
3.无法确定正在通信的对方是否具备访问权限,某些Web可能只想给特定用户通信的权限。
3.无法判定请求来自何方。
4.即使是无意义的请求也会照单全收(海量请求的Dos攻击)

无法证明报文完整性
可能遭遇攻击者拦截纂改(MITM中间人攻击)

HTTP的性能瓶颈:
1.一条连接上只可以发送一个请求。
2.请求只能从客户端开始。客户端不可以接收除响应以外的指令。
3.请求/响应首部未经压缩就发送,首部信息越多延迟越大。
4.发送冗余的首部。每次互相发送相同的首部造成的浪费较多。
5.可任意选择数据压缩格式。非强制压缩发送。

SPDY的设计与功能:
为了优化HTTP的瓶颈问题,由GOOGLE编写的技术。
通过新增会话层的形式运作,控制对数据的流动,通信中使用SSL。
下层TCP,上层HTTP。所以原有的功能都可以复用。
1.多路复用:通过单一的TCP连接,可以无限制处理多个HTTP请求。
2.赋予请求优先级:无限制并发处理请求,还可以给每个请求逐个分配优先级顺序,解决低带宽带来的限制。
3.压缩HTTP首部:请求和响应。
4.推送功能:支持服务器主动向客户端推送数据的功能。
5.服务器提示功能:服务器可以主动提示客户端请求所需的资源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值