【计算机网络篇|第一篇】初识计算机网络
一、什么是计算机网络
计算机网络是指将地理位置不同的多台计算机及其外部设备,通过通信线路和网络设备连接起来,在网络协议和网络操作系统的管理下,实现资源共享和信息传递的系统。简单来说,网络解决的核心问题就是:让不同的设备能够互相通信,并共享资源。通俗一点就是解决不同设备之间的通信问题。
从使用者的角度看,我们每天访问网页、发送消息、观看视频,背后都依赖计算机网络完成数据的传输与交换。理解网络的基本原理,有助于排查连接问题、优化应用性能,也能为学习后端开发、运维和分布式系统打下基础。下面会讲到计算机网络的一些基本的知识点,以及一些常见的名词。
二、网络的分层模型
为了降低复杂度,网络通信被划分为多个层次,每一层只关注自己的职责,并通过接口与相邻层交互。常见的分层模型有两种:OSI 七层模型和 TCP/IP 四层模型。
| OSI 七层 | TCP/IP 四层 | 主要职责 | 典型协议 |
|---|---|---|---|
| 应用层 | 应用层 | 为应用程序提供网络服务 | HTTP、DNS、FTP、SMTP |
| 表示层 | 应用层 | 数据格式转换、加密与压缩 | TLS、JPEG、ASCII |
| 会话层 | 应用层 | 建立、管理和终止会话 | RPC、NetBIOS |
| 传输层 | 传输层 | 端到端的数据传输与可靠性控制 | TCP、UDP |
| 网络层 | 网络层 | 逻辑寻址与路由选择 | IP、ICMP、ARP |
| 数据链路层 | 网络接口层 | 相邻节点间的帧传输与差错检测 | Ethernet、PPP |
| 物理层 | 网络接口层 | 比特流的传输与物理介质 | 双绞线、光纤、Wi-Fi 射频 |
在实际工程中,TCP/IP 四层模型更贴近真实实现。数据发送时自上而下逐层封装,接收时自下而上逐层解封装,这就是常说的封装与解封装过程。
三、核心概念:IP、端口与协议
1. IP 地址
IP 地址用于在网络中唯一标识一台主机。IPv4 地址是 32 位,通常写成点分十进制形式,例如 192.168.1.10;IPv6 地址是 128 位,用于缓解 IPv4 地址枯竭问题。IP 地址分为公网地址和私有地址,私有地址需要经过 NAT 转换才能访问公网。
2. 端口
一台主机上可能同时运行多个网络程序,端口号用于区分不同的应用进程。端口范围是 0 到 65535,其中 0 到 1023 为知名端口,例如 HTTP 默认使用 80,HTTPS 默认使用 443,SSH 默认使用 22。
3. 协议
协议是通信双方共同遵守的规则集合,规定了数据的格式、传输顺序以及异常处理方式。只有双方遵循同一协议,数据才能被正确解析。
四、TCP 与 UDP
传输层最常用的两个协议是 TCP 和 UDP,它们面向不同的业务需求。
| 对比项 | TCP | UDP |
|---|---|---|
| 连接方式 | 面向连接,需三次握手 | 无连接,直接发送 |
| 可靠性 | 可靠,有确认与重传机制 | 不可靠,不保证送达 |
| 数据形式 | 字节流 | 数据报,保留消息边界 |
| 传输效率 | 相对较低 | 较高,开销小 |
| 典型场景 | 网页、文件传输、数据库连接 | 视频直播、在线游戏、DNS 查询 |
TCP 通过三次握手建立连接、四次挥手断开连接,并借助序号、确认应答、超时重传和滑动窗口实现可靠传输与流量控制。UDP 则把可靠性交给应用层自行处理,换取更低的延迟。
五、HTTP 与 DNS
1. HTTP
HTTP 是应用层最常见的协议,采用请求与响应模型。一次典型的网页访问流程大致如下:
- 浏览器解析域名,先查询本地缓存,再向 DNS 服务器发起解析请求。
- 拿到目标 IP 后,与服务器建立 TCP 连接,HTTPS 还需完成 TLS 握手。
- 浏览器发送 HTTP 请求,服务器返回状态码、响应头和响应体。
- 浏览器解析 HTML,继续请求 CSS、JavaScript、图片等资源并渲染页面。
2. DNS
DNS 负责把便于记忆的域名解析为 IP 地址,是一个分布式的层级数据库。解析过程通常经过浏览器缓存、操作系统缓存、本地 DNS 服务器,必要时再向根域名服务器、顶级域名服务器和权威域名服务器逐级查询。
六、一个简单的网络请求示例
下面用 Java 演示一次最基础的 HTTP GET 请求,帮助理解客户端与服务器之间的交互过程。
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class HttpGetDemo {
public static void main(String[] args) throws Exception {
URL url = new URL("https://example.com");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5000);
conn.setReadTimeout(5000);
int status = conn.getResponseCode();
System.out.println("状态码: " + status);
try (BufferedReader reader = new BufferedReader(
new InputStreamReader(conn.getInputStream(), "UTF-8"))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} finally {
conn.disconnect();
}
}
}
这段代码依次完成了建立连接、发送请求、读取响应和释放连接,正好对应前面提到的分层协作过程。
七、常见网络设备与拓扑
- 交换机:工作在数据链路层,根据 MAC 地址转发数据帧,常用于局域网内部互联。
- 路由器:工作在网络层,根据路由表选择转发路径,实现不同网络之间的通信。
- 网关:连接不同协议或不同网络的设备,常作为内网访问外网的出口。
- 防火墙:依据规则过滤进出流量,提供访问控制与安全防护。
常见的网络拓扑包括星型、总线型、环型和网状结构。现代企业网络多采用分层设计,分为接入层、汇聚层和核心层,以兼顾性能、可靠性与扩展性。
八、网络性能的关键指标
衡量网络质量通常关注以下几个指标:
- 带宽:单位时间内可传输的数据量,常用 Mbps 或 Gbps 表示。
- 时延:数据从发送端到接收端所需的时间,包括传输时延、传播时延、处理时延和排队时延。
- 抖动:时延的变化程度,对实时音视频影响较大。
- 丢包率:丢失数据包占总发送数据包的比例,直接影响传输质量。
九、总结
计算机网络通过分层模型把复杂的通信过程拆解为清晰的职责边界,IP 负责寻址与路由,TCP 和 UDP 负责端到端传输,HTTP 与 DNS 等应用层协议则支撑起我们日常使用的各类服务。掌握这些基础概念后,可以进一步学习子网划分、路由协议、网络安全以及性能调优等进阶主题。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)