HTTP和HTTPS

Posted 全栈开发Dream

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP和HTTPS相关的知识,希望对你有一定的参考价值。

网络基础之HTTP和HTTPS

前言

最近学习了一下HTTP和HTTPS相关的知识,由于内容比较多,这里总结了一下自己经常错的地方

一、HTTP

1.1 定义

在MDN这样解释

超文本传输协议(HTTP) 是一个用于传输超媒体文档(例如 html)的应用层协议。它是为 Web 浏览器与 Web 服务器之间的通信而设计的,但也可以用于其他目的。HTTP 遵循经典的客户端-服务端模型,客户端打开一个连接以发出请求,然后等待直到收到服务器端响应。HTTP 无状态协议,这意味着服务器不会在两个请求之间保留任何数据(状态)

1.2 特点

  • 全称超文本传输协议
  • 基于TCP/IP通信协议的应用层协议
  • HTTP默认端口号为80
  • 属于无状态协议

    注意:无状态的意思就是对事务处理没有记忆能力,比如增删改查等操作,每次浏览器发起请求,都返回同一个响应内容,每一个响应内容都是独立的,前一次请求获取不到上一次请求的内容信息,这个在数据交互场景中是不允许的。

    举个栗子:

    网站的登录状态、添加商品到购物车、修改用户信息等事务场景,这些都需要在一次操作后把状态记录下来,才能保证浏览器刷新或者点击其他页面时,前面的请求状态都会被记录下来,保证两个页面的关联交互。

1.3 请求方式

方式描述
GET请求指定的页面信息,并返回实体主体。
POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立或已有资源的修改。

区别:

  • 缓存 ---- GET 请求可被缓存,而POST不会被缓存
  • 可见性 ---- GET的请求数据在 URL 中对所有人都是可见的,而POST请求数据不会显示在 URL 中。
  • 历史 ---- GET 请求保留在浏览器历史记录中,而POST不会被保存到浏览器记录中
  • 浏览器书签 ---- GET 请求可被收藏为书签,而POST不能被收藏为书签
  • 数据长度 ---- GET 请求有长度限制,而POST请求对数据长度没有限制
  • 安全性 ---- GET 相比POST不安全

1.4 HTTP1.0、HTTP1.1的区别

  • HTTP1.1相比HTTP1.0节约带宽
  • 缓存处理的不同
    在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准.
    在HTTP1.1中则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。
  • 连接方式的不同以及请求的流水线处理
    HTTP1.0支持短暂连接,每次浏览器发送请求需要建立TCP连接,等到服务器完成请求后再断开连接,而且服务器不跟踪和记录过去的请求。
    HTTP1.1支持长连接,需要增加新的请求头来帮助实现,而且在同一个TCP的连接中可以传送多个HTTP请求和响应。
  • Host头处理不同
    在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名hostname。
    在HTTP1.1的请求消息和响应消息都支持Host头域,且请求消息中如果没有Host头域会报告一个错误:400 Bad Request。
  • 新增错误通知的管理

    在HTTP1.1中新增了24个错误状态响应码。

1.5 HTTP1.1、HTTP2.0的区别

  • HTTP1.1的解析是基于文本协议的各式解析,而HTTP2.0的协议解析是二进制格式,更加的强大。
  • HTTP2.0支持多路复用: 一个连接可以并发处理多个请求。

    一个连接上可以有多个request,且可以随机的混在一起,每个不同的request都有对应的id,服务端可以通过request_id来辨别,大大加快了传输速率。

  • HTTP2.0支持头部数据压缩: HTTP2.0对header的数据进行了压缩,加快了网络传输。

    HTTP1.1中的header需要携带大量信息,而且每次都要重复发送。http2.0使用encode来减少传输的header大小。而且客户端和服务端可以各自缓存一份header filed表,避免了header的重复传输,还可以减少传输的大小。

  • HTTP2.0支持服务端推送: 通过解析html中的资源时,在解析到引入文件时,返回所需的文件(css或者js等),而不用再发起一次请求。

二、HTTPS

2.1 定义

HTTPS(安全的HTTP) 是 HTTP 协议的加密版本。它通常使用 SSL (en-US) 或者 TLS来加密客户端和服务器之间所有的通信 。这安全的链接允许客户端与服务器安全地交换敏感的数据,例如网上银行或者在线商城等涉及金钱的操作。

2.2 特点

  • 内容加密:采用混合加密技术,中间者无法直接查看明文内容
  • 验证身份:通过证书认证客户端访问的是自己的服务器
  • 保护数据完整性:防止传输的内容被中间人冒充或者篡改

三、HTTP和HTTPS的区别

  • HTTP 的URL以http://开头, 而HTTPS的URL以https:// 开头
  • HTTP 是不安全的,而HTTPS 是安全的
  • HTTP 标准端口是80 ,而 HTTPS 的标准端口是443
  • 在OSI 网络模型中,HTTP工作于应用层,而HTTPS 的安全传输机制工作在传输层
  • HTTP 无法加密,而HTTPS 对传输的数据进行加密
  • HTTP无需证书,而HTTPS 需要CA机构wosign的颁发的SSL证书

四、状态码

分类分类描述
1**信息,服务器收到请求,需要请求者继续执行操作
2**成功,操作被成功接收并处理
3**重定向,需要进一步的操作以完成请求
4**客户端错误,请求包含语法错误或无法完成请求
5**服务器错误,服务器在处理请求的过程中发生了错误

1**:信息状态码

状态码名称描述
100继续初始的请求已经接受,请客户端继续发送剩余部分
101切换协议请求这要求服务器切换协议,服务器已确定切换

2**:成功状态码

状态码名称描述
200成功服务器已成功处理了请求
201已创建请求成功并且服务器创建了新的资源
202已接受服务器已接受请求,但尚未处理
203非授权信息服务器已成功处理请求,但返回的信息可能来自另一个来源
204无内容服务器成功处理了请求,但没有返回任何内容
205重置内容服务器处理成功,用户终端应重置文档视图
206部分内容服务器成功处理了部分GET请求

3**:重定向状态码

状态码名称描述
300多种选择针对请求,服务器可执行多种操作
301永久移动请求的页面已永久跳转到新的url
302临时移动服务器目前从不同位置的网页响应请求,但请求仍继续使用原有位置来进行以后的请求
303查看其他位置请求者应当对不同的位置使用单独的GET请求来检索响应时,服务器返回此代码
304未修改自从上次请求后,请求的网页未修改过
305使用代理请求者只能使用代理访问请求的网页
307临时重定向服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求

4**:客户端错误状态码

状态码名称描述
400错误请求服务器不理解请求的语法
401未授权请求要求用户的身份演验证
403禁止服务器拒绝请求
404未找到服务器找不到请求的页面
405方法禁用禁用请求中指定的方法
406不接受无法使用请求的内容特性响应请求的页面
407需要代理授权请求需要代理的身份认证
408请求超时服务器等候请求时发生超时
409冲突服务器在完成请求时发生冲突
410已删除客户端请求的资源已经不存在
411需要有效长度服务器不接受不含有效长度表头字段的请求
412未满足前提条件服务器未满足请求者在请求中设置的其中一个前提条件
413请求实体过大由于请求实体过大,服务器无法处理,因此拒绝请求
414请求url过长请求的url过长,服务器无法处理
415不支持格式服务器无法处理请求中附带媒体格式
416范围无效客户端请求的范围无效
417未满足期望服务器无法满足请求表头字段要求

5**:服务端错误状态码

状态码名称描述
500服务器错误服务器内部错误,无法完成请求
501尚未实施服务器不具备完成请求的功能
502错误网关服务器作为网关或代理出现错误
503服务不可用服务器目前无法使用
504网关超时网关或代理服务器,未及时获取请求
505不支持版本服务器不支持请求中使用的HTTP协议版本

以上是关于HTTP和HTTPS的主要内容,如果未能解决你的问题,请参考以下文章

http和https的区别?

HTTPS原理

http 与 https

网络相关

浅析https

前端面试题-http和https区别