- HTTP 协议
- POST 请求和 GET 请求
- Cookie 和 Session
- 数据加密
- HTTPS 协议
HTTP 协议
-
HTTP
(超文本传输协议:Hypertext Transfer Protocol )是Web联网的基础,HTTP
基于TCP
- 使用
HTTP
协议时,客户端首先与服务端的80 端口
建立一个TCP
连接,然后在这个连接的基础上进行请求和响应
- 使用
HTTP1.0
每次的请求和响应都会使用一个新的TCP
连接-
HTTP1.1
可以保持长连接,在一个TCP
连接中,多次发送请求,接收响应- 仍然是一个请求对应着一个响应,请求结束后释放连接
- 浏览器访问网页就使用了 HTTP 协议
POST 请求和 GET 请求
HTTP 有八种请求,最常见的是 GET 和 POST,区别为:
- 1.GET 请求通常用于 获取数据;POST 请求则用于 发送数据
- 2.GET 请求的 长度有限制(不同的浏览器不一样,大约在几 KB ),URL 的数据类型只能是 ASCII 字符;POST 不是
- 3.GET 请求的参数在 URL 中;POST 请求数据则写在 请求头中
- 请求头中数据为明文
- 4.GET 请求可以被 缓存,可以被收藏为书签; POST 不行
- 5.GET 请求会保留在浏览器的 历史记录 中;POST 不会
Cookie 和 Session
HTTP 是一种无状态的连接,客户端每次发送请求,服务器都会认为是一次新的会话。但有时候我们又需要
持久保持某些信息
,比如登录时的 用户名、密码,用户上一次连接时的信息 等。这些信息就由Cookie
和Session
保存。-
两者区别在于:
cookie
保存在客户端,session
保存在服务器-
cookie
不安全,浏览器可以分析本地的cookie
,进行cookie
欺骗。 -
session
可以设置超时时间,超时失效,以免长期占用服务端内存 - 客户端每次都会把
cookie
发送到服务端,因此服务端可以知道cookie
,但是客户端不知道session
- 单个
cookie
的大小有限制:4 Kb,每个站点的cookie
数量一般也有限制:20个 - 服务器接收到
cookie
后,会根据cookie
中的SessionID
来找到这个客户的session
。如果没有,则会生成一个新的SessionID
发送给客户端
-
加密
-
加密分为: 对称加密和非对称加密
- 对称加密的加密秘钥和解密秘钥相同;非对称加密两者不同
常见的一个非对称加密算法是
RSA
算法,它的原理不在本文讨论在非对称加密中,利用公钥加密的数据能且只能通过私钥解密,通过私钥加密的数据能且只能通过公钥解密
对称加密速度快,但是假设秘钥由服务器保存,如何安全的让客户端得到秘钥呢:通常使用对称加密与非对称加密结合的方式,服务端通过
非对称加密
将对称秘钥
发给客户端
HTTPS
我们知道 HTTP 协议直接使用 TCP 协议进行数据传输。由于数据都是明文传输,所以存在被窃取修改的风险。
HTTPS 协议:
信息加密:无法被第三方窃取
:非对称加密传输密码,然后用这个密码对称加密数据
校验机制:被修改可以检测出来
:发送方将数据的哈希结果写到数据中,接收方解密后对比数据的哈希结果,如果不一致则说明被修改
身份证书:防止第三方伪装参与通信
:权威机构颁发证书,再加上证书校验机制其实 HTTPS 仅仅是在 HTTP 和 TCP 之间新增了一个
TLS/SSL
加密层服务端会将自己的证书发送给客户端,其中包含了服务端的公钥:
1.客户端使用`公钥`将信息加密发送给服务端
2.服务端用自己的`私钥`解密;然后将响应数据用`私钥`加密发给客户端
3.客户端用`公钥`解密
参考资料:
网络基础