计算机网络是后端开发必须掌握的基础知识之一。无论是 Web 开发、分布式系统还是微服务架构,都离不开网络通信。
本文将系统整理计算机网络中的核心知识,包括:
-
网络分层模型
-
TCP / UDP
-
HTTP / HTTPS
-
Socket 与 WebSocket
-
三次握手四次挥手
-
常见网络面试题
一、计算机网络分层模型
计算机网络最经典的模型有两个:
| 模型 | 层数 |
|---|---|
| OSI七层模型 | 7层 |
| TCP/IP模型 | 4层 |
1 OSI七层模型
OSI模型是理论模型:
| 层级 | 名称 | 作用 |
|---|---|---|
| 第7层 | 应用层 | 为应用程序提供网络服务 |
| 第6层 | 表示层 | 数据加密、压缩 |
| 第5层 | 会话层 | 建立、管理会话 |
| 第4层 | 传输层 | 端到端通信 |
| 第3层 | 网络层 | 路由选择 |
| 第2层 | 数据链路层 | 数据帧传输 |
| 第1层 | 物理层 | 比特流传输 |
2 TCP/IP四层模型(实际使用)
实际互联网使用的是 TCP/IP 模型:
| 层级 | 协议 |
|---|---|
| 应用层 | HTTP、HTTPS、FTP、DNS |
| 传输层 | TCP、UDP |
| 网络层 | IP |
| 网络接口层 | Ethernet |
关系如下:
应用层 HTTP FTP DNS
传输层 TCP UDP
网络层 IP
数据链路层 Ethernet
物理层 网线
二、TCP 与 UDP
传输层最重要的两个协议:
-
TCP
-
UDP
1 TCP(传输控制协议)
特点:
-
面向连接
-
可靠传输
-
有序传输
-
有拥塞控制
-
有流量控制
TCP适合:
-
Web
-
文件传输
-
邮件
-
数据库通信
例如:
HTTP
HTTPS
MySQL
FTP
2 UDP(用户数据报协议)
特点:
-
无连接
-
不可靠
-
传输快
-
不保证顺序
适合:
-
视频直播
-
语音通话
-
DNS
例如:
DNS
视频直播
在线游戏
3 TCP vs UDP
| 特性 | TCP | UDP |
|---|---|---|
| 是否连接 | 面向连接 | 无连接 |
| 可靠性 | 可靠 | 不可靠 |
| 速度 | 较慢 | 快 |
| 顺序 | 保证 | 不保证 |
| 应用 | HTTP | DNS |
三、TCP 三次握手
TCP 建立连接需要 三次握手。
过程:
客户端 服务器
SYN ----------->
<----------- SYN + ACK
ACK ----------->
步骤:
第一次握手
客户端发送:
SYN = 1
seq = x
表示请求建立连接。
第二次握手
服务器返回:
SYN = 1
ACK = 1
seq = y
ack = x+1
表示:
-
收到请求
-
同意连接
第三次握手
客户端发送:
ACK = 1
ack = y+1
连接建立成功。
为什么是三次?
原因:
防止 历史连接请求导致错误连接。
如果只有两次:
旧的请求可能被服务器误认为新的连接。
四、TCP 四次挥手
TCP断开连接需要 四次挥手。
客户端 服务器
FIN ------------>
<------------ ACK
<------------ FIN
ACK ------------>
第一次挥手
客户端发送:
FIN
表示我没有数据发送了。
第二次挥手
服务器回复:
ACK
表示收到。
第三次挥手
服务器发送:
FIN
表示服务器也没有数据发送。
第四次挥手
客户端回复:
ACK
连接关闭。
五、HTTP 协议
HTTP 是 应用层协议。
用于:
浏览器 <-> 服务器
特点:
-
无连接(HTTP1.0)
-
无状态
-
基于 TCP
HTTP请求结构
HTTP请求包含:
请求行
请求头
请求体
示例:
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Chrome
HTTP响应结构
状态行
响应头
响应体
示例:
HTTP/1.1 200 OK
Content-Type: text/html
六、HTTP 常见状态码
| 状态码 | 含义 |
|---|---|
| 200 | 请求成功 |
| 301 | 永久重定向 |
| 302 | 临时重定向 |
| 400 | 请求错误 |
| 401 | 未认证 |
| 403 | 禁止访问 |
| 404 | 资源不存在 |
| 500 | 服务器错误 |
| 502 | 网关错误 |
| 503 | 服务不可用 |
七、HTTP 与 HTTPS
HTTP:
明文传输
不安全
HTTPS:
HTTP + SSL/TLS
加密传输
HTTPS主要解决:
-
数据加密
-
身份认证
-
数据完整性
HTTPS流程:
客户端请求
↓
服务器返回证书
↓
客户端验证证书
↓
协商对称密钥
↓
加密通信
八、Socket 原理
Socket 是:
网络通信的抽象接口
通信流程:
客户端
Socket.connect()
↓
服务器
Socket.listen()
Socket.accept()
简单流程:
客户端发送数据
↓
服务器接收数据
↓
服务器返回响应
Java示例:
客户端:
java
Socket socket = new Socket("127.0.0.1",8080);
OutputStream os = socket.getOutputStream();
os.write("hello".getBytes());
服务器:
java
ServerSocket server = new ServerSocket(8080);
Socket socket = server.accept();
InputStream is = socket.getInputStream();
九、WebSocket
HTTP 是:
请求 -> 响应
而 WebSocket 是:
长连接
双向通信
适用于:
-
聊天系统
-
实时消息
-
实时数据
流程:
HTTP握手
↓
升级协议
↓
WebSocket连接
优点:
-
服务器可以主动推送数据
-
实时性高
-
减少HTTP请求
十、常见计算机网络面试题
1 TCP为什么需要三次握手?
防止历史连接请求造成错误连接。
2 TCP为什么四次挥手?
因为:
发送数据
接收数据
是两个独立过程。
3 HTTP 是无状态的是什么意思?
服务器不会保存客户端的状态。
解决方案:
Cookie
Session
Token
4 GET 和 POST 的区别
| 对比 | GET | POST |
|---|---|---|
| 参数 | URL | 请求体 |
| 安全 | 较低 | 较高 |
| 长度 | 有限制 | 理论无限 |
| 缓存 | 可以 | 不可以 |
十一、总结
计算机网络核心知识:
网络分层模型
TCP / UDP
三次握手
四次挥手
HTTP / HTTPS
Socket
WebSocket
对于后端开发来说,理解这些原理非常重要。
因为:
-
Web 请求本质是 HTTP
-
微服务通信依赖 TCP
-
实时系统依赖 WebSocket
掌握计算机网络,能够更好地理解整个互联网系统的运行机制。