计算机网络知识
计算机网络也是非常重要的知识点,服务之间通过不同的网络协议进行交互,例如HTTP协议、RPC协议、TCP协议等,在java面试中网络知识被问到的几率也是非常大的,网络知识点汇总如下:
image.png
TCP协议
- TCP的报文状态标志与链接状态,在排查网络问题时非常重要,必须要明白协议状态,才方便抓包分析
- 另一个知识点是Nagel算法和ACK延迟,需要了解产生的背景,是要解决小包问题,提高数据载荷比。知道对于延迟比较敏感且发送数据频率较低的场景可以关闭Nagel算法。
- 关于TCP的keepalive,是一种长时间没有数据发送的场景下,TCP保持链接可用的机制,需要知道TCP keepalive的开启和设置方式。
- 最后一点,需要知道TCP是如何通过滑动窗口机制来实现流量控制的。
HTTP协议
- 需要掌握HTTP协议的规范,知道协议中的Method、Header、Cookies,需要了解常用状态码含义,例如:400、404、500等
- HTTPS的交互流程
- HTTP2目前还比较新,对HTTP2协议的了解可以在一定程度上体现对新技术的关注程度。可以关注HTTP2多路复用、Stream流式交互、流量控制、服务端推送、头部压缩等新特性。
除了HTTP和TCP外,UDP也是一个比较常见的传输层协议,UDP的特点非链接、非可靠传输、但效率非常高。
最后可以对QUIC协议进行一些了解,QUIC已经被标准化为HTTP3协议。QUIC是基于UDP协议,但QUIC提供了类似TCP的可靠性保证和流量控制。QUIC可以有效避免HTTP2协议的前序包阻塞问题,能实现零RTT建连,提供FEC前向纠正能力。
网友评论