ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

HTTP和HTTPS

2021-05-30 14:53:22  阅读:156  来源: 互联网

标签:HTTP1.1 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协议版本

标签:HTTP1.1,HTTP,请求,HTTPS,服务器,客户端
来源: https://blog.51cto.com/u_15192324/2833545

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有