Computer Network


本文基于《Computer Networking A Top-Down Approach (7th Edition)》的课本内容,对 SYSU-CSE DCS222 计算机核心专业课《计算机网络》进行较为详尽的知识点总结,涵盖少量实例分析。

第一章:计算机网络概论

本章为引言,介绍计算机领域的发展趋势,结合 Gartner 2024年新兴技术成熟度曲线

1.1 重要性与应用领域

1. 关键应用领域

  • 互联网
  • 移动网络
  • 云计算
  • 电子商务
  • 交通运输
  • 国家安全
  • 软件定义网络(SDN)

1.2 基本概念与原理

1. 网络通信类比

  • 通过邮政系统类比理解网络通信过程
  • 信封对应数据包
  • 分拣中心对应路由器
  • 传输过程的特点:
    • 逐个路由
    • 无时间保证
    • 无序到达
    • 可能丢失

2. 网络分层结构

  • 应用层(Application Layer)
  • 传输层(Transport Layer)
  • 网络层(Network Layer)
  • 链路层(Link Layer)
  • 物理层(Physical Layer)

1.3 互联网特征

1. 基本特征

  • 数据包独立路由
  • 无传输时间保证
  • 无顺序保证
  • 无可靠性保证
  • 数据完整性无保证
  • 数据包可能分片
  • 数据包可能重复

2. 各层功能

  • 传输层:提供端到端的可靠数据传输
  • 网络层:提供”尽力而为”的数据报传递
  • 链路层:在点对点链路间传输数据

1.4 重要问题与挑战

1. 网络设计问题

  • 路由器数量与位置优化
  • 处理能力分配
  • 传输时间保证
  • 安全性保证

2. 技术发展趋势

  • 自主AI系统
  • 开发者生产力
  • 全面用户体验
  • 以人为本的安全和隐私

第二章:应用层

章节结构与主要内容

  • 2.1 网络应用的基本原理
  • 2.2 Web 和 HTTP 协议
  • 2.3 电子邮件协议(SMTP、POP3、IMAP)
  • 2.4 域名系统(DNS)
  • 2.5 对等(P2P)网络应用
  • 2.6 视频流与内容分发网络(CDN)
  • 2.7 使用 UDP 和 TCP 的套接字编程

2.1 网络应用的基本原理

目标:了解网络应用的概念及实现方式,重点关注应用层协议设计。

基础概念

  1. 网络应用

    • 定义:运行在网络端系统上的程序,利用网络进行通信。
    • 示例:电子邮件、Web 浏览、视频流、即时通讯。
  2. 应用架构

    • 客户端-服务器架构
      • 服务器:始终在线,具有固定 IP 地址(如 Web 服务器)。
      • 客户端:与服务器通信,可能动态连接网络。
    • 对等(P2P)架构
      • 没有固定服务器,所有节点既是客户端又是服务器。
      • 适用于文件共享(如 BitTorrent)、VoIP(如 Skype)。
  3. 通信方式

    • 进程间通信:主机内部通过操作系统进行的通信。
    • 套接字:进程与网络之间的接口,类似于应用程序的“门”。

2.2 Web 和 HTTP 协议

HTTP 基础

  • 定义:超文本传输协议(HTTP)是 Web 的应用层协议,基于请求-响应模式。
  • 通信模型
    1. 客户端:发送 HTTP 请求(浏览器)。
    2. 服务器:接收请求并返回 HTTP 响应(Web 服务器)。

HTTP 特性

  • 无状态:服务器不存储客户端的状态信息。
  • 传输方式
    • 非持久连接:每次请求一个对象,关闭连接。
    • 持久连接:支持多个对象通过单一连接传输,提高效率。

HTTP 消息格式

  1. 请求消息

    • 包含请求行、头部字段和可选的消息体。

    • 示例:

      GET /index.html HTTP/1.1
      Host: www.example.com
  2. 响应消息

    • 包含状态行、头部字段和可选的数据部分。

    • 示例:

      HTTP/1.1 200 OK
      Content-Type: text/html
      Content-Length: 100

状态码

  • 2xx:成功(如 200 OK)
  • 3xx:重定向(如 301 Moved Permanently)
  • 4xx:客户端错误(如 404 Not Found)
  • 5xx:服务器错误(如 500 Internal Server Error)

Web 缓存与代理

  • 缓存:减少对原始服务器的需求,提升响应速度。
  • 条件请求:通过 If-Modified-Since 头部字段检查缓存是否过期。

2.3 电子邮件协议

主要组件

  1. 用户代理(UA):邮件客户端(如 Outlook)用于收发邮件。
  2. 邮件服务器:存储和转发电子邮件。
  3. 协议:SMTP 用于邮件发送,POP3/IMAP 用于邮件接收。

SMTP(简单邮件传输协议)

  • 特性
    • 基于 TCP 的可靠传输,使用端口 25。
    • “推送”模式:邮件从发送端主动推送到接收端。
  • 交互流程
    1. 客户端连接服务器。
    2. 进行握手(HELO)。
    3. 发送邮件(MAIL FROM、RCPT TO、DATA)。
    4. 结束会话(QUIT)。

POP3 与 IMAP

  1. POP3
    • 下载并删除模式(默认)或下载并保留模式。
    • 会话无状态。
  2. IMAP
    • 保持邮件存储在服务器端。
    • 支持多客户端同步,允许邮件分类和搜索。

2.4 域名系统(DNS)

DNS 的作用

  • 定义:将域名解析为 IP 地址的分布式数据库。
  • 功能
    • 主机名到 IP 地址的转换。
    • 别名解析(如 www.google.com → 真实服务器名)。
    • 邮件服务器别名(MX 记录)。

DNS 结构

  1. 层次化数据库
    • 根域名服务器:最高层,用于指向顶级域名服务器。
    • 顶级域名服务器(TLD):管理 .com.org 等。
    • 权威域名服务器:提供特定主机的 IP 地址。
  2. 本地 DNS 服务器
    • ISP 提供,缓存常用的域名解析结果。

查询过程

  • 递归查询:DNS 服务器代替客户端完成所有解析工作。
  • 迭代查询:DNS 服务器仅提供下一步指引。

关键记录类型

  • A 记录:主机名到 IPv4 地址的映射。
  • NS 记录:指向权威 DNS 服务器。
  • CNAME 记录:主机别名。
  • MX 记录:邮件服务器。

2.5 对等(P2P)网络应用

特点

  • 无需集中式服务器,任意两个节点可以直接通信。
  • 优点
    • 自扩展性:每个新节点既贡献资源也消耗资源。
    • 没有单点故障。
  • 缺点
    • 难以管理,IP 地址动态变化。

文件分发:BitTorrent

  • 工作原理
    • 文件被分割成小块(chunks)。
    • 节点彼此下载所需块,同时上传已有块。
  • 优化策略:Tit-for-Tat(以牙还牙)
    • 优先与上传速度最快的节点交换数据。

2.6 视频流与内容分发网络(CDN)

流媒体传输

  • 动态自适应流(DASH)
    • 视频被分割为多种编码速率的块。
    • 客户端根据带宽动态选择合适的块。

内容分发网络(CDN)

  • 定义:通过分布式服务器网络存储和传输内容,提高传输效率。
  • 部署方式
    • 深度部署:将服务器部署到接近用户的网络边缘(如 Akamai)。
    • 回家部署:在多个中心位置设置大型服务器集群(如 Limelight)。

2.7 使用 UDP 和 TCP 的套接字编程

套接字基础

  • 定义:应用程序与传输层之间的接口。
  • 分类
    • UDP 套接字:无连接,适合快速传输但可能丢包。
    • TCP 套接字:面向连接,确保可靠、顺序传输。

编程示例

  1. UDP 示例
    • 客户端发送数据包,服务器接收并返回。
    • 无需建立连接,代码简单,但不保证数据可靠性。
  2. TCP 示例
    • 客户端与服务器通过三次握手建立连接。
    • 适合需要可靠传输的应用,如文件传输。

总结与复习重点

  1. 核心协议:HTTP、SMTP、DNS、TCP/UDP。
  2. 应用架构
    • 客户端-服务器模型适合集中式应用。
    • P2P 模型适合分布式文件共享。
  3. 关键机制
    • DNS 的分层与缓存机制。
    • HTTP 的无状态性与缓存优化。
    • DASH 自适应视频流传输。
  4. 实践应用
    • DNS 故障排查。
    • 使用套接字实现简单的网络应用。

推荐学习资源

  1. 书籍
    • 《计算机网络——自顶向下方法》by Kurose & Ross
  2. 在线教程
  3. 工具
    • Wireshark:协议分析工具,用于捕获和分析网络流量。

第三章:传输层

章节结构

  1. 传输层服务
  2. 多路复用与解复用
  3. 无连接传输:UDP
  4. 可靠数据传输的基本原理
  5. 面向连接传输:TCP
    • 段结构
    • 可靠数据传输
    • 流量控制
    • 连接管理
  6. 拥塞控制的基本原理
  7. TCP 拥塞控制

3.1 传输层服务

传输层的作用

  • 提供主机间进程到进程的逻辑通信
  • 传输层协议运行在端系统
    • 发送端:将应用层消息划分为段,交给网络层。
    • 接收端:将接收的段重组为消息,并交给应用层。

主要传输层协议

  1. TCP(传输控制协议)
    • 面向连接,可靠传输。
    • 提供流量控制和拥塞控制。
  2. UDP(用户数据报协议)
    • 无连接,尽力而为,不保证可靠性。

传输层与网络层的区别

  • 网络层提供主机到主机的通信。
  • 传输层提供进程到进程的通信(更细粒度)。

3.2 多路复用与解复用

定义

  • 多路复用:发送端将来自多个应用的数据封装到传输层段中,分发到网络层。
  • 解复用:接收端根据段头信息(端口号)将数据交付给正确的应用进程。

如何工作

  • IP 数据报包含:
    1. 源 IP 地址、目标 IP 地址。
    2. 源端口号、目标端口号(用于选择正确的套接字)。
  • UDP 多路复用与解复用
    • 仅使用目标端口号。
    • 相同目标端口号的数据报可能来自不同源地址/端口号,但会被交付到同一个套接字。
  • TCP 多路复用与解复用
    • 使用 4 元组(源 IP、源端口、目标 IP、目标端口)标识连接。
    • 每个 TCP 连接都有唯一的套接字。

3.3 无连接传输:UDP

UDP 的特点

  1. 简单、无连接
    • 不需要握手过程。
    • 每个段独立处理。
  2. 不可靠传输
    • 数据可能丢失或乱序。
    • 不提供流量控制或拥塞控制。

UDP 的优点

  • 低开销(小报头)。
  • 适合对时延敏感的应用(如实时多媒体、DNS)。

UDP 报文段结构

  • 头部字段:
    • 源端口号、目标端口号。
    • 长度:段的总字节数。
    • 校验和:用于错误检测。

3.4 可靠数据传输的基本原理

可靠数据传输协议(RDT)

  1. RDT 1.0:假设信道可靠,无数据丢失或损坏。
  2. RDT 2.0:支持有错误的信道。
    • 错误检测:通过校验和。
    • 反馈机制:使用 ACK(确认)和 NAK(否认)消息。
    • 缺陷:如果 ACK/NAK 损坏,无法判断是否需要重传。
  3. RDT 2.1 和 2.2
    • 添加序列号以区分重复分组。
    • 使用无 NAK 协议(重复 ACK 代替 NAK)。
  4. RDT 3.0:处理丢包的信道。
    • 添加超时机制。
    • 停等协议:每次发送一个分组,等待确认后再发送下一个。

3.5 面向连接传输:TCP

TCP 的特点

  1. 面向连接
    • 需要三次握手建立连接。
    • 每个连接由 4 元组(源 IP、源端口、目标 IP、目标端口)标识。
  2. 可靠性
    • 使用序列号和确认号。
    • 重传机制:基于超时或快速重传(三次重复 ACK)。
  3. 流量控制:防止发送端超出接收端的处理能力。
  4. 拥塞控制:防止网络过载。

TCP 段结构

  • 关键字段:
    1. 序列号:分组中第一个字节的编号。
    2. 确认号:期望接收的下一个字节序号。
    3. 接收窗口:接收端可用的缓冲区大小(用于流量控制)。
    4. 标志位:SYN(同步)、FIN(结束)、ACK(确认)等。

TCP 流量控制

  • 基于滑动窗口机制:
    • 发送端根据接收端的接收窗口(rwnd)调整发送速率。
    • 防止接收端缓冲区溢出。

TCP 连接管理

  1. 连接建立:三次握手。
    • 客户端发送 SYN,同步序列号。
    • 服务器发送 SYN-ACK,确认并同步序列号。
    • 客户端发送 ACK,连接建立。
  2. 连接关闭:四次挥手。
    • 双方分别发送 FIN 和 ACK 关闭连接。

3.6 拥塞控制的基本原理

定义

  • 拥塞:网络中过多的数据导致性能下降。
  • 拥塞控制:解决网络资源竞争,避免拥塞发生。

拥塞的表现

  1. 分组丢失(路由器缓冲区溢出)。
  2. 分组排队延迟增大。

拥塞的代价

  • 不必要的重传降低了有效吞吐量。
  • 上游传输资源浪费。

3.7 TCP 拥塞控制

TCP 的拥塞控制机制

  1. 慢启动(Slow Start)
    • 初始拥塞窗口(cwnd)为 1 MSS。
    • 每次接收 ACK,将 cwnd 翻倍。
    • 指数增长,直到达到慢启动阈值(ssthresh)
  2. 拥塞避免(Congestion Avoidance)
    • cwnd 每 RTT 增加 1 MSS(线性增长)。
  3. 快速重传与快速恢复
    • 快速重传:接收 3 个重复 ACK 后立即重传丢失分组。
    • 快速恢复:将 cwnd 减半,而不是重置为 1 MSS。

TCP 的 AIMD 算法

  • 加性增加,乘性减少
    • 每 RTT 增加 cwnd。
    • 检测到丢包时,将 cwnd 减半。

TCP 吞吐量公式

  • 平均吞吐量 ≈ (3/4) * W / RTT
    • W:丢包时的窗口大小。
    • RTT:往返时延。

3.8 高速网络与新型传输协议

TCP 在高速网络中的挑战

  • 大带宽、长时延的链路需要更大的窗口大小。
  • TCP CUBIC:Linux 默认 TCP 拥塞控制算法。
    • 通过更快地接近最大窗口(Wmax)提高吞吐量。

QUIC 协议

  • 基于 UDP 的新型传输协议,改进了 TCP 的性能:
    • 更快的连接建立(一次握手)。
    • 内置的可靠性、拥塞控制和加密。

总结与复习重点

  1. 传输层功能:从主机到主机的通信扩展到进程到进程。
  2. 协议对比
    • UDP:简单、无连接、不可靠。
    • TCP:复杂、面向连接、可靠。
  3. 关键机制
    • 多路复用与解复用。
    • TCP 的流量控制与拥塞控制。
    • 可靠数据传输的实现原理。
  4. 应用场景
    • UDP 适用于实时应用(如视频流)。
    • TCP 适用于可靠性要求高的应用(如文件传输)。

推荐学习资源

  1. 书籍
    • 《计算机网络:自顶向下方法》(Kurose 和 Ross)。
  2. 工具
    • Wireshark:网络协议分析工具。
  3. 在线教程

第四章:网络层——数据平面

章节结构

  1. 网络层概述
  2. 路由器的内部结构
  3. IP 协议
    • 数据报格式
    • 分片与重组
    • IPv4 地址
    • 网络地址转换(NAT)
    • IPv6
  4. 泛化转发与软件定义网络(SDN)
    • 匹配
    • 动作
    • OpenFlow 示例

4.1 网络层概述

网络层的作用

网络层的主要功能是提供主机到主机的通信服务,负责将传输层消息封装成数据报并传递至目的地。

  • 发送端:将传输层消息封装到 IP 数据报中。
  • 接收端:从 IP 数据报中提取传输层消息,并传递给传输层。
  • 路由器:检查每个通过的 IP 数据报头部信息,并决定如何转发。

网络层的两大核心功能

  1. 转发
    • 在路由器内部,将数据包从输入端口移动到适当的输出端口。
    • 类比:从高速公路的一个出口进入另一个出口。
  2. 路由
    • 决定数据包从源到目的地的路径。
    • 类比:规划从起点到终点的整体旅行路线。

数据平面与控制平面

  • 数据平面
    • 定义:每个路由器的本地功能,决定如何根据数据报头部信息将其转发到正确的输出端口。
    • 特点:局部、快速,通常在硬件中实现。
  • 控制平面
    • 定义:全网范围的逻辑,用于决定数据包在网络中的路由路径。
    • 两种实现方式
      1. 传统路由算法:所有计算在路由器内完成。
      2. 软件定义网络(SDN):集中式控制器在远程服务器上计算路由。

4.2 路由器的内部结构

路由器架构的主要组件

  1. 输入端口

    • 功能:
      1. 终止物理链路(物理层)。
      2. 执行数据链路层协议(如以太网)。
      3. 根据转发表查找数据包的输出端口。
    • 去中心化处理:输入端口可以独立完成查表操作(“匹配+动作”),以实现高效率。
    • 排队与阻塞:当到达速率超过交换速率时,可能出现排队和丢包。
  2. 交换结构

    • 功能:将数据包从输入端口传输到正确的输出端口。
    • 实现方式:
      1. 内存交换:数据包通过共享内存进行传输(速度受限于内存带宽)。
      2. 总线交换:通过共享总线传输数据包(速度受限于总线带宽)。
      3. 交叉交换:使用交叉开关网络,支持多个输入输出同时通信(高性能)。
  3. 输出端口

    • 功能:
      1. 存储从交换结构传来的数据包。
      2. 执行排队调度并发送数据包。
    • 排队与丢包:当数据包到达速率超过输出链路速率时可能出现缓冲区溢出。
  4. 路由处理器

    • 功能:执行路由协议、维护转发表、管理网络层控制功能。
    • 实现:通常通过软件运行在路由器 CPU 上。

示例:最长前缀匹配

  • 路由器使用最长前缀匹配查找转发表中的路由。

  • 例子

    • 数据包目的地址:11001000 00010111 00011000 10101010

    • 转发表:

      前缀              接口
      11001000 00010111 00010*** ********* 0
      11001000 00010111 00011000 ********* 1
      11001000 00010111 00011*** ********* 2

      匹配规则:选择匹配位数最多的条目,因此选择接口 1


4.3 IP 协议

IP 数据报格式

  • 关键字段
    1. 版本号:IPv4 或 IPv6。
    2. 首部长度:IP 首部的长度(通常为 20 字节)。
    3. 源 IP 地址和目标 IP 地址
    4. 生存时间(TTL):防止数据包无限循环。
    5. 数据总长度:数据报的总字节数(包括首部和数据)。

IP 分片与重组

  • 原因:不同链路的最大传输单元(MTU)可能不同。
  • 过程
    • 大数据报在路由器中被分片。
    • 分片的数据报在目的地重组。
  • 示例
    • 初始数据报大小:4000 字节。
    • MTU:1500 字节。
    • 结果:
      1. 分片 1:1480 字节数据 + 20 字节头部。
      2. 分片 2:1480 字节数据 + 20 字节头部。
      3. 分片 3:1040 字节数据 + 20 字节头部。

IPv4 地址与子网

  • IP 地址
    • 32 位标识符,包括网络部分和主机部分。
    • CIDR(无类别域间路由):使用前缀表示法(如 200.23.16.0/23)。
  • 子网
    • 定义:相同网络部分的设备集合,子网内设备无需路由即可通信。
    • 子网掩码:用于提取网络部分(如 /24 表示前 24 位为网络部分)。

动态主机配置协议(DHCP)

  • 功能:动态分配 IP 地址。
  • 工作流程
    1. 主机发送 DHCP Discover 广播消息。
    2. DHCP 服务器回复 DHCP Offer。
    3. 主机发送 DHCP Request 确认请求。
    4. DHCP 服务器发送 DHCP ACK 确认分配。

网络地址转换(NAT)

  • 功能:将私有 IP 地址映射为全局唯一的公共 IP 地址。

  • 优点

    1. 节省 IP 地址。
    2. 提高网络安全性(隐藏内部网络结构)。
  • 示例

    • 内部地址:10.0.0.1

    • NAT 地址:138.76.29.7

    • NAT 表:

      内部地址:端口 外部地址:端口
      10.0.0.1:3345 138.76.29.7:5001

IPv6

  • 动机:IPv4 地址耗尽。
  • 特点
    1. 扩展地址空间(128 位地址)。
    2. 固定长度的 40 字节头部。
    3. 移除校验和字段以简化处理。
  • 过渡机制:隧道技术(将 IPv6 数据报封装为 IPv4 数据报的有效载荷)。

4.4 泛化转发与软件定义网络(SDN)

泛化转发

  • 定义:根据任意头部字段而非仅目的地址进行转发。
  • 实现:采用流表(flow table),由控制器计算并分发。
  • 流表字段
    • 匹配(Match):头部字段值。
    • 动作(Action):对匹配数据包执行的操作(如转发、丢弃、修改)。
    • 计数器(Counters):记录匹配流量的字节数与包数。

OpenFlow 示例

  • 场景:主机 h5h6 的数据包需通过交换机 s1s2 转发到主机 h3h4

  • 流表规则

    匹配条件             动作
    src=10.3.*.*, dest=10.2.*.* 转发到端口 3
    ingress port=2, dest=10.2.0.3 转发到端口 4

总结与复习重点

  1. 核心功能
    • 转发(数据平面)与路由(控制平面)。
  2. 关键协议
    • IPv4、IPv6、NAT、DHCP。
  3. 路由器内部
    • 输入端口、交换结构、输出端口和路由处理器。
  4. 新技术
    • 泛化转发与 SDN,简化网络管理。

推荐学习资源

  1. 书籍:《计算机网络:自顶向下方法》。
  2. 工具:Wireshark 数据包捕获与分析。
  3. 在线资源Kurose & Ross 在线练习

第五章:网络层——控制平面

章节结构

  1. 引言
  2. 路由协议
    • 链路状态算法(Link State)
    • 距离向量算法(Distance Vector)
  3. 互联网内部自治系统路由(OSPF)
  4. 自治系统之间的路由(BGP)
  5. 软件定义网络(SDN)控制平面
  6. 互联网控制报文协议(ICMP)
  7. 网络管理与 SNMP

5.1 引言

网络层的两大功能

  1. 转发(Forwarding)
    • 数据平面功能:将数据包从输入端口移动到适当的输出端口。
  2. 路由(Routing)
    • 控制平面功能:计算从源到目的地的路径。

两种控制平面实现方式

  1. 传统的分布式控制
    • 每个路由器运行独立的路由算法,计算自己的转发表。
  2. 逻辑集中式控制(SDN)
    • 采用集中式控制器,由控制器计算并分发转发表。

5.2 路由协议

路由协议的目标是确定从源主机到目的主机的“最佳路径”(如最低成本或最短时间)。

网络抽象:图模型

  • 节点:路由器。
  • :路由器之间的链路,带有成本(如带宽、时延或拥塞水平)。
  • 路径成本:路径上所有链路成本的总和。

路由算法分类

  1. 全局路由算法(链路状态算法)
    • 所有路由器都有网络拓扑的完整信息。
    • 通过链路状态广播实现。
  2. 分布式路由算法(距离向量算法)
    • 每个路由器只知道与其直接相连的邻居信息。
    • 通过与邻居交换信息迭代计算。

使用 Dijkstra 算法 计算单源最短路径。

Dijkstra 算法步骤
  1. 初始化:
    • 将源节点加入集合 N',初始路径成本为 0。
    • 对于其他节点,设置初始路径成本为 ∞。
  2. 迭代:
    • 从未加入 N' 的节点中选择路径成本最小的节点,并将其加入 N'
    • 更新其他节点的路径成本。
  3. 重复,直到所有节点都被加入 N'
示例

给定以下网络拓扑:

u---1---x---2---y---3---z
  1. 初始状态:N' = {u},路径成本为 D(u) = 0,其他节点为 ∞。
  2. 第一步加入 xD(x) = 1
  3. 第二步加入 yD(y) = 3
  4. 第三步加入 zD(z) = 6
算法复杂度
  • 时间复杂度:O(n²)(n 是节点数)。
  • 使用更高效的数据结构(如优先队列)可优化为 O(n log n)。

距离向量算法(Distance Vector)

基于 Bellman-Ford 方程

Dx(y) = min {c(x, v) + Dv(y)}

其中:

  • Dx(y) 是从节点 x 到节点 y 的最短路径成本。
  • c(x, v) 是节点 x 到邻居 v 的链路成本。
  • Dv(y) 是邻居 v 到 y 的最短路径成本。
工作机制
  1. 每个节点维护一个距离向量,表示到每个目的地的路径成本。
  2. 节点周期性向邻居发送自己的距离向量。
  3. 接收到邻居的距离向量后,更新自己的距离向量。
示例
  1. 节点 x 的初始距离向量:Dx = [0, 2, 7]

  2. 从邻居 y 接收到 Dy = [2, 0, 1] 后,更新:

    Dx(z) = min{c(x, y) + Dy(z), Dx(z)} = min{2 + 1, 7} = 3
问题
  • 计数到无穷问题:路径成本可能无限增加(如链路失效时)。
  • 解决方法:毒性逆转(Poisoned Reverse),即路由器通过某节点到目标的路径成本报告为 ∞。

5.3 互联网内部自治系统路由:OSPF

OSPF(开放最短路径优先)特点

  1. 链路状态路由协议
    • 每个路由器维护整个自治系统(AS)的拓扑图。
    • 使用 Dijkstra 算法计算最短路径。
  2. 分层结构
    • 将 AS 分为多个区域(Area),每个区域内进行链路状态广播。
    • 区域边界路由器负责汇总区域信息。
  3. 特性
    • 支持多条等价成本路径。
    • 强调安全通信(认证机制)。

5.4 自治系统之间的路由:BGP

BGP(边界网关协议)特点

  1. 作用
    • 在自治系统(AS)之间传播可达性信息。
    • 选择“最佳”路径到达外部网络。
  2. 两种 BGP 会话
    • eBGP:AS 之间的 BGP 会话。
    • iBGP:AS 内部的 BGP 会话。
  3. 路径选择规则
    • 根据 AS-PATH(路径中经过的 AS 列表)选择最短路径。
    • 使用策略决定是否接受或传播路径。

BGP 消息类型

  1. OPEN:建立会话并进行身份验证。
  2. UPDATE:传播新路径或撤销旧路径。
  3. KEEPALIVE:保持连接存活。
  4. NOTIFICATION:报告错误或关闭连接。

5.5 软件定义网络(SDN)控制平面

SDN 的核心思想

  • 控制平面与数据平面分离:
    • 数据平面:负责包的转发。
    • 控制平面:通过集中式控制器管理整个网络的转发表。
  • 优点
    • 提高网络管理的灵活性(集中式配置)。
    • 支持复杂的流量工程(如负载均衡)。

OpenFlow 协议

  • 定义控制器与交换机之间的通信。
  • 消息类型
    1. 控制器到交换机
      • 修改流表(如添加、删除规则)。
      • 查询交换机状态。
    2. 交换机到控制器
      • 报告异常事件(如端口状态变化)。
      • 将未匹配的数据包发送到控制器。

5.6 互联网控制报文协议(ICMP)

ICMP 的功能

  1. 错误报告
    • 如目标不可达(Type 3)。
    • TTL 超时(Type 11)。
  2. 诊断工具
    • Ping:测试连通性(Echo 请求与应答)。
    • Traceroute:跟踪数据包路径。

5.7 网络管理与 SNMP

SNMP(简单网络管理协议)

  1. 组成
    • 管理实体:收集和分析网络数据。
    • 代理(Agent):驻留在被管理设备上,维护管理信息库(MIB)。
  2. 工作模式
    • 请求/响应模式:管理实体主动请求数据。
    • 陷阱模式(Trap):代理主动向管理实体报告异常。

总结与复习重点

  1. 路由协议
    • OSPF(链路状态)和 BGP(路径向量)。
    • 计数到无穷问题及其解决方法。
  2. SDN 核心
    • 控制平面与数据平面分离。
    • OpenFlow 协议实现集中式管理。
  3. 网络工具
    • ICMP 用于网络诊断。
    • SNMP 用于网络管理。

推荐学习资源

  1. 书籍:《计算机网络:自顶向下方法》by Kurose 和 Ross。
  2. 工具:使用 Wireshark 捕获和分析路由协议。
  3. 在线资源Kurose & Ross 在线交互练习

第六章:链路层与局域网

章节结构

  1. 引言与服务
  2. 错误检测与纠正
  3. 多路访问协议
  4. 局域网(LANs)
    • 地址与 ARP
    • 以太网
    • 交换机
    • 虚拟局域网(VLANs)
  5. 链路虚拟化:多协议标签交换(MPLS)
  6. 数据中心网络
  7. Web 请求的生命周期

6.1 引言与服务

链路层的作用

  • 链路层负责在相邻节点之间传递数据报(datagram)。
  • 数据报在链路层被封装成帧(frame)。

链路层的主要服务

  1. 帧封装与链路访问

    • 将网络层数据报封装为帧,添加头部和尾部。
    • 若为共享介质,提供介质访问控制(MAC)。
    • MAC 地址:用于标识帧的源和目标节点,与 IP 地址不同。
  2. 可靠传输

    • 无线链路上可能需要链路层的可靠性补充。
  3. 错误检测与纠正

    • 检测数据传输中可能出现的比特错误。
    • 错误纠正允许无需重传即可修正比特错误。
  4. 流量控制

    • 在相邻节点之间实现发送与接收的速率匹配。
  5. 半双工与全双工通信

    • 半双工:双向传输,但同一时间只允许一个方向的数据流动。
    • 全双工:双向同时传输。

6.2 错误检测与纠正

错误检测

  1. 奇偶校验(Parity Check)

    • 单比特奇偶校验:检测单个比特错误。
    • 二维奇偶校验:不仅能检测,还可以纠正单比特错误。
  2. 校验和(Checksum)

    • 在传输层(如 UDP)使用。
    • 将数据视为 16 位整数的序列,计算 1 的补码和,用于错误检测。
  3. 循环冗余校验(CRC)

    • 检测能力强,广泛应用于以太网、WiFi 等。

    • 基于数据和生成多项式 G,计算校验位 R

      R = remainder(D * 2^r / G)
    • 检测突发错误的概率非常高。


6.3 多路访问协议

链路类型

  1. 点对点链路:如拨号 PPP 链路。
  2. 广播链路:多节点共享同一通信介质(如以太网、WiFi)。

多路访问协议分类

  1. 信道划分协议
    • 时分多路访问(TDMA):分时复用。
    • 频分多路访问(FDMA):分频复用。
  2. 随机访问协议
    • 允许冲突发生,通过随机重传恢复。
    • ALOHACSMA/CD(以太网)、CSMA/CA(WiFi)。
  3. 轮流协议
    • 节点轮流访问信道。
    • 轮询令牌传递协议。

典型协议

  1. ALOHA

    • 纯 ALOHA:节点立即发送,冲突概率高,效率约为 18%。
    • 时隙 ALOHA:节点在时隙开始时发送,效率提升至 37%。
  2. CSMA(载波侦听多路访问)

    • 在发送前监听信道是否空闲。
    • CSMA/CD(冲突检测)
      • 适用于有线网络(如以太网)。
      • 发生冲突时,立即中止传输,节省信道资源。
  3. 令牌传递协议

    • 控制令牌在节点间传递,持有令牌的节点可发送数据。
    • 避免冲突,但可能面临令牌丢失问题。

6.4 局域网(LANs)

MAC 地址与 ARP

  1. MAC 地址

    • 长度:48 位,通常以 16 进制表示(如 1A-2F-BB-76-09-AD)。
    • 特点:与硬件绑定,全球唯一(由 IEEE 管理分配)。
    • 区别:
      • IP 地址:用于全局网络通信,基于网络拓扑。
      • MAC 地址:用于局部链路通信。
  2. ARP(地址解析协议)

    • 功能:通过 IP 地址解析 MAC 地址。
    • 工作过程:
      1. 主机广播 ARP 请求,目标 IP 地址为查询对象。
      2. 目标主机回复其 MAC 地址。
      3. 查询主机将 IP-MAC 映射缓存到 ARP 表中。

以太网

  1. 以太网帧结构

    • 包含目的 MAC 地址、源 MAC 地址、类型字段、数据和 CRC 校验。
    • 类型字段:标识上层协议(如 IP 协议)。
  2. 特点

    • 无连接:发送端和接收端之间没有握手。
    • 不可靠
      • 丢弃错误帧,无确认或重传机制。
      • 数据可靠性由上层协议(如 TCP)保证。
  3. 拓扑结构

    • 总线型:所有节点共享同一条通信线路。
    • 星型:使用交换机连接,各节点独立通信,无冲突。

交换机

  1. 功能

    • 链路层设备,基于 MAC 地址转发帧。
    • 提供全双工通信,不同端口间无冲突。
  2. 工作机制

    • 自学习
      • 通过接收帧学习源 MAC 地址与端口的对应关系。
      • 维护转发表,记录 MAC 地址、端口和时间戳。
    • 转发与过滤
      • 若目标地址在转发表中,则将帧转发至对应端口。
      • 若不在表中,则广播帧。
  3. 优势

    • 支持多路并行传输。
    • 隔离冲突域,提高网络效率。

VLAN(虚拟局域网)

  1. 动机

    • 提供逻辑上的网络隔离。
    • 减少广播流量,提升安全性。
  2. 特点

    • 基于端口的 VLAN:通过交换机端口划分 VLAN。
    • 跨交换机 VLAN
      • 使用 802.1Q 协议,在帧中添加 VLAN ID。

6.5 链路虚拟化:MPLS

  1. 多协议标签交换(MPLS)

    • 在链路层实现虚拟电路的功能。
    • 使用固定长度的标签(而非 IP 地址)进行转发,加速查找。
  2. 特点

    • 支持流量工程:根据源地址和目标地址选择不同路径。
    • 快速重路由:在链路失效时使用预计算的备份路径。
  3. MPLS 转发表

    • 基于标签值转发,而不依赖 IP 地址。

6.6 数据中心网络

  1. 特点

    • 包含数万台服务器,通常用于电商、搜索引擎、内容分发等。
    • 需要高带宽和高可靠性。
  2. 架构

    • 层次结构
      • 服务器通过 TOR(Top-of-Rack)交换机连接。
      • 多层交换机提供冗余和高吞吐量。
    • 负载均衡器
      • 在应用层路由流量。
      • 分配客户端请求,隐藏数据中心内部架构。

6.7 Web 请求的生命周期

以请求 www.google.com 为例,完整描述协议栈的应用:

  1. DHCP
    • 获取 IP 地址、默认网关和 DNS 服务器地址。
  2. ARP
    • 查询默认网关的 MAC 地址。
  3. DNS
    • www.google.com 转换为 IP 地址。
  4. TCP 三次握手
    • 建立到 Web 服务器的连接。
  5. HTTP 请求与响应
    • 发送 HTTP GET 请求,接收 Web 页面。

总结与复习重点

  1. 链路层核心功能
    • 错误检测与纠正、多路访问控制、链路层地址解析。
  2. 关键技术
    • 以太网、交换机、自学习机制。
    • VLAN 提供逻辑隔离,MPLS 提供高效转发。
  3. Web 请求的完整协议栈应用
    • 结合链路层、网络层、传输层和应用层的协作。

推荐学习资源

  1. 书籍:《计算机网络:自顶向下方法》(Kurose & Ross)。
  2. 工具:Wireshark 数据包分析工具。
  3. 在线资源Kurose & Ross 在线练习

第七章:无线与移动网络

本章内容主要围绕无线与移动网络的特点、技术及其实现展开,涉及无线通信的基本概念、移动用户的地址管理与数据路由、具体协议(如IEEE 802.11与移动IP)以及无线网络对高层协议的影响。


7.1 介绍

  • 当前无线用户数已远超有线用户(如5:1比例)。
  • 无线设备(如笔记本、智能手机)支持随时随地的网络访问。
  • 无线网络面临两大挑战:
    1. 无线通信:如何在无线链路上传递数据。
    2. 移动性:如何支持用户在切换接入点时保持连接。

7.2 无线链路及其特性

无线链路具有以下显著特性:

  1. 信号衰减:无线信号在传播中会逐渐减弱。
  2. 干扰:同频率设备间的干扰、环境中的电磁波干扰。
  3. 多径传播:信号反射导致接收端接收到多个不同延时的信号,影响通信质量。

信噪比(SNR)与误码率(BER)

  • SNR:信号与噪声的比值,SNR越高,通信越可靠。
  • BER:误码率,SNR越高,BER越低。
  • 动态调整:根据SNR调整物理层的调制技术,如:
    • QAM256(高吞吐量,低SNR适应性)。
    • BPSK(低吞吐量,高SNR适应性)。

7.3 IEEE 802.11 无线局域网(Wi-Fi)

802.11标准

  • 802.11b:2.4 GHz频段,最高11 Mbps。
  • 802.11a/g:5 GHz频段,最高54 Mbps。
  • 802.11n:支持多天线,最高200 Mbps。
  • 802.11ac:更高数据速率,适用于现代Wi-Fi。

802.11网络架构

  1. 基础设施模式
    • 通过接入点(AP)连接到有线网络。
    • 支持“切换”(handoff),用户可在不同AP之间移动。
  2. Ad Hoc模式
    • 无接入点,节点间直接通信,适用于临时组网。

信道与关联

  • 频谱划分:802.11b将2.4GHz-2.485GHz分为11个信道。
  • 关联(Association)
    • 主动扫描:设备主动发送探测帧,寻找可用AP。
    • 被动扫描:设备监听AP发送的信标帧。

多路访问控制(MAC)

  • CSMA/CA协议
    • 检测信道空闲后发送数据。
    • 避免碰撞:发送RTS(请求发送)和CTS(允许发送)帧进行信道预留。
  • 帧结构
    • 包含源地址、目标地址、AP地址等,支持基础设施模式和Ad Hoc模式。

高级功能

  • 速率自适应:根据SNR动态调整传输速率。
  • 节能管理:设备可进入“休眠模式”,并定期唤醒接收AP的信标帧。

7.4 蜂窝网络接入

蜂窝网络架构

  • 基站(BS):连接移动设备和有线网络。
  • 移动交换中心(MSC):负责呼叫建立和移动性管理。
  • 频谱共享
    • FDMA/TDMA:频率和时间的划分。
    • CDMA:通过独特的编码允许多个用户共享相同的频率。

蜂窝网络演进

  • 2G:如GSM,主要支持语音。
  • 3G:增加数据服务,使用分组数据核心网络(GPRS)。
  • 4G LTE:核心网络基于IP,统一承载语音与数据。

7.5 移动性的基本原理

术语

  • 家庭网络(Home Network):用户的永久网络。
  • 访问网络(Visited Network):用户当前所在的网络。
  • 永久地址(Permanent Address):固定的IP地址,用于标识用户。
  • 转交地址(Care-of-Address):临时分配的地址,用于路由转发。
  • 家庭代理(Home Agent):负责跟踪用户位置并转发数据。
  • 外部代理(Foreign Agent):在访问网络中代表用户。

移动性管理方式

  1. 间接路由
    • 通信由家庭代理转发至外部代理,再转发到移动用户。
    • 存在“三角路由”问题,效率较低。
  2. 直接路由
    • 通信方直接获取用户的转交地址,减少转发步骤。
    • 需要动态更新地址,复杂度较高。

7.6 移动IP

  • 定义:RFC 3344,支持在不同网络之间切换时保持IP地址不变。
  • 功能组件
    1. 间接路由:家庭代理负责转发数据。
    2. 代理发现:通过ICMP消息广播外部代理信息。
    3. 注册:移动节点向家庭代理报告其转交地址。

数据转发流程

  1. 通信方向移动节点的永久地址发送数据包。
  2. 家庭代理接收数据包,封装后转发至外部代理。
  3. 外部代理解封数据包并交付给移动节点。

7.7 蜂窝网络中的移动性管理

位置管理

  1. 家庭位置寄存器(HLR):存储用户的永久信息及当前位置。
  2. 访客位置寄存器(VLR):存储用户的临时信息。

切换管理(Handoff)

  • 同一MSC内切换
    • 原基站检测到信号变弱后触发切换。
    • 新基站分配资源并通知移动设备切换。
  • 跨MSC切换
    • 引入“锚点MSC”,所有数据通过锚点转发至当前基站。
    • 可选路径优化步骤减少转发路径。

LTE中的移动性

  • 寻呼(Paging):广播消息定位空闲用户。
  • 切换
    1. 准备阶段:新基站分配资源。
    2. 执行阶段:用户切换到新基站。
    3. 完成阶段:释放旧基站资源。

7.8 移动性对高层协议的影响

  • TCP性能问题
    • 无线链路的高误码率和切换延迟会导致TCP误判为网络拥塞,降低窗口大小。
  • 实时流量
    • 延迟波动和丢包会影响实时应用(如语音、视频)。
  • 带宽限制
    • 无线链路的带宽通常低于有线网络,需优化传输。

实例分析

CDMA编码与解码

  • 每个用户分配唯一的“码”,数据通过与码的内积进行解码。
  • 即使多个用户同时发送,接收端仍可通过码的正交性分离信号。

802.11的RTS-CTS机制

  • RTS帧:发送端请求信道占用。
  • CTS帧:接收端确认信道可用。
  • 避免长数据帧的碰撞,提高传输效率。

移动IP的三角路由问题

  • 数据需经过家庭代理转发,即使通信双方在同一网络中,导致效率低下。

文章作者: Lavoisier
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Lavoisier !
评论
  目录