🌐 计算机网络基础

互联网时代的核心技术 - 从协议到应用

🔗 TCP/IP协议 🌍 HTTP/HTTPS 📡 网络通信 🔒 网络安全

什么是计算机网络?

计算机网络是将地理位置不同的具有独立功能的多台计算机及其外部设备, 通过通信线路连接起来,在网络操作系统和网络通信协议的管理和协调下,实现资源共享和信息传递的系统。

在AI时代,网络技术更是关键:分布式训练依赖高速网络, 模型API服务基于HTTP协议,实时推理需要低延迟网络。

🗺️ TCP/IP协议栈完整知识图谱

📚 五层协议栈架构

graph TB subgraph APP["📱 应用层 Application Layer
为用户提供网络服务"] HTTP["HTTP/HTTPS
Web浏览
端口:80/443"] DNS["DNS
域名解析
端口:53"] FTP["FTP
文件传输
端口:21"] SMTP["SMTP
邮件发送
端口:25"] SSH["SSH
安全远程
端口:22"] WEBSOCKET["WebSocket
实时通信
全双工"] RPC["gRPC
远程调用
高性能"] end subgraph TRANSPORT["🚚 传输层 Transport Layer
端到端可靠传输"] TCP["TCP
面向连接
可靠·有序·流控"] UDP["UDP
无连接
快速·低延迟"] QUIC["QUIC
基于UDP
HTTP/3基础"] end subgraph NETWORK["🌍 网络层 Network Layer
路由与寻址"] IP["IP协议
IPv4/IPv6
分组转发"] ICMP["ICMP
差错报告
ping工具"] ARP["ARP
地址解析
IP→MAC"] OSPF["OSPF
路由协议
动态路由"] BGP["BGP
边界网关
AS互联"] end subgraph LINK["🔗 数据链路层 Data Link Layer
帧传输与差错控制"] ETHERNET["以太网
CSMA/CD
MAC地址"] WIFI["WiFi
802.11
无线传输"] PPP["PPP
点对点
拨号上网"] VLAN["VLAN
虚拟局域网
隔离广播域"] end subgraph PHYSICAL["⚡ 物理层 Physical Layer
比特流传输"] FIBER["光纤
长距离
高带宽"] CABLE["双绞线
以太网线
便宜普及"] WIRELESS["无线电波
WiFi/5G
移动性"] end %% 协议依赖关系 HTTP --> TCP FTP --> TCP SMTP --> TCP SSH --> TCP WEBSOCKET --> TCP RPC --> TCP RPC --> HTTP DNS --> UDP QUIC --> UDP TCP --> IP UDP --> IP QUIC --> IP IP --> ICMP IP --> ARP OSPF --> IP BGP --> IP IP --> ETHERNET IP --> WIFI IP --> PPP ETHERNET --> FIBER ETHERNET --> CABLE WIFI --> WIRELESS %% 样式 style APP fill:#dbeafe,stroke:#0284c7,stroke-width:3px style TRANSPORT fill:#d1fae5,stroke:#059669,stroke-width:3px style NETWORK fill:#fef3c7,stroke:#f59e0b,stroke-width:3px style LINK fill:#fce7f3,stroke:#db2777,stroke-width:3px style PHYSICAL fill:#e5e7eb,stroke:#6b7280,stroke-width:3px style HTTP fill:#93c5fd,stroke:#2563eb,stroke-width:2px style TCP fill:#86efac,stroke:#16a34a,stroke-width:2px style IP fill:#fcd34d,stroke:#d97706,stroke-width:2px

应用层

为用户提供网络服务和应用

传输层

端到端可靠数据传输

网络层

分组转发和路由选择

链路层

相邻节点间数据传输

物理层

原始比特流传输

🌐 HTTP协议完整流程

sequenceDiagram participant Client as 🖥️ 客户端
浏览器 participant DNS as 📡 DNS服务器 participant Server as 🌐 Web服务器 Client->>DNS: 1. 域名解析请求
www.example.com DNS-->>Client: 2. 返回IP地址
192.168.1.100 Client->>Server: 3. TCP三次握手
SYN Server-->>Client: SYN-ACK Client->>Server: ACK Client->>Server: 4. HTTP请求
GET /index.html HTTP/1.1
Host: www.example.com Server->>Server: 5. 处理请求
查找资源 Server-->>Client: 6. HTTP响应
200 OK
Content-Type: text/html Client->>Client: 7. 渲染页面 Client->>Server: 8. TCP四次挥手
FIN Server-->>Client: ACK Server->>Client: FIN Client-->>Server: ACK

🔑 关键步骤说明

1-2. DNS解析

域名转IP地址

3. 建立连接

TCP三次握手

4-6. 数据传输

请求响应交互

8. 断开连接

四次挥手

🤝 TCP连接建立与释放

stateDiagram-v2 [*] --> CLOSED: 初始状态 CLOSED --> SYN_SENT: 客户端发送SYN SYN_SENT --> ESTABLISHED: 收到SYN+ACK,发送ACK CLOSED --> LISTEN: 服务器监听 LISTEN --> SYN_RCVD: 收到SYN,发送SYN+ACK SYN_RCVD --> ESTABLISHED: 收到ACK ESTABLISHED --> FIN_WAIT_1: 主动关闭,发送FIN FIN_WAIT_1 --> FIN_WAIT_2: 收到ACK FIN_WAIT_2 --> TIME_WAIT: 收到FIN,发送ACK TIME_WAIT --> CLOSED: 等待2MSL ESTABLISHED --> CLOSE_WAIT: 被动关闭,收到FIN CLOSE_WAIT --> LAST_ACK: 发送FIN LAST_ACK --> CLOSED: 收到ACK note right of ESTABLISHED: 数据传输阶段 note right of TIME_WAIT: 等待可能的重传

🔼 三次握手(建立连接)

  1. SYN:客户端发起连接请求
  2. SYN+ACK:服务器确认并也发起连接
  3. ACK:客户端确认,连接建立

💡 为什么需要三次?确保双方都准备好了

🔽 四次挥手(释放连接)

  1. FIN:主动方请求关闭
  2. ACK:被动方确认
  3. FIN:被动方也请求关闭
  4. ACK:主动方确认

💡 为什么需要四次?双方都要主动关闭

🕸️ 网络协议完整知识地图

mindmap root((🌐 网络协议
Network Protocols)) 应用层协议 Web协议 HTTP/1.1 HTTP/2 HTTP/3 HTTPS WebSocket 文件传输 FTP SFTP TFTP 邮件协议 SMTP发送 POP3接收 IMAP 其他协议 DNS解析 DHCP分配 SNMP管理 NTP时间 传输层协议 TCP协议 可靠传输 流量控制 拥塞控制 滑动窗口 UDP协议 无连接 快速传输 适合实时 新兴协议 QUIC SCTP 网络层协议 IP协议 IPv4 IPv6 分组转发 路由选择 辅助协议 ICMP IGMP ARP/RARP 路由协议 RIP OSPF BGP IS-IS 链路层协议 局域网 以太网 WiFi 令牌环 广域网 PPP HDLC 帧中继 网桥技术 生成树STP VLAN 网络安全 加密协议 TLS/SSL IPSec SSH 认证协议 Kerberos OAuth JWT 防护技术 防火墙 IDS/IPS VPN

🔍 核心协议详解

🌐

HTTP/HTTPS

Web的基石

📋 HTTP方法

GET: 获取资源
POST: 提交数据
PUT: 更新资源
DELETE: 删除资源

📊 常见状态码

200 OK: 成功
301/302: 重定向
404: 未找到 ?
500: 服务器错误

🔒 HTTPS = HTTP + TLS

  • • 加密传输,防止窃听
  • • 身份认证,防止冒充
  • • 完整性校验,防篡改

AI应用:几乎所有AI模型API(OpenAI、Claude等)都基于HTTPS协议

🚚

TCP协议

可靠传输控制

🎯 核心特性

✓ 面向连接

通信前必须建立连接(三次握手)

✓ 可靠传输

确认重传机制,保证数据不丢失

✓ 有序到达

序号机制,乱序会重排

✓ 流量控制

滑动窗口,避免接收方过载

✓ 拥塞控制

慢开始、快重传,避免网络拥塞

AI应用:分布式训练的参数同步、梯度传递依赖TCP可靠传输

📡

DNS域名系统

互联网的电话簿

🔄 解析流程

  1. 1. 浏览器缓存查询
  2. 2. 操作系统缓存查询
  3. 3. 本地DNS服务器
  4. 4. 根DNS服务器
  5. 5. 顶级域DNS服务器(.com)
  6. 6. 权威DNS服务器

📝 记录类型

A: IPv4地址
AAAA: IPv6地址
CNAME: 别名
MX: 邮件服务器

WebSocket

实时双向通信

🆚 vs HTTP

HTTP: 请求-响应模式

客户端发起,服务器被动响应

WebSocket: 全双工通信

双方都可主动发送,持久连接

🎯 应用场景

  • • 聊天应用(实时消息)
  • • 在线游戏(低延迟交互)
  • • 协作编辑(多人同步)
  • • 股票行情(实时推送)

AI应用:ChatGPT流式输出、实时AI对话都基于WebSocket或SSE

⚡ 网络性能优化

🌍 CDN内容分发网络

graph TB USER["👤 用户
中国北京"] DNS["📡 智能DNS"] ORIGIN["🏢 源站
美国服务器"] CDN_BJ["⚡ CDN节点
北京"] CDN_SH["⚡ CDN节点
上海"] CDN_GZ["⚡ CDN节点
广州"] USER -->|"1. 请求www.example.com"| DNS DNS -->|"2. 返回最近节点IP"| USER USER -->|"3. 访问北京节点"| CDN_BJ CDN_BJ -->|"有缓存"| CACHE["💾 直接返回
延迟: 10ms"] CDN_BJ -->|"无缓存"| ORIGIN ORIGIN -->|"回源获取"| CDN_BJ CDN_BJ -->|"缓存并返回"| USER ORIGIN -.->|"同步内容"| CDN_SH ORIGIN -.->|"同步内容"| CDN_GZ style USER fill:#fef3c7,stroke:#f59e0b,stroke-width:2px style CDN_BJ fill:#86efac,stroke:#16a34a,stroke-width:3px style CACHE fill:#d1fae5,stroke:#059669,stroke-width:2px style ORIGIN fill:#fecdd3,stroke:#db2777,stroke-width:2px

💡 CDN优势

加速访问

就近访问,延迟降低80%+

减轻负载

分散流量,源站压力减小

提高可用性

节点故障自动切换

🗜️

数据压缩

  • Gzip: 文本压缩70%+
  • Brotli: 比Gzip再优20%
  • 图片优化: WebP格式
  • 视频编码: H.265/AV1
💾

缓存策略

  • 浏览器缓存: Cache-Control
  • 代理缓存: Nginx/Varnish
  • 应用缓存: Redis/Memcached
  • CDN缓存: 边缘节点
🔗

连接优化

  • HTTP/2: 多路复用
  • Keep-Alive: 连接复用
  • DNS预解析: 提前解析
  • TCP Fast Open: 减少RTT

🔒 网络安全基础

🛡️ 常见网络攻击与防护

graph LR subgraph ATTACKS["⚠️ 常见攻击"] DDoS["DDoS攻击
流量洪水"] XSS["XSS攻击
脚本注入"] CSRF["CSRF攻击
跨站请求"] SQLi["SQL注入
数据库攻击"] MITM["中间人攻击
窃听篡改"] end subgraph DEFENSE["🛡️ 防护措施"] FIREWALL["防火墙
流量过滤"] WAF["WAF
Web应用防火墙"] HTTPS_SEC["HTTPS
加密传输"] INPUT_VAL["输入验证
参数过滤"] RATE_LIMIT["限流
频率控制"] TOKEN["Token验证
CSRF Token"] end DDoS --> FIREWALL DDoS --> RATE_LIMIT XSS --> INPUT_VAL XSS --> WAF CSRF --> TOKEN SQLi --> INPUT_VAL MITM --> HTTPS_SEC style ATTACKS fill:#fee2e2,stroke:#dc2626,stroke-width:2px style DEFENSE fill:#d1fae5,stroke:#059669,stroke-width:2px style DDoS fill:#fca5a5,stroke:#dc2626 style HTTPS_SEC fill:#86efac,stroke:#16a34a,stroke-width:2px
🔥

DDoS攻击

分布式拒绝服务,通过大量请求使服务器瘫痪

防护:

CDN分散流量、限流、黑名单

💉

SQL注入

通过输入恶意SQL代码窃取或破坏数据库

防护:

参数化查询、ORM、输入验证

🎭

中间人攻击

拦截通信,窃取敏感信息或篡改数据

防护:

HTTPS加密、证书验证

📜

XSS攻击

跨站脚本攻击,注入恶意脚本到网页

防护:

HTML转义、CSP策略

🔄

CSRF攻击

跨站请求伪造,利用用户身份执行操作

防护:

CSRF Token、SameSite Cookie

🕵️

DNS劫持

篡改DNS解析,将用户引导到恶意网站

防护:

DNSSEC、HTTPS验证

🤖 AI时代的网络技术应用

🚀

分布式训练

多台GPU服务器协同训练大模型

  • 高速网络: InfiniBand、RDMA
  • 参数同步: All-Reduce算法
  • 梯度传递: TCP可靠传输
  • 带宽需求: 100Gbps+
📡

模型API服务

OpenAI、Claude等模型API调用

  • 协议: HTTPS RESTful API
  • 认证: API Key、Bearer Token
  • 限流: Rate Limiting
  • 重试: 指数退避策略
💬

实时AI对话

ChatGPT式流式输出体验

  • 协议: WebSocket/SSE
  • 流式传输: 逐字输出
  • 心跳保活: 长连接维护
  • 断线重连: 自动恢复
🌐

模型托管

HuggingFace、ModelScope模型分发

  • CDN加速: 全球节点缓存
  • 断点续传: Range请求
  • 大文件优化: 分块下载
  • 镜像站: 国内加速
📊

监控采集

模型性能和服务质量监控

  • 协议: HTTP/Prometheus
  • 指标: QPS、延迟、错误率
  • 日志: ELK Stack
  • 告警: Webhook通知
🔐

API安全

保护AI服务免受攻击

  • 认证: JWT、OAuth 2.0
  • 限流: Token Bucket
  • 加密: TLS 1.3
  • 审计: 日志记录

🛠️ 网络调试工具

🦈

Wireshark

网络抓包分析神器

查看所有网络数据包,分析协议交互

📮

Postman

API测试工具

测试REST API、调试HTTP请求

curl

命令行HTTP工具

快速测试API、下载文件

🔍

dig/nslookup

DNS查询工具

诊断域名解析问题

📊

netstat

网络连接查看

查看端口占用、连接状态

🎯

ping/traceroute

网络诊断工具

测试连通性、追踪路由

🌊

tcpdump

命令行抓包

服务器端网络分析

🔥

Browser DevTools

浏览器开发工具

Network面板查看请求

💡 学习建议

🔧

动手实践

用Wireshark抓包,分析真实网络流量,理解协议交互

🏗️

搭建服务

自己搭建Web服务器,配置Nginx,理解HTTP工作原理

📚

阅读RFC

阅读TCP、HTTP等协议的RFC文档,深入理解标准