网络-HTTP不同版本之间的对比

####不管在找实习还是找工作的时候,关于http协议以及延伸出的一些问题都会经常被问到。专门小结一下。


####首先介绍下HTTP/1.0和HTTP/1.1:
#####1、HTTP/1.0:HTTP 协议老的标准是HTTP/1.0,为了提高系统的效率,HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。
#####2、HTTP/1.1:为了克服上述HTTP 1.0对于短连接的缺陷,HTTP 1.1支持持久连接(HTTP/1.1的默认模式使用带流水线的持久连接),在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。


####HTTP/1.0和HTTP/1.1对比
#####1、HTTP/1.0是短连接,每对请求/ 响应都使用一个新的连接;而HTTP/1.1则是默认持久连接;(HTTP 1.1的持续连接,也需要增加新的请求头来帮助实现,例如,Connection请求头的值为Keep-Alive时,客户端通知服务器返回本次请求结果后保持连接;Connection请求头的值为close时,客户端通知服务器返回本次请求结果后关闭连接。)
#####2、请求方法:HTTP1.1增加了OPTIONS, PUT, DELETE, TRACE, CONNECT这些Request方法;
#####3、状态码:HTTP/1.0中只定义了16个状态响应码,对错误或警告的提示不够具体。HTTP/1.1引入了一个Warning头域,增加对错误或警告信息的描述;在HTTP/1.1中新增了24个状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。
#####4、Host域: HTTP1.1在Request消息头里头多了一个Host域,比如:


       GET /pub/WWW/TheProject.html HTTP/1.1

       Host: www.w3.org

       HTTP1.0则没有这个域。

#####由于HTTP 1.0不支持Host请求头字段,WEB浏览器无法使用主机头名来明确表示要访问服务器上的哪个WEB站点,这样就无法使用WEB服务器在同一个IP地址和端口号上配置多个虚拟WEB站点。在HTTP 1.1中增加Host请求头字段后,WEB浏览器可以使用主机头名来明确表示要访问服务器上的哪个WEB站点,这才实现了在一台WEB服务器上可以在同一个IP地址和端口号上使用不同的主机名来创建多个虚拟WEB站点。
#####更详细的可访问https://blog.csdn.net/hudashi/article/details/50789164


####HTTP 1.1状态代码及其含义
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
1xx:指示信息–表示请求已接收,继续处理
2xx:成功–表示请求已被成功接收、理解、接受
3xx:重定向–要完成请求必须进行更进一步的操作
4xx:客户端错误–请求有语法错误或请求无法实现
5xx:服务器端错误–服务器未能实现合法的请求


HTTP的缺点

#####主要有以下几点:
#####1、通信使用明文(不加密),内容可能会被窃听:窃听并非难事,只需要收集互联网上流动的数据包(帧)就行了。对于收集来的数据包的解析工作就可使用抓包工具(例如Wireshark或者Fiddler);
#####2、不验证通信方的身份,因此有可能遭遇伪装:在HTTP通信中,任何人都可以发起请求,并且服务器只要收到请求,不管是谁都会返回一个响应,所以就会有一些攻击是利用合理的服务请求来占用过多的服务资源,从而使服务器无法处理合法用户的指令;
#####3、无法证明报文的完整性,所以有可能已遭篡改:由于HTTP协议无法证明通信的报文完整性,因此在请求或响应送出之后直到对方接收之前的这段时间内,即使请求或响应的内容遭到篡改,也没有办法获悉;也就是说没有办法确认发出的请求/响应和接受到的请求/响应是前后相同的;为了防止篡改,常用的有MD5以及用来确认文件的数字签名方法。


####HTTPS = HTTP + 加密 + 认证 + 完整性保护
#####在上面简单的归纳了HTTP的缺点,为了统一解决这些问题,就有了所谓的HTTPS。HTTPS 在 HTTP 应用层的基础上使用安全套接字层作为子层,也可以将HTTPS称为是身披SSL(Secure Socket Layer)外壳的HTTP;在之前的HTTP中,HTTP直接和TCP进行通信,当使用SSL时,就变成了HTTP先和SSL通信,然后再由SSL和TCP进行通信。
这里写图片描述
#####SSL采用一种叫做公开密钥的加密处理方式。公开密钥加密使用一对非对称的密钥,一把叫做私有密钥,另一把叫做公开密钥。使用公开密钥加密方式,发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。但是公开密钥加密还是无法证明公开密钥本身就是货真价实的公开密钥。所以HTTPS中还引入了由数字证书认证机构和其相关机关颁发的公开密钥证书。


####HTTPS的工作流程

这里写图片描述


####HTTP和HTTPS的对比
#####1、HTTP 的 URL 以 http:// 开头,而 HTTPS 的 URL 以 https:// 开头
#####2、HTTP 是不安全的,而 HTTPS 是安全的
#####3、HTTP 标准端口是 80 ,而 HTTPS 的标准端口是 443
#####4、在 OSI 网络模型中,HTTP 工作于应用层,而 HTTPS 工作在传输层
#####5、HTTP 无需加密,而 HTTPS 对传输的数据进行加密
#####6、HTTP 无需证书,而 HTTPS 需要认证证书(收费)
#####7、HTTPS使用SSL时,会导致通信变慢以及由于大量消耗CPU及内存资源,导致处理速度变慢

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值