HTTP
- 支持客户 / 服务器模式。
- 简单快速,方法和路径。
- 灵活,允许传输任意类型的数据对象。
- 无连接,每次连接只处理一个请求。
- 无状态协议。
请求 / 响应的步骤
- 客户端和
Web
服务器(默认80
端口)建立TCP
连接。 - 通过
TCP
连接,客户端发送HTTP
请求。 - 服务器接收请求并返回
HTTP
响应。 - 释放
TCP
连接。如果connection
是close
,则服务器主动关闭TCP
连接,客户端被动关闭。如果是keep-alive
,表示持久连接,该连接还可以被其他HTTP
请求复用,直到客户端或服务器认为连接已经结束,其中一方中断连接。 - 客户端浏览器解析
HTML
内容。
在浏览器地址栏键入 URL,按下回车之后经历的流程
- 浏览器根据
URL
中的域名进行DNS
解析,以获取相关服务器的IP
地址。DNS
缓存依次查询浏览器缓存、操作系统缓存、路由器缓存、ISP
缓存、根域名服务器缓存、顶级域名服务器缓存。 - 客户端根据查询到的
IP
地址加端口,(HTTP
默认80
、HTTPS
默认443
),和服务器建立TCP
连接。三次握手详细介绍。 - 浏览器发送
HTTP
请求。 - 服务器处理请求并返回
HTTP
响应报文。 - 浏览器解析渲染页面。
- 释放
TCP
连接。
HTTP 状态码
1xx:表示请求已接受,继续处理。
2xx:成功,表示请求已经被成功。
3xx:重定向,要完成请求必须进行更进一步的操作。
4xx:客户端错误。
5xx:服务器错误。
GET 请求和 POST 请求的区别
是浏览器和服务器通过 HTTP
协议进行交互的两种方法:
-
HTTP
报文层面:GET
将请求信息放在URL
中,POST
将请求信息放在请求体中。虽然HTTP
协议没有对URL
长度进行限制,但是主流浏览器会限制URL
的长度。 - 在
REST
规范中:GET
请求进行查询操作,符合幂等性和安全性,POST
用来进行数据存储,不符合。 - 因为幂等性,
GET
请求可以被缓存,而POST
不行。
Session
服务器端的机制,在服务器上保存的信息。
解析客户端请求并操作session id
,按需保存状态信息。
- 使用 Cookie 方式实现
- 使用 URL 回写来实现
服务器响应返回 JSESSIONID=XXXXX
,无论哪种,核心都是JSESSIONID
,是Tomcat
为我们自动匹配的(根据JSESSIONID
找服务器的SESSION
)。
Cookie 和 Session 的区别
-
cookie
数据存放在客户的浏览器上,session
数据存放在服务器上。 - 因为存储位置的差异,所以在服务器端的
session
更加安全。 - 但是大量数据存在
session
里会给服务器带来负担,所以应适当使用cookie
。
HTTPS
SSL
为网络通信提供安全及数据完整性的一种安全协议。
是操作系统对外的 API
,SSL 3.0
后更名为TLS
。
采用身份验证和数据加密保证网络通信的安全和数据的完整性。
HTTP 和 HTTPS 的区别
-
HTTPS
需要申请CA
证书,HTTP
不需要。 -
HTTPS
是密文传输的,HTTP
明文传输。 -
HTTPS
默认使用443
端口,HTTP
默认使用80
端口。 -
HTTPS = HTTP + SSL
。
流程
因为非对称加密成本较高,所以将密钥使用非对称加密进行传输,而通信过程中使用传输的密钥进行对称加密。