
当我们在浏览器中输入一个网址并按下回车,页面看似很快就出现了;但在这背后,浏览器、操作系统、网卡、交换机、路由器、DNS 服务器和 Web 服务器共同完成了一次跨网络协作。
这个过程会涉及 DNS、HTTP、TCP、IP、ARP、以太网等许多协议。它们并不是彼此孤立的知识点,而是按照分层模型协作的。
计算机网络初学时容易遇到一个问题:协议很多、名词很多,却不知道它们分别出现在哪一步。本系列会按照 五层模型 展开,先建立全局视角,再逐层理解每个协议解决的问题。
一、计算机网络这门课到底在解决什么问题?
最简单的网络通信,可以理解为两台计算机通过一根网线交换数据。但当通信范围从两台设备扩展到一个局域网、多个局域网,甚至整个互联网时,问题会迅速变复杂:
- 数据如何在线缆、光纤或无线信号中传输?
- 数据传输出错或丢失时,如何发现并处理?
- 多台设备同时通信时,如何找到正确的目标设备?
- 数据跨越不同网络时,如何选择下一跳和最终路径?
- 一台主机上的多个应用同时联网时,数据该交给哪个应用?
- 浏览器、邮件客户端、文件传输工具如何约定数据格式?
这些问题不可能由一个协议全部解决。因此,网络把复杂任务拆分给不同层次:每一层只专注解决一类问题,并向上层提供服务。这就是分层思想。
二、为什么要按照分层模型学习?
分层的价值不只是便于记忆,更重要的是帮助我们定位每个概念的职责和边界。
有了分层视角,网络问题就不再是一团杂乱的协议名,而可以沿着“从下到上”或“从上到下”的路径逐步分析。
本文及后续文章采用 五层模型:
| 应用层 | 为用户和应用程序提供网络服务 | HTTP、DNS、DHCP、FTP、SMTP |
| 传输层 | 实现进程到进程的通信 | TCP、UDP、端口号 |
| 网络层 | 让数据跨网络到达目标主机 | IP、路由、ICMP、NAT |
| 数据链路层 | 在同一链路或局域网中传输数据 | 以太网、MAC、ARP、交换机、VLAN |
| 物理层 | 将比特转换为可在介质中传播的信号 | 网线、光纤、无线电波、编码与调制 |
三、本系列的学习路线
学习计算机网络不需要一开始就钻进 TCP 报文首部或路由算法。更自然的路线是:先知道每层在做什么,再逐步理解这一层中的关键协议。
1. 概述:先建立网络全景图
这一部分回答三个问题:网络为什么要分层、不同层之间如何协作、数据在不同层的名字为什么不同。
- TCP/IP 五层模型与 OSI 七层模型
- 协议、服务与接口的关系
- 报文、数据段、数据报、帧和比特流
- 分组交换与网络性能指标
2. 物理层:比特如何真正出发
物理层关注的是最底层的传输问题:0 和 1 如何通过电信号、光信号或无线电波表示出来,以及一条信道的容量为什么有理论上限。
- 传输介质与信号
- 编码和调制
- 信道复用
- 奈奎斯特定理与香农公式
3. 数据链路层:数据如何走出当前局域网
主机把数据交给网卡后,数据还需要被封装成帧,交由交换机或无线接入设备转发。MAC 地址、ARP 和以太网都属于这一阶段的重要内容。
- 帧与差错检测
- MAC 地址与交换机转发
- ARP:从 IP 地址获取下一跳 MAC 地址
- 以太网、VLAN 与介质访问控制
4. 网络层:数据如何跨越不同网络
局域网只能解决局部范围内的通信。网络层通过 IP 地址和路由机制,使数据能够从一台主机出发,经过多个路由器,到达另一个网络中的目标主机。
- IPv4、IPv6 与 IP 编址
- 子网掩码、CIDR 和子网划分
- 路由器转发与路由选择
- NAT、ICMP、SDN
5. 传输层:数据如何交给正确的应用
一台主机上同时运行浏览器、聊天软件、数据库和游戏客户端。仅有 IP 地址只能找到主机,传输层还需要借助端口号把数据交给正确的进程。
- TCP 与 UDP 的区别和应用场景
- 可靠传输、确认与重传
- 三次握手、四次挥手和连接状态
- 流量控制与拥塞控制
6. 应用层:浏览器和服务器真正说的话
应用层直接面向具体网络应用。日常访问网站时最常接触的 DNS、HTTP 和 HTTPS,都属于这一层。
- DNS 域名解析
- HTTP 请求与响应
- HTTPS 与 TLS
- DHCP、电子邮件、文件传输、CDN 等协议和服务
四、从输入 URL 开始,一次 Web 请求经过了什么?
在深入每一层前,先从一个完整的案例出发:在浏览器中输入 https://www.baidu.com。
简化后的流程如下:
五、一次请求中,各层分别做了什么?
| 应用层 | DNS 查询域名;浏览器发送 HTTP 请求、接收 HTTP 响应 |
| 传输层 | DNS 通常使用 UDP;HTTP 常基于 TCP 传输;通过端口找到对应进程 |
| 网络层 | 为数据添加源 IP 和目的 IP;路由器根据目的 IP 转发数据 |
| 数据链路层 | 使用 MAC 地址在当前链路传输帧;必要时通过 ARP 获取下一跳 MAC 地址 |
| 物理层 | 将帧表示为可传播的信号,通过网线、光纤或 Wi-Fi 发出 |
通过这个例子,我们可以对计算机网络有一个全局的认识,下一篇,将详细介绍一下计算机网络是如何分层的?
如果这篇文章对你有帮助,欢迎点赞、评论、关注、收藏。你们的支持是我前进的动力!





