史上最全http和https协议详(哦)解(吼)?不懂来打我~

作者变优秀的小白

Github关注YX-XiaoBai

爱好Americano More Ice !

QQ学习交流群(new): 811792998

目录

http和https协议

http协议是什么

http全称为Hyper Text Transfer Protocol。它是从web服务器传输HTML(超文本标记语言)到本地游览器的传输协议

存在问题:

  • 请求信息明文传输,容易被窃听截取。
  • 数据的完整性未校验,容易被篡改
  • 没有验证对方身份,存在冒充危险

http原理

http是一个基于tcp/ip来传输数据的协议,传输数据类型包括htmlimage

http大多数用于B/S架构。游览器(相当于http客户端)–>通过URL–>访问http服务端,也就是发送请求过程

举个访问www.baidu.com例子

1. DNS域名解析为服务器IP
2. 发起TCP请求,完成3次握手(建立连接)
3. 客户端发送HTTP请求
4. 服务器响应,返回HTTP响应
5. 客户端将响应的HTML和资源渲染到前端给用户

http特点

  • B/S模式
  • 简单快速: 向服务端请求服务时,只需传送请求方法和路径
  • 灵活: http允许传输任意类型的数据对象(COntent-Type)
  • 无连接: 限制每次连接只处理一个请求。弥补不足,出现了记录http状态的技术(CookieSession)
  • 无状态: 事务处理没有记忆,后续处理需传递前面的信息

URL和URI区别

http使用URI来建立连接和传输数据

  • URI: 统一资源标识符,Uniform Resource Identifier
    • 作用: 用于标识一个具体资源是什么
  • URL: 统一资源定位符,Uniform Resource Location
    • 作用: 用于定义一个具体资源在哪里

http报文组成

一个http报文由一个请求和响应报文构成

请求报文
  • 请求行: 包括请求MethodUrlProtocol/Version
  • 请求头: 包括Content-TypeCookie等等
  • 请求正文: 如Body
响应报文
  • 状态行: 包括响应Protocol/VersionStatus(如200/304/404/500等状态🐴)
  • 响应头: 与请求头类似
  • 响应正文: 请求后响应的内容
post和get区别
GETPOST
参数URL中Body中
请求作用一般用于获取资源一般用于更新资源,改变服务器数据
最大长度因为在URL中,所以有最大长度。大多数游览器限制为8KB默认下没有最大长度,但大多数游览器都会有最大长度
参数缓存在参数无修改情况下(会缓存),以减少工作时间几乎不会缓存Post参数(行业标准)
服务器不应该更改服务器,以发出相同的请求可更改服务器,post不缓存且没有最大长度限制

响应状态码

当客户端访问一个网页时,游览器会向web server发出请求,网页所以在的服务器返回一个包含http状态码的信息头以响应游览器请求

状态码类别
  • 1XX(信息响应): 服务器收到请求,等待请求者操作
  • 2XX(成功响应): 客户端请求成功收到,服务器处理
  • 3XX(重定向): 客户端进一步操作完成请求
  • 4XX(客户端错误): 请求端出现报错无法完成请求
  • 5XX(服务器错误): 服务端处理请求发生错误
常见状态码
  • 信息响应
    • 100 Continue: 临时响应表明,迄今为止的所有内容都是可行的,客户端应该继续请求,如果已经完成,则忽略它
    • 101 Switching Protocol: 是响应客户端的 Upgrade 标头发送的,并且指示服务器也正在切换的协议
    • 102 Processing: 表示服务器已收到并正在处理该请求,但没有响应可用
    • 103 Early Hints: 主要用于与 Link 链接头一起使用,以允许用户代理在服务器仍在准备响应时开始预加载资源。
  • 成功响应
    • 200 OK: 请求成功
    • 201 Created: 该请求已成功,并因此创建了一个新的资源
    • 202 Accepted: 请求已经接收到,但还未响应,没有结果
    • 204 No Content: 服务器成功处理了请求,但不需要返回任何实体内容,并且希望返回更新了的元信息
  • 重定向
    • 300 Multiple Choice: 被请求的资源有一系列可供选择的回馈信息,每个都有自己特定的地址和浏览器驱动的商议信息
    • 301 Moved Permanently: 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一
    • 302 Found: 请求的资源现在临时从不同的 URI 响应请求
    • 303 See Other: 对应当前请求的响应可以在另一个 URI 上被找到,而且客户端应当采用 GET 的方式访问那个资源
    • 304 Not Modified: 如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码
    • 308 Permanent Redirect: 这意味着资源现在永久位于由 Location: HTTP Response 标头指定的另一个 URI
  • 客户端错误
    • 400 Bad Request: 语义有误,当前请求无法被服务器理解(不可重复提交); 或者请求参数有误
    • 401 Unauthorized: 当前请求需要用户验证(即没有身份验证,如token丢失等)
    • 403 Forbidden: 服务器已经理解请求,但是拒绝执行它(不可重复提交)
    • 404 Not Found: 请求失败,请求所希望得到的资源未被在服务器上发现
    • 405 Method Not Allowed: 请求行中指定的请求方法不能被用于请求相应的资源
    • 406 Not Acceptable: 请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体
    • 407 Proxy Authentication Required: 与401响应类似,只不过客户端必须在代理服务器上进行身份验证
    • 408 Request Timeout: 请求超时
    • 409 Conflict: 由于和被请求的资源的当前状态之间存在冲突,请求无法完成
    • 426 Upgrade Required: 服务器拒绝使用当前协议执行请求,但可能在客户机升级到其他协议后愿意这样做
    • 429 Too Many Requests: 用户在给定的时间内发送了太多请求(“限制请求速率”)
    • 431 Request Header Fields Too Large: 服务器不愿意处理请求,因为它的 请求头字段太大
  • 服务端错误
    • 500 Internal Server Error: 服务器遇到了不知道如何处理的情况。
    • 501 Not Implemented: 此请求方法不被服务器支持且无法被处理。(GET和HEAD是要求服务器支持的,不可能出现此错误代码)
    • 502 Bad Gateway: 此错误响应表明服务器作为网关需要得到一个处理这个请求的响应,但是得到一个错误的响应
    • 503 Service Unavailable: 服务器没有准备好处理请求(常见是服务器维护或炸了)
    • 504 Gateway Timeout: 当服务器作为网关,不能及时得到响应时返回此错误代码
    • 505 HTTP Version Not Supported: 服务器不支持请求中所使用的HTTP协议版本
    • 506 Variant Also Negotiates: 服务器有一个内部配置错误:对请求的透明内容协商导致循环引用
    • 508 Loop Detected (WebDAV): 服务器在处理请求时检测到无限循环
    • 510 Not Extended: 客户端需要对请求进一步扩展,服务器才能实现它。

什么是https

https(HyperText Transfer Protocol over Secure Socket Layer)即http+ssl/tls,后面的ssl是用于验证服务器的身份,并为游览器和服务器之间通信加密

SSL又是啥?

  • SSL(Secure Socket Layer,安全套接字层):1994年为 Netscape 所研发,SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持
  • TLS(Transport Layer Security,传输层安全):其前身是 SSL,它最初的几个版本(SSL 1.0、SSL 2.0、SSL 3.0)由网景公司开发,1999年从 3.1 开始被 IETF 标准化并改名,发展至今已经有 TLS 1.0、TLS 1.1、TLS 1.2 三个版本。SSL3.0和TLS1.0由于存在安全漏洞,已经很少被使用到。TLS 1.3 改动会比较大,目前还在草案阶段,目前使用最广泛的是TLS 1.1、TLS 1.2

https传输数据流程(认证过程)

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

https缺点

  1. HTTPS协议多次握手,导致页面的加载时间延长近50%;
  2. HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗;
  3. 申请SSL证书需要钱,功能越强大的证书费用越高。
  4. SSL涉及到的安全算法会消耗 CPU 资源,对服务器资源消耗较大。

http和https请求的区别

httphttps
数据传输不安全安全,HTTPS使用了SSL/TLS协议进行了加密处理
连接方式不同,默认端口80443

浏览器对https证书进行认证的目的

  • 检验证书是否是信任的有效证书。游览器内置了信任的根证书,确保证书是信任的机构颁发;确保证书在有效期内
  • 对方是不是上述证书的合法持有者。验证对方是否持有证书私钥
结束语:你不懂来打我,当然~如果遇到什么疑问或者建议的,可直接留言评论!作者看到会马上一一回复!
如果觉得小白此文章不错或对你有所帮助,期待你的一键三连💫!❤️ni!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值