网络:HTTP、HTTPS

  • 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 是一种无状态的连接,客户端每次发送请求,服务器都会认为是一次新的会话。但有时候我们又需要持久保持某些信息,比如登录时的 用户名、密码,用户上一次连接时的信息 等。这些信息就由 CookieSession 保存。

  • 两者区别在于: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.客户端用`公钥`解密

参考资料:
网络基础

你可能感兴趣的:(网络:HTTP、HTTPS)