本文基于《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 网络应用的基本原理
目标:了解网络应用的概念及实现方式,重点关注应用层协议设计。
基础概念
网络应用:
- 定义:运行在网络端系统上的程序,利用网络进行通信。
- 示例:电子邮件、Web 浏览、视频流、即时通讯。
应用架构:
- 客户端-服务器架构:
- 服务器:始终在线,具有固定 IP 地址(如 Web 服务器)。
- 客户端:与服务器通信,可能动态连接网络。
- 对等(P2P)架构:
- 没有固定服务器,所有节点既是客户端又是服务器。
- 适用于文件共享(如 BitTorrent)、VoIP(如 Skype)。
- 客户端-服务器架构:
通信方式:
- 进程间通信:主机内部通过操作系统进行的通信。
- 套接字:进程与网络之间的接口,类似于应用程序的“门”。
2.2 Web 和 HTTP 协议
HTTP 基础
- 定义:超文本传输协议(HTTP)是 Web 的应用层协议,基于请求-响应模式。
- 通信模型:
- 客户端:发送 HTTP 请求(浏览器)。
- 服务器:接收请求并返回 HTTP 响应(Web 服务器)。
HTTP 特性
- 无状态:服务器不存储客户端的状态信息。
- 传输方式:
- 非持久连接:每次请求一个对象,关闭连接。
- 持久连接:支持多个对象通过单一连接传输,提高效率。
HTTP 消息格式
请求消息:
包含请求行、头部字段和可选的消息体。
示例:
GET /index.html HTTP/1.1
Host: www.example.com
响应消息:
包含状态行、头部字段和可选的数据部分。
示例:
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 电子邮件协议
主要组件
- 用户代理(UA):邮件客户端(如 Outlook)用于收发邮件。
- 邮件服务器:存储和转发电子邮件。
- 协议:SMTP 用于邮件发送,POP3/IMAP 用于邮件接收。
SMTP(简单邮件传输协议)
- 特性:
- 基于 TCP 的可靠传输,使用端口 25。
- “推送”模式:邮件从发送端主动推送到接收端。
- 交互流程:
- 客户端连接服务器。
- 进行握手(HELO)。
- 发送邮件(MAIL FROM、RCPT TO、DATA)。
- 结束会话(QUIT)。
POP3 与 IMAP
- POP3:
- 下载并删除模式(默认)或下载并保留模式。
- 会话无状态。
- IMAP:
- 保持邮件存储在服务器端。
- 支持多客户端同步,允许邮件分类和搜索。
2.4 域名系统(DNS)
DNS 的作用
- 定义:将域名解析为 IP 地址的分布式数据库。
- 功能:
- 主机名到 IP 地址的转换。
- 别名解析(如 www.google.com → 真实服务器名)。
- 邮件服务器别名(MX 记录)。
DNS 结构
- 层次化数据库:
- 根域名服务器:最高层,用于指向顶级域名服务器。
- 顶级域名服务器(TLD):管理
.com
、.org
等。 - 权威域名服务器:提供特定主机的 IP 地址。
- 本地 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 套接字:面向连接,确保可靠、顺序传输。
编程示例
- UDP 示例:
- 客户端发送数据包,服务器接收并返回。
- 无需建立连接,代码简单,但不保证数据可靠性。
- TCP 示例:
- 客户端与服务器通过三次握手建立连接。
- 适合需要可靠传输的应用,如文件传输。
总结与复习重点
- 核心协议:HTTP、SMTP、DNS、TCP/UDP。
- 应用架构:
- 客户端-服务器模型适合集中式应用。
- P2P 模型适合分布式文件共享。
- 关键机制:
- DNS 的分层与缓存机制。
- HTTP 的无状态性与缓存优化。
- DASH 自适应视频流传输。
- 实践应用:
- DNS 故障排查。
- 使用套接字实现简单的网络应用。
推荐学习资源
- 书籍:
- 《计算机网络——自顶向下方法》by Kurose & Ross
- 在线教程:
- Codecademy 网络基础课程
- Coursera 上的网络专修课程。
- 工具:
- Wireshark:协议分析工具,用于捕获和分析网络流量。
第三章:传输层
章节结构
- 传输层服务
- 多路复用与解复用
- 无连接传输:UDP
- 可靠数据传输的基本原理
- 面向连接传输:TCP
- 段结构
- 可靠数据传输
- 流量控制
- 连接管理
- 拥塞控制的基本原理
- TCP 拥塞控制
3.1 传输层服务
传输层的作用
- 提供主机间进程到进程的逻辑通信。
- 传输层协议运行在端系统:
- 发送端:将应用层消息划分为段,交给网络层。
- 接收端:将接收的段重组为消息,并交给应用层。
主要传输层协议
- TCP(传输控制协议)
- 面向连接,可靠传输。
- 提供流量控制和拥塞控制。
- UDP(用户数据报协议)
- 无连接,尽力而为,不保证可靠性。
传输层与网络层的区别:
- 网络层提供主机到主机的通信。
- 传输层提供进程到进程的通信(更细粒度)。
3.2 多路复用与解复用
定义
- 多路复用:发送端将来自多个应用的数据封装到传输层段中,分发到网络层。
- 解复用:接收端根据段头信息(端口号)将数据交付给正确的应用进程。
如何工作
- IP 数据报包含:
- 源 IP 地址、目标 IP 地址。
- 源端口号、目标端口号(用于选择正确的套接字)。
- UDP 多路复用与解复用:
- 仅使用目标端口号。
- 相同目标端口号的数据报可能来自不同源地址/端口号,但会被交付到同一个套接字。
- TCP 多路复用与解复用:
- 使用 4 元组(源 IP、源端口、目标 IP、目标端口)标识连接。
- 每个 TCP 连接都有唯一的套接字。
3.3 无连接传输:UDP
UDP 的特点
- 简单、无连接:
- 不需要握手过程。
- 每个段独立处理。
- 不可靠传输:
- 数据可能丢失或乱序。
- 不提供流量控制或拥塞控制。
UDP 的优点
- 低开销(小报头)。
- 适合对时延敏感的应用(如实时多媒体、DNS)。
UDP 报文段结构
- 头部字段:
- 源端口号、目标端口号。
- 长度:段的总字节数。
- 校验和:用于错误检测。
3.4 可靠数据传输的基本原理
可靠数据传输协议(RDT)
- RDT 1.0:假设信道可靠,无数据丢失或损坏。
- RDT 2.0:支持有错误的信道。
- 错误检测:通过校验和。
- 反馈机制:使用 ACK(确认)和 NAK(否认)消息。
- 缺陷:如果 ACK/NAK 损坏,无法判断是否需要重传。
- RDT 2.1 和 2.2:
- 添加序列号以区分重复分组。
- 使用无 NAK 协议(重复 ACK 代替 NAK)。
- RDT 3.0:处理丢包的信道。
- 添加超时机制。
- 停等协议:每次发送一个分组,等待确认后再发送下一个。
3.5 面向连接传输:TCP
TCP 的特点
- 面向连接:
- 需要三次握手建立连接。
- 每个连接由 4 元组(源 IP、源端口、目标 IP、目标端口)标识。
- 可靠性:
- 使用序列号和确认号。
- 重传机制:基于超时或快速重传(三次重复 ACK)。
- 流量控制:防止发送端超出接收端的处理能力。
- 拥塞控制:防止网络过载。
TCP 段结构
- 关键字段:
- 序列号:分组中第一个字节的编号。
- 确认号:期望接收的下一个字节序号。
- 接收窗口:接收端可用的缓冲区大小(用于流量控制)。
- 标志位:SYN(同步)、FIN(结束)、ACK(确认)等。
TCP 流量控制
- 基于滑动窗口机制:
- 发送端根据接收端的接收窗口(rwnd)调整发送速率。
- 防止接收端缓冲区溢出。
TCP 连接管理
- 连接建立:三次握手。
- 客户端发送 SYN,同步序列号。
- 服务器发送 SYN-ACK,确认并同步序列号。
- 客户端发送 ACK,连接建立。
- 连接关闭:四次挥手。
- 双方分别发送 FIN 和 ACK 关闭连接。
3.6 拥塞控制的基本原理
定义
- 拥塞:网络中过多的数据导致性能下降。
- 拥塞控制:解决网络资源竞争,避免拥塞发生。
拥塞的表现
- 分组丢失(路由器缓冲区溢出)。
- 分组排队延迟增大。
拥塞的代价
- 不必要的重传降低了有效吞吐量。
- 上游传输资源浪费。
3.7 TCP 拥塞控制
TCP 的拥塞控制机制
- 慢启动(Slow Start):
- 初始拥塞窗口(cwnd)为 1 MSS。
- 每次接收 ACK,将 cwnd 翻倍。
- 指数增长,直到达到慢启动阈值(ssthresh)。
- 拥塞避免(Congestion Avoidance):
- cwnd 每 RTT 增加 1 MSS(线性增长)。
- 快速重传与快速恢复:
- 快速重传:接收 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 的性能:
- 更快的连接建立(一次握手)。
- 内置的可靠性、拥塞控制和加密。
总结与复习重点
- 传输层功能:从主机到主机的通信扩展到进程到进程。
- 协议对比:
- UDP:简单、无连接、不可靠。
- TCP:复杂、面向连接、可靠。
- 关键机制:
- 多路复用与解复用。
- TCP 的流量控制与拥塞控制。
- 可靠数据传输的实现原理。
- 应用场景:
- UDP 适用于实时应用(如视频流)。
- TCP 适用于可靠性要求高的应用(如文件传输)。
推荐学习资源
- 书籍:
- 《计算机网络:自顶向下方法》(Kurose 和 Ross)。
- 工具:
- Wireshark:网络协议分析工具。
- 在线教程:
- Coursera 网络课程。
- Kurose & Ross 在线交互练习。
第四章:网络层——数据平面
章节结构
- 网络层概述
- 路由器的内部结构
- IP 协议
- 数据报格式
- 分片与重组
- IPv4 地址
- 网络地址转换(NAT)
- IPv6
- 泛化转发与软件定义网络(SDN)
- 匹配
- 动作
- OpenFlow 示例
4.1 网络层概述
网络层的作用
网络层的主要功能是提供主机到主机的通信服务,负责将传输层消息封装成数据报并传递至目的地。
- 发送端:将传输层消息封装到 IP 数据报中。
- 接收端:从 IP 数据报中提取传输层消息,并传递给传输层。
- 路由器:检查每个通过的 IP 数据报头部信息,并决定如何转发。
网络层的两大核心功能
- 转发:
- 在路由器内部,将数据包从输入端口移动到适当的输出端口。
- 类比:从高速公路的一个出口进入另一个出口。
- 路由:
- 决定数据包从源到目的地的路径。
- 类比:规划从起点到终点的整体旅行路线。
数据平面与控制平面
- 数据平面:
- 定义:每个路由器的本地功能,决定如何根据数据报头部信息将其转发到正确的输出端口。
- 特点:局部、快速,通常在硬件中实现。
- 控制平面:
- 定义:全网范围的逻辑,用于决定数据包在网络中的路由路径。
- 两种实现方式:
- 传统路由算法:所有计算在路由器内完成。
- 软件定义网络(SDN):集中式控制器在远程服务器上计算路由。
4.2 路由器的内部结构
路由器架构的主要组件
输入端口:
- 功能:
- 终止物理链路(物理层)。
- 执行数据链路层协议(如以太网)。
- 根据转发表查找数据包的输出端口。
- 去中心化处理:输入端口可以独立完成查表操作(“匹配+动作”),以实现高效率。
- 排队与阻塞:当到达速率超过交换速率时,可能出现排队和丢包。
- 功能:
交换结构:
- 功能:将数据包从输入端口传输到正确的输出端口。
- 实现方式:
- 内存交换:数据包通过共享内存进行传输(速度受限于内存带宽)。
- 总线交换:通过共享总线传输数据包(速度受限于总线带宽)。
- 交叉交换:使用交叉开关网络,支持多个输入输出同时通信(高性能)。
输出端口:
- 功能:
- 存储从交换结构传来的数据包。
- 执行排队调度并发送数据包。
- 排队与丢包:当数据包到达速率超过输出链路速率时可能出现缓冲区溢出。
- 功能:
路由处理器:
- 功能:执行路由协议、维护转发表、管理网络层控制功能。
- 实现:通常通过软件运行在路由器 CPU 上。
示例:最长前缀匹配
路由器使用最长前缀匹配查找转发表中的路由。
例子:
数据包目的地址:
11001000 00010111 00011000 10101010
。转发表:
前缀 接口
11001000 00010111 00010*** ********* 0
11001000 00010111 00011000 ********* 1
11001000 00010111 00011*** ********* 2匹配规则:选择匹配位数最多的条目,因此选择接口
1
。
4.3 IP 协议
IP 数据报格式
- 关键字段:
- 版本号:IPv4 或 IPv6。
- 首部长度:IP 首部的长度(通常为 20 字节)。
- 源 IP 地址和目标 IP 地址。
- 生存时间(TTL):防止数据包无限循环。
- 数据总长度:数据报的总字节数(包括首部和数据)。
IP 分片与重组
- 原因:不同链路的最大传输单元(MTU)可能不同。
- 过程:
- 大数据报在路由器中被分片。
- 分片的数据报在目的地重组。
- 示例:
- 初始数据报大小:4000 字节。
- MTU:1500 字节。
- 结果:
- 分片 1:1480 字节数据 + 20 字节头部。
- 分片 2:1480 字节数据 + 20 字节头部。
- 分片 3:1040 字节数据 + 20 字节头部。
IPv4 地址与子网
- IP 地址:
- 32 位标识符,包括网络部分和主机部分。
- CIDR(无类别域间路由):使用前缀表示法(如
200.23.16.0/23
)。
- 子网:
- 定义:相同网络部分的设备集合,子网内设备无需路由即可通信。
- 子网掩码:用于提取网络部分(如
/24
表示前 24 位为网络部分)。
动态主机配置协议(DHCP)
- 功能:动态分配 IP 地址。
- 工作流程:
- 主机发送 DHCP Discover 广播消息。
- DHCP 服务器回复 DHCP Offer。
- 主机发送 DHCP Request 确认请求。
- DHCP 服务器发送 DHCP ACK 确认分配。
网络地址转换(NAT)
功能:将私有 IP 地址映射为全局唯一的公共 IP 地址。
优点:
- 节省 IP 地址。
- 提高网络安全性(隐藏内部网络结构)。
示例:
内部地址:
10.0.0.1
。NAT 地址:
138.76.29.7
。NAT 表:
内部地址:端口 外部地址:端口
10.0.0.1:3345 138.76.29.7:5001
IPv6
- 动机:IPv4 地址耗尽。
- 特点:
- 扩展地址空间(128 位地址)。
- 固定长度的 40 字节头部。
- 移除校验和字段以简化处理。
- 过渡机制:隧道技术(将 IPv6 数据报封装为 IPv4 数据报的有效载荷)。
4.4 泛化转发与软件定义网络(SDN)
泛化转发
- 定义:根据任意头部字段而非仅目的地址进行转发。
- 实现:采用流表(flow table),由控制器计算并分发。
- 流表字段:
- 匹配(Match):头部字段值。
- 动作(Action):对匹配数据包执行的操作(如转发、丢弃、修改)。
- 计数器(Counters):记录匹配流量的字节数与包数。
OpenFlow 示例
场景:主机
h5
和h6
的数据包需通过交换机s1
和s2
转发到主机h3
或h4
。流表规则:
匹配条件 动作
src=10.3.*.*, dest=10.2.*.* 转发到端口 3
ingress port=2, dest=10.2.0.3 转发到端口 4
总结与复习重点
- 核心功能:
- 转发(数据平面)与路由(控制平面)。
- 关键协议:
- IPv4、IPv6、NAT、DHCP。
- 路由器内部:
- 输入端口、交换结构、输出端口和路由处理器。
- 新技术:
- 泛化转发与 SDN,简化网络管理。
推荐学习资源
- 书籍:《计算机网络:自顶向下方法》。
- 工具:Wireshark 数据包捕获与分析。
- 在线资源:Kurose & Ross 在线练习。
第五章:网络层——控制平面
章节结构
- 引言
- 路由协议
- 链路状态算法(Link State)
- 距离向量算法(Distance Vector)
- 互联网内部自治系统路由(OSPF)
- 自治系统之间的路由(BGP)
- 软件定义网络(SDN)控制平面
- 互联网控制报文协议(ICMP)
- 网络管理与 SNMP
5.1 引言
网络层的两大功能
- 转发(Forwarding):
- 数据平面功能:将数据包从输入端口移动到适当的输出端口。
- 路由(Routing):
- 控制平面功能:计算从源到目的地的路径。
两种控制平面实现方式
- 传统的分布式控制:
- 每个路由器运行独立的路由算法,计算自己的转发表。
- 逻辑集中式控制(SDN):
- 采用集中式控制器,由控制器计算并分发转发表。
5.2 路由协议
路由协议的目标是确定从源主机到目的主机的“最佳路径”(如最低成本或最短时间)。
网络抽象:图模型
- 节点:路由器。
- 边:路由器之间的链路,带有成本(如带宽、时延或拥塞水平)。
- 路径成本:路径上所有链路成本的总和。
路由算法分类
- 全局路由算法(链路状态算法):
- 所有路由器都有网络拓扑的完整信息。
- 通过链路状态广播实现。
- 分布式路由算法(距离向量算法):
- 每个路由器只知道与其直接相连的邻居信息。
- 通过与邻居交换信息迭代计算。
链路状态算法(Link State)
使用 Dijkstra 算法 计算单源最短路径。
Dijkstra 算法步骤
- 初始化:
- 将源节点加入集合
N'
,初始路径成本为 0。 - 对于其他节点,设置初始路径成本为 ∞。
- 将源节点加入集合
- 迭代:
- 从未加入
N'
的节点中选择路径成本最小的节点,并将其加入N'
。 - 更新其他节点的路径成本。
- 从未加入
- 重复,直到所有节点都被加入
N'
。
示例
给定以下网络拓扑:
u---1---x---2---y---3---z |
- 初始状态:
N' = {u}
,路径成本为D(u) = 0
,其他节点为 ∞。 - 第一步加入
x
:D(x) = 1
。 - 第二步加入
y
:D(y) = 3
。 - 第三步加入
z
:D(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 的最短路径成本。
工作机制
- 每个节点维护一个距离向量,表示到每个目的地的路径成本。
- 节点周期性向邻居发送自己的距离向量。
- 接收到邻居的距离向量后,更新自己的距离向量。
示例
节点 x 的初始距离向量:
Dx = [0, 2, 7]
。从邻居 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(开放最短路径优先)特点
- 链路状态路由协议:
- 每个路由器维护整个自治系统(AS)的拓扑图。
- 使用 Dijkstra 算法计算最短路径。
- 分层结构:
- 将 AS 分为多个区域(Area),每个区域内进行链路状态广播。
- 区域边界路由器负责汇总区域信息。
- 特性:
- 支持多条等价成本路径。
- 强调安全通信(认证机制)。
5.4 自治系统之间的路由:BGP
BGP(边界网关协议)特点
- 作用:
- 在自治系统(AS)之间传播可达性信息。
- 选择“最佳”路径到达外部网络。
- 两种 BGP 会话:
- eBGP:AS 之间的 BGP 会话。
- iBGP:AS 内部的 BGP 会话。
- 路径选择规则:
- 根据 AS-PATH(路径中经过的 AS 列表)选择最短路径。
- 使用策略决定是否接受或传播路径。
BGP 消息类型
- OPEN:建立会话并进行身份验证。
- UPDATE:传播新路径或撤销旧路径。
- KEEPALIVE:保持连接存活。
- NOTIFICATION:报告错误或关闭连接。
5.5 软件定义网络(SDN)控制平面
SDN 的核心思想
- 控制平面与数据平面分离:
- 数据平面:负责包的转发。
- 控制平面:通过集中式控制器管理整个网络的转发表。
- 优点:
- 提高网络管理的灵活性(集中式配置)。
- 支持复杂的流量工程(如负载均衡)。
OpenFlow 协议
- 定义控制器与交换机之间的通信。
- 消息类型:
- 控制器到交换机:
- 修改流表(如添加、删除规则)。
- 查询交换机状态。
- 交换机到控制器:
- 报告异常事件(如端口状态变化)。
- 将未匹配的数据包发送到控制器。
- 控制器到交换机:
5.6 互联网控制报文协议(ICMP)
ICMP 的功能
- 错误报告:
- 如目标不可达(Type 3)。
- TTL 超时(Type 11)。
- 诊断工具:
- Ping:测试连通性(Echo 请求与应答)。
- Traceroute:跟踪数据包路径。
5.7 网络管理与 SNMP
SNMP(简单网络管理协议)
- 组成:
- 管理实体:收集和分析网络数据。
- 代理(Agent):驻留在被管理设备上,维护管理信息库(MIB)。
- 工作模式:
- 请求/响应模式:管理实体主动请求数据。
- 陷阱模式(Trap):代理主动向管理实体报告异常。
总结与复习重点
- 路由协议:
- OSPF(链路状态)和 BGP(路径向量)。
- 计数到无穷问题及其解决方法。
- SDN 核心:
- 控制平面与数据平面分离。
- OpenFlow 协议实现集中式管理。
- 网络工具:
- ICMP 用于网络诊断。
- SNMP 用于网络管理。
推荐学习资源
- 书籍:《计算机网络:自顶向下方法》by Kurose 和 Ross。
- 工具:使用 Wireshark 捕获和分析路由协议。
- 在线资源:Kurose & Ross 在线交互练习。
第六章:链路层与局域网
章节结构
- 引言与服务
- 错误检测与纠正
- 多路访问协议
- 局域网(LANs)
- 地址与 ARP
- 以太网
- 交换机
- 虚拟局域网(VLANs)
- 链路虚拟化:多协议标签交换(MPLS)
- 数据中心网络
- Web 请求的生命周期
6.1 引言与服务
链路层的作用
- 链路层负责在相邻节点之间传递数据报(datagram)。
- 数据报在链路层被封装成帧(frame)。
链路层的主要服务
帧封装与链路访问:
- 将网络层数据报封装为帧,添加头部和尾部。
- 若为共享介质,提供介质访问控制(MAC)。
- MAC 地址:用于标识帧的源和目标节点,与 IP 地址不同。
可靠传输:
- 无线链路上可能需要链路层的可靠性补充。
错误检测与纠正:
- 检测数据传输中可能出现的比特错误。
- 错误纠正允许无需重传即可修正比特错误。
流量控制:
- 在相邻节点之间实现发送与接收的速率匹配。
半双工与全双工通信:
- 半双工:双向传输,但同一时间只允许一个方向的数据流动。
- 全双工:双向同时传输。
6.2 错误检测与纠正
错误检测
奇偶校验(Parity Check):
- 单比特奇偶校验:检测单个比特错误。
- 二维奇偶校验:不仅能检测,还可以纠正单比特错误。
校验和(Checksum):
- 在传输层(如 UDP)使用。
- 将数据视为 16 位整数的序列,计算 1 的补码和,用于错误检测。
循环冗余校验(CRC):
检测能力强,广泛应用于以太网、WiFi 等。
基于数据和生成多项式
G
,计算校验位R
:R = remainder(D * 2^r / G)
检测突发错误的概率非常高。
6.3 多路访问协议
链路类型
- 点对点链路:如拨号 PPP 链路。
- 广播链路:多节点共享同一通信介质(如以太网、WiFi)。
多路访问协议分类
- 信道划分协议:
- 时分多路访问(TDMA):分时复用。
- 频分多路访问(FDMA):分频复用。
- 随机访问协议:
- 允许冲突发生,通过随机重传恢复。
- ALOHA、CSMA/CD(以太网)、CSMA/CA(WiFi)。
- 轮流协议:
- 节点轮流访问信道。
- 如轮询和令牌传递协议。
典型协议
ALOHA:
- 纯 ALOHA:节点立即发送,冲突概率高,效率约为 18%。
- 时隙 ALOHA:节点在时隙开始时发送,效率提升至 37%。
CSMA(载波侦听多路访问):
- 在发送前监听信道是否空闲。
- CSMA/CD(冲突检测):
- 适用于有线网络(如以太网)。
- 发生冲突时,立即中止传输,节省信道资源。
令牌传递协议:
- 控制令牌在节点间传递,持有令牌的节点可发送数据。
- 避免冲突,但可能面临令牌丢失问题。
6.4 局域网(LANs)
MAC 地址与 ARP
MAC 地址:
- 长度:48 位,通常以 16 进制表示(如
1A-2F-BB-76-09-AD
)。 - 特点:与硬件绑定,全球唯一(由 IEEE 管理分配)。
- 区别:
- IP 地址:用于全局网络通信,基于网络拓扑。
- MAC 地址:用于局部链路通信。
- 长度:48 位,通常以 16 进制表示(如
ARP(地址解析协议):
- 功能:通过 IP 地址解析 MAC 地址。
- 工作过程:
- 主机广播 ARP 请求,目标 IP 地址为查询对象。
- 目标主机回复其 MAC 地址。
- 查询主机将 IP-MAC 映射缓存到 ARP 表中。
以太网
以太网帧结构:
- 包含目的 MAC 地址、源 MAC 地址、类型字段、数据和 CRC 校验。
- 类型字段:标识上层协议(如 IP 协议)。
特点:
- 无连接:发送端和接收端之间没有握手。
- 不可靠:
- 丢弃错误帧,无确认或重传机制。
- 数据可靠性由上层协议(如 TCP)保证。
拓扑结构:
- 总线型:所有节点共享同一条通信线路。
- 星型:使用交换机连接,各节点独立通信,无冲突。
交换机
功能:
- 链路层设备,基于 MAC 地址转发帧。
- 提供全双工通信,不同端口间无冲突。
工作机制:
- 自学习:
- 通过接收帧学习源 MAC 地址与端口的对应关系。
- 维护转发表,记录 MAC 地址、端口和时间戳。
- 转发与过滤:
- 若目标地址在转发表中,则将帧转发至对应端口。
- 若不在表中,则广播帧。
- 自学习:
优势:
- 支持多路并行传输。
- 隔离冲突域,提高网络效率。
VLAN(虚拟局域网)
动机:
- 提供逻辑上的网络隔离。
- 减少广播流量,提升安全性。
特点:
- 基于端口的 VLAN:通过交换机端口划分 VLAN。
- 跨交换机 VLAN:
- 使用 802.1Q 协议,在帧中添加 VLAN ID。
6.5 链路虚拟化:MPLS
多协议标签交换(MPLS):
- 在链路层实现虚拟电路的功能。
- 使用固定长度的标签(而非 IP 地址)进行转发,加速查找。
特点:
- 支持流量工程:根据源地址和目标地址选择不同路径。
- 快速重路由:在链路失效时使用预计算的备份路径。
MPLS 转发表:
- 基于标签值转发,而不依赖 IP 地址。
6.6 数据中心网络
特点:
- 包含数万台服务器,通常用于电商、搜索引擎、内容分发等。
- 需要高带宽和高可靠性。
架构:
- 层次结构:
- 服务器通过 TOR(Top-of-Rack)交换机连接。
- 多层交换机提供冗余和高吞吐量。
- 负载均衡器:
- 在应用层路由流量。
- 分配客户端请求,隐藏数据中心内部架构。
- 层次结构:
6.7 Web 请求的生命周期
以请求 www.google.com
为例,完整描述协议栈的应用:
- DHCP:
- 获取 IP 地址、默认网关和 DNS 服务器地址。
- ARP:
- 查询默认网关的 MAC 地址。
- DNS:
- 将
www.google.com
转换为 IP 地址。
- 将
- TCP 三次握手:
- 建立到 Web 服务器的连接。
- HTTP 请求与响应:
- 发送 HTTP GET 请求,接收 Web 页面。
总结与复习重点
- 链路层核心功能:
- 错误检测与纠正、多路访问控制、链路层地址解析。
- 关键技术:
- 以太网、交换机、自学习机制。
- VLAN 提供逻辑隔离,MPLS 提供高效转发。
- Web 请求的完整协议栈应用:
- 结合链路层、网络层、传输层和应用层的协作。
推荐学习资源
- 书籍:《计算机网络:自顶向下方法》(Kurose & Ross)。
- 工具:Wireshark 数据包分析工具。
- 在线资源:Kurose & Ross 在线练习。
第七章:无线与移动网络
本章内容主要围绕无线与移动网络的特点、技术及其实现展开,涉及无线通信的基本概念、移动用户的地址管理与数据路由、具体协议(如IEEE 802.11与移动IP)以及无线网络对高层协议的影响。
7.1 介绍
- 当前无线用户数已远超有线用户(如5:1比例)。
- 无线设备(如笔记本、智能手机)支持随时随地的网络访问。
- 无线网络面临两大挑战:
- 无线通信:如何在无线链路上传递数据。
- 移动性:如何支持用户在切换接入点时保持连接。
7.2 无线链路及其特性
无线链路具有以下显著特性:
- 信号衰减:无线信号在传播中会逐渐减弱。
- 干扰:同频率设备间的干扰、环境中的电磁波干扰。
- 多径传播:信号反射导致接收端接收到多个不同延时的信号,影响通信质量。
信噪比(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网络架构
- 基础设施模式:
- 通过接入点(AP)连接到有线网络。
- 支持“切换”(handoff),用户可在不同AP之间移动。
- 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):在访问网络中代表用户。
移动性管理方式
- 间接路由:
- 通信由家庭代理转发至外部代理,再转发到移动用户。
- 存在“三角路由”问题,效率较低。
- 直接路由:
- 通信方直接获取用户的转交地址,减少转发步骤。
- 需要动态更新地址,复杂度较高。
7.6 移动IP
- 定义:RFC 3344,支持在不同网络之间切换时保持IP地址不变。
- 功能组件:
- 间接路由:家庭代理负责转发数据。
- 代理发现:通过ICMP消息广播外部代理信息。
- 注册:移动节点向家庭代理报告其转交地址。
数据转发流程
- 通信方向移动节点的永久地址发送数据包。
- 家庭代理接收数据包,封装后转发至外部代理。
- 外部代理解封数据包并交付给移动节点。
7.7 蜂窝网络中的移动性管理
位置管理
- 家庭位置寄存器(HLR):存储用户的永久信息及当前位置。
- 访客位置寄存器(VLR):存储用户的临时信息。
切换管理(Handoff)
- 同一MSC内切换:
- 原基站检测到信号变弱后触发切换。
- 新基站分配资源并通知移动设备切换。
- 跨MSC切换:
- 引入“锚点MSC”,所有数据通过锚点转发至当前基站。
- 可选路径优化步骤减少转发路径。
LTE中的移动性
- 寻呼(Paging):广播消息定位空闲用户。
- 切换:
- 准备阶段:新基站分配资源。
- 执行阶段:用户切换到新基站。
- 完成阶段:释放旧基站资源。
7.8 移动性对高层协议的影响
- TCP性能问题:
- 无线链路的高误码率和切换延迟会导致TCP误判为网络拥塞,降低窗口大小。
- 实时流量:
- 延迟波动和丢包会影响实时应用(如语音、视频)。
- 带宽限制:
- 无线链路的带宽通常低于有线网络,需优化传输。
实例分析
CDMA编码与解码
- 每个用户分配唯一的“码”,数据通过与码的内积进行解码。
- 即使多个用户同时发送,接收端仍可通过码的正交性分离信号。
802.11的RTS-CTS机制
- RTS帧:发送端请求信道占用。
- CTS帧:接收端确认信道可用。
- 避免长数据帧的碰撞,提高传输效率。
移动IP的三角路由问题
- 数据需经过家庭代理转发,即使通信双方在同一网络中,导致效率低下。