feat: comprehensive documentation and demo updates
- Update READMEs and docs across multiple languages - Enhance interactive demos for Agent, LLM, VLM, Audio, Image Gen, Terminal, and Web Basics - Add new appendix sections for Database and IDE intros - Update VitePress config, theme, and utility scripts - Clean up unused assets and components
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
<NetworkLayers />
|
||||
|
||||
**为什么需要分层?**
|
||||
|
||||
- 🎯 **模块化**:每层独立设计和实现
|
||||
- 🔧 **易维护**:修改一层不影响其他层
|
||||
- 📚 **标准化**:统一的接口和协议
|
||||
@@ -21,6 +22,7 @@
|
||||
物理层负责在物理介质上传输原始的比特流(0 和 1)。
|
||||
|
||||
**关键任务**:
|
||||
|
||||
- 定义物理设备标准(RJ45、光纤接口等)
|
||||
- 规定传输介质(双绞线、光纤、无线电波)
|
||||
- 确定电气特性(电压、频率、编码方式)
|
||||
@@ -28,11 +30,13 @@
|
||||
### 1.2 传输介质
|
||||
|
||||
**有线介质**:
|
||||
|
||||
- 双绞线(Twisted Pair):Cat5、Cat6,用于以太网
|
||||
- 光纤(Fiber Optic):长距离、高带宽
|
||||
- 同轴电缆(Coaxial):早期以太网、有线电视
|
||||
|
||||
**无线介质**:
|
||||
|
||||
- 无线电波(Wi-Fi、蓝牙、4G/5G)
|
||||
- 微波(卫星通信)
|
||||
- 红外线(短距离通信)
|
||||
@@ -49,6 +53,7 @@
|
||||
数据链路层负责在直连的两个节点间传输数据帧。
|
||||
|
||||
**核心功能**:
|
||||
|
||||
- 物理地址寻址(MAC 地址)
|
||||
- 帧的封装和解封装
|
||||
- 错误检测(CRC 校验)
|
||||
@@ -63,6 +68,7 @@
|
||||
- 全球唯一,烧录在网卡上
|
||||
|
||||
**查看 MAC 地址**:
|
||||
|
||||
```bash
|
||||
# Windows
|
||||
ipconfig /all
|
||||
@@ -81,6 +87,7 @@ ifconfig
|
||||
```
|
||||
|
||||
**常见以太网类型**:
|
||||
|
||||
- `0x0800`:IPv4
|
||||
- `0x0806`:ARP
|
||||
- `0x86DD`:IPv6
|
||||
@@ -88,11 +95,13 @@ ifconfig
|
||||
### 2.4 交换机原理
|
||||
|
||||
**交换机工作方式**:
|
||||
|
||||
1. **学习 MAC 地址**:记录端口与 MAC 的对应关系
|
||||
2. **转发帧**:根据目标 MAC 地址选择端口
|
||||
3. **过滤广播**:不会转发到所有端口(集线器会)
|
||||
|
||||
**查看交换机 MAC 表**:
|
||||
|
||||
```bash
|
||||
show mac address-table # 思科设备
|
||||
```
|
||||
@@ -108,13 +117,14 @@ show mac address-table # 思科设备
|
||||
|
||||
**IP 地址分类**:
|
||||
|
||||
| 类别 | 范围 | 网络数 | 主机数 | 用途 |
|
||||
|------|------|--------|--------|------|
|
||||
| A 类 | 1.0.0.0 - 126.255.255.255 | 126 | 16M | 大型网络 |
|
||||
| B 类 | 128.0.0.0 - 191.255.255.255 | 16K | 65K | 中型网络 |
|
||||
| C 类 | 192.0.0.0 - 223.255.255.255 | 2M | 254 | 小型网络 |
|
||||
| 类别 | 范围 | 网络数 | 主机数 | 用途 |
|
||||
| ---- | --------------------------- | ------ | ------ | -------- |
|
||||
| A 类 | 1.0.0.0 - 126.255.255.255 | 126 | 16M | 大型网络 |
|
||||
| B 类 | 128.0.0.0 - 191.255.255.255 | 16K | 65K | 中型网络 |
|
||||
| C 类 | 192.0.0.0 - 223.255.255.255 | 2M | 254 | 小型网络 |
|
||||
|
||||
**私有 IP 地址**:
|
||||
|
||||
- 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`
|
||||
@@ -124,15 +134,18 @@ show mac address-table # 思科设备
|
||||
<SubnetCalculator />
|
||||
|
||||
**子网掩码的作用**:
|
||||
|
||||
- 区分 IP 地址的网络部分和主机部分
|
||||
- 确定两个 IP 是否在同一网段
|
||||
- 计算网络地址和广播地址
|
||||
|
||||
**CIDR 表示法**:`192.168.1.0/24`
|
||||
|
||||
- `/24` 表示前 24 位是网络位
|
||||
- 剩余 8 位是主机位
|
||||
|
||||
**子网划分示例**:
|
||||
|
||||
```
|
||||
原网络:192.168.1.0/24
|
||||
可用主机:192.168.1.1 - 192.168.1.254 (254 台)
|
||||
@@ -147,6 +160,7 @@ show mac address-table # 思科设备
|
||||
### 3.3 路由原理
|
||||
|
||||
**路由器工作流程**:
|
||||
|
||||
1. 接收数据包
|
||||
2. 检查目标 IP 地址
|
||||
3. 查询路由表
|
||||
@@ -154,6 +168,7 @@ show mac address-table # 思科设备
|
||||
5. 转发到下一跳
|
||||
|
||||
**路由表示例**:
|
||||
|
||||
```
|
||||
目标网络 子网掩码 网关 接口
|
||||
192.168.1.0 255.255.255.0 0.0.0.0 eth0
|
||||
@@ -162,6 +177,7 @@ show mac address-table # 思科设备
|
||||
```
|
||||
|
||||
**查看路由表**:
|
||||
|
||||
```bash
|
||||
# Windows
|
||||
route print
|
||||
@@ -175,11 +191,13 @@ netstat -rn
|
||||
**ICMP (Internet Control Message Protocol)** 用于网络诊断。
|
||||
|
||||
**常见 ICMP 类型**:
|
||||
|
||||
- Echo Request (Type 8):ping 请求
|
||||
- Echo Reply (Type 0):ping 响应
|
||||
- Destination Unreachable (Type 3):目标不可达
|
||||
|
||||
**Ping 命令**:
|
||||
|
||||
```bash
|
||||
ping google.com
|
||||
|
||||
@@ -194,11 +212,13 @@ PING google.com (142.250.185.238): 56 data bytes
|
||||
### 4.1 端口
|
||||
|
||||
**端口号范围**:
|
||||
|
||||
- **0-1023**:系统端口(需要管理员权限)
|
||||
- **1024-49151**:注册端口
|
||||
- **49152-65535**:动态端口
|
||||
|
||||
**常见端口**:
|
||||
|
||||
- `21`:FTP
|
||||
- `22`:SSH
|
||||
- `80`:HTTP
|
||||
@@ -208,6 +228,7 @@ PING google.com (142.250.185.238): 56 data bytes
|
||||
- `27017`:MongoDB
|
||||
|
||||
**查看端口占用**:
|
||||
|
||||
```bash
|
||||
# macOS/Linux
|
||||
lsof -i :8080
|
||||
@@ -221,6 +242,7 @@ netstat -ano | findstr :8080
|
||||
<TcpUdpComparison />
|
||||
|
||||
**选择建议**:
|
||||
|
||||
- 📧 **邮件、文件传输**:用 TCP(不能丢数据)
|
||||
- 📺 **视频、直播**:用 UDP(实时性优先)
|
||||
- 🌐 **网页浏览**:用 TCP(可靠性重要)
|
||||
@@ -244,6 +266,7 @@ netstat -ano | findstr :8080
|
||||
```
|
||||
|
||||
**为什么需要三次?**
|
||||
|
||||
- 防止已失效的连接请求报文段突然又传送到了服务端
|
||||
- 确认双方的发送和接收能力都正常
|
||||
- 同步双方的初始序列号
|
||||
@@ -269,6 +292,7 @@ netstat -ano | findstr :8080
|
||||
```
|
||||
|
||||
**为什么需要四次?**
|
||||
|
||||
- TCP 是全双工协议,双方都可以发送数据
|
||||
- 当一方关闭连接时,另一方可能还有数据要发送
|
||||
- 需要双方分别确认关闭各自方向的连接
|
||||
@@ -281,13 +305,13 @@ netstat -ano | findstr :8080
|
||||
|
||||
**HTTP 请求方法**:
|
||||
|
||||
| 方法 | 描述 | 示例 |
|
||||
|------|------|------|
|
||||
| GET | 获取资源 | 查看网页 |
|
||||
| POST | 提交数据 | 表单提交 |
|
||||
| PUT | 更新资源 | 更新用户信息 |
|
||||
| DELETE | 删除资源 | 删除文章 |
|
||||
| PATCH | 部分更新 | 修改状态 |
|
||||
| 方法 | 描述 | 示例 |
|
||||
| ------ | -------- | ------------ |
|
||||
| GET | 获取资源 | 查看网页 |
|
||||
| POST | 提交数据 | 表单提交 |
|
||||
| PUT | 更新资源 | 更新用户信息 |
|
||||
| DELETE | 删除资源 | 删除文章 |
|
||||
| PATCH | 部分更新 | 修改状态 |
|
||||
|
||||
**HTTP 状态码**:
|
||||
|
||||
@@ -314,13 +338,13 @@ netstat -ano | findstr :8080
|
||||
|
||||
**HTTPS vs HTTP**:
|
||||
|
||||
| 特性 | HTTP | HTTPS |
|
||||
|------|------|-------|
|
||||
| 加密 | 否 | 是(TLS/SSL) |
|
||||
| 端口 | 80 | 443 |
|
||||
| 安全性 | 低(明文传输) | 高(加密传输) |
|
||||
| 性能 | 略快 | 略慢(握手开销) |
|
||||
| SEO | 不友好 | 友好 |
|
||||
| 特性 | HTTP | HTTPS |
|
||||
| ------ | -------------- | ---------------- |
|
||||
| 加密 | 否 | 是(TLS/SSL) |
|
||||
| 端口 | 80 | 443 |
|
||||
| 安全性 | 低(明文传输) | 高(加密传输) |
|
||||
| 性能 | 略快 | 略慢(握手开销) |
|
||||
| SEO | 不友好 | 友好 |
|
||||
|
||||
**HTTPS 工作流程**:
|
||||
|
||||
@@ -369,15 +393,16 @@ ISP DNS 服务器
|
||||
|
||||
**DNS 记录类型**:
|
||||
|
||||
| 类型 | 用途 | 示例 |
|
||||
|------|------|------|
|
||||
| A | IPv4 地址 | `www.example.com → 93.184.216.34` |
|
||||
| AAAA | IPv6 地址 | `www.example.com → 2606:2800:220:1:248:1893:25c8:1946` |
|
||||
| CNAME | 别名 | `www.example.com → example.com` |
|
||||
| MX | 邮件服务器 | `mail.example.com` |
|
||||
| TXT | 文本记录 | SPF、DKIM 验证 |
|
||||
| 类型 | 用途 | 示例 |
|
||||
| ----- | ---------- | ------------------------------------------------------ |
|
||||
| A | IPv4 地址 | `www.example.com → 93.184.216.34` |
|
||||
| AAAA | IPv6 地址 | `www.example.com → 2606:2800:220:1:248:1893:25c8:1946` |
|
||||
| CNAME | 别名 | `www.example.com → example.com` |
|
||||
| MX | 邮件服务器 | `mail.example.com` |
|
||||
| TXT | 文本记录 | SPF、DKIM 验证 |
|
||||
|
||||
**查看 DNS 记录**:
|
||||
|
||||
```bash
|
||||
nslookup google.com
|
||||
dig google.com ANY
|
||||
@@ -386,18 +411,22 @@ dig google.com ANY
|
||||
### 5.3 常见应用协议
|
||||
|
||||
**FTP (File Transfer Protocol)**:文件传输
|
||||
|
||||
- 端口:21(控制)、20(数据)
|
||||
- 主动模式 vs 被动模式
|
||||
|
||||
**SSH (Secure Shell)**:远程登录
|
||||
|
||||
- 端口:22
|
||||
- 加密通信
|
||||
|
||||
**SMTP (Simple Mail Transfer Protocol)**:发送邮件
|
||||
|
||||
- 端口:25
|
||||
- 端口:465(SSL)、587(TLS)
|
||||
|
||||
**POP3/IMAP**:接收邮件
|
||||
|
||||
- POP3:端口 110,下载到本地
|
||||
- IMAP:端口 143,服务器同步
|
||||
|
||||
@@ -453,6 +482,7 @@ dig google.com ANY
|
||||
4. 查看请求详情
|
||||
|
||||
**关键信息**:
|
||||
|
||||
- **Request Headers**:请求头信息
|
||||
- **Response Headers**:响应头信息
|
||||
- **Status**:状态码
|
||||
@@ -469,6 +499,7 @@ dig google.com ANY
|
||||
5. 分析 HTTP 报文
|
||||
|
||||
**常用过滤器**:
|
||||
|
||||
```
|
||||
http # 只显示 HTTP 协议
|
||||
ip.addr == 8.8.8.8 # 只显示与 8.8.8.8 的通信
|
||||
@@ -521,24 +552,28 @@ speedtest-cli
|
||||
### 7.2 常见问题
|
||||
|
||||
**问题 1:无法上网**
|
||||
|
||||
1. `ping 8.8.8.8` 测试基本连通性
|
||||
2. `ping google.com` 测试 DNS 解析
|
||||
3. 检查网关配置
|
||||
4. 清除 DNS 缓存
|
||||
|
||||
**问题 2:网速慢**
|
||||
|
||||
1. `speedtest-cli` 测试实际带宽
|
||||
2. 检查后台下载应用
|
||||
3. 重启路由器
|
||||
4. 更换 DNS 服务器
|
||||
|
||||
**问题 3:延迟高**
|
||||
|
||||
1. `ping -c 100` 统计平均延迟
|
||||
2. `traceroute` 找出高延迟路由
|
||||
3. 检查本地网络负载
|
||||
4. 使用有线连接测试
|
||||
|
||||
**问题 4:端口无法访问**
|
||||
|
||||
1. `netstat -tuln | grep :80` 检查服务监听
|
||||
2. 检查防火墙规则
|
||||
3. `iptables -L` 查看防火墙
|
||||
@@ -549,25 +584,30 @@ speedtest-cli
|
||||
### 8.1 常见攻击
|
||||
|
||||
**DDoS 攻击**:
|
||||
|
||||
- 分布式拒绝服务
|
||||
- 大量请求耗尽服务器资源
|
||||
- 防御:CDN、流量清洗
|
||||
|
||||
**中间人攻击**:
|
||||
|
||||
- 拦截通信数据
|
||||
- 防御:使用 HTTPS、验证证书
|
||||
|
||||
**SQL 注入**:
|
||||
|
||||
- 通过输入框注入恶意 SQL
|
||||
- 防御:参数化查询、输入验证
|
||||
|
||||
**XSS 攻击**:
|
||||
|
||||
- 跨站脚本攻击
|
||||
- 防御:输出编码、CSP 策略
|
||||
|
||||
### 8.2 安全实践
|
||||
|
||||
**HTTPS 强制**:
|
||||
|
||||
```
|
||||
# Nginx 配置
|
||||
server {
|
||||
@@ -585,6 +625,7 @@ server {
|
||||
```
|
||||
|
||||
**防火墙配置**:
|
||||
|
||||
```bash
|
||||
# 允许 SSH
|
||||
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
|
||||
@@ -608,6 +649,7 @@ iptables -A INPUT -j DROP
|
||||
- 🛠️ **故障排查**:从物理层到应用层逐层排查
|
||||
|
||||
**学习建议**:
|
||||
|
||||
- ✅ 多动手实践:使用 ping、traceroute、wireshark
|
||||
- ✅ 理解协议细节:阅读 RFC 文档
|
||||
- ✅ 抓包分析:用 Wireshark 观察实际流量
|
||||
|
||||
Reference in New Issue
Block a user