网络: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协议的一些基础,和一些...
    justCode_阅读 6,258评论 0 23
  • 一、概念(载录于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434阅读 12,687评论 6 152
  • HTTP协议 在 OSI 七层模型中,HTTP 协议位于最顶层的应用层中。通过浏览器访问网页就直接使用了 HTTP...
    WendySays阅读 4,147评论 0 1
  • 本文整理自MIN飞翔博客 [1] 1. 概念 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或...
    HoyaWhite阅读 7,570评论 2 20
  • 一 14年刚毕业到深圳一家公司,自学iOS一个月,然后开始做项目。当时组内加我就三个人,项目蛮多的,然后一个帅哥当...
    水田夏木阅读 2,383评论 0 0