当先锋百科网

首页 1 2 3 4 5 6 7

互联网上最有效的沟通方式是异步沟通,不要期待作者马上回复,也不要心烦意乱着急地等待。出去看看天,数数云朵,你会逐步明白什么是云淡风轻。

根据计划,第一章节介绍【软件测试理论】部分,目前已输出十一篇文章:

第一篇:软件测试的目的【杂谈】

第二篇:软件测试七大原则【干货】

第三篇:软件测试新七大原则【干货】

第四篇:软件测试的分类【笔记】

第五篇:软件测试的方法【笔记】

第六篇:软件测试的工具【笔记】

第七篇:如何做好业务测试【杂谈】

第八篇:如何做好接口测试【杂谈】

第九篇:HTTP协议常见状态码【干货】

第十篇:HTTP协议常见面试题一【干货】

第十一篇:HTTP协议常见面试题二【干货】

下面开始我的第十二篇文章,分享【HTTP协议常见面试题三】(接着上一篇继续)。

十、https:

  1. 使用传输层安全性(TLS)或安全套接字层(SSL)对通信协议进行加密。(也就是 HTTP + SSL(TLS) = HTTPS)
  2. TLS 是使用 对称加密 和 非对称加密 的混合加密方式来实现机密性。
  1. 在通信刚开始的时候使用非对称算法,比如 RSA、ECDHE ,首先解决密钥交换的问题。然后用随机数产生对称算法使用的会话密钥(session key),再用公钥加密。对方拿到密文后用私钥解密,取出会话密钥。这样,双方就实现了对称密钥的安全交换。
  2. 使用数字证书验证发送者是客户端还是中间人攻击。

十一、TLS

  1. 客户端请求服务端建立SSL链接,服务端并向客户端发送一个随机数 randomC 和 CA 机构颁发的证书。
  2. 客户端对证书进行验证,验证通过后,生成一个随机数 randomS ,用公钥对 randomS 加密 ,同时用 randomS 生成一段签名,发送给服务端。
  1. 服务端接收到后,用私钥对秘文解密,用解密后的 key 生成签名,并与客户端传来的签名进行比较,检验通过后,然后生成一个随机数 randomP ,并用私钥加密,还有随机数生成的 hash 值,一并发给客户端。
  2. 客户端用公钥解密,并校验 hash 值通过后,两端利用 randomC randomS randomP 通过一定的算法生成 session key,后续的报文将通过 session key 对称加密进行传输。

十二、CA 证书

  1. CA证书,是由 CA 机构颁发的一个凭证,里面关键的信息有,签名算法、签名hash算法、颁发者、有效期、公钥、指纹,这个两个算法就表示对称阶段和非对称阶段采用的算法,公钥就是服务端的公钥,在申请的时候,企业需要上传公钥给CA机构,重点是这个指纹,这个指纹是由 CA 机构通过私钥对一段签名加密生成的。
  2. 在浏览器和个人PC中,都预装了顶级的 CA 机构证书和公钥,所以浏览器获取到证书后,通过内置的公钥对指纹进行解密得到签名,然后浏览器也根据同样的规则生成一段签名,两段签名进行比较,验证通过,那么这个证书中公钥就是可信的。

十三、http/http2

  1. http1.1以文本的方式,http2是一个二进制协议,使用二进制帧传输,增加了数据传输的效率。
  2. http2可以在一个TCP链接中并发请求多个HTTP请求,移除了HTTP/1.1中的串行请求。
  1. HTTP2采用HPACK压缩算法压缩头部,减小了传输的体积。
  2. HTTP2支持服务端推送。

十四、JWT

  1. JSON Web Token(简称 JWT)是目前最流行的跨域认证解决方案。
  2. JWT 由三部分组成:Header,Payload,Signature 三个部分组成,并且最后由.拼接而成。
  1. Header 部分是一个 JSON 对象,描述 JWT 的元数据,通常是下面的样子,最后将 JSON 对象使用 Base64URL 算法转成字符串。 {"alg": "HS256", // 表示签名的算法,默认是 HMAC SHA256(写成 HS256)"typ": "JWT" // 表示这个令牌(token)的类型 }
  2. Payload 中由 Registered Claim 以及需要通信的数据组成。它也是 JSON 格式,另外这些数据字段也叫 Claim。JWT 规定了7个官方字段如下,除了官方的字段外你也可以自定义一些字段,最后将 JSON 对象使用 Base64URL 算法转成字符串。iss (issuer):签发人exp (expiration time):过期时间sub (subject):主题aud (audience):受众nbf (Not Before):生效时间iat (Issued At):签发时间 jwt 创建时间jti (JWT ID):编号
  1. Signature 部分是对前两部分的签名,防止数据篡改。首先,需要指定一个密钥(secret)。这个密钥只有服务器才知道,不能泄露给用户。然后,使用 Header 里面指定的签名算法(默认是 HMAC SHA256),按照下面的公式产生签名。  // 由 HMACSHA256 算法进行签名,secret 不能外泄const sign = HMACSHA256(base64.encode(header) + '.' + base64.encode(payload), secret)
    // jwt 由三部分拼接而成const jwt = base64.encode(header) + '.' + base64.encode(payload) + '.' + sign
  2. 一旦发布,在令牌过期之前是不能被取消的。

十五、TCP/IP四层模型

  1. 数据链路层:用来处理连接网络的硬件部分。
  2. 网络层:用来处理在网络上流动的数据包。
  1. 传输层:对上层应用层提供处于网络连接中的两台计算机之间的数据传输,有两个不同性质的协议TCP/UDP。
  2. 应用层:决定了向用户提供应用服务时通信的活动,FTP/DNS/HTTP存在于该层。

十六、一个 tcp 连接能发几个 http 请求

  1. HTTP 1.0 版本协议,一般情况下,不支持长连接,因此在每次请求发送完毕之后,TCP 连接即会断开,因此一个 TCP 发送一个 HTTP 请求。
  2. HTTP 1.1 版本协议,默认连接都是长连接(想断开则指定 Connection 为 close),因此只要 TCP 连接不断开,便可以一直发送 HTTP 请求,持续不断,没有上限。
  1. HTTP 2.0 版本协议,支持多路复用,一个 TCP 连接是可以并发多个 HTTP 请求的,同样也是支持长连接,因此只要不断开 TCP 的连接,HTTP 请求数也是可以没有上限地持续发送。

十七、gzip默认使用http 1.1

  1. Nginx 对于满足条件(请求头中有 Accept-Encoding: gzip,响应内容的 Content-Type 存在于 gzip_types 列表)的请求会采用即时压缩(On-The-Fly Compression),整个压缩过程在内存中流式完成。也就是说,Nginx 不会等文件 GZip 完成再返回响应,而是边压缩边响应,这样可以显著提高 TTFB(Time To First Byte,首字节时间,WEB 性能优化重要指标)。这样唯一的问题是,Nginx 开始返回响应时,它无法知道将要传输的文件最终有多大,也就是无法给出 Content-Length 这个响应头部。
  2. HTTP/1.1 默认支持 TCP 持久连接(Persistent Connection),HTTP/1.0 也可以通过显式指定 Connection: keep-alive 来启用持久连接。HTTP 运行在 TCP 连接之上,自然也有着跟 TCP 一样的三次握手、慢启动等特性,要想提高 HTTP 性能,启用持久连接就显得尤为重要。
  1. 对于 TCP 持久连接上的 HTTP 报文,客户端需要一种机制来准确判断结束位置。而在 HTTP/1.0 中,这种机制只有 Content-Length。
  2. HTTP/1.1 新增的 Transfer-Encoding: chunked 所对应的分块传输机制可以完美解决这类问题。

以上原文来自我的公众号【不只是测试】,扫描加关注哦O(∩_∩)O~