http

163 阅读4分钟

有些英文单词加上翻译更好理解,翻译的在()里。

应用层-规定传输协议 传输层-tcp还是udp 网络层-规定ip协议数据传输路线 链路层-物理硬件部分

tcp udp 的区别:

  • tcp是需要三次握手四次挥手,会重传,所以慢,udp快,无状态,udp不保证数据连贯性
    
  • udp常用语上传文件或者音视频直播等
    

三次握手:

  1.     客户端向服务端提出想请求接口的意向 syn = x
    
  2.     服务端接受到客户端意向 返回 ack = x+1 syn = y
    
  3.     客户端收到服务端的响应向服务端发送ack = y+1
    

三次握手的意思是互相确认是否可以发起响应 syn ack的意义是用来做唯一标识的,确保连接一对一

四次挥手:服务端客户端分别断开连接并确认。完成以后客户端会等一个来回的时间确认没有丢包。

  1.     客户端想断开连接 seq = x
    
  2.     服务端确认 ack = x
    
  3.     服务端断开连接 seq = y
    
  4.     客户端确认 ack = y+1
    

https中的s就是ssl/TLS: 其实是一个东西,tls是ssl的升级版,是https的特性,目的是保证数据的加密性。 是在应用层之下,传输层之上 了解对称加密算法:

  1.               原理是相同为0 不同为1
    
  2.               通过数据转成二进制,加密算法也是二进制,然后一一对比,比如:
    
  3.                     数据: 0010101
    
  4.              对称加密算法: 1010010
    
  5.         加密以后的数据就是: 1000111
    

非对称加密算法常见的有md5,通过函数及特定参数把一个字节转成4位数字的算法,具体不太了解

了解了加密算法后再了解tls,原理是通过证书的公钥私钥加密密钥

  •   客户端把公钥及私钥(随机数)发送给服务端,服务端用私钥加密数据(比如对称加密),客户端用公钥解密私钥再解密数据
    大致理念就是这样
    

http1.0 和 1.1 的区别:加了缓存跟长连接

  •  缓存方式: 强缓存 > 协商缓存
    

强缓存:不过服务器,直接从磁盘中拿,返回200 from cache 通过设置请求头的Cache-Control来实现:以下列举Cache-Control的值

  1.         private(私有的):客户端可以缓存
    
  2.         public(公共的) :客户端和代理服务器均可缓存
    
  3. max-age=xxx(最大存储时间):缓存的资源将在 xxx 秒后过期 协商缓存:第一次请求时会服务端会返回一个缓存标识,第二次请求时会把缓存标识带着,根据这个标识判断服务端资源是否有更新,如果没有更新就用之前的数据。返回304 用本地缓存
  •  通过设置请求头的Cache-Control来实现:以下列举Cache-Control的值
    
  1.      etag:文件唯一标识,服务端文件有更改,唯一标识也会跟着变动,如果与客户端不匹配会重新请求
    
  2. last-modified:文件最后修改时间,通过判断时间来确认缓存的文件是否是最新的

长连接的概念,Connection(连接,关系)为 keep-alive,就是之前每次请求都需要三次握手四次挥手,长连接可以在三次握手四次挥手之后一直发送请求,减少三四的次数。谷歌浏览器最多可以6个长连接。接口在长连接的样子类似于电线杆上的鸟,若干个请求排队串行化单线程处理,后面的请求等待前面请求的返回才能获得执行机会,一旦有某请求超时等,后续请求只能被阻塞

http1.1 和 2.0 的区别:多路复用,头部压缩,服务端推送, 多路复用和长连接的区别: 长连接会阻塞,多路复用不用等待前面的返回结果,状态是并行的,所以不会阻塞。 头部压缩:把头部信息映射成一个数字id的表 服务端推送:会把请求相关联的内容一起返回,比如请求一个html会把对应的css文件也返回