2946 字
15 分钟
【408】计算机网络

部分内容来源于 Java-Guide

基础#

分层模型#

OSI七层模型与TCP/IP四层模型分别是什么?

  • OSI七层:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
  • TCP/IP四层:网络接口层、网际层、传输层、应用层。

每层功能?

  • 应用层:为用户提供服务
  • 表示层:数据表示(转换、加解密、解压缩)
  • 会话层:管理应用程序之间的会话
  • 传输层:主机通信(TCP/UDP)
  • 网络层:路由、寻址、IP
  • 数据链路层:帧编码、纠错、MAC地址
  • 物理层:网卡、光纤

计算机网络体系是怎么工作的?#

三个核心原则

  1. 分层解耦(分工协作)
    • 每一层只干自己的活,不越界。比如传输层只关心端到端可靠性,不关心数据内容;应用层只关心业务逻辑,不关心数据怎么走光纤。
    • 好处:各层独立升级(比如物理层从网线换光纤,应用层代码丝毫不用改)。
  2. 对等通信(虚拟通信)
    • 虽然数据是物理上从上往下发、从下往上收,但逻辑上,发送端的“网络层”觉得是在和接收端的“网络层”直接沟通(实际上中间隔着下层)。这种“对等层之间的协议”决定了整个体系的稳定性。
  3. 封装与解封装(带信封装)
    • 发送方:数据每往下一层,就包一层“信封”(头部 Header);
    • 接收方:每往上一层,就拆一层“信封”。

整个体系就是“数据不动,协议动”——用户数据本身没变过,每一层都在它外面加上了自己的控制信息(头部),直到变成比特流传输出去。

网络层#

  • IP(Internet Protocol,网际协议):主要作用是定义数据包的格式、对数据包进行路由和寻址,以便它们可以跨网络传播并到达正确的目的地。
  • ARP(Address Resolution Protocol,地址解析协议),用于在局域网(LAN)中进行主机通信,是一种用于将网络层的地址转换为数据链路层地址的重要网络协议。 在TCP/IP网络中,ARP的主要功能是将IP地址转换为MAC地址。
  • ICMP(Internet Control Message Protocol,互联网控制报文协议):一种用于传输网络状态和错误消息的协议,常用于网络诊断和故障排除。例如,Ping 工具就使用了 ICMP 协议来测试网络连通性。
  • NAT(Network Address Translation,网络地址转换协议):NAT 协议的应用场景如同它的名称——网络地址转换,应用于内部网到外部网的地址转换过程中。具体地说,在一个小的子网(局域网,LAN)内,各主机使用的是同一个 LAN 下的 IP 地址,但在该 LAN 以外,在广域网(WAN)中,需要一个统一的 IP 地址来标识该 LAN 在整个 Internet 上的位置。

传输层#

TCP/UDP区别?

特性TCPUDP
连接性面向连接无连接
可靠性可靠不可靠(尽力而为)
状态维护有状态无状态
传输效率较低较高
传输形式面向字节流面向数据报(报文)
头部开销20 - 60 字节8 字节
通信模式点对点(单播)单播、多播、广播
常见应用HTTP/HTTPS, FTP, SMTP, SSHDNS, DHCP, SNMP, TFTP, VoIP, 视频流

TCP三次握手的过程? 客户端发送SYN → 服务端回复SYN+ACK → 客户端回复ACK,连接建立。

TCP四次挥手的过程? 主动方发送FIN → 被动方回复ACK → 被动方发送FIN → 主动方回复ACK。

TIME_WAIT状态的作用? 确保最后一个ACK能到达对方,让迟到的报文段有足够时间被丢弃。可通过net.ipv4.tcp_tw_reuse允许复用。

CLOSE_WAIT状态是什么?成因? 被动关闭方收到FIN后回复ACK进入的状态,表示等待应用层调用close()。堆积说明程序没正确关闭连接。

TCP 如何保证可靠传输?(重传/滑动窗口/拥塞控制)TCP 如何保证可靠传输?重传、滑动窗口与拥塞控制详解 | JavaGuide

应用层#

应用层常见协议?基于TCP还是UDP?

  • HTTP(Hypertext Transfer Protocol,超文本传输协议):是一种用于传输超文本和多媒体内容的应用层协议,主要为 Web 客户端与服务器之间的通信而设计。HTTP/1.x 和 HTTP/2 通常基于 TCP,HTTP/3 则运行在基于 UDP 的 QUIC 之上。
  • SMTP(Simple Mail Transfer Protocol,简单邮件发送协议):基于 TCP 协议,是一种用于发送电子邮件的协议。注意 ⚠️:SMTP 协议只负责邮件的发送,而不是接收。要从邮件服务器接收邮件,需要使用 POP3 或 IMAP 协议。
  • POP3/IMAP(邮件接收协议):基于 TCP 协议,两者都是负责邮件接收的协议。IMAP 协议是比 POP3 更新的协议,它在功能和性能上都更加强大。IMAP 支持邮件搜索、标记、分类、归档等高级功能,而且可以在多个设备之间同步邮件状态。几乎所有现代电子邮件客户端和服务器都支持 IMAP。
  • FTP(File Transfer Protocol,文件传输协议):基于 TCP 协议,是一种用于在计算机之间传输文件的协议,可以屏蔽操作系统和文件存储方式。注意 ⚠️:FTP 是一种不安全的协议,因为它在传输过程中不会对数据进行加密。建议在传输敏感数据时使用更安全的协议,如 SFTP。
  • Telnet(远程登陆协议):基于 TCP 协议,用于通过一个终端登陆到其他服务器。Telnet 协议的最大缺点之一是所有数据(包括用户名和密码)均以明文形式发送,这有潜在的安全风险。这就是为什么如今很少使用 Telnet,而是使用一种称为 SSH 的非常安全的网络传输协议的主要原因。
  • SSH(Secure Shell Protocol,安全的网络传输协议):基于 TCP 协议,通过加密和认证机制实现安全的访问和文件传输等业务
  • RTP(Real-time Transport Protocol,实时传输协议):通常基于 UDP 协议,但也支持 TCP 协议。它提供了端到端的实时传输数据的功能,但不包含资源预留存、不保证实时传输质量,这些功能由 WebRTC 实现。
  • DNS(Domain Name System,域名管理系统):通常基于 UDP 协议(端口 53),用于解决域名和 IP 地址的映射问题。当响应数据过大或进行区域传送时会改用 TCP。

HTTP状态码分类? 1xx信息、2xx成功、3xx重定向、4xx客户端错误、5xx服务端错误。

长连接与短连接的区别? 短连接每次请求后断开;长连接保持连接复用(HTTP Keep-Alive),减少握手开销。

DNS解析的查询顺序? 浏览器缓存 → 系统Hosts文件 → 本地DNS服务器 → 根域/顶级域递归查询。

HTTPS与HTTP的区别? HTTPS在HTTP下加TLS/SSL层,提供加密传输和身份认证。

HTTP/1.1 和 HTTP/2.0 有什么区别?

  • 多路复用(Multiplexing):HTTP/2.0 在同一连接上可以同时传输多个请求和响应(可以看作是 HTTP/1.1 中长链接的升级版本),互不干扰。HTTP/1.1 则使用串行方式,每个请求和响应都需要独立的连接,而浏览器为了控制资源会有 6-8 个 TCP 连接的限制。这使得 HTTP/2.0 在处理多个请求时更加高效,减少了网络延迟和提高了性能。
  • 二进制帧(Binary Frames):HTTP/2.0 使用二进制帧进行数据传输,而 HTTP/1.1 则使用文本格式的报文。二进制帧更加紧凑和高效,减少了传输的数据量和带宽消耗。
  • 队头阻塞:HTTP/2 引入了多路复用技术,允许多个请求和响应在单个 TCP 连接上并行交错传输,解决了 HTTP/1.1 应用层的队头阻塞问题,但 HTTP/2 依然受到 TCP 层队头阻塞的影响。
  • 头部压缩(Header Compression):HTTP/1.1 支持 Body 压缩,Header 不支持压缩。HTTP/2.0 支持对 Header 压缩,使用了专门为 Header 压缩而设计的 HPACK 算法,减少了网络开销。
  • 服务器推送(Server Push):HTTP/2.0 支持服务器推送,可以在客户端请求一个资源时,将其他相关资源一并推送给客户端,从而减少了客户端的请求次数和延迟。而 HTTP/1.1 需要客户端自己发送请求来获取相关资源。

HTTP请求从输入URL到页面展示的完整流程?

  1. 浏览器解析 URL 并检查缓存:浏览器解析 URL 的各组成部分,并检查 HTTP 缓存(强缓存、协商缓存)是否已有该资源的有效副本。
  2. DNS 解析:浏览器通过 DNS 协议(Hosts→本地DNS→递归查询),获取域名对应的 IP 地址。
  3. 建立传输连接:HTTP/1.1 和 HTTP/2 通常先通过 TCP 三次握手建立连接;HTTP/3 则建立基于 UDP 的 QUIC 连接。
  4. 建立安全通道(HTTPS):HTTP/1.1 和 HTTP/2 通常在 TCP 建连后进行 TLS 握手;HTTP/3 在 QUIC 建连过程中集成 TLS 1.3,完成密钥协商和服务器身份验证。
  5. 发送 HTTP 请求:浏览器在连接上向服务器发送 HTTP 请求报文,请求获取网页内容。
  6. 服务器处理并返回响应:服务器收到请求后处理并返回 HTTP 响应报文。
  7. 浏览器解析与渲染:浏览器解析 HTML、CSS,执行 JavaScript,并加载页面中引用的其他资源(图片、字体等)。
  8. 连接管理:页面加载完成后,连接根据 keep-alive 策略复用或关闭。

从OSI七层模型的角度看每一层做了什么:

第一阶段:发送请求(应用层 → 物理层)

  • 应用层:浏览器解析出协议(HTTP/HTTPS)、域名(如 www.baidu.com)和路径。
  • 表示层:对数据进行“翻译”和“加密”。如果是 HTTPS,在此层进行 TLS/SSL 握手和加解密;同时将字符编码统一(如 UTF-8)。
  • 会话层:建立、管理、维持本次通信的会话连接(Session)。虽然 HTTP 是无状态的,但此层负责确保断线重连时能续传。
  • 传输层:通过 DNS 解析得到目标 IP 后,选择 TCPUDP 协议。将数据切成数据段(Segment),并封装上源端口目标端口(80/443)。
  • 网络层:添加 IP 头部(源 IP 和 目标 IP)。通过路由算法查询下一跳地址,决定数据包走哪条路到达服务器。
  • 数据链路层:添加 MAC 地址(源 MAC 和下一跳网关的 MAC)。通过 ARP 协议(地址解析协议)获取下一跳路由器的物理地址。
  • 物理层:将数据帧转化为二进制 0/1 的比特流,通过网线、光纤或 Wi-Fi 的电磁波发送出去。

第二阶段:接收响应(物理层 → 应用层)从下往上逐层拆包(剥洋葱):

  • 物理层:接收电信号/光信号,还原成比特流。
  • 数据链路层:检查 MAC 地址是否匹配,拆掉 MAC 头部,交由上层。
  • 网络层:检查 IP 地址是否匹配,拆掉 IP 头部,交由上层。
  • 传输层:拆掉 TCP 头部,回传 ACK 确认包(三次握手的最后一步),并把乱序的数据包重排好,交给应用。
  • 会话/表示层:解密(HTTPS)、解压数据。
  • 应用层:解析 HTTP 响应报文(状态码 200、HTML 内容),浏览器开始渲染引擎解析 HTML、加载 CSS/JS,最终呈现出你看到的网页。
【408】计算机网络
https://blog-l7wd3.pages.dev/posts/interview/408-network/
作者
L7WD3-Xiao
发布于
2026-08-01
许可协议
CC BY-NC-SA 4.0

分享文章

生成精美分享图或复制链接,与更多人分享本文。

继续阅读

沿着主题读

基于共同的标签与分类

换条路线

从其他文章中稳定抽取