前言 网络协议是计算机网络通信的基础,定义了数据传输的规则和格式。本文将详细介绍常用的网络协议,包括TCP、UDP、HTTP、HTTPS、WebSocket等,帮助您深入理解网络通信的原理和实践应用。
1. OSI七层模型与TCP/IP四层模型 1.1 OSI七层模型 1 2 3 4 5 6 7 应用层 (Application Layer) - HTTP, FTP, SMTP, DNS 表示层 (Presentation Layer) - 数据格式转换、加密 会话层 (Session Layer) - 会话管理 传输层 (Transport Layer) - TCP, UDP 网络层 (Network Layer) - IP, ICMP, ARP 数据链路层 (Data Link Layer) - MAC, 以太网 物理层 (Physical Layer) - 物理介质、比特流
1.2 TCP/IP四层模型 1 2 3 4 应用层 (Application Layer) - HTTP, FTP, SMTP, DNS, SSH 传输层 (Transport Layer) - TCP, UDP 网络层 (Internet Layer) - IP, ICMP, ARP 网络接口层 (Network Interface) - 以太网, Wi-Fi
1.3 数据封装过程 1 2 3 4 5 6 7 8 9 应用层:数据 (Data) ↓ 传输层:数据段 (Segment) = 数据 + TCP/UDP头 ↓ 网络层:数据包 (Packet) = 数据段 + IP头 ↓ 链路层:数据帧 (Frame) = 数据包 + MAC头 ↓ 物理层:比特流 (Bits)
2. TCP协议(传输控制协议) 2.1 TCP特点 可靠性保证:
✅ 面向连接
✅ 可靠传输
✅ 顺序传输
✅ 流量控制
✅ 拥塞控制
❌ 传输效率相对较低
2.2 TCP报文格式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 0 16 31 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 源端口号 (16位) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 目标端口号 (16位) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 序列号 (32位) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 确认号 (32位) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |头长度|保留|标志位| 窗口大小 (16位) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 校验和 (16位) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 紧急指针 (16位) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 选项 (可变长度) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 数据 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
重要字段说明:
序列号(Sequence Number) :标识发送的数据字节
确认号(Acknowledgment Number) :期望接收的下一个字节
标志位 :
SYN:同步,建立连接
ACK:确认
FIN:结束,关闭连接
RST:重置连接
PSH:推送数据
URG:紧急数据
2.3 TCP三次握手(建立连接) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 客户端 服务器 | | | SYN (seq=x) | |------------------------------->| 第一次握手 | | 服务器收到SYN | | | SYN+ACK (seq=y, ack=x+1) | |<-------------------------------| 第二次握手 | 客户端收到SYN+ACK | | | | ACK (ack=y+1) | |------------------------------->| 第三次握手 | | 连接建立 | 数据传输 | |<------------------------------>|
为什么需要三次握手?
第一次握手 :客户端发送SYN
第二次握手 :服务器发送SYN+ACK
第三次握手 :客户端发送ACK
服务器知道:客户端接收能力正常
防止已失效的连接请求到达服务器
示例场景:
1 2 3 客户端:你好,我是客户端,能听到吗?(SYN) 服务器:收到!我是服务器,你能听到我吗?(SYN+ACK) 客户端:收到!我们可以开始通信了。(ACK)
2.4 TCP四次挥手(关闭连接) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 客户端 服务器 | | | FIN (seq=u) | |------------------------------->| 第一次挥手 | | 客户端请求关闭 | | | ACK (ack=u+1) | |<-------------------------------| 第二次挥手 | | 服务器确认 | | | FIN (seq=w) | |<-------------------------------| 第三次挥手 | | 服务器请求关闭 | ACK (ack=w+1) | |------------------------------->| 第四次挥手 | | 客户端确认 | | | 等待2MSL | | | 连接关闭
为什么需要四次挥手?
第一次挥手 :客户端发送FIN
第二次挥手 :服务器发送ACK
第三次挥手 :服务器发送FIN
第四次挥手 :客户端发送ACK
为什么要等待2MSL?
MSL(Maximum Segment Lifetime):报文最大生存时间
确保最后的ACK能够到达服务器
确保旧连接的所有报文都消失
2.5 TCP可靠性保证机制 1. 序列号和确认号
1 2 发送方:发送序列号为100的数据 接收方:返回确认号为101(期望接收下一个字节)
2. 超时重传
1 2 发送方发送数据后启动定时器 如果超时未收到ACK,重新发送数据
3. 滑动窗口
1 2 3 发送窗口:允许发送但未确认的数据量 接收窗口:允许接收的数据量 动态调整窗口大小,实现流量控制
4. 拥塞控制
1 2 3 4 慢启动:指数增长 拥塞避免:线性增长 快速重传:收到3个重复ACK立即重传 快速恢复:减半窗口大小
2.6 TCP状态转换 1 2 3 4 5 客户端状态: CLOSED → SYN_SENT → ESTABLISHED → FIN_WAIT_1 → FIN_WAIT_2 → TIME_WAIT → CLOSED 服务器状态: CLOSED → LISTEN → SYN_RCVD → ESTABLISHED → CLOSE_WAIT → LAST_ACK → CLOSED
3. UDP协议(用户数据报协议) 3.1 UDP特点 简单高效:
✅ 无连接
✅ 不可靠传输
✅ 无序传输
✅ 传输效率高
✅ 支持广播和多播
❌ 不保证可靠性
3.2 UDP报文格式 1 2 3 4 5 6 7 8 9 10 11 12 0 16 31 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 源端口号 (16位) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 目标端口号 (16位) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 长度 (16位) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 校验和 (16位) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 数据 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
3.3 TCP vs UDP
特性
TCP
UDP
连接
面向连接
无连接
可靠性
可靠传输
不可靠传输
顺序
保证顺序
不保证顺序
速度
较慢
较快
开销
较大(20字节头)
较小(8字节头)
流量控制
有
无
拥塞控制
有
无
适用场景
文件传输、邮件、网页
视频、音频、游戏、DNS
3.4 UDP使用场景 适合UDP的场景:
实时性要求高
允许数据丢失
简单查询
广播/多播
4. IP协议(网际协议) 4.1 IPv4 IPv4地址格式:
1 2 3 4 5 32位二进制,通常用点分十进制表示 例如:192.168.1.1 二进制:11000000.10101000.00000001.00000001 十进制:192.168.1.1
IPv4地址分类:
1 2 3 4 5 6 7 8 9 10 11 A类:0.0.0.0 - 127.255.255.255 网络号8位,主机号24位 B类:128.0.0.0 - 191.255.255.255 网络号16位,主机号16位 C类:192.0.0.0 - 223.255.255.255 网络号24位,主机号8位 D类:224.0.0.0 - 239.255.255.255(多播) E类:240.0.0.0 - 255.255.255.255(保留)
私有IP地址:
1 2 3 A类:10.0.0.0 - 10.255.255.255 B类:172.16.0.0 - 172.31.255.255 C类:192.168.0.0 - 192.168.255.255
特殊IP地址:
1 2 3 127.0.0.1:本地回环地址 0.0.0.0:表示所有地址 255.255.255.255:广播地址
4.2 IPv6 IPv6地址格式:
1 2 3 4 128位,用冒号分隔的8组十六进制数 例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334 简写:2001:db8:85a3::8a2e:370:7334
IPv6优势:
地址空间巨大(2^128个地址)
简化的报文头
内置安全性(IPSec)
更好的移动性支持
无需NAT
5. HTTP协议(超文本传输协议) 5.1 HTTP特点 基本特性:
基于TCP协议
无状态协议
请求-响应模式
支持多种方法
灵活可扩展
5.2 HTTP请求方法
方法
说明
幂等性
安全性
GET
获取资源
✅
✅
POST
创建资源
❌
❌
PUT
更新资源(完整)
✅
❌
PATCH
更新资源(部分)
❌
❌
DELETE
删除资源
✅
❌
HEAD
获取响应头
✅
✅
OPTIONS
获取支持的方法
✅
✅
TRACE
追踪请求路径
✅
✅
CONNECT
建立隧道
❌
❌
幂等性: 多次执行相同操作,结果相同安全性: 不会修改服务器资源
5.3 HTTP请求格式 1 2 3 4 5 6 7 8 9 10 GET /api/users/123 HTTP/1.1 Host : example.comUser-Agent : Mozilla/5.0Accept : application/jsonAuthorization : Bearer token123Content-Type : application/json{ "name" : "张三" }
请求组成:
请求行 :方法 + URL + 协议版本
请求头 :键值对形式的元数据
空行 :分隔请求头和请求体
请求体 :POST/PUT等方法的数据
5.4 HTTP响应格式 1 2 3 4 5 6 7 8 9 10 11 HTTP/1.1 200 OKContent-Type : application/jsonContent-Length : 58Date : Wed, 10 Dec 2025 10:00:00 GMTServer : nginx/1.18.0{ "id" : 123 , "name" : "张三" , "age" : 25 }
响应组成:
状态行 :协议版本 + 状态码 + 状态描述
响应头 :键值对形式的元数据
空行 :分隔响应头和响应体
响应体 :返回的数据
5.5 HTTP状态码 1xx:信息性状态码
1 2 100 Continue:继续发送请求体 101 Switching Protocols:切换协议(如WebSocket)
2xx:成功状态码
1 2 3 4 200 OK:请求成功 201 Created:资源创建成功 204 No Content:成功但无返回内容 206 Partial Content:部分内容(断点续传)
3xx:重定向状态码
1 2 3 4 5 301 Moved Permanently:永久重定向 302 Found:临时重定向 304 Not Modified:资源未修改(缓存) 307 Temporary Redirect:临时重定向(保持方法) 308 Permanent Redirect:永久重定向(保持方法)
4xx:客户端错误
1 2 3 4 5 6 7 8 400 Bad Request:请求错误 401 Unauthorized:未授权 403 Forbidden:禁止访问 404 Not Found:资源不存在 405 Method Not Allowed:方法不允许 408 Request Timeout:请求超时 409 Conflict:冲突 429 Too Many Requests:请求过多
5xx:服务器错误
1 2 3 4 5 500 Internal Server Error:服务器内部错误 501 Not Implemented:功能未实现 502 Bad Gateway:网关错误 503 Service Unavailable:服务不可用 504 Gateway Timeout:网关超时
5.6 HTTP常用请求头 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 # 内容协商 Accept : application/jsonAccept-Language : zh-CN,enAccept-Encoding : gzip, deflate# 缓存控制 Cache-Control : no-cacheIf-Modified-Since : Wed, 10 Dec 2025 10:00:00 GMTIf-None-Match : "etag-value"# 认证授权 Authorization : Bearer token123Cookie : sessionid=abc123# 客户端信息 User-Agent : Mozilla/5.0Referer : https://example.com/pageHost : api.example.com# 连接控制 Connection : keep-aliveKeep-Alive : timeout=5, max=100# 内容信息 Content-Type : application/jsonContent-Length : 123Content-Encoding : gzip
5.7 HTTP常用响应头 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 # 内容信息 Content-Type : application/json; charset=utf-8Content-Length : 1234Content-Encoding : gzipContent-Language : zh-CN# 缓存控制 Cache-Control : max-age=3600, publicETag : "etag-value"Last-Modified : Wed, 10 Dec 2025 10:00:00 GMTExpires : Wed, 10 Dec 2025 11:00:00 GMT# 安全相关 Strict-Transport-Security : max-age=31536000X-Content-Type-Options : nosniffX-Frame-Options : DENYX-XSS-Protection : 1; mode=block# 跨域 Access-Control-Allow-Origin : *Access-Control-Allow-Methods : GET, POST, PUTAccess-Control-Allow-Headers : Content-Type# 服务器信息 Server : nginx/1.18.0Date : Wed, 10 Dec 2025 10:00:00 GMT# Cookie设置 Set-Cookie : sessionid=abc123; HttpOnly; Secure
5.8 HTTP/1.0 vs HTTP/1.1 vs HTTP/2
特性
HTTP/1.0
HTTP/1.1
HTTP/2
连接
短连接
长连接
多路复用
管道化
不支持
支持
支持
头部压缩
不支持
不支持
HPACK压缩
服务器推送
不支持
不支持
支持
二进制协议
文本
文本
二进制
优先级
不支持
不支持
支持
HTTP/1.1改进:
1 2 3 4 5 1. 持久连接(Connection: keep-alive) 2. 管道化(Pipelining) 3. 支持分块传输编码 4. 增加Host头(支持虚拟主机) 5. 增加更多状态码和方法
HTTP/2改进:
1 2 3 4 5 1. 二进制分帧 2. 多路复用(一个连接多个请求) 3. 头部压缩(HPACK) 4. 服务器推送 5. 请求优先级
6. HTTPS协议(安全超文本传输协议) 6.1 HTTPS = HTTP + SSL/TLS 1 2 3 4 HTTP:明文传输,不安全 HTTPS:加密传输,安全 HTTPS = HTTP + SSL/TLS
6.2 HTTPS工作原理 1. SSL/TLS握手过程:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 客户端 服务器 | | | 1. Client Hello | | (支持的加密算法、随机数) | |------------------------------------>| | | | 2. Server Hello | | (选择的加密算法、随机数、证书) | |<------------------------------------| | | | 3. 验证证书 | | (检查证书有效性) | | | | 4. Client Key Exchange | | (用服务器公钥加密的预主密钥) | |------------------------------------>| | | | 5. 生成会话密钥 | | (使用三个随机数生成) | | | | 6. Change Cipher Spec | | (通知开始加密通信) | |<----------------------------------->| | | | 7. 加密通信 | |<===================================>|
2. 加密方式:
1 2 3 4 5 6 7 非对称加密(RSA/ECC):用于握手阶段 - 公钥加密,私钥解密 - 安全但慢 对称加密(AES):用于数据传输 - 同一密钥加密解密 - 快速高效
6.3 HTTPS优势 安全性:
✅ 数据加密:防止窃听
✅ 数据完整性:防止篡改
✅ 身份认证:防止冒充
SEO优势:
用户信任:
6.4 HTTP vs HTTPS
特性
HTTP
HTTPS
端口
80
443
安全性
明文传输
加密传输
证书
不需要
需要SSL证书
速度
快
稍慢(加密开销)
SEO
一般
更好
成本
无
证书费用
7. WebSocket协议 7.1 WebSocket特点 实时双向通信:
✅ 全双工通信
✅ 持久连接
✅ 低延迟
✅ 减少开销
✅ 支持二进制数据
7.2 WebSocket vs HTTP
特性
HTTP
WebSocket
通信方式
请求-响应
全双工
连接
短连接
持久连接
开销
每次都有头部
握手后开销小
实时性
需要轮询
实时推送
适用场景
一般Web应用
实时应用
7.3 WebSocket握手 客户端请求:
1 2 3 4 5 6 GET /chat HTTP/1.1 Host : example.comUpgrade : websocketConnection : UpgradeSec-WebSocket-Key : dGhlIHNhbXBsZSBub25jZQ==Sec-WebSocket-Version : 13
服务器响应:
1 2 3 4 HTTP/1.1 101 Switching ProtocolsUpgrade : websocketConnection : UpgradeSec-WebSocket-Accept : s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
7.4 WebSocket使用场景 适合WebSocket的场景:
实时聊天
实时推送
协同编辑
在线游戏
实时监控
7.5 WebSocket示例 JavaScript客户端:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 const ws = new WebSocket ('ws://example.com/chat' );ws.onopen = function (event ) { console .log ('连接已建立' ); ws.send ('Hello Server!' ); }; ws.onmessage = function (event ) { console .log ('收到消息:' , event.data ); }; ws.onclose = function (event ) { console .log ('连接已关闭' ); }; ws.onerror = function (error ) { console .error ('WebSocket错误:' , error); }; function sendMessage (message ) { if (ws.readyState === WebSocket .OPEN ) { ws.send (message); } } function closeConnection ( ) { ws.close (); }
Java服务器端(Spring Boot):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 import org.springframework.stereotype.Component;import org.springframework.web.socket.*;import org.springframework.web.socket.handler.TextWebSocketHandler;@Component public class ChatWebSocketHandler extends TextWebSocketHandler { private final List<WebSocketSession> sessions = new CopyOnWriteArrayList <>(); @Override public void afterConnectionEstablished (WebSocketSession session) { sessions.add(session); System.out.println("新连接:" + session.getId()); } @Override protected void handleTextMessage (WebSocketSession session, TextMessage message) { String payload = message.getPayload(); System.out.println("收到消息:" + payload); for (WebSocketSession s : sessions) { if (s.isOpen()) { try { s.sendMessage(new TextMessage ("广播:" + payload)); } catch (IOException e) { e.printStackTrace(); } } } } @Override public void afterConnectionClosed (WebSocketSession session, CloseStatus status) { sessions.remove(session); System.out.println("连接关闭:" + session.getId()); } } @Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { @Autowired private ChatWebSocketHandler chatHandler; @Override public void registerWebSocketHandlers (WebSocketHandlerRegistry registry) { registry.addHandler(chatHandler, "/chat" ) .setAllowedOrigins("*" ); } }
8. DNS协议(域名系统) 8.1 DNS作用 域名解析:
1 2 3 www.example.com → 192.168.1.1 将人类可读的域名转换为IP地址
8.2 DNS查询过程 1 2 3 4 5 6 7 8 9 10 11 12 13 1. 浏览器缓存 ↓ 未找到 2. 操作系统缓存 ↓ 未找到 3. 本地DNS服务器(ISP) ↓ 未找到 4. 根DNS服务器 ↓ 5. 顶级域DNS服务器(.com) ↓ 6. 权威DNS服务器(example.com) ↓ 7. 返回IP地址
递归查询 vs 迭代查询:
1 2 递归查询:客户端 → 本地DNS → 根DNS → ... → 返回最终结果 迭代查询:客户端 → 本地DNS → 返回下一个DNS地址 → 客户端继续查询
8.3 DNS记录类型
类型
说明
示例
A
IPv4地址
example.com → 192.168.1.1
AAAA
IPv6地址
example.com → 2001:db8::1
CNAME
别名
www.example.com → example.com
MX
邮件服务器
example.com → mail.example.com
TXT
文本记录
用于验证、SPF等
NS
域名服务器
example.com → ns1.example.com
PTR
反向解析
192.168.1.1 → example.com
8.4 DNS优化 1. DNS缓存:
1 2 3 浏览器缓存:几分钟到几小时 操作系统缓存:根据TTL设置 DNS服务器缓存:根据TTL设置
2. DNS预解析:
1 2 3 <link rel ="dns-prefetch" href ="//api.example.com" > <link rel ="dns-prefetch" href ="//cdn.example.com" >
3. 使用CDN:
9. 其他常用协议 9.1 FTP(文件传输协议) 特点:
端口:21(控制)、20(数据)
支持文件上传下载
明文传输(不安全)
SFTP/FTPS:加密版本
使用场景:
9.2 SMTP(简单邮件传输协议) 特点:
端口:25(明文)、465/587(加密)
用于发送邮件
基于TCP
邮件发送流程:
1 客户端 → SMTP服务器 → 收件人SMTP服务器 → 收件人邮箱
9.3 POP3/IMAP(邮件接收协议) POP3:
端口:110(明文)、995(加密)
下载邮件到本地
服务器上的邮件通常被删除
IMAP:
端口:143(明文)、993(加密)
邮件保存在服务器
支持多设备同步
更灵活,推荐使用
9.4 SSH(安全外壳协议) 特点:
端口:22
加密的远程登录协议
支持命令执行、文件传输
使用场景:
远程服务器管理
安全文件传输(SCP、SFTP)
端口转发
9.5 DHCP(动态主机配置协议) 特点:
基于UDP
自动分配IP地址
分配子网掩码、网关、DNS
工作过程:
1 2 3 4 1. DHCP Discover:客户端广播寻找DHCP服务器 2. DHCP Offer:服务器提供IP地址 3. DHCP Request:客户端请求使用该IP 4. DHCP ACK:服务器确认分配
9.6 ARP(地址解析协议) 作用:
1 2 3 IP地址 → MAC地址 例如:192.168.1.1 → AA:BB:CC:DD:EE:FF
工作过程:
1 2 3 1. 主机A广播ARP请求:谁是192.168.1.1? 2. 主机B响应:我是192.168.1.1,我的MAC是XX:XX:XX 3. 主机A缓存这个映射关系
9.7 ICMP(互联网控制消息协议) 用途:
常用工具:
1 2 3 4 5 6 7 8 ping www.example.com traceroute www.example.com tracert www.example.com
10. 网络调试工具 10.1 命令行工具 1. ping - 测试连通性
1 2 3 4 5 6 7 8 ping www.example.com ping -c 4 www.example.com ping -s 1024 www.example.com
2. traceroute - 追踪路由
1 2 3 4 5 traceroute www.example.com tracert www.example.com
3. netstat - 网络状态
1 2 3 4 5 6 7 8 netstat -an netstat -tuln netstat -tulnp
4. telnet - 测试端口
1 2 3 4 5 telnet example.com 80 telnet smtp.example.com 25
5. curl - HTTP请求
1 2 3 4 5 6 7 8 9 10 11 12 13 curl http://example.com curl -X POST http://example.com/api \ -H "Content-Type: application/json" \ -d '{"name":"test"}' curl -I http://example.com curl -L http://example.com
6. nslookup/dig - DNS查询
1 2 3 4 5 6 7 8 9 nslookup www.example.com dig www.example.com dig www.example.com A dig www.example.com MX
10.2 图形化工具 1. Wireshark - 抓包分析
1 2 3 4 5 功能: - 捕获网络数据包 - 分析协议 - 过滤和搜索 - 统计分析
2. Postman - API测试
1 2 3 4 5 功能: - HTTP请求测试 - 环境管理 - 自动化测试 - 团队协作
3. Charles/Fiddler - HTTP代理
1 2 3 4 5 功能: - 抓取HTTP/HTTPS请求 - 修改请求和响应 - 模拟慢速网络 - 断点调试
11. 网络安全 11.1 常见攻击方式 1. DDoS攻击(分布式拒绝服务)
1 2 大量请求淹没服务器 防御:流量清洗、CDN、限流
2. 中间人攻击(MITM)
3. SQL注入
4. XSS攻击(跨站脚本)
5. CSRF攻击(跨站请求伪造)
1 2 伪造用户请求 防御:CSRF Token、SameSite Cookie
11.2 安全最佳实践 1. 使用HTTPS
1 2 3 - 加密传输数据 - 防止中间人攻击 - 提升用户信任
2. 输入验证
1 2 3 - 验证所有用户输入 - 白名单优于黑名单 - 服务器端验证
3. 认证授权
1 2 3 - 使用强密码策略 - 实现多因素认证 - JWT/OAuth2.0
4. 限流防护
5. 安全响应头
1 2 3 4 5 Strict-Transport-Security : max-age=31536000X-Content-Type-Options : nosniffX-Frame-Options : DENYX-XSS-Protection : 1; mode=blockContent-Security-Policy : default-src 'self'
12. 总结 12.1 协议对比总结
协议
层级
特点
使用场景
TCP
传输层
可靠、有序、慢
文件传输、网页
UDP
传输层
不可靠、快
视频、游戏、DNS
IP
网络层
寻址和路由
所有网络通信
HTTP
应用层
无状态、请求响应
Web应用
HTTPS
应用层
加密的HTTP
安全Web应用
WebSocket
应用层
双向实时通信
聊天、推送
DNS
应用层
域名解析
所有域名访问
FTP
应用层
文件传输
文件服务器
SMTP
应用层
邮件发送
邮件系统
12.2 学习建议 1. 理论基础
掌握OSI七层模型
理解TCP/IP协议栈
了解各层协议的作用
2. 实践操作
使用Wireshark抓包分析
用curl测试HTTP请求
编写简单的网络程序
3. 深入学习
4. 持续关注
HTTP/3和QUIC
新的安全协议
网络优化技术
12.3 推荐资源 书籍:
《计算机网络(第7版)》- 谢希仁
《TCP/IP详解 卷1:协议》
《HTTP权威指南》
《图解HTTP》
《图解TCP/IP》
在线资源:
工具:
Wireshark:抓包分析
Postman:API测试
curl:命令行HTTP工具
tcpdump:命令行抓包
参考资源