乐趣区

HTTP和HTTPS笔记

HTTP

  1. 支持客户 / 服务器模式。
  2. 简单快速,方法和路径。
  3. 灵活,允许传输任意类型的数据对象。
  4. 无连接,每次连接只处理一个请求。
  5. 无状态协议。

请求 / 响应的步骤

  1. 客户端和 Web 服务器(默认 80 端口)建立 TCP 连接。
  2. 通过 TCP 连接,客户端发送 HTTP 请求。
  3. 服务器接收请求并返回 HTTP 响应。
  4. 释放 TCP 连接。如果 connectionclose,则服务器主动关闭 TCP 连接,客户端被动关闭。如果是 keep-alive,表示持久连接,该连接还可以被其他HTTP 请求复用,直到客户端或服务器认为连接已经结束,其中一方中断连接。
  5. 客户端浏览器解析 HTML 内容。

在浏览器地址栏键入 URL,按下回车之后经历的流程

  1. 浏览器根据 URL 中的域名进行 DNS 解析,以获取相关服务器的IP 地址。DNS缓存依次查询浏览器缓存、操作系统缓存、路由器缓存、ISP缓存、根域名服务器缓存、顶级域名服务器缓存。
  2. 客户端根据查询到的 IP 地址加端口,(HTTP默认 80HTTPS 默认 443),和服务器建立TCP 连接。三次握手详细介绍。
  3. 浏览器发送 HTTP 请求。
  4. 服务器处理请求并返回 HTTP 响应报文。
  5. 浏览器解析渲染页面。
  6. 释放 TCP 连接。

HTTP 状态码

1xx:表示请求已接受,继续处理。

2xx:成功,表示请求已经被成功。

3xx:重定向,要完成请求必须进行更进一步的操作。

4xx:客户端错误。

5xx:服务器错误。

GET 请求和 POST 请求的区别

是浏览器和服务器通过 HTTP 协议进行交互的两种方法:

  1. HTTP报文层面:GET将请求信息放在 URL 中,POST将请求信息放在请求体中。虽然 HTTP 协议没有对 URL 长度进行限制,但是主流浏览器会限制 URL 的长度。
  2. REST 规范中:GET请求进行查询操作,符合幂等性和安全性,POST用来进行数据存储,不符合。
  3. 因为幂等性,GET请求可以被缓存,而 POST 不行。

Session

服务器端的机制,在服务器上保存的信息。

解析客户端请求并操作session id,按需保存状态信息。

  1. 使用 Cookie 方式实现
  2. 使用 URL 回写来实现

服务器响应返回 JSESSIONID=XXXXX,无论哪种,核心都是JSESSIONID,是Tomcat 为我们自动匹配的(根据JSESSIONID 找服务器的SESSION)。

Cookie 和 Session 的区别

  1. cookie数据存放在客户的浏览器上,session数据存放在服务器上。
  2. 因为存储位置的差异,所以在服务器端的 session 更加安全。
  3. 但是大量数据存在 session 里会给服务器带来负担,所以应适当使用cookie

HTTPS

SSL

为网络通信提供安全及数据完整性的一种安全协议。

是操作系统对外的 APISSL 3.0 后更名为TLS

采用身份验证和数据加密保证网络通信的安全和数据的完整性。

HTTP 和 HTTPS 的区别

  1. HTTPS需要申请 CA 证书,HTTP不需要。
  2. HTTPS是密文传输的,HTTP明文传输。
  3. HTTPS默认使用 443 端口,HTTP默认使用 80 端口。
  4. HTTPS = HTTP + SSL

流程

因为非对称加密成本较高,所以将密钥使用非对称加密进行传输,而通信过程中使用传输的密钥进行对称加密。

退出移动版