<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Http和https on Last Stand</title><link>https://amatsuzero.github.io/LastStand/tags/http%E5%92%8Chttps/</link><description>Recent content in Http和https on Last Stand</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Thu, 07 Aug 2025 00:00:00 +0800</lastBuildDate><atom:link href="https://amatsuzero.github.io/LastStand/tags/http%E5%92%8Chttps/index.xml" rel="self" type="application/rss+xml"/><item><title>http和https</title><link>https://amatsuzero.github.io/LastStand/posts/frontend/network/http-https/</link><pubDate>Mon, 28 Jul 2025 00:00:00 +0800</pubDate><guid>https://amatsuzero.github.io/LastStand/posts/frontend/network/http-https/</guid><description>&lt;h2 id="http"&gt;HTTP&lt;/h2&gt;
&lt;h3 id="基础"&gt;基础&lt;/h3&gt;
&lt;p&gt;HTTP 超文本传输协议 ，应用层协议。主要用于 Web 上传输超媒体文本的底层协议，经常在浏览器和服务器之间传递数据。通信就是以纯文本的形式进行。&lt;/p&gt;
&lt;h3 id="http-是无状态"&gt;HTTP 是无状态&lt;/h3&gt;
&lt;p&gt;无状态是 HTTP 协议对客户端请求状态没有进行存储，比如每次请求都需要重新登录&lt;/p&gt;
&lt;h3 id="http-是无连接"&gt;HTTP 是无连接&lt;/h3&gt;
&lt;p&gt;无连接主要是限制每次连接只处理一个请求。每次请求都是客户发起请求，服务端响应请求，然后就断开连接。这期间就是通过三次握手建立连接，四次挥手断开连接。每次请求即便是多次请求并请求同一个资源，服务端都无法判断是否是相同请求，都需要重新响应请求。&lt;/p&gt;
&lt;p&gt;所以，为了解决客户端和服务端保持会话连接，通过 cookie 和 session 来记录 http 状态。&lt;/p&gt;
&lt;p&gt;HTTP 的其他特点是简单快速，只需传送方法和路径就可以向服务端进行请求；还有支持传输任意类型的数据对象。&lt;/p&gt;
&lt;h2 id="https"&gt;HTTPS&lt;/h2&gt;
&lt;h3 id="基础-1"&gt;基础&lt;/h3&gt;
&lt;p&gt;https 是 http 的“升级”版本：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;HTTPS = HTTP+ SSL/TLS
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;SSL 是安全层，TLS 是传输层安全，是SSL 的继承。使用SSL或TLS 可确保传输数据的安全性。&lt;/p&gt;
&lt;p&gt;使用 HTTP 可能看到传输数据是： “这是明文信息”&lt;/p&gt;
&lt;p&gt;使用 HTTPS 可能看到： “283hd9saj9cdsncihquhs99ndso”&lt;/p&gt;
&lt;p&gt;HTTPS 传输的不再是文本，而是二进制流，使得传输更高效，且加密处理更加安全。&lt;/p&gt;
&lt;h3 id="https-的工作流程"&gt;HTTPS 的工作流程&lt;/h3&gt;
&lt;p&gt;1、客户端请求 HTTPS 请求并连接到服务器的 443 端口，此过程和请求 HTTP 请求一样，进行三次握手；&lt;/p&gt;
&lt;p&gt;2、服务端向客户端发送数字证书，其中包含公钥、证书颁发者、到期日期&lt;/p&gt;
&lt;p&gt;现比较流行的加解密码对，即公钥和私钥。公钥用于加密，私钥用于解密。所以服务端会保留私钥，然后发送公钥给客户端。&lt;/p&gt;
&lt;p&gt;3、客户端收到证书，会验证证书的有效性。验证通过后会生成一个随机的 pre-master key。再将密钥通过接收到的公钥加密然后发送给服务端&lt;/p&gt;
&lt;p&gt;4、服务端接收后使用私钥进行解密得到 pre-master key&lt;/p&gt;
&lt;p&gt;5、获得 pre-master key 后，服务器和客户端可以使用主密钥进行通信。&lt;/p&gt;</description></item></channel></rss>