```html
📞 客服热线: 400-888-8888 📧 邮箱: support@kaoacca.cn 📅 更新日期: 2024-05-20

计算机网络面试题目全解析

从OSI七层模型到TCP/IP协议簇,从三次握手到HTTPS加密,为您提供最专业、最全面的计算机网络面试备考指南。助力您轻松通过技术面试,斩获心仪Offer。

计算机网络面试核心基础

OSI七层模型 vs TCP/IP四层模型

在面试中,OSI七层模型与TCP/IP四层模型的区别是必考题。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型简化为网络接口层、网际层、传输层和应用层。面试者需清楚两者对应关系,例如TCP/IP的网际层对应OSI的网络层,应用层对应OSI的上三层。

IP地址分类与子网划分

掌握A、B、C、D、E类IP地址的范围及默认子网掩码是基础中的基础。面试常考CIDR(无类别域间路由)表示法,如/24、/26等。需熟练计算网络地址、广播地址、可用主机数及子网掩码。例如,IP为192.168.1.100/26,需快速计算出其子网掩码为255.255.255.192,网络地址为192.168.1.64。

ARP协议工作原理

ARP(地址解析协议)用于将IP地址解析为MAC地址。面试中常问ARP缓存表的作用及ARP欺骗攻击原理。ARP请求是广播发送,ARP响应是单播发送。了解ARP中毒攻击及防御措施(如静态ARP绑定)能体现候选人的安全意识。

TCP/IP 协议栈深度解析

TCP 与 UDP 的核心区别

TCP(传输控制协议)是面向连接的、可靠的、基于字节流的传输层通信协议。它具有以下特点:

  • ① 面向连接:通信前需建立连接(三次握手)。
  • ② 可靠传输:通过序列号、确认应答、重传机制保证数据不丢失、不重复、有序到达。
  • ③ 面向字节流:将数据视为无结构的字节流。
  • ④ 全双工通信:允许数据同时在双向通道上传输。

UDP(用户数据报协议)是无连接的、不可靠的传输层协议。其特点包括:

  • ① 无连接:发送数据前无需建立连接。
  • ② 不可靠传输:不保证数据到达,也不保证顺序。
  • ③ 面向报文:应用层交给UDP多长的报文,UDP就发送多长,不合并也不拆分。
  • ④ 首部开销小:仅8字节,比TCP的20字节小得多。

应用场景:TCP适用于对数据准确性要求高的场景,如文件传输(FTP)、电子邮件(SMTP)、网页浏览(HTTP);UDP适用于对实时性要求高、允许少量丢包的场景,如视频会议、直播、DNS查询。

TCP 三次握手与四次挥手

三次握手(Three-Way Handshake)用于建立连接:

  1. 客户端发送SYN包(seq=x)到服务器,进入SYN_SENT状态。
  2. 服务器收到SYN包,必须确认客户的SYN(ACK=x+1),同时自己也发送一个SYN包(seq=y),即SYN+ACK包,此时服务器进入SYN_RECV状态。
  3. 客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ACK=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

为何需要三次握手?防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。

四次挥手(Four-Way Wavehand)用于断开连接:

  1. 客户端发送FIN包,进入FIN_WAIT_1状态。
  2. 服务器收到FIN,发送ACK包确认,进入CLOSE_WAIT状态(半关闭)。
  3. 服务器处理完数据后,发送FIN包给客户端,进入LAST_ACK状态。
  4. 客户端收到FIN,发送ACK包确认,进入TIME_WAIT状态,等待2MSL后关闭。

为何TIME_WAIT状态需要等待2MSL?1. 保证最后一个ACK报文到达服务器;2. 允许旧报文在网络中消散。

流量控制与拥塞控制

流量控制(Flow Control)目的是防止发送方发送速度过快导致接收方来不及接收。主要手段是滑动窗口(Sliding Window)机制。接收方通过TCP首部中的窗口字段通知发送方自己还能接收多少数据。

拥塞控制(Congestion Control)目的是防止过多的数据注入到网络中,使网络中的路由器或链路不致过载。主要手段包括:

  • ① 慢启动(Slow Start):初始拥塞窗口cwnd设为1,每经过一个RTT,cwnd加倍。
  • ② 拥塞避免(Congestion Avoidance):cwnd达到慢启动阈值ssthresh后,每经过一个RTT,cwnd加1。
  • ③ 快重传(Fast Retransmit):收到3个重复ACK时,立即重传丢失报文,而不等待超时。
  • ④ 快恢复(Fast Recovery):快重传后,将ssthresh减半,cwnd设为新的ssthresh,然后进入拥塞避免阶段。

HTTP 与 HTTPS 面试热点

特性 HTTP HTTPS
端口号 80 443
安全性 明文传输,易被窃听、篡改 加密传输,安全性高
证书 无需证书 需要SSL证书,由CA机构颁发
链接形式 http:// https://
资源消耗 较少 较多(需握手加密解密)

HTTPS 加密过程详解

HTTPS = HTTP + SSL/TLS。其加密过程涉及对称加密和非对称加密:

  1. 客户端发送Client Hello,包含支持的加密算法、随机数1。
  2. 服务器返回Server Hello,包含选择的加密算法、随机数2、服务器证书(含公钥)。
  3. 客户端验证证书合法性,生成随机数3(预主密钥),用服务器公钥加密后发送给服务器。
  4. 服务器用私钥解密得到随机数3。
  5. 双方根据随机数1、2、3生成会话密钥(对称密钥)。
  6. 后续通信使用会话密钥进行对称加密传输。
// 示例:HTTP 请求头
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html
Connection: keep-alive
            

网络安全相关面试题

XSS 跨站脚本攻击

XSS(Cross-Site Scripting)攻击是指攻击者在网页中嵌入恶意脚本代码,当其他用户浏览该网页时,脚本代码会在用户浏览器中执行。分为存储型、反射型和DOM型。防御措施包括:输入验证、输出编码、使用HttpOnly Cookie。

CSRF 跨站请求伪造

CSRF(Cross-Site Request Forgery)攻击是指攻击者诱导用户访问受信任的网站,并利用用户的登录状态发起非预期的请求。防御措施包括:验证Referer、添加Token、使用SameSite Cookie属性。

SQL 注入

SQL Injection攻击是指攻击者通过在输入字段中注入恶意SQL代码,从而操纵后端数据库。防御措施包括:使用预编译语句(PreparedStatement)、参数化查询、输入验证。

网络配置与运维实战

Ping 命令

用于测试主机之间的连通性,基于ICMP协议。常考参数:-t(持续ping)、-n(指定次数)、-l(指定数据包大小)。

Tracert / Traceroute

用于追踪数据包从源到目的地经过的路由节点。Windows下用tracert,Linux下用traceroute。基于ICMP或UDP协议,利用TTL字段实现。

Nslookup / Dig

用于查询DNS记录,测试DNS解析是否正常。可查询A记录、CNAME记录、MX记录等。常考正向解析与反向解析。

Netstat

用于显示网络连接、路由表和网络接口信息。常考参数:-a(所有连接)、-n(数字地址)、-p(显示进程ID)、-t(TCP)、-u(UDP)。

高频面试问答精选

Q1: 输入URL到页面显示经历了什么?

这是一个经典的大题,涵盖知识点极广。主要步骤包括:

  1. ① 浏览器缓存检查:检查浏览器缓存、CDN缓存、DNS缓存。
  2. ② DNS解析:将域名解析为IP地址(递归查询与迭代查询)。
  3. ③ TCP连接:发起三次握手建立TCP连接。
  4. ④ 发送HTTP请求:构造请求行、请求头、请求体。
  5. ⑤ 服务器处理:Web服务器接收请求,后端处理业务逻辑。
  6. ⑥ 返回HTTP响应:返回状态码、响应头、响应体(HTML)。
  7. ⑦ 浏览器渲染:解析HTML、CSS、JS,构建DOM树、CSSOM树,合并为渲染树,布局,绘制。
  8. ⑧ TCP连接关闭:四次挥手关闭连接。

Q2: 什么是CDN?为什么使用CDN?

CDN(Content Delivery Network)即内容分发网络,通过将内容缓存到离用户最近的边缘节点,加速用户访问。优势包括:提高访问速度、减轻源站压力、提高可用性、增强安全性(防DDoS)。

Q3: 浏览器缓存策略有哪些?

浏览器缓存分为强缓存和协商缓存。

  • 强缓存:通过HTTP响应头Expires(绝对时间)或Cache-Control(相对时间,如max-age=3600)控制。命中强缓存,不发送请求到服务器。
  • 协商缓存:未命中强缓存时,发送请求到服务器,通过ETag(文件指纹)或Last-Modified(最后修改时间)验证资源是否更新。若未更新,返回304,使用本地缓存。

网友们还关心

```
斌知网
蜀ICP备2026017620号-5