通信与协议 (Communication and Protocols)
协议基础 (Protocol Fundamentals)
为什么需要协议
- 协议 (Protocol): 通信双方共同遵守的规则和约定
- 必要性:
- 统一数据格式和编码方式
- 定义传输速率和时序
- 规定错误检测和纠正机制
- 确保不同厂商的设备能互操作
- 管理流量控制和拥塞控制
分层模型 (Layered Stack Model)
-
分层的好处:
- 模块化: 每层独立实现特定功能
- 易于维护: 修改某一层不影响其他层
- 标准化: 各层接口明确,利于不同厂商实现
-
常见的分层模型: OSI 七层模型(理论)、TCP/IP 四层模型(实际应用)
TCP/IP 协议簇 (TCP/IP Protocol Suite)
应用层 (Application Layer)
- 为应用程序提供网络服务
- 常见协议:
| 协议 | 全称 | 功能 | 端口 |
|---|---|---|---|
| HTTP | HyperText Transfer Protocol | 网页传输,无状态 | 80 |
| HTTPS | HTTP Secure | 加密网页传输 (SSL/TLS) | 443 |
| FTP | File Transfer Protocol | 文件上传/下载 | 20/21 |
| SMTP | Simple Mail Transfer Protocol | 发送邮件 | 25 |
| POP3 | Post Office Protocol v3 | 接收邮件(下载后删除服务器副本) | 110 |
| IMAP | Internet Message Access Protocol | 接收邮件(服务器保留副本) | 143 |
| BitTorrent | - | P2P 文件共享(见下文) | - |
| DNS | Domain Name System | 域名解析为 IP 地址 | 53 |
SMTP vs POP3 vs IMAP
- SMTP 用于发送邮件(推协议)
- POP3 将邮件下载到本地后通常删除服务器副本
- IMAP 在服务器端管理邮件,多设备同步
传输层 (Transport Layer)
- 提供端到端的数据传输服务
TCP (Transmission Control Protocol)
- 面向连接: 建立连接需三次握手 (three-way handshake)
- 可靠传输: 通过确认(ACK)和重传机制保证数据完整到达
- 流量控制: 使用滑动窗口 (sliding window) 控制发送速率
- 拥塞控制: 慢启动、拥塞避免、快速重传
- 有序交付: 接收端按序重组数据
- 适用于: 网页浏览、文件传输、电子邮件
UDP (User Datagram Protocol)
- 无连接: 无需建立连接直接发送
- 不可靠: 不保证送达,无重传机制
- 无顺序保证: 报文可能乱序到达或丢失
- 低开销: 头部仅 8 字节(TCP 头部 20 字节)
- 适用于: 实时音视频、在线游戏、DNS 查询
TCP vs UDP 选择
- 需要可靠性 → TCP
- 需要实时性、容忍丢包 → UDP
- 流媒体通常使用 UDP(丢包仅影响瞬间画面)
互联网层 (Internet Layer)
- IP (Internet Protocol): 负责数据包的路由和转发
- IPv4: 32 位地址,约 43 亿地址,已耗尽
- IPv6: 128 位地址,解决地址枯竭问题
- 路由 (Routing): 路由器根据路由表选择最佳路径转发数据包
- 静态路由: 手动配置
- 动态路由: 使用 RIP、OSPF、BGP 等协议自动更新
链路层 (Link Layer)
- 负责同一物理网络内的数据传输
- 物理寻址: 使用 MAC 地址 (Media Access Control Address)
- 48 位,由厂商分配,通常固化在网卡中
- 将 IP 数据报封装成帧 (frame),添加 MAC 地址
- 负责差错检测(如 CRC)
电路交换 vs 分组交换
电路交换 (Circuit Switching)
- 通信前建立专用物理路径,通信结束后释放
- 工作过程: 建立连接 → 传输数据 → 释放连接
- 优点:
- 传输延迟小且固定,适合实时通信(语音、视频)
- 数据按序到达,无需重组
- 带宽保证,无竞争
- 缺点:
- 线路利用率低,空闲时浪费带宽
- 不适用于突发数据(burst data)
- 建立连接有时间开销
- 线路故障时需重新建立连接
- 典型应用: 传统电话网络 (PSTN)
分组交换 (Packet Switching)
- 数据分成数据包 (packet),通过共享网络独立传输
- 存储转发 (Store-and-forward): 每个路由器接收完整数据包后查表转发
- 优点:
- 资源共享: 多条通信共用链路,利用率高
- 弹性好 (Resilient): 部分节点故障可绕路
- 适合突发数据
- 不同速率设备可互连
- 缺点:
- 延迟不固定,可能有抖动
- 数据包可能乱序、丢失、重复
- 需要复杂协议保证可靠性
- 不适合对实时性要求极高的应用
对比总结
| 特性 | 电路交换 | 分组交换 |
|---|---|---|
| 路径 | 专用路径 | 共享路径 |
| 延迟 | 固定、低 | 可变 |
| 带宽利用 | 低(空闲浪费) | 高(统计复用) |
| 可靠性 | 依赖物理线路 | 可通过路由绕障 |
| 实时性 | 适合 | 一般 |
| 突发数据 | 不适合 | 适合 |
路由器在分组交换中的功能 (Router Function)
- 接收数据包: 从输入端口接收完整的数据包
- 检查目标地址: 解析 IP 数据包的目标 IP 地址
- 路由查找: 查询路由表(routing table),匹配最佳出接口
- 最长前缀匹配 (Longest Prefix Match)
- 转发: 将数据包从匹配的出接口发送到下一跳(next hop)
- 分段与重组: 必要时根据 MTU 对 IP 数据包分段
- 维护路由表: 通过静态配置或动态路由协议更新
BitTorrent 协议
概述
- BitTorrent: 点对点 (Peer-to-Peer / P2P) 文件共享协议
- 去中心化,不依赖中央服务器存储文件
- 适用于大型文件分发(操作系统镜像、视频等)
核心概念
- 种子 (Seed): 拥有完整文件并上传给其他人的节点
- 下载者 (Leecher): 正在下载但尚未拥有完整文件的节点
- Tracker: 跟踪服务器,维护参与节点的列表(非文件内容)
- 现代 BitTorrent 也可使用 DHT (Distributed Hash Table) 去中心化 Tracker
- Torrent 文件: 包含文件元数据(文件名、大小、分块哈希值)和 Tracker 地址
- 分块 (Pieces): 文件被分成固定大小的块,每个块有独立的 SHA-1 哈希值
工作机制
- 用户获取
.torrent文件或磁力链接 (Magnet link) - 客户端连接 Tracker 获取其他节点列表
- 客户端与其他节点建立连接,交换分块信息
- 下载的同时也上传已拥有的分块("人人为我,我为人人")
- 下载完成后可继续做种 (seeding)
特点
- 可扩展性: 下载节点越多,上传带宽总和越大,下载速度越快
- 抗单点故障: 无中心文件服务器,任意节点离线不影响整体
- 激励机制 (Choking/Unchoking): 优先给上传速度快的节点提供下载
- 文件完整性: 每个分块均经过哈希校验
考点提示
- BitTorrent 属于应用层协议
- 与传统的客户端-服务器 (Client-Server) 模型对比: P2P 模型不存在中心服务器瓶颈
- Tracker 只保存节点信息,不存储文件内容