程序员和IT人都应该懂的知识:HTTP入门图解( 二 )

  • Upgrade 可以用来指定一个完全不同的通信协议,对于这个字段,服务器可以返回101状态码
  • 请求首部字段
    • Accept 指用户代理能够处理的媒体类型及媒体类型的相对优先级
    • Accept-Encoding 指用来告知服务器用户代理支持的内容编码及内容编码的优先级顺序
    • Authorization 指用来告知服务器,用户代理的认证信息
    • Host 当一个 IP 下存在多个域名时,帮助服务器知道要请求的具体主机
    • User-Agent 会讲创建请求的浏览器和用户代理名称等信息传达给服务器
    HTTPSHTTPS 是 HTTP 建立在 SSL/TLS 安全协议上的 。
    在 IOS 中,客户端本地会存放着 CA 证书,在HTTPS 请求时,会首先像服务器索要公钥,获得公钥后会使用本地 CA 证书验证公钥的正确性,然后通过正确的公钥加密信息发送给服务器,服务器会使用私钥解密信息 。
    SSL/TLS握手阶段分为五步:以下引自 阮一峰的网络日志第一步,爱丽丝给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法 。第二步,鲍勃确认双方使用的加密方法,并给出数字证书、以及一个服务器生成的随机数(Server random) 。第三步,爱丽丝确认数字证书有效,然后生成一个新的随机数(Premaster secret),并使用数字证书中的公钥,加密这个随机数,发给鲍勃 。第四步,鲍勃使用自己的私钥,获取爱丽丝发来的随机数(即Premaster secret) 。第五步,爱丽丝和鲍勃根据约定的加密方法,使用前面的三个随机数,生成"对话密钥"(session key),用来加密接下来的整个对话过程 。
    HTTPS 相对于 HTTP 性能上差点,因为多了 SSL/TLS 的几次握手和加密解密的运算处理,但是加密解密的运算处理已经可以通过特有的硬件来加速处理 。




    推荐阅读