一篇文章让你了解http的前生后世

前言

这篇文章是关于我在看完《图解http》之后总结的一篇文章。文章主要是关于http协议的特点及从http到HTTPS的一个过渡,希望能够对你有所帮助。文章要点:http的特点、http的缺点、HTTPS的概念、SSL安全机制等等。

http的诞生:

在1989年那会儿,互联网还只属于少数人;为了方便这些人之间的通信,人们设计了一种拥有发布和接收HTML页面的方法,这就是http协议的原型。从这之后,在互联网工程人物小组(IETF)的组织和研究下发布了一系列关于http协议的RFC文档,这就成为了当代http协议的原型和基础。

http的基础:

http协议是一个应用层的协议,它能完成工作是基于TCP/IP四层体系架构的,下图是我整理总结的四层架构。

 

TCP/IP通信数据传输结构示意图:

 

一次http请求发生的过程

 

 

URI和URL之间的关系:

URI(Uniform Resource Identifier):统一资源标识符,表示互联网上某一资源。

URL:同一资源定位符,表示资源的地点(互联网上所处的位置)。

从上述来看,URL是URI的子集。

 

http协议的特点:

  1. http协议用于客户端和服务器端的通信。
  2. 客户端和服务器端通过请求和响应的交换达成通信。(通信是客户端开始建立的,服务器在没有收到请求之前是不会发送响应的。)
  3. http是不保存状态的协议。(也就是说http协议对于发送过的请求和响应不做持久化处理),但是时代再进步,用户的需求也在不断提升,需要保持一些状态,因此出现了cookie、session、等技术
  4. http请求使用URI来定位资源。(因为URI的特性,所以互联网上的所有资源都可以被http请求访问到)
  5. http协议中的方法。
Get

获取资源

  • 一般用于查询信息
  • 使用URL传递参数,参数都显示在URL中
  • 对所发送的信息量有限制,一般在2000个字符
Post

传输文件实体

  • 场景:密码、敏感性文字、数据量大
  • 一般用于新建、修改、删除服务器上的资源
  • 对所发送的信息量无限制
Put用来传输文件。没有验证机制,存在安全性问题。
Head获得URI所指定资源的报文头部,跟get一样,只是不返回报文主体部分。
Delete删除URI所指定的资源。
Options询问当前URI指定的资源支持的方法。
Trace追踪http请求的通信路径。
Connect要去用隧道协议连接代理

 

  1. 使http协议实现持久化的技术

Cookie技术

 

使用cookie持久化技术后,则使得http请求以管线化方式发送成为可能。管线化即可实现让多个http请求以并行方式发送,而不必等待响应才可发送请求。

 

http报文结构:

请求行:包含用于请求的方法,请求URI和http版本。

状态行:表明响应结果的状态码,原因短语和http版本。

首部行:包含请求和响应的各种条件和属性的各类首部(通用首部、请求首部、响应首部、实体首部)。

状态码的类别:

因为这里是概述性的总结,所以在此只列举常见的几种状态码,详情请查看该链接:https://blog.csdn.net/GarfieldEr007/article/details/77984065

常见的状态码
200 OK表示从客户端发送的请求在服务器端被正常处理了。
204 No Content请求处理成功,但是没有资源实体返回,返回的响应报文中不包含实体部分。
301 Move Permanently永久性重定向:资源的URI已经更新,需要更新你请求的URI。
302 Found临时性重定向;资源的URI暂时更新,本次按照当前的URI返回,不需要更新当前请求URI。
303 See Other资源重定向,当前资源中有另外一个URI,按照这个URI重新请求资源。
304  Not Modified未修改, 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
400 Bad Request请求错误, 请求报文存在语法错误,服务器理解不了该请求。
401 Unauthorized未经授权的,表示发送的请求需要经过认证才能返回请求资源。
403 Forbidden禁止访问,表示请求资源被服务器进制访问。
404 Not Found未找到,表示服务器上没有请求的资源。
500 Internal Server Error服务器内部处理出错。
503 Service Unavailable服务不可用,表明服务器暂时处于超负载状况或者停机维护状况。

与http协作的web服务器

1、http协议允许在一台http服务器上搭建多个web站点:使用虚拟主机的功能可以让一台物理机实现多台服务器,可以运行不同的网站。

2、http协议通信数据的转发程序(代理、网关、隧道)

代理:

网关:

隧道:

 

从http到HTTPS

为什么要推出HTTPS呢,这是因为http存在以下不足

  1. 通信时使用明文(不加密),内容可能会被窃听。
  2. 不验证通信双方的身份,因此可能遭遇伪装。
  3. 无法证明报文的完整性,所以有可能收到的报文已被恶意篡改。

 

既然使用http通信不安全,那么我们需要找到一种安全的通信方式,这就是https:

                    HTTPS = http + SSL(加密 + 认证 + 完整性保护)

加密:加密是对内容的加密,示意图如下:

这种方式是对报文内容的加密,由于该方式不同于SSL或TLS将整个通信线路做加密处理,所以内容仍有被篡改的可能。

 

验证:http协议中的请求和响应不会对通信方进行确认。任何人都可以发送请求给服务器,服务器对请求也是来者不拒。但是这种机制存在以下几点隐患:

完整性保护:

http协议无法验证收发报文的完整性,报文可能在网络传输中被中间人给篡改。

SSL的加密体制:

通过SSL加密机制现在已经解决了http的明文传输问题和验证通信方问题,剩余的数据完整性问题是通过数据报文摘要(MAC)解决的。

报文摘要(Message Authentication Code): MAC能够查知报文是否遭到篡改,从而保护报文的完整性。

 

SSL体制:要理解完整的SSL体制对我来说有点复杂,因此这里我不做过多叙述,下图是我从书上截取的一张完整的SSL流程图。

http和HTTPS之间的优缺点:

 httpHTTPS
安全性不安全安全
通信速度
CPU消耗

我们可以发现HTTPS解决了http的不足之处,但是又引入了新的问题,如因为对通信数据的加解密,验证等安全操作导致了通信的速度降低等问题(https的网络负载是http的2~100倍)。

 

小结:

本篇文章分析了http协议的特点及从http到HTTPS的过渡,通过这种分析使得我对http有了更好的理解,也是对我之前的学习做一个总结吧。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值