跳到主要内容

通信与协议 (Communication and Protocols)

协议基础 (Protocol Fundamentals)

为什么需要协议

  • 协议 (Protocol): 通信双方共同遵守的规则和约定
  • 必要性:
    • 统一数据格式和编码方式
    • 定义传输速率和时序
    • 规定错误检测和纠正机制
    • 确保不同厂商的设备能互操作
    • 管理流量控制和拥塞控制

分层模型 (Layered Stack Model)

  • 分层的好处:

    • 模块化: 每层独立实现特定功能
    • 易于维护: 修改某一层不影响其他层
    • 标准化: 各层接口明确,利于不同厂商实现
  • 常见的分层模型: OSI 七层模型(理论)、TCP/IP 四层模型(实际应用)

TCP/IP 协议簇 (TCP/IP Protocol Suite)

应用层 (Application Layer)

  • 为应用程序提供网络服务
  • 常见协议:
协议全称功能端口
HTTPHyperText Transfer Protocol网页传输,无状态80
HTTPSHTTP Secure加密网页传输 (SSL/TLS)443
FTPFile Transfer Protocol文件上传/下载20/21
SMTPSimple Mail Transfer Protocol发送邮件25
POP3Post Office Protocol v3接收邮件(下载后删除服务器副本)110
IMAPInternet Message Access Protocol接收邮件(服务器保留副本)143
BitTorrent-P2P 文件共享(见下文)-
DNSDomain 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 等协议自动更新
  • 负责同一物理网络内的数据传输
  • 物理寻址: 使用 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)

  1. 接收数据包: 从输入端口接收完整的数据包
  2. 检查目标地址: 解析 IP 数据包的目标 IP 地址
  3. 路由查找: 查询路由表(routing table),匹配最佳出接口
    • 最长前缀匹配 (Longest Prefix Match)
  4. 转发: 将数据包从匹配的出接口发送到下一跳(next hop)
  5. 分段与重组: 必要时根据 MTU 对 IP 数据包分段
  6. 维护路由表: 通过静态配置或动态路由协议更新

BitTorrent 协议

概述

  • BitTorrent: 点对点 (Peer-to-Peer / P2P) 文件共享协议
  • 去中心化,不依赖中央服务器存储文件
  • 适用于大型文件分发(操作系统镜像、视频等)

核心概念

  • 种子 (Seed): 拥有完整文件并上传给其他人的节点
  • 下载者 (Leecher): 正在下载但尚未拥有完整文件的节点
  • Tracker: 跟踪服务器,维护参与节点的列表(非文件内容)
    • 现代 BitTorrent 也可使用 DHT (Distributed Hash Table) 去中心化 Tracker
  • Torrent 文件: 包含文件元数据(文件名、大小、分块哈希值)和 Tracker 地址
  • 分块 (Pieces): 文件被分成固定大小的块,每个块有独立的 SHA-1 哈希值

工作机制

  1. 用户获取 .torrent 文件或磁力链接 (Magnet link)
  2. 客户端连接 Tracker 获取其他节点列表
  3. 客户端与其他节点建立连接,交换分块信息
  4. 下载的同时也上传已拥有的分块("人人为我,我为人人")
  5. 下载完成后可继续做种 (seeding)

特点

  • 可扩展性: 下载节点越多,上传带宽总和越大,下载速度越快
  • 抗单点故障: 无中心文件服务器,任意节点离线不影响整体
  • 激励机制 (Choking/Unchoking): 优先给上传速度快的节点提供下载
  • 文件完整性: 每个分块均经过哈希校验
考点提示
  • BitTorrent 属于应用层协议
  • 与传统的客户端-服务器 (Client-Server) 模型对比: P2P 模型不存在中心服务器瓶颈
  • Tracker 只保存节点信息,不存储文件内容