计算机网络:面试真题实战

1、面试真题问答

以下问题都是基于之前写的计算机网络系文章做出简单问答

  • 问1:TCP/IP协议群做了哪些事情?

    • 1、报文拆分
    • 2、增加协议头
    • 3、数据传输
    • 4、路由和寻址
    • 5、数据重组
  • 问2:TCP协议为什么是3次握手4次挥手?

    • 3次握手 建立连接的过程(三次握手)

      • 1.客户端发送SYN,服务端准备好进行连接
      • 2.服务端针对客户端的SYN给ACK,服务端发送SYN
      • 3.客户端准备就绪,客户端发送ACK
    • 4次分手 断开连接的过程(四次挥手)

      • 1.客户端发送断开请求FIN
      • 2.服务端收到请求,发送ACK
      • 3.服务端经过一个等待(数据处理完毕),确定可以关闭连接,发送FIN
      • 4.客户端收到FIN,处理完自己的事情后发送ACK
  • 问3:IPv4和Ipv6的区别?

    • 地址不同:Ipv4 32位;Ipv6 128位 (地址空间、数目不同)。
    • 地址分配不同:IPv4资源是稀缺的,分配需要竞争;IPv6可以给每个人分配很多地址。
    • 寻址方式不同:IPv4通过子网掩码计算网络地址;IPv6有固定的计算方式划分网络。
    • 地址解析策略不同:IPv4需要ARP;IPv6通过无状态的邻居发现。
    • DNS不同:IPv4是A记录;IPv6是AAAA记录。
  • 问4:TCP和UDP的区别?

    • 传输:TCP面向流;UDP面向报文
    • 连接:TCP有会话;UDP无会话
    • 头部开销:TCP开销大;UDP开销小
    • 可靠性:TCP保证数据可靠到达;UDP不保证数据可靠到达
    • 场景:TCP适合保证数据完整到达场景,如:文件传输;UDP适合随时发送数据,不要求数据完整到达场景,如:广播通信
  • 问5:TCP如何确保数据顺序? 为什么需要保证:TCP拆分封包的时候是顺序拆分的,但是包会无序的到达目的地。 方法1:利用(SEQ, ACK)编号确定封包的唯一性 方法2:利用滑动窗口存放没有排好序的封包,直到窗口中完全有序才发送ACK。如果有包丢失,就会一直不发ACK。 如果窗口大小是4,发送ABCD,如果只有BD到目的地,那么滑动窗口中是_B_D。

  • 问6:如果网络延迟是30ms,那么Ping一个网站需要多少ms? 如果请求一个HTTPS协议的网站,TTFB至少ms? 请求过程时间

  • 问7:LRU是什么? 缓存置换:缓存满了后,每次创建新的缓存条目,就会删除旧的缓存条目。 LRU清理时间最长的

  • 问8:什么是https中间人攻击? https中间人攻击

  • 问9:NIO有什么优势?

    • Reactive模型+非阻塞(减少线程切换)
    • 内核级别拷贝内存到JVM(减少系统调用)
    • 缓冲区增加数据处理的灵活性(clear/flip等操作)
    • 处理I/O场景有明显性能优势
  • 问10:一次DNS查询最快和最慢差距有多大?

    • 最快命中本地浏览器缓存
    • 最慢需要到服务商(ISP)-> Root服务器 -> 顶级域名服务器 -> 权威服务器 链路很长。 说明:DNS是分级缓存策略,每级缓存都非常强大。
  • 问11:HTTP keep-alive和http2.0的多路复用有什么区别?

    • keep-alive : 复用TCP连接发送请求,节省了握手时间,本质还是串行。
    • http2.0多路复用: 数据被打散成为小块,本质是并行。
  • 问12:强制缓存和协商缓存的区别?

    • 强制缓存强制执行,强制缓存不需要再发送请求给服务端。
    • 协商缓存需要发送请求给服务端验数据版本,如果有新版本的数据就需要重新下发EtagLast-Modified数据,如果没有就返回304 Not Modified。
  • 问13:正向代理和反向代理的区别?

    • 正向代理图解: 正向代理
    • 反向代理图解: 反向代理
    • 功能:正向代理解决访问问题;反向代理解决负载均衡、安全防护问题。
    • 代理:正向代理是客户端,服务器不知道真正用户是谁;反向代理是服务端,用户不知道真正服务器是谁。
    • 安全性:客户端通过正向代理可以访问任意网站并隐藏自己,反向代理对外是公开的,访问者并不知道自己访问的是一个代理。
    • 典型用途:正向代理是为局域网内的用户提供网络访问,反向代理是将局域网内的服务器供网络用户访问。