首页 > 其他分享 >HTTP 与 HTTPS 的区别

HTTP 与 HTTPS 的区别

时间:2022-12-06 17:03:45浏览次数:38  
标签:HTTP 请求 区别 SSL HTTPS 服务端 客户端

HTTP

基础

HTTP 超文本传输协议 ,应用层协议。主要用于 Web 上传输超媒体文本的底层协议,经常在浏览器和服务器之间传递数据。通信就是以纯文本的形式进行。

HTTP 是无状态

无状态是 HTTP 协议对客户端请求状态没有进行存储,比如每次请求都需要重新登录

HTTP 与 HTTPS 的区别_HTTP

HTTP 是无连接

无连接主要是限制每次连接只处理一个请求。每次请求都是客户发起请求,服务端响应请求,然后就断开连接。这期间就是通过三次握手建立连接,四次挥手断开连接。每次请求即便是多次请求并请求同一个资源,服务端都无法判断是否是相同请求,都需要重新响应请求。

所以,为了解决客户端和服务端保持会话连接,通过 cookie 和 session 来记录 http 状态。

HTTP 的其他特点是简单快速,只需传送方法和路径就可以向服务端进行请求;还有支持传输任意类型的数据对象。

HTTPS

基础

https 是 http 的“升级”版本:

HTTPS = HTTP+ SSL/TLS 复制代码

SSL 是安全层,TLS 是传输层安全,是SSL 的继承。使用SSL或TLS 可确保传输数据的安全性。

使用 HTTP 可能看到传输数据是: “这是明文信息”

使用 HTTPS 可能看到: “283hd9saj9cdsncihquhs99ndso”

HTTPS 传输的不再是文本,而是二进制流,使得传输更高效,且加密处理更加安全。

HTTPS 的工作流程

1、客户端请求 HTTPS 请求并连接到服务器的 443 端口,此过程和请求 HTTP 请求一样,进行三次握手;

2、服务端向客户端发送数字证书,其中包含公钥、证书颁发者、到期日期

现比较流行的加解密码对,即公钥和私钥。公钥用于加密,私钥用于解密。所以服务端会保留私钥,然后发送公钥给客户端。

3、客户端收到证书,会验证证书的有效性。验证通过后会生成一个随机的 pre-master key。再将密钥通过接收到的公钥加密然后发送给服务端

4、服务端接收后使用私钥进行解密得到 pre-master key

5、获得 pre-master key 后,服务器和客户端可以使用主密钥进行通信。

HTTP 与 HTTPS 区别

所以在回答 HTTP 与 HTTPS 的区别的问题,可以从下面几个方面进行回答:

  • 加密: HTTPS 是 HTTP 协议的更加安全的版本,通过使用SSL/TLS进行加密传输的数据;
  • 连接方式: HTTP(三次握手)和 HTTPS (三次握手+数字证书)连接方式不一样;
  • 端口: HTTP 默认的端口是 80和 HTTPS 默认端口是 443

HTTP2 是什么?

HTTP/2 超文本传输协议第2版,是 HTTP/1.x 的扩展。所以 HTTP/2没有改动HTTP的应用语义,仍然使用HTTP的请求方法、状态码和头字段等规则。

它主要修改了HTTP的报文传输格式,通过引入二进制分帧层实现性能的提升。

现有很多主流浏览器的 HTTPS/2 的实现都是基于SSL/TLS的,所以基于 SSL/TLS 的 HTTP/2 连接建立过程和 HTTPS 差不多。在建立连接过程中会携带标识期望使用 HTTP/2 协议,服务端同样方式回应。


标签:HTTP,请求,区别,SSL,HTTPS,服务端,客户端
From: https://blog.51cto.com/u_15462217/5916400

相关文章

  • 正确使用 HttpClient
    正确使用HttpClient使用HttpClient注意事项HttpClient默认最大并发连接数是2本机测试(被请求的WebApi部署在本机)HttpClient不会被限制最大并发连接数使用HttpClie......
  • 【javascript】call、bind、apply方法的作用和区别
    1、call,apply,bind相同点都是改变this的指向接收的第一个参数都是要指向的对象都可以使用第一个参数之外的其他参数传参2、call,apply,bind不同点call,bind的传参都......
  • IDEA 中 git Merge Select into Current 和 Pull into Current using merge有什么区别
     今天同事更代码,问我个问题蒙住了,问这俩有啥区别?平时没注意,突然有点答不上来,感觉确实翻译过来是一样的,没区别。  先说结论,MergeSelectintoCurrent  是将本地......
  • SpringBoot中@Async异步的使用及异步与同步的区别
    简介在开发过程中,异步是提升系统并发能力的一个重要利器。而spring中的@Async异步注解,使我们能够非常方便地实现方法地异步调用。接下来主要结合以下几个问题来讲述j......
  • 转录组比对番外篇:aligner 与 mapping 区别
    导读考虑到在转录组比对时,有许多软件可以使用,但很少有介绍它们之间的差别。因此,本文主要介绍STAR,KALLISTO,SALMON之间的区别。1.定义STAR是alignerKallisto/s......
  • 300010 原位标注和集中标注的区别
    <?phpheader('Content-Type:text/html;charset=utf-8');define('ROOT',$_SERVER['DOCUMENT_ROOT']);includeROOT.'/assets/php/head.php';$tit='原位标注和集中......
  • make clean与make distclean的区别
    makeclean仅仅是清除之前编译的可执行文件及配置文件。 而makedistclean要清除所有生成的文件。Makefile在符合GNUMakefiel惯例的Makefile中,包含了一些基本的预先定......
  • get请求和post请求的区别(简洁易懂)
    一.GET和POST是什么?HTTP协议中的两种发送请求的方法,本质上都是在进行TCP连接.二.GET请求和POST请求的区别是什么?GET请求参数是通过URL进行传递的,POST请求的参数包含......
  • Session和Shiro的Session区别
    tomcat中的session常出现为jsessionId,而shiro的session不相同,两者的id不同。在controller中,通过request.getSession(_)获取会话session,该session到底来源servletReque......
  • Thread.sleep()和TimeUnit.SECONDS.sleep()的区别
    1、TimeUnit是什么?TimeUnit是java.util.concurrent包下面的一个类,TimeUnit提供了可读性更好的线程暂停操作。首先来看源码,原来是对Thread.sleep方法的包装,实现是一样的,只......