客户端|金三银四难道可以不知道这些?( 四 )


call() apply() bind() 有什么区别call() apply() bind() 都可以改变this的指向 , 但是call() apply() 会立即执行 。
call()的入参方式是单个
apply()的入参方式是数组
网络协议部分http https 有什么区别http 是明文传输 , 没有安全保证 , 对服务端和客户端来说都无法验明双方身份
https 使用了ssl加密方式 , 服务端和服务端可以验明双方的身份 , 安全有了一定的保障 。 但是需要解密和加密 , 对性能会造成一定的影响 。
使用https协议的话对技术有一定的要求 , 一般的个人网站是无法满足这个技术的 。
http端口号是80, https端口号是443 。
http http1.1 http2 有什么区别http1.1 增加了管道化运输 , 请求不需要再按照队列的形式发送 , 可以一起发送 , 提高了性能 。 增加了缓存机制 , 可以通过对请求的判断 , 实现强缓存或者协商缓存 。 加入了长链接机制 , 对于http来说 , 每次发送请求到获取数据的过程中会简历连接 , 但是在获取数据后就会断开连接 , 加入了keep-alive机制 , 保证了服务端和客户端的一个长连接 , 对服务端和客户端的交互进行了优化 。
http2 是一款二进制协议 , 主要是增加了头部压缩 , 多路复用 ,
三次握手 , 四次挥手 。 为什么是三次握手 , 而不是二次呢?可以是四次吗?三次握手
客户端与服务器建立连接的过程

  • 客户端主动发起请求 , 发送SYN , 将自己变为SYN-SENT 发送seq = x
  • 服务端收到客户的请求 , 返回seq = y 服务端的状态变为SYN - REVD
  • 客户端收到返回值 , 进入ESTABLISHED状态 , 完成连接
四次挥手
  • 客户端发FIN报文 , 将seq = x 发送至服务端 , 进入FIN-WAIT-1 状态
  • 服务端收到报文 , 发送ACK确认 ,客户端收到ACK状态 , 进入FIN-WAIT-2状态等待
  • 服务端端将数据处理完成 , 将数据发送给客户端
  • 客户端收到数据发送ACK 向服务端确认
三次握手的过程其实就是服务端和客户端互相验明身份的过程 。 二次握手 , 服务端无法确认客户端的身份 。 三次即可确认双方的身份 , 四次就不需要了 。
DNS是什么?你了解过DNS吗?DNS是域名系统 , 是应用层的一个协议 。 我们通常是通过DNS去解析域名获取IP , 根据IP去向服务端发送数据请求的 。
DNS也是一个分布式的数据库 , 正是因为DNS的缓存机制 , 我们可以很快地知道域名对应的IP地址 , 从而更快的获取连接 。
你了解nginx吗?我看你简历上自己部署了一个个人博客 , 你可以说一下你理解的nginx是什么吗?nginx具有三个特性 , 正向代理反向代理负载均衡
反向代理
反向代理其实是nginx做得最多的一件事 。 将请求在内部进行IP转化 , 发送到对应的服务器上 , 也可能是同一台服务器 , 端口号不同 。 安全性更高 , 不易被捕获服务器的IP地址 。
server {  
\tlisten       80;                                                        
\tserver_name  localhost;                                              
\tclient_max_body_size 1024M;
 
\tlocation / {
\t  proxy_pass http:'代理地址';
\t  proxy_set_header Host $host:$server_port;
\t
复制代码

负载均衡