HTTP与HTTPS

HTTP和HTTPS

HTTP(超文本传输协议)—Web的应用层协议

  • HTTP使用客户-服务器体系结构
    Web浏览器实现了HTTP的客户端
    Web服务器(用于存储Web对象)实现了HTTP的服务器端
  • HTTP定义了Web客户向Web服务器请求Web页面的方式,以及Web服务器向Web客户传送Web页面的方式
    HTTP与HTTPS_第1张图片
  • HTTP使用TCP作为它的支撑运输协议,套接字是应用层和运输层之间的接口。也就是说HTTP请求报文由Web浏览器生成,经套接字发向运输层,紧接着HTTP请求报文由TCP传输向Web服务器,Web服务器从它的套接字接口接收请求报文。HTTP响应报文与其相反。
    HTTP与HTTPS_第2张图片
    HTTP与HTTPS_第3张图片
  • HTTP是一种无状态协议,即服务器向客户发送被请求的文件,而不存储关于该客户的状态信息。
    假如某个特定的客户在短短的几秒钟内两次请求同一个对象,服务器并不会因为刚刚为该客户提供了该对象就不再做出反应,而是重新发送该对象。
  • 采用非持续连接的HTTP,即每个请求/响应对是经一个单独的 TCP 连接发送
    eg:某客户端向服务器请求一个Web页面(该页面中包涵1个HTML文件和10个JPEG图像文件,且这11个文件位于同一个服务器上),页面含有一个 HTML 基本文件和 10 JPEG 图形,并且这 11 个对象位于同一台服务器上。该HTML文件的URL为http://www.someSchool.edu/someDepartment/home.index
    我们给出一次请求的图示
    HTTP与HTTPS_第4张图片
    由图可以看出一次TCP连接只发送了一条HTTP请求报文就断开了,因此该连接是非持续连接
    第一次的HTTP响应报文中包含一个HTML文件,检查该HTML文件,得到对10个JPEG图形文件的引用,然后对每个引用的JPEG图形文件重复如图所示的过程。因此,当用户请求该页面时,需要产生11个TCP连接
    非持续链接的缺点:
    ①必须为每一个请求的对象建立和维护一个全新的连接,这给Web服务器带来了严重的负担
    ②每一个对象都要经受创建TCP连接的时延
  • 采用持续连接的HTTP,所有的请求及响应通过相同的TCP连接发送
    服务器在发送响应后保持该 TCP 连接打开,在相同的客户与服务器之间的后续请求和响应报文能够通过相同的连接进行传送。一般来说,如果一条连接经过一定时间间隔( 可配置的超时间隔)仍未被使用,HTTP 服务器就关闭该连接.这样便克服了非持续连接的缺点。
  • 接下来我们便通过实验来看一下HTTP/1.1采用的是持续连接还是非持续连接
    实验之前我们先明确一下连接方式在HTTP报文中的体现形式
    ①在首部字段中设置Connection:close,则在一次请求/响应之后,就会关闭连接。
    ②在首部字段中设置Connection:keep-alive 和Keep-Alive: timeout=60,表明连接建立之后,空闲时间超过60秒之后,就会失效。如果在空闲第58秒时,再次使用此连接,则连接仍然有效,使用完之后,重新计数,空闲60秒之后过期。
    ③在首部字段中只设置Connection:keep-alive,表明连接永久有效。
    实验结果:
    HTTP与HTTPS_第5张图片
    由图可知,HTTP/1.1的请求报文默认采用的是无过期时间的持续连接
    HTTP与HTTPS_第6张图片
    由图可知,HTTP/1.1的响应报文默认采用的是有过期时间的持续连接
  • HTTP请求报文格式
    HTTP与HTTPS_第7张图片
    eg:
    HTTP与HTTPS_第8张图片
  • HTTP响应报文格式
    HTTP与HTTPS_第9张图片
    eg:
    HTTP与HTTPS_第10张图片
    常见状态码
    • 200 OK: 请求成功 信息在返回的响应报文中
    • 301 Moved Permanently: 请求的对象已经被永久转移了,新的 URL 定义 在响应报文的Location: 首部行中 客户软件将自动获取新的 URL
    • 400 Bad Request: 一个通用差错代码,指示该请求不能被服务器理解
    • 404 Not FOUND: 被请求的文档不在服务器上
    • 505 HTTP Version Not Supported: 服务器不支持请求报文使用的 HTTP 协议版本
  • cookie-----Web服务器站点对用户进行跟踪
    前面我们提到,HTTP协议是无状态的,也就是说服务器并不能获取到用户的信息,然而有时间服务器希望跟踪用户信息,以提供更符合需求的服务(例如某个用户的购物车),这时候便需要一种称为cookie的技术
    cookie的组件
    HTTP请求报文中的一个cookie首部行
    HTTP响应报文中的一个cookie首部行
    在用户端系统中保留有 cookie文件,并由用户的浏览器进行管理
    位于Web服务器站点的一个后端数据库
    cookie的工作原理
    HTTP与HTTPS_第11张图片
  • Web缓存器------代理服务器
    通过Web缓存器可以大大减少对客户的响应时间
    HTTP与HTTPS_第12张图片
    大致工作过程是当用户进程发起一个HTTP请求时,浏览器建立一个到Web缓存器的TCP连接,Web缓存器检查自身是否存储了浏览器所请求对象的对象副本,若有,就以HTTP响应报文的形式发送给浏览器;若没有,Web缓存器则建立一个与该对象初始服务器的TCP连接,并向该初始服务器发送HTTP请求报文,初始服务器将该对象以HTTP响应报文的形式返回给Web缓存器,当Web缓存器接收到该响应报文时,在本地建立该对象的一个副本,并向用户浏览器以HTTP响应报文的形式发送该对象副本
    若初始服务器中的对象发生改变,则Web缓存器中的对象副本失效,所以在Web缓存器命中时我们应当检查缓存器中的对象副本是否失效
    检查方法(条件:①请求报文是GET方法;②请求报文中包含一个If-Modified-Since:首部行):
    If-Modified-Since:首部行中的值正好等于对象副本中Last- Modified :首部行的值
    Web缓存器向该对象的初始服务器发送一条HTTP请求报文,该报文告诉服务器仅当自 If-Modified-Since:之后该对象被修改过,才向Web缓存器发送该对象,若未被修改过,则返回一条实体体为空的报文,这样节省了带宽。

HTTPS—超文本传输安全协议
上面我们介绍了HTTP协议,应该注意到的是使用HTTP协议发送的数据都是明文,也就是说,一旦数据被截获,一些隐私数据就会暴露,因此我们使用HTTPS来解决这个安全性问题

  • 在介绍HTTPS之前我们先介绍几个概念:
    对称加密:加密和解密使用同一个密钥,称为私钥
    加密过程:明文+加密算法+私钥=密文
    解密过程:密文+解密算法+私钥=明文
    非对称加密:使用一对密钥,一个公钥,一个私钥
    被公钥加密过的密文只能被私钥解密,过程如下:
    明文 + 加密算法 + 公钥=密文, 密文 + 解密算法 + 私钥=明文
    被私钥加密过的密文只能被公钥解密,过程如下:
    明文 + 加密算法 + 私钥=密文, 密文 + 解密算法 + 公钥=明文
  • HTTPS=HTTP+SSL/TLS协议(TLS是SSL版本3的修改版,在此我们讨论SSL)
    SSL—安全套接字层
    HTTP与HTTPS_第13张图片
  • HTTPS工作原理
    该图片取自博客虎爸的杂货铺
    HTTP与HTTPS_第14张图片

你可能感兴趣的:(网络,http,https,网络)