运维平台搭建后台开发技术前台开发框架

《iOS面试题整理》- 谈谈你对 http 和 https 的理

2019-01-19  本文已影响15人  小木头

TCP/IP 四层模型

应用层 : FTP 、HTTP、DNS、SMTP
运输层 :TCP、UDP
网络层 : IP
链路层 :硬件接口

OSI参考模型

应用层:应用层协议, HTTP、FTP、SMTP
表示层 :加密解密、压缩解压
会话层 : 不同机器上用户之间及管理会话
传输层 : 接受上一层数据, 必要的时候把数据进行分割, 交给网络层, 保证数据段有效到达对端
网络层 : 控制子网的运行、逻辑地址、分组传输、路由选择
数据链路层:物理寻址
物理层:原始比特流传输

HTTP

超文本传输协议, 默认端口是 80

特点

请求报文

响应报文

HTTPS 原理

默认端口号是 443

  1. 客户端请求 https 连接, 服务器收到请求后会把证书信息(包含公钥和签名) 返回给客户端
  2. 客户端会校验这个证书签名的有效性从而获取到公钥
  3. 客户端随机生成会话密钥(对称加密), 然后利用证书里面的公钥将会话密钥加密, 连同加密后的内容传送给服务端
  4. 服务器利用私钥解密出会话密钥, 然后解密出内容
  5. 服务端利用会话密钥通信

HTTPS 优缺点

优点

  1. 可以认证用户和服务器, 确保数据发送到正确的客户端和服务端
  2. 防止数据在传输过程中不被窃取、改变, 确保数据的完整性

缺点

  1. 比较耗时, 页面的加载时间延长 50%, 增加 10% 和 20%的耗电
  2. SSL 证书要钱
  3. https 连接缓存不如 http 高效
  4. 并非绝对安全, 掌握CA证书机构、加密算法的组织任然可以进行中间人形式的攻击

http 和 https 的区别

  1. http 协议没有加密, https 对传输数据加密, 保证用户信息
  2. http 默认端口是80, https 默认端口是443
  3. http 无需证书, 而 https 需要购买证书

http 1.x 和 http 2.0 的区别

  1. 新的二进制格式: 1.x 的解析是基于文本的, 2.0是二进制格式
  2. 多路复用: 连接共享。 1.x 每次请求都建立一个链接, 用完关闭, 串行单线程处理, 后面的请求等待前面请求返回才能执行。 2.x 多个请求同时在一个连接上并行执行
  3. header压缩: 1.x 的header 有大量信息每次都要重复发送, 2.0 使用 encoder 来减少传输的 header 大小
  4. 服务端推送

get 和 post 的区别

  1. get 的请求放在 URL 上, 参数之间以 & 相连, post 请求放在 http body 内
  2. get 的提交数据最大有限制, 跟环境有关系, post 理论上没有限制, 大小由服务器设定
  3. get 产生一个 TCP 数据包, 浏览器会一起发送 header 和 data, 服务器返回200
    post 有些服务器是只发一个 TCP 数据包, 有些会先发送header, 服务器返回100后, 再发送data, 返回200
  4. get 请求会主动 cache, post 不会, 除非手动设置
  5. get 在浏览器返回时是无害的, post 会再次提交请求
上一篇下一篇

猜你喜欢

热点阅读