拉勾网《32个Java面试必考点》学习笔记之二------操作系统与网络知识

本文为拉勾网《32个Java面试必考点》学习笔记.只是对视频内容进行简单整理,详细内容还请自行观看视频《32个Java面试必考点》.若本文侵犯了相关所有者的权益,请联系:[email protected].将会删除相关内容

操作系统与网络知识

    • 知识点汇总
    • 知识点详解
      • HTTP
      • TCP
      • 三次握手
      • 四次挥手

知识点汇总

操作系统对于服务问题的排查定位很重要,在面试时,一般以了解和应用考察为主,面试题目占的比重不会过高.

拉勾网《32个Java面试必考点》学习笔记之二------操作系统与网络知识_第1张图片

服务之间通过不同的网络协议进行交互,在面试中被考的几率非常大.

拉勾网《32个Java面试必考点》学习笔记之二------操作系统与网络知识_第2张图片

知识点详解


HTTP

1. 需要知道协议中的Method,Header,Cookies.
2. 知道常见状态码含义
3. 了解HTTPS的交互流程
4. QUIC基于UDP实现原HTTP功能,现已被标准化为HTTP3协议

TCP

1. TCP和HTTP在服务交互中使用最多.了解报文标志状态和链接状态有利于抓包分析.
2. Nagel算法是为了解决小包问题和数据载荷比.
3. KeepALive是在长时间没有数据发送的情况下保持连接可用的机制.需要了解开启和设置方式.
4. 了解如何通过滑动窗口机制实现流量控制.
  • 位于OSI模型的第四层-传输层
  • 面向连接
    • 每次发送数据先要建立连接
  • 双工通信
    • 连接建立后可进行双向通信
  • 可靠
    • 通过对数据包编号,并按序号接受,可确保数据的完整性和有序性
  • 流量控制
    • 通过滑动窗口控制数据的发送速率.滑动窗口的本质是动态缓冲区,接收端根据自己的处理能力,在tcp的Header中动态调整大小,通过应答包通知发送端
  • 拥塞控制
    • 主要通过慢启动,拥塞避免,拥塞发生,快速恢复算法实现
  • 基于字节流

除了以上特点,还可以了解tcp协议的报文状态,滑动窗口的工作流程,KeepAlive的参数设置,Nagel算法的细节

三次握手

拉勾网《32个Java面试必考点》学习笔记之二------操作系统与网络知识_第3张图片

回答建连的问题时,可以提到syn洪水攻击.即请求端只发送SYN包,而不对接收端的SYNACK包进行回复,使得接收端大量连接处于半连接状态,影响其他正常请求的建连.
解决方法:设置linux的tcp参数
tcp_synack_retries=0,加快对于半连接的回收速度,或加大tcp_max_syn_backlog应对少量的syn洪水攻击

四次挥手

拉勾网《32个Java面试必考点》学习笔记之二------操作系统与网络知识_第4张图片

        处于CLOSE_WAIT状态时,HOSTB仍有可能向HOSTA发送数据,HOSTB发送完数据后,才会向HOSTA发送FIN包

为何HOSTA要在2MSL(Maximum Segment Lifetime 最大报文生存时长)后才关闭连接?

  1. 要保证TCP的全双工连接能可靠关闭
  2. 要保证这次连接中重复的数据段从网络中消失,防止端口重用时可能的数据混淆

回答问题是也可以提到,有可能大量socket会处于TIME_WAIT和CLOSE_WAIT的问题.
解决TIME_WAIT过多,可通过开启Linux的tcp参数tw_reuse或tw_recycle能加快TIME_WAIT状态的回收.
CLOSE_WAIT过多则可能是被动关闭的一方存在代码BUG,没有正确关闭连接导致的

你可能感兴趣的:(Java面试)