HTTP协议和HTTPS协议

HTTP协议

1、什么是HTTP

HTTP(超文本传输协议)是一个简单的请求—响应协议,它通常基于TCP之上

2、两个时代

  • http1.0:客户端与web服务器建立连接后,只能获取一个web资源。
  • http2.0:客户端和web服务器建立连接后,可以获取多个web资源。

3、Http请求

3.1、Http请求包括的内容

  • 客户端连接到服务器后,向服务器请求某个web资源,称为客户端向服务器发送了一个请求。
  • 一个完整的Http请求包括以下内容:一个请求头、多个请求内容、以及实体内容
    HTTP协议和HTTPS协议

3.2 请求行

  • 请求中的请求方式:GET、POST
  • GET、POST的区别
    GET:一次请求能包含的参数比较少、大小有限制、会在浏览器的URL地址栏显示数据,不安全、但高效
    POST:一次请求能够包含的参数多、大小没有限制、不会在浏览器的URL地址栏显示数据、安全、但不高效
    HTTP协议和HTTPS协议

3.3消息头

HTTP请求中的常用消息头

  • Accept:浏览器通过这个头告诉服务器,它所支持的数据类型
  • Accept-Charset:浏览器通过这个这个头告诉服务器,它支持那种字符集
  • Accept-Encoding:浏览器通过这个头告诉服务器,它支持的编码格式
  • Accept-Language:浏览器通过这个头告诉服务器,它的语言环境
  • Host:浏览器通过这个头告诉服务器,想访问哪台主机
  • Referer:浏览器通过这个头告诉服务器,客户机是哪个页面来
  • If-Modified-Since: 浏览器通过这个头告诉服务器,缓存数据的时间的 防盗链
  • Connection:浏览器通过这个头告诉服务器,请求完后是断开链接还是何持链接

4.Http响应

4.1、Http响应包括的内容

一个Http响应代表服务器向客户端回送的数据,它包括:一个状态头、若干个消息头、以及实体内容
HTTP协议和HTTPS协议

4.2 状态行

  • 首行:[版本号]+[状态码]+[状态码解释]
  • 状态码用于表示服务器对请求的处理结果,它是一个三位的十进制数。响应状态码分为5类,如下所示:
    HTTP协议和HTTPS协议

    4.3常用响应头

    HTTP响应中的常用响应头(消息头):
    • Location:服务器通过这个头,告诉浏览器跳到哪里
    • Server:服务器通过这个头,告诉浏览器服务器的型号
    • Content-Encoding:服务器通过这个头,告诉浏览器,数据的编码格式
    • Content-Length: 服务器通过这个头,告诉浏览器回送数据的长度
    • Content-Language: 服务器通过这个头,告诉浏览器语言环境
    • Content-Type:服务器通过这个头,告诉浏览器回送数据的类型
    • Refresh:服务器通过这个头,告诉浏览器定时刷新
    • Content-Disposition: 服务器通过这个头,告诉浏览器以下载方式打数据
    • Transfer-Encoding:服务器通过这个头,告诉浏览器数据是以分块方式回送的
    • Expires: -1 控制浏览器不要缓存
    • Cache-Control: no-cache 缓存控制
    • Pragma: no-cache

5.HTTP的特点

1、支持客户/服务器模式。(C/S模式)
2、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4、无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5、.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快

6.HTTP工作流程

1、建立TCP/IP连接,客户端与服务器通过Socket三次握手进行连接
2、客户端向服务端发起HTTP请求(例如:POST/login.html http/1.1)
3、客户端发送请求头信息,请求内容,最后会发送一空白行,标示客户端请求完毕
4、服务器做出应答,表示对于客户端请求的应答,例如:HTTP/1.1 200 OK
5、服务器向客户端发送应答头信息
6、服务器向客户端发送请求头信息后,也会发送一空白行,标示应答头信息发送完毕,接着就以Content-type要求的数据格式发送数据给客户端
7、服务端关闭TCP连接,如果服务器或者客户端增Connection:keep-alive就表示客户端与服务器端继续保存连接,在下次请求时可以继续使用这次的连接

7.HTTP和HTTPS的区别

1、Http协议需要到ac申请证书,一般免费的证书比较少,因而需要一定的费用
2、http是超文本传输协议,信息是明文传输的,https是具有安全s性的ssl加密传输协议
3、http和https使用的是完全不同的链接方式,用的端口号不同,http是80,https是443
4、http的链接是十分简单的,是无状态的;https协议是由ssl+HTTP协议构建的可进行加密传输、身份认证的网络协议、比http安全

8.HTTPS特点

HTTPS是HTTP协议的修改,它加密数据并确保其机密性。其配置可保护用户在与网站交互时免于窃取个人信息和计费数据。
1、优点:
相比于http,https可以提供更加优质保密的信息,保证了用户数据的安全性,此外https同时也一定程度上保护了服务端,使用恶意攻击和伪装数据的成本大大提高。

2、缺点:

  • https的技术门槛较高,多数个人或者私人网站难以支撑,CA机构颁发的证书都是需要年费的,此外对接Https协议也需要额外的技术支持
  • 目前来说大多数网站并不关心数据的安全性和保密性,其https最大的优点对它来说并不适用
  • https加重了服务端的负担,相比于http其需要更多的资源来支撑,同时也降低了用户的访问速度
  • 目前来说Http网站仍然大规模使用,在浏览器侧也没有特别大的差别,很多用户不关心的话根本不感知。

9.HTTPS工作流程

1、客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。
2、Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
3、客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
4、客户端的浏览器根据双方同意的安全等级,建立会话**,然后利用网站的公钥将会话**加密,并传送给网站。
5、Web服务器利用自己的私钥解密出会话**。
6、Web服务器利用会话**加密与客户端之间的通信。