NodeJs 面试题 2022.6

???
???
???????????????(要知道对好事的称颂过于夸大,也会招来人们的反感轻蔑和嫉妒。——培根)
???
???
????????????????

NodeJs 面试题 2022.6
  • Http七层协议工作原理,都有哪些状态码,分别是什么意思

    • 为什么需要协议/p>

      • 如果苹果,三星,华为都是自己的协议,那么就只能和自己通信,所以就弄一个标准化的协议,所有人来实现,这样所有人就能互通了
    • 四层协议关系

      • 应用层:http协议,邮件服务协议
      • 传输层:TCP协议
        • SYN 建立连接
        • FIN 关闭连接
        • ACK 响应连接
        • PSH DATA数据传输
        • RST 连接重置
      • 网络层:IP协议
      • 数据链路层:以太网协议
    • 端口号范围0-65535,1024之前不允许用

    • 物理层

      • 过去:通过家里的猫来连接网线实现电脑间的通信,这个就属于物理层
      • 现在:连接无线网,属于无线讯号,也是物理层
      • 连接上之后传递010101的电路信号
    • 数据链路层

      • 是给电路信号分配规则的,过去每个公司都有自己的电路信号规则。
      • 后来出现了以太网协议,将电信号归纳成一个数据包,也叫一个帧。
        • 每一帧都分成两部分,标头head和数据data
        • 标头head包含了一些说明信息,比如发送者mac地址,接收者mac地址和数据类型等
      • 而电路信号的通信又依赖网卡,利用电脑间的网卡进行通信
        • 以太网协议规定网卡包含mac地址,mac地址是网卡的唯一标识,全球唯一
          • 12个16进制的数字表示mac地址
          • 前6个16进制数字是厂商编号
        • 后6个16进制数字是网卡流水号
          • windows使用ipconfig命令查看mac地址 物理地址 比如7C-67-A2-20-AB-5C
          • linux使用ifconfig -a命令查看mac地址
        • 所以以太网传递数据包就必须指定接收者的mac地址才能进行传输
        • 以太网协议如何根据网卡进行通信的
          • 局域网情况下,也叫子网
            • 在以太网内一个数据包的发送,会先广播给局域网的所有电脑设备网卡,然后每台电脑都从数据包中取出接收者的mac地址和自己的mac地址进行对比,如果是一样的,则说明是给自己发送的数据包才进行处理,否则就丢弃数据包
          • 如何知道哪些电脑在当前局域网内呢
            • 这就需要依靠网络层来支持了
              • 请看下面的网络层
    • 网络层

      • 网络层里有ip协议,ip协议定以的地址就是ip地址。ip地址理由ipv4和ipv6两种类型,目前广泛使用的是ipv4,是由32个二进制数字组成,但一般由4个十进制数字来表示,范围是0.0.0.0到255.255.255.255
      • 每台电脑都有一个ip地址,前24位(前3位十进制数字)代表网络,后8位(最后1个十进制数字)代表了主机,如果几台电脑是一个子网的,那么前3位十进制的数字就是一样的
        • 比如开虚拟机或者连接的都是同一个网线,无线网,则电脑的ip地址分别是192.168.0.180,192.168.0.181,192.168.0.182,192.168.0.183,可以看出192.168.0这三位数字是一样的就证明大家是一个子网的,最后一个数字就是主机编号
        • 但上面的描述不是百分百准备,需要将子网掩码进行二进制运算才可以真正对比出是不是属于同一个子网内
          • 比如192.168.0.180和192.168.0.181 通过二进制运算后的结果分别式
          • 11000000.10101000.0.10110100
          • 11000000.10101000.0.10110101
          • 然后判断前三位 如果相同则证明是一个子网
          • 最后一位表示主机编号
          • 所以通过子网掩码就可以确定局域网下的电脑,然后就可以互相通信了
          • 但如果不在一个子网内如何通信呢
          • 所以这就需要路由器
      • 路由器 也成为网关
        • 可以把多个子网给串联起来
        • 根据以太坊协议,网卡间只能在子网内进行通信,但要和其他网卡进行通信,就可以把包发给交换机,交换机再把包进行广播,路由器(路由器也有mac地址)上的网卡收到后判断是不是自己的,是自己的话,再通过交换用以太坊协议进行广播分发
        • 所以以太网要和多个子网进行通讯,就需要交换机和路由器
        • ARP协议
          • 一个局域网内的机器会互相给对方发送自己的mac地址,所以当一个机器要发送数据包时,就可以知道其他电脑的mac地址了
      • 交换机,一种工作在数据链路成的设备,网关是工作在网络层
      • 总结:子网间的机器如何通信,在数据包中写上对方的mac地址,通过交换机用以太坊协议进行广播。如果是跨子网通信,在包里写上目标和路由器的mac地址,路由器再根据目标地址通过交换机进行广播,一直持续找到最终mac地址为止
      • LAN 局域网
      • WAN 广域网
      • WLAN 无线局域网
      • 但同一个电脑下运行着qq,微信,视频等软件,怎么区分数据包是发给这个ip下的哪一个服务呢么就需要有一个端口的概念来进行区分,所以这也是为什么端口要唯一的原因。
      • 那么如何将数据包发到某一个ip的某一个端口上就需要TCP协议了
    • 传输层

      • TCP协议简述

        • 存在长连接和短连接

          • 短链接

            • TCP短连接:client向server发起连接请求,server接到请求,然后双方建立连接。client向server发送消息,server回应client,然后一次请求就完成了。这时候双方任意都可以发起close操作,不过一般都是client先发起close操作。上述可知,短连接一般只会在 client/server间传递一次请求操作。

              短连接的优点是:管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段

          • 长连接 keepalive

            • TCP长连接的情况:client向server发起连接,server接受cli

              来源:多比熊

              声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

  • 上一篇 2022年5月26日
    下一篇 2022年5月26日

    相关推荐