计算机网络作为计算机科学的基础学科,在技术面试中占据着至关重要的地位。无论是校招还是社招,扎实的网络知识往往是面试官考察的重点。以下是对一些常见且关键的计算机网络面试知识点的系统梳理与回顾。
一、分层模型与核心协议簇
- OSI七层模型与TCP/IP四层模型: 必须清晰掌握每一层的名称(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层)、核心功能,以及TCP/IP模型(网络接口层、网际层、传输层、应用层)与之的对应关系。关键在于理解分层的思想:每一层为上层提供服务,并使用下层的服务。
- TCP/IP协议簇: 这是互联网的基石。重点协议包括:
- 网络层: IP(IPv4/IPv6)、ICMP(如ping命令)、ARP(地址解析协议)。
- 传输层: TCP 与 UDP。这是面试的重中之重。
- 应用层: HTTP/HTTPS、DNS、FTP、SMTP/POP3等。
二、传输层双雄:TCP vs UDP
这是必考内容,需要从多维度进行对比:
- 连接性: TCP是面向连接的可靠传输;UDP是无连接的不可靠传输。
- 可靠性: TCP通过序号、确认应答、超时重传、流量控制、拥塞控制等机制保证数据可靠、有序、不重复地到达。UDP不提供这些保证。
- 头部开销: TCP头部至少20字节,结构复杂;UDP头部仅8字节,简单高效。
- 传输效率: 由于建立连接、确认机制等,TCP传输效率相对较低,延迟较大;UDP效率高,延迟低。
- 应用场景: TCP适用于要求可靠性的场景,如文件传输、网页浏览、邮件等;UDP适用于实时性要求高、可容忍少量丢失的场景,如视频流、语音通话、在线游戏、DNS查询等。
三、TCP的深度剖析
- 三次握手与四次挥手: 必须能详细描述其过程、每一步交换的报文段标志位(SYN, ACK, FIN等)、序列号的变化,并理解其设计原因(如为什么是三次不是两次?为什么挥手需要四次?TIME_WAIT状态的作用是什么?)。
- 可靠传输机制:
- ARQ协议: 停止等待ARQ、连续ARQ(GBN, SR)。
- 滑动窗口: 理解发送窗口、接收窗口如何协同工作,实现流量控制与提高吞吐量。
- 流量控制与拥塞控制:
- 流量控制: 通过接收端的接收窗口(rwnd)控制发送端速率,防止接收方缓冲区溢出。涉及零窗口探测。
- 拥塞控制: 核心是避免网络过载,包含四个主要算法:慢启动、拥塞避免、快重传、快恢复。需要理解拥塞窗口(cwnd)的变化规律及其与发送窗口的关系。
四、网络层:IP与路由
- IP地址与子网划分: 掌握IPv4地址分类(A/B/C/D/E)、私有地址范围、子网掩码的作用,并能进行简单的子网划分计算。了解CIDR(无类别域间路由)表示法。
- 路由协议: 区分内部网关协议(IGP)如RIP、OSPF,和外部网关协议(EGP)如BGP的基本思想。OSPF的链路状态算法和RIP的距离向量算法是常见考点。
- 重要协议:
- ARP: 如何将IP地址解析为MAC地址,以及ARP欺骗的原理。
- ICMP: 网络探测与错误报告协议,ping和traceroute命令的基础。
五、应用层协议
- HTTP/HTTPS:
- HTTP方法: GET、POST、PUT、DELETE等及其区别与安全性。
- 状态码: 熟记1xx、2xx、3xx、4xx、5xx的典型代表(如200, 301/302, 404, 500)。
- 报文结构: 请求报文与响应报文的格式。
- HTTPS: 理解SSL/TLS加密流程,对称加密与非对称加密在其中的作用,以及数字证书的验证过程。
- DNS: 域名解析的迭代与递归查询过程,DNS记录的常见类型(A, AAAA, CNAME, MX等)。
六、其他高频考点
- 从输入URL到页面显示发生了什么? 这是一个综合性极强的问题,涵盖了DNS解析、TCP连接、HTTP请求、服务器处理、浏览器渲染等多个层次,是检验知识体系完整性的绝佳问题。
- Socket编程: 理解Socket作为应用层与传输层之间的抽象接口,以及基于TCP/UDP的Socket通信基本步骤。
- 网络设备: 了解交换机(数据链路层,基于MAC地址转发)、路由器(网络层,基于IP地址转发)的核心功能区别。
###
回顾计算机网络知识,关键在于理解其层次化设计思想与核心协议的工作原理。面试前,建议将上述知识点形成自己的逻辑脉络,并结合具体场景(如高并发、高延迟、安全需求)进行思考,这样不仅能应对常规问题,也能在深度追问中展现出扎实的理解与灵活的应用能力。网络知识浩瀚,但抓住主干,便能以不变应万变。