reference:《计算机网络-自顶向下的方法》

目录


一、计算机网络概述

1.1 因特网概述

概念解释

因特网(Internet):全球最大的互联网络,连接了世界各地数以亿计的计算设备。

网络核心:由大量网络和连接这些网络的路由器组成的网状结构。

网络边缘:端系统(主机)及其应用程序。

基本原理

因特网采用分组交换技术,将数据分割成小的数据包(packet),每个数据包独立传输,在目的地重新组装。

三种交换方式对比

交换方式特点优缺点
电路交换建立专用通信路径资源独占,适合实时通信
分组交换存储转发,统计复用资源共享,适合突发数据
报文交换整体传输延迟大,已较少使用

实际应用

  • Web 浏览:HTTP 协议传输网页内容
  • 电子邮件:SMTP 协议发送邮件
  • 视频流媒体:实时传输音视频数据
  • 在线游戏:低延迟数据传输

1.2 网络核心

概念解释

分组交换(Packet Switching):将报文分割成较小的数据包,每个分组独立传输。

存储转发传输:路由器在转发分组前必须接收完整个分组。

基本原理

分组交换的关键机制

  1. 统计多路复用:多个通信流共享同一链路,按需分配带宽
  2. 排队延迟:分组在路由器缓冲区等待转发
  3. 丢包:缓冲区满时丢弃分组

延迟组成

总延迟 = 处理延迟 + 排队延迟 + 传输延迟 + 传播延迟

d_nodal = d_proc + d_queue + d_trans + d_prop
  • 处理延迟:检查分组首部、确定转发方向
  • 排队延迟:在输出链路队列中等待
  • 传输延迟:将分组推送到链路(L/R,L 为分组长度,R 为链路带宽)
  • 传播延迟:信号在链路上传播(d/s,d 为距离,s 为传播速度)

实际应用

  • CDN(内容分发网络):利用分组交换就近提供服务
  • 负载均衡:通过分组调度优化网络性能
  • 流量工程:优化网络路径选择

1.3 协议分层模型

概念解释

协议(Protocol):定义通信实体之间交换报文的格式、顺序、动作的规则。

分层架构:将复杂的网络功能分解为多个层次,每层提供特定服务。

基本原理

OSI 七层模型 vs TCP/IP 四层模型

OSI 七层模型TCP/IP 四层模型功能
应用层应用层网络应用协议
表示层应用层数据格式转换
会话层应用层会话管理
传输层传输层端到端传输
网络层网络层路由选择
数据链路层链路层链路传输
物理层物理层比特传输

封装过程

应用层报文
  ↓ 添加 TCP 首部
传输层报文段(Segment)
  ↓ 添加 IP 首部
网络层数据报(Datagram)
  ↓ 添加链路层首部
链路层帧(Frame)
  ↓ 物理传输
比特流

实际应用

  • 网络故障排查:逐层分析定位问题
  • 协议开发:各层独立设计和实现
  • 网络设备设计:路由器工作在网络层,交换机工作在链路层

二、应用层

2.1 网络应用原理

概念解释

客户-服务器体系结构(Client-Server Architecture)

  • 服务器:持续运行,提供服务的端系统
  • 客户:发起通信,请求服务的端系统

对等(P2P)体系结构

  • 无需专用服务器
  • 每个节点既是客户又是服务器
  • 自扩展性强

基本原理

应用层协议定义内容

  1. 报文类型:请求报文、响应报文
  2. 报文语法:字段及其格式
  3. 字段语义:字段含义
  4. 处理规则:发送和接收报文的动作

应用需要传输层提供的服务

服务特性说明TCPUDP
可靠数据传输数据无丢失、无差错
吞吐量单位时间传输数据量--
定时延迟保证--
安全性数据加密、认证✓(SSL/TLS)

实际应用

  • Web 浏览:客户-服务器模式
  • BitTorrent:P2P 文件共享
  • 视频会议:需要低延迟和足够吞吐量
  • 在线游戏:实时性要求高,常用 UDP

2.2 Web 与 HTTP

概念解释

HTTP(HyperText Transfer Protocol):Web 应用的传输协议,定义了浏览器与服务器之间的通信规则。

URL(Uniform Resource Locator):统一资源定位符,标识 Web 资源的位置。

http://www.example.com:80/path/to/resource?query=value#fragment
  ↓       ↓               ↓    ↓              ↓
协议    主机名          端口  路径            查询参数

基本原理

HTTP 连接类型

  1. 非持久连接(HTTP/1.0)

    • 每个 TCP 连接只传输一个对象
    • 每个对象需要 2 个 RTT(Round-Trip Time)
    • 并行 TCP 连接可提高性能
  2. 持久连接(HTTP/1.1)

    • 一个 TCP 连接可传输多个对象
    • 默认开启持久连接
    • 流水线技术:无需等待响应即可发送下一个请求

HTTP 报文格式

请求报文

GET /index.html HTTP/1.1          # 请求行:方法 URL 版本
Host: www.example.com             # 首部行
Connection: close
User-agent: Mozilla/5.0
Accept-language: zh-CN
 
                                  # 空行
[请求体]                           # 实体体(可选)

响应报文

HTTP/1.1 200 OK                    # 状态行:版本 状态码 短语
Connection: close                  # 首部行
Date: Tue, 09 Aug 2024 15:00:00 GMT
Server: Apache/2.4.1
Content-Length: 128
Content-Type: text/html
 
                                  # 空行
<html>...</html>                   # 实体体

常见状态码

状态码类别示例
1xx信息性100 Continue
2xx成功200 OK, 201 Created
3xx重定向301 Moved Permanently, 304 Not Modified
4xx客户端错误400 Bad Request, 404 Not Found
5xx服务器错误500 Internal Server Error, 503 Service Unavailable

Cookie 技术

HTTP 请求 → 服务器 → Set-Cookie 首部 → 浏览器存储 Cookie
下次请求 → 浏览器 → Cookie 首部 → 服务器识别用户

Web 缓存(代理服务器)

  1. 浏览器向代理服务器发送请求
  2. 代理检查是否有缓存
  3. 若有且未过期,直接返回
  4. 若无或已过期,向源服务器请求并缓存

实际应用

  • RESTful API:基于 HTTP 方法的资源操作

    • GET:获取资源
    • POST:创建资源
    • PUT:更新资源
    • DELETE:删除资源
  • HTTPS:HTTP + SSL/TLS 加密

    • 数据加密传输
    • 服务器身份认证
    • 数据完整性保护
  • HTTP/2

    • 多路复用:单连接并行传输
    • 头部压缩:减少开销
    • 服务器推送:主动发送资源

2.3 电子邮件

概念解释

电子邮件系统组成

  • 用户代理(User Agent):邮件客户端软件
  • 邮件服务器:存储和转发邮件
  • SMTP(Simple Mail Transfer Protocol):邮件传输协议

基本原理

邮件发送流程

发送方用户代理 → 发送方邮件服务器 → 接收方邮件服务器 → 接收方用户代理
     ↓                  ↓                    ↓
   SMTP              SMTP                POP3/IMAP

SMTP 协议特点

  1. 使用 TCP 可靠传输,端口 25
  2. 直接传输:发送服务器直接连接接收服务器
  3. 三阶段:握手、报文传输、关闭
  4. 使用持久连接

SMTP 命令示例

HELO client.example.com          # 标识发送方
MAIL FROM: <sender@example.com>  # 发件人
RCPT TO: <receiver@example.com>  # 收件人
DATA                             # 开始邮件内容
Subject: Test Email
This is a test email.
.                                # 结束邮件内容
QUIT                             # 关闭连接

邮件访问协议

协议端口特点
POP3110下载并删除(或保留),离线访问
IMAP143服务器端管理,多设备同步
HTTP80/443Web 邮件(如 Gmail)

实际应用

  • 企业邮件系统:Exchange、Postfix
  • 邮件安全
    • SPF(Sender Policy Framework):防止伪造发件人
    • DKIM(DomainKeys Identified Mail):邮件签名验证
    • DMARC:结合 SPF 和 DKIM 的策略框架

2.4 DNS 域名系统

概念解释

DNS(Domain Name System):将域名解析为 IP 地址的分布式数据库系统。

域名结构:层次化命名,从右到左逐级细化

www.example.com.
  ↓    ↓       ↓
三级 二级    顶级  根(隐含)

基本原理

DNS 服务器层次结构

  1. 根 DNS 服务器:返回顶级域名服务器地址
  2. 顶级域名服务器(TLD):管理 .com、.org、.net 等
  3. 权威 DNS 服务器:提供域名到 IP 的最终映射
  4. 本地 DNS 服务器:缓存和代理查询

DNS 解析过程

迭代查询

主机 → 本地 DNS 服务器 → 根服务器 → TLD 服务器 → 权威服务器
                ↓
              返回 IP 地址

递归查询

主机 → 本地 DNS 服务器(负责所有查询)→ 最终返回 IP 地址

DNS 记录类型

类型作用示例
A域名到 IPv4 地址example.com. A 93.184.216.34
AAAA域名到 IPv6 地址example.com. AAAA 2606:2800:220:1:248:1893:25c8:1946
CNAME域名别名www.example.com. CNAME example.com.
MX邮件服务器example.com. MX 10 mail.example.com.
NS权威域名服务器example.com. NS ns1.example.com.
TXT文本记录用于 SPF、DKIM 等

DNS 缓存

  • 本地 DNS 服务器缓存查询结果
  • 减少根服务器和 TLD 服务器负载
  • 缓存有效期由 TTL(Time To Live)控制

实际应用

  • 负载均衡:轮询 DNS,返回多个 IP 地址
  • CDN 加速:根据地理位置返回最近服务器 IP
  • 故障转移:监控服务器状态,动态更新 DNS 记录
  • 安全防护
    • DNSSEC:DNS 安全扩展,防止 DNS 欺骗
    • DNS over HTTPS(DoH):加密 DNS 查询

2.5 P2P 应用

概念解释

P2P(Peer-to-Peer):对等网络,每个节点既是客户又是服务器。

基本原理

P2P 文件分发

  • BitTorrent 协议
    • 文件分为多个块(chunk,通常 256KB)
    • 节点互相交换块
    • 稀缺优先策略:优先下载最稀缺的块
    • 激励机制:上传速度快的节点获得更好的下载速度

分布式哈希表(DHT)

  • 环形标识符空间
  • 每个节点负责一部分键值对
  • 查找复杂度 O(log N)

实际应用

  • 文件共享:BitTorrent、迅雷
  • 区块链:比特币、以太坊
  • 实时通信:WebRTC(P2P 视频通话)

三、传输层

3.1 传输层服务模型

概念解释

传输层:为应用层提供端到端的通信服务,运行在端系统上。

多路复用与多路分解

  • 多路复用:多个应用进程使用同一个传输层协议传输数据
  • 多路分解:将传输层报文段中的数据交付给正确的应用进程

基本原理

端口(Port)

  • 16 位端口号(0-65535)
  • 0-1023:知名端口(Well-Known Ports)
  • 1024-49151:注册端口
  • 49152-65535:动态/私有端口

套接字(Socket)

套接字 = (IP 地址, 端口号)

TCP 套接字 = (源 IP, 源端口, 目的 IP, 目的端口)
UDP 套接字 = (目的 IP, 目的端口)

常见应用层协议端口

协议端口传输层协议
HTTP80TCP
HTTPS443TCP
FTP20/21TCP
SMTP25TCP
POP3110TCP
DNS53UDP/TCP
SSH22TCP

实际应用

  • 网络编程:Socket API 开发网络应用
  • 端口扫描:安全检测和渗透测试
  • 防火墙配置:基于端口的访问控制

3.2 UDP 协议

概念解释

UDP(User Datagram Protocol):用户数据报协议,提供无连接、不可靠的传输服务。

基本原理

UDP 特点

  1. 无连接:无需建立连接,直接发送
  2. 无连接状态:服务器可同时服务大量客户
  3. 分组开销小:首部仅 8 字节
  4. 应用层控制:开发者可精确控制发送时机

UDP 首部格式(8 字节):

 0      7 8     15 16    23 24    31
+--------+--------+--------+--------+
|   源端口号   |  目的端口号  |  0-1 字节
+--------+--------+--------+--------+
|    长度      |    校验和    |  2-3 字节
+--------+--------+--------+--------+
|          用户数据(应用层数据)      |
+-----------------------------------+
  • 源端口:发送方端口号(可选)
  • 目的端口:接收方端口号
  • 长度:UDP 数据报总长度(首部 + 数据)
  • 校验和:检测传输错误

UDP 校验和计算

  1. 添加伪首部(源 IP、目的 IP、协议类型、UDP 长度)
  2. 将数据视为 16 位整数序列
  3. 计算和的反码作为校验和
  4. 接收方重新计算,结果应为全 1

实际应用

适用场景

  • DNS 查询:简单请求-响应,UDP 更高效
  • 实时音视频:容忍少量丢包,追求低延迟
  • 在线游戏:实时性优先于可靠性
  • SNMP:网络管理,简单高效

可靠性增强

应用层可实现:

  • ACK 确认机制
  • 超时重传
  • 序号和去重

3.3 可靠数据传输原理

概念解释

可靠数据传输(Reliable Data Transfer, RDT):确保数据无差错、无丢失、按序交付。

基本原理

RDT 协议演进

RDT 1.0:完全可靠信道

  • 假设信道完全可靠
  • 无需任何控制机制

RDT 2.0:有比特差错信道

  • **ARQ(Automatic Repeat reQuest)**协议
  • 停等协议(Stop-and-Wait)
    • 发送方发送数据,等待 ACK
    • 接收方检测差错,发送 NAK
    • 发送方收到 NAK,重传数据
发送方                      接收方
  |--- 数据分组 ------------>|
  |                          | 检查差错
  |<--- ACK/NAK -------------|
  | 重传(若 NAK)            |

RDT 2.1:处理 ACK/NAK 差错

  • 添加序号(Sequence Number)
  • 区分新分组和重传分组
  • 发送方和接收方状态机

RDT 2.2:无 NAK 协议

  • 接收方发送对上一个正确分组的 ACK(否定确认)
  • 发送方收到重复 ACK,重传当前分组

RDT 3.0:处理丢包

  • 添加超时重传机制
  • 发送方启动定时器,超时未收到 ACK 则重传
发送方                      接收方
  |--- 分组 0 -------------->|
  |   启动定时器              |
  |                          | 收到,发送 ACK 0
  |<--- ACK 0 ---------------|
  |   停止定时器              |
  |--- 分组 1 -------------->|
  |   启动定时器              |
  |   (超时,未收到 ACK)     |
  |--- 分组 1(重传)-------->|

流水线技术

停等协议效率低,流水线技术允许发送多个未确认分组:

  1. 回退 N 步(Go-Back-N, GBN)

    • 发送方维护窗口大小 N
    • 接收方只按序接收,丢弃失序分组
    • 超时后重传所有已发送未确认分组
  2. 选择重传(Selective Repeat, SR)

    • 发送方和接收方各维护窗口
    • 接收方缓存失序分组
    • 只重传丢失的分组
GBN 示例(窗口大小 N=4):
发送方: [0, 1, 2, 3] 已发送,等待 ACK
若分组 1 丢失,接收方丢弃 2, 3
超时后重传 1, 2, 3

SR 示例(窗口大小 N=4):
发送方: [0, 1, 2, 3] 已发送
若分组 1 丢失,接收方缓存 2, 3
只重传分组 1

实际应用

  • TCP 可靠传输:基于流水线和选择重传思想
  • 无线网络:链路层 ARQ 机制
  • 卫星通信:长延迟环境下的可靠传输

3.4 TCP 协议

概念解释

TCP(Transmission Control Protocol):传输控制协议,提供面向连接、可靠的字节流传输服务。

基本原理

TCP 特点

  1. 面向连接:传输前需建立连接
  2. 可靠传输:无差错、无丢失、无重复、按序
  3. 全双工:双向同时传输
  4. 点对点:一对一通信
  5. 字节流:无消息边界

TCP 首部格式(20 字节固定 + 选项):

 0      7 8     15 16    23 24    31
+--------+--------+--------+--------+
|   源端口号   |  目的端口号  |        0-1 字节
+--------+--------+--------+--------+
|           序号(Sequence Number)  |  2-5 字节
+--------+--------+--------+--------+
|        确认号(ACK Number)        |  6-9 字节
+--------+--------+--------+--------+
|首部长度|保留|U|A|P|R|S|F|  窗口大小  |
|  (4位) | 6位|G|C|S|S|Y|I|           |
+--------+--------+--------+--------+
|   校验和    |   紧急指针   |       12-15 字节
+--------+--------+--------+--------+
|          选项(可选)               |
+-----------------------------------+

关键字段

  • 序号(Sequence Number):数据字节流的字节序号
  • 确认号(ACK Number):期望收到的下一个字节序号
  • 标志位
    • SYN:同步,建立连接
    • ACK:确认
    • FIN:结束,关闭连接
    • RST:重置连接
    • PSH:推送,立即交付应用层
    • URG:紧急指针有效
  • 窗口大小:接收窗口,流量控制

TCP 连接管理

三次握手(建立连接)

客户端                          服务器
  |--- SYN, seq=x -------------->|  1. 客户端请求建立连接
  |                              |     SYN_SENT 状态
  |<-- SYN, ACK, seq=y, ack=x+1 -|  2. 服务器同意建立连接
  |                              |     SYN_RCVD 状态
  |--- ACK, seq=x+1, ack=y+1 --->|  3. 客户端确认
  |                              |     ESTABLISHED 状态

四次挥手(关闭连接)

主动关闭方                      被动关闭方
  |--- FIN, seq=u -------------->|  1. 请求关闭
  |                              |     FIN_WAIT_1 状态
  |<-- ACK, ack=u+1 -------------|  2. 确认关闭请求
  |                              |     CLOSE_WAIT 状态
  |                              |     FIN_WAIT_2 状态
  |<-- FIN, seq=v ---------------|  3. 请求关闭
  |                              |     LAST_ACK 状态
  |--- ACK, ack=v+1 ------------>|  4. 确认关闭
  |                              |     TIME_WAIT 状态(2MSL)
  |                              |     CLOSED 状态

为什么需要 TIME_WAIT?

  1. 确保最后的 ACK 到达对方
  2. 等待旧连接的重复分组在网络中消失

TCP 可靠传输机制

  1. 序号和确认

    • 每个字节有序号
    • 累积确认:确认号表示期望收到的下一个字节
  2. 超时重传

    • 自适应超时时间:RTT 估计
    • TimeoutInterval = EstimatedRTT + 4 * DevRTT
    • EstimatedRTT = 0.875 * EstimatedRTT + 0.125 * SampleRTT
  3. 快速重传

    • 收到 3 个重复 ACK,立即重传
    • 无需等待超时
发送方                      接收方
  |--- 分组 1 -------------->|
  |--- 分组 2 -------------->|  丢失
  |--- 分组 3 -------------->|
  |<--- ACK 1 ---------------|  期望收到 2
  |--- 分组 4 -------------->|
  |<--- ACK 1 ---------------|  重复 ACK(收到 3)
  |--- 分组 5 -------------->|
  |<--- ACK 1 ---------------|  重复 ACK(收到 4)
  |                          |  收到 3 个重复 ACK
  |--- 分组 2(重传)-------->|  快速重传

流量控制

  • 接收方在 ACK 中通告窗口大小
  • 发送方维护发送窗口:LastByteSent - LastByteAcked <= rwnd
  • 防止发送方淹没接收方

拥塞控制

TCP 发送方维护拥塞窗口(cwnd),动态调整发送速率。

四种算法

  1. 慢启动(Slow Start)

    • 初始 cwnd = 1 MSS
    • 每个 RTT cwnd 加倍(指数增长)
    • 达到慢启动阈值 ssthresh 后转为拥塞避免
  2. 拥塞避免(Congestion Avoidance)

    • 每个 RTT cwnd 增加 1 MSS(线性增长)
    • 检测到拥塞后:
      • 超时:ssthresh = cwnd/2,cwnd = 1,重新慢启动
      • 3 个重复 ACK:ssthresh = cwnd/2,cwnd = ssthresh + 3,快速恢复
  3. 快速重传(Fast Retransmit)

    • 收到 3 个重复 ACK,立即重传
  4. 快速恢复(Fast Recovery)

    • cwnd = ssthresh + 3
    • 每收到重复 ACK,cwnd 增加 1
    • 收到新 ACK,cwnd = ssthresh,进入拥塞避免
cwnd
  ^
  |           慢启动      拥塞避免
  |          /------/------------- 
  |         /      /             
  |        /      /  快速恢复    
  |       /      /  /----\       
  |      /      /  /      \      
  |     /      /  /        \     
  |----/------/--/----------\----> 时间
        超时重传  3个重复ACK

实际应用

  • Web 浏览:HTTP/1.1 持久连接,TCP 优化
  • 文件传输:FTP、SFTP 可靠传输
  • 数据库连接:MySQL、PostgreSQL 客户端连接
  • TCP 性能优化
    • TCP Fast Open:减少握手延迟
    • BBR 拥塞控制:基于带宽和 RTT 的拥塞控制
    • 窗口扩大因子:支持高速网络

四、网络层

4.1 网络层概述

概念解释

网络层:负责将数据报从源主机传输到目的主机,核心功能是路由选择。

数据报(Datagram):网络层的传输单元,包含 IP 首部和数据。

转发(Forwarding):将分组从输入接口移动到正确的输出接口。

路由选择(Routing):确定分组从源到目的的路径。

基本原理

网络层功能

  1. 转发:路由器查表决定输出端口
  2. 路由选择:路由算法计算最佳路径
  3. 连接建立:某些网络架构(如 ATM)需要

数据平面 vs 控制平面

数据平面控制平面
本地操作,转发分组网络范围,路由选择
纳秒级处理秒级计算
路由器硬件实现路由器软件实现

实际应用

  • 路由器:网络层核心设备
  • 三层交换机:支持 IP 路由的交换机
  • SDN(软件定义网络):控制平面与数据平面分离

4.2 IPv4 协议

概念解释

IPv4(Internet Protocol version 4):当前广泛使用的网络层协议,32 位地址。

基本原理

IPv4 数据报格式

 0      7 8     15 16    23 24    31
+--------+--------+--------+--------+
|版本(4)|首部长度|服务类型|  总长度   |  0-3 字节
+--------+--------+--------+--------+
|   标识字段   |标志|  片偏移   |  4-7 字节
+--------+--------+--------+--------+
|  生存时间  |  协议   |  首部校验和 |  8-11 字节
+--------+--------+--------+--------+
|          源 IP 地址               |  12-15 字节
+--------+--------+--------+--------+
|          目的 IP 地址              |  16-19 字节
+--------+--------+--------+--------+
|          选项(可选)               |
+-----------------------------------+

关键字段

  • 版本:IPv4 为 4
  • 首部长度:以 4 字节为单位,最小 5(20 字节)
  • 服务类型(TOS):区分服务
  • 总长度:首部 + 数据,最大 65535 字节
  • 标识、标志、片偏移:IP 分片
  • TTL(Time To Live):生存时间,每经过路由器减 1,防止循环
  • 协议:上层协议(TCP=6, UDP=17, ICMP=1)
  • 首部校验和:检测首部错误

IPv4 地址

  • 32 位,点分十进制表示:192.168.1.1
  • 网络号 + 主机号:网络号标识网络,主机号标识主机

IP 地址分类

类别范围网络号位数主机号位数用途
A1.0.0.0 - 126.255.255.255824大型网络
B128.0.0.0 - 191.255.255.2551616中型网络
C192.0.0.0 - 223.255.255.255248小型网络
D224.0.0.0 - 239.255.255.255--组播地址
E240.0.0.0 - 255.255.255.255--保留地址

子网划分

  • 子网掩码:区分网络号和主机号

    • A 类默认:255.0.0.0
    • B 类默认:255.255.0.0
    • C 类默认:255.255.255.0
  • CIDR(无类别域间路由)

    • 格式:192.168.1.0/24(前 24 位为网络号)
    • 路由聚合:合并连续网络

私有地址

范围CIDR用途
10.0.0.0 - 10.255.255.25510.0.0.0/8A 类私有
172.16.0.0 - 172.31.255.255172.16.0.0/12B 类私有
192.168.0.0 - 192.168.255.255192.168.0.0/16C 类私有

NAT(网络地址转换)

内网主机(私有 IP)→ NAT 路由器 → 外网(公网 IP)
                     ↑
                  地址转换表
  • 内网主机使用私有 IP
  • NAT 路由器将私有 IP 转换为公网 IP
  • 节省 IPv4 地址

IP 分片

  • MTU(Maximum Transmission Unit):链路层最大传输单元
  • 以太网 MTU = 1500 字节
  • IP 数据报大于 MTU 时需分片
  • 目的主机重组分片
原数据报:4000 字节
MTU:1500 字节

分片:
- 片 1:标识=x, 标志=1(更多片), 偏移=0
- 片 2:标识=x, 标志=1(更多片), 偏移=185
- 片 3:标识=x, 标志=0(最后一片), 偏移=370

实际应用

  • 子网规划:企业网络划分
  • NAT 配置:家庭路由器、企业防火墙
  • IP 地址管理:DHCP 动态分配

4.3 IPv6 协议

概念解释

IPv6(Internet Protocol version 6):下一代 IP 协议,128 位地址,解决 IPv4 地址枯竭问题。

基本原理

IPv6 地址格式

  • 128 位,冒号十六进制表示
  • 2001:0db8:85a3:0000:0000:8a2e:0370:7334
  • 简化规则:
    • 连续的 0 可用 :: 表示(只能用一次)
    • 前导 0 可省略
    • 示例:2001:db8:85a3::8a2e:370:7334

IPv6 数据报格式

 0      7 8     15 16    23 24    31
+--------+--------+--------+--------+
|版本(6)| 流量类型 |    流标签      |  0-3 字节
+--------+--------+--------+--------+
|    有效载荷长度    |下一个首部|跳数限制|  4-7 字节
+--------+--------+--------+--------+
|          源地址(128 位)           |
|                                   |
|                                   |
|                                   |
+-----------------------------------+
|          目的地址(128 位)        |
|                                   |
|                                   |
|                                   |
+-----------------------------------+
|          扩展首部(可选)           |
+-----------------------------------+

IPv6 特点

  1. 更大的地址空间:2^128 个地址
  2. 简化的首部:固定 40 字节,提高处理效率
  3. 无分片:路由器不分片,由源主机负责
  4. 内置安全:IPsec 支持
  5. 更好的 QoS:流标签支持流量识别

IPv4 到 IPv6 迁移

  1. 双栈(Dual Stack):同时支持 IPv4 和 IPv6
  2. 隧道(Tunneling):IPv6 数据报封装在 IPv4 数据报中
  3. 协议转换:NAT64 转换 IPv6 和 IPv4 地址

实际应用

  • 下一代互联网:IPv6 普及
  • 物联网:海量设备需要大量 IP 地址
  • 5G 网络:IPv6 为基础

4.4 路由算法

概念解释

路由算法:确定分组从源到目的的最佳路径。

链路状态(Link State, LS)算法:掌握全局网络拓扑信息。

距离向量(Distance Vector, DV)算法:只知道邻居节点信息。

基本原理

链路状态算法(Dijkstra 算法)

  1. 每个节点广播链路状态(连接的邻居及费用)
  2. 所有节点构建完整的网络拓扑图
  3. 使用 Dijkstra 算法计算最短路径
初始化:
  N' = {u}  // 已知最短路径的节点集合
  对所有节点 v:
    D(v) = c(u, v)  // u 到 v 的费用

循环:
  找出不在 N' 中且 D(w) 最小的节点 w
  将 w 加入 N'
  对 w 的每个邻居 v:
    D(v) = min(D(v), D(w) + c(w, v))
  直到 N' 包含所有节点

距离向量算法(Bellman-Ford 方程)

dx(y) = min { c(x, v) + dv(y) }
       所有邻居 v

dx(y):x 到 y 的最短距离
c(x, v):x 到邻居 v 的费用
dv(y):邻居 v 到 y 的最短距离

算法特点

特性链路状态距离向量
全局/局部全局信息局部信息
消息复杂度O(nE)收敛时交换
收敛速度O(n^2)可能慢,可能震荡
健壮性节点计算错误影响局部错误传播全网

距离向量算法的问题

无穷计数问题

初始:
  A --1-- B --1-- C
  A 到 C 的距离 = 2

若 B-C 链路断开:
  B 认为 A 到 C 距离为 2,所以 B 到 C = 1 + 2 = 3
  A 认为 B 到 C 距离为 3,所以 A 到 C = 1 + 3 = 4
  ... 无限循环

解决方法

  1. 毒性逆转:如果 A 通过 B 到达 C,则 A 告诉 B 自己到 C 的距离为无穷大
  2. 定义无穷大:将无穷大定义为较小值(如 16)

实际应用

  • OSPF 协议:链路状态算法
  • RIP 协议:距离向量算法
  • BGP 协议:路径向量算法

4.5 路由协议

概念解释

自治系统(AS):在单一技术管理下的一组路由器。

内部网关协议(IGP):AS 内部路由协议(OSPF、RIP)。

外部网关协议(EGP):AS 之间路由协议(BGP)。

基本原理

OSPF(Open Shortest Path First)

  • 链路状态协议
  • 特点
    • 洪泛链路状态信息
    • Dijkstra 算法计算最短路径
    • 支持层次化路由
    • 快速收敛
    • 支持负载均衡

OSPF 区域

         骨干区域(Area 0)
              |
    +---------+---------+
    |         |         |
 Area 1   Area 2    Area 3

BGP(Border Gateway Protocol)

  • 路径向量协议
  • AS 间路由
    • 每个 AS 有唯一 AS 号
    • BGP 路由器交换可达性信息
    • 路径包含经过的 AS 序列

BGP 路由选择策略

  1. 本地偏好值
  2. 最短 AS 路径
  3. 最近的下一跳
  4. 其他标准

实际应用

  • 企业网络:OSPF 内部路由
  • 互联网:BGP AS 间路由
  • 数据中心:定制化路由协议

4.6 ICMP 协议

概念解释

ICMP(Internet Control Message Protocol):互联网控制消息协议,用于网络层差错报告和诊断。

基本原理

ICMP 报文类型

类型报文说明
0Echo Replyping 响应
3Destination Unreachable目的不可达
8Echo Requestping 请求
11Time ExceededTTL 超时
12Parameter Problem参数错误

ICMP 应用

  1. ping:测试主机可达性

    • 发送 ICMP Echo Request
    • 接收 ICMP Echo Reply
  2. traceroute:追踪路由路径

    • 发送 TTL=1 的数据报,第一跳路由器返回 ICMP Time Exceeded
    • 发送 TTL=2 的数据报,第二跳路由器返回 ICMP Time Exceeded
    • … 直到到达目的主机

实际应用

  • 网络诊断:ping、traceroute
  • 路径 MTU 发现:ICMP Destination Unreachable(需要分片)
  • 路由重定向:ICMP Redirect

五、数据链路层

5.1 链路层服务

概念解释

链路层:负责在单个链路上传输数据帧,将网络层的数据报封装成帧。

节点(Node):主机和路由器。

链路(Link):连接相邻节点的通信信道。

帧(Frame):链路层的传输单元。

基本原理

链路层服务

  1. 成帧:将网络层数据报封装成帧
  2. 链路接入:协调帧的传输(MAC 协议)
  3. 可靠交付:差错检测和纠正
  4. 差错检测:检测传输错误

链路层实现位置

  • 主机的网络接口卡(NIC)
  • 路由器的接口卡

实际应用

  • 以太网:有线局域网
  • Wi-Fi:无线局域网
  • PPP:点对点协议

5.2 差错检测与纠正

概念解释

差错检测:检测传输过程中的比特错误。

差错纠正:不仅检测错误,还能纠正错误。

基本原理

差错检测技术

1. 奇偶校验(Parity Check)

  • 单比特奇偶校验:添加 1 位,使 1 的个数为偶数(偶校验)或奇数(奇校验)
  • 二维奇偶校验:行列都添加校验位,可检测并纠正单比特错误
数据:
1 0 1 1 | 1  (行偶校验)
0 1 1 0 | 0
1 1 0 1 | 1
-------+--
0 0 0 0 | 0  (列偶校验)

2. 循环冗余检测(CRC, Cyclic Redundancy Check)

  • 发送方和接收方约定生成多项式 G(x)
  • 数据 D(x) 左移 r 位(r 为 G(x) 的阶)
  • 计算 R(x) = D(x)·x^r mod G(x)
  • 发送 D(x)·x^r + R(x)
  • 接收方用 G(x) 除,余数为 0 则无错

CRC 示例

数据:1101
生成多项式:G(x) = x^3 + x + 1 → 1011

1101000 ÷ 1011 = 1011 余 001
余数 001 即为 CRC

发送:1101001

3. 前向纠错(FEC, Forward Error Correction)

  • 发送方添加冗余信息
  • 接收方可直接纠正错误,无需重传
  • 适用于高延迟或高误码率环境

实际应用

  • 以太网:CRC-32 校验
  • Wi-Fi:更强的纠错编码
  • 存储系统:RAID、ECC 内存

5.3 多路访问协议

概念解释

多路访问问题:多个节点共享同一广播信道,如何协调传输。

多路访问协议:协调多个节点在共享信道上的传输。

基本原理

三类多路访问协议

1. 信道划分协议

  • 频分多路复用(FDM):每个节点分配固定频带
  • 时分多路复用(TDM):每个节点分配固定时隙
  • 码分多路访问(CDMA):每个节点分配唯一编码

2. 随机接入协议

ALOHA 协议

  • 纯 ALOHA:有数据就发送,冲突后随机等待重发
    • 最大效率:18%
  • 时隙 ALOHA:在时隙开始时发送
    • 最大效率:37%

CSMA(载波侦听多路访问)

  • 1-坚持 CSMA:信道空闲立即发送,忙则持续侦听
  • 非坚持 CSMA:信道忙则随机等待后重试
  • p-坚持 CSMA:信道空闲以概率 p 发送

CSMA/CD(以太网使用)

1. 侦听信道
2. 若空闲,开始发送
3. 发送时持续检测冲突
4. 若检测到冲突:
   - 发送干扰信号
   - 二进制指数退避
   - 重传

二进制指数退避

第 n 次冲突后,从 {0, 1, 2, ..., 2^n - 1} 中随机选择 K
等待 K·512 比特时间后重传

3. 轮流协议

  • 轮询协议:主节点轮流询问从节点
  • 令牌传递协议:节点持有令牌才能发送

实际应用

  • 以太网:CSMA/CD
  • Wi-Fi:CSMA/CA(冲突避免)
  • 蜂窝网络:FDMA、TDMA、CDMA

5.4 以太网

概念解释

以太网(Ethernet):最广泛使用的有线局域网技术。

基本原理

以太网帧格式

前导码   目的地址   源地址   类型    数据       CRC
8 字节   6 字节    6 字节   2 字节  46-1500   4 字节
  • 前导码:同步时钟(7 字节前导 + 1 字节 SFD)
  • 目的地址/源地址:MAC 地址(48 位)
  • 类型:上层协议类型(IP=0x0800, ARP=0x0806)
  • 数据:46-1500 字节(最小 46 字节,不足需填充)
  • CRC:循环冗余校验

MAC 地址

  • 48 位,全球唯一
  • 前 24 位:厂商标识(OUI)
  • 后 24 位:厂商分配

以太网技术演进

标准速率传输介质最大距离
10Base-T10 Mbps双绞线100m
100Base-TX100 Mbps双绞线100m
1000Base-T1 Gbps双绞线100m
10GBase-T10 Gbps双绞线100m

以太网特点

  1. 无连接:无需建立连接
  2. 不可靠:无 ACK、无重传
  3. CSMA/CD:冲突检测(全双工模式已不用)

实际应用

  • 局域网:企业、家庭网络
  • 数据中心:服务器互联
  • 工业以太网:工业自动化

5.5 链路层交换

概念解释

交换机(Switch):链路层设备,根据 MAC 地址转发帧。

交换机表:记录 MAC 地址与端口的映射。

基本原理

交换机转发过程

  1. 接收帧,提取源 MAC 地址,学习端口映射
  2. 查找目的 MAC 地址:
    • 找到:转发到对应端口
    • 未找到:泛洪到所有端口(除源端口)

交换机表自学习

1. 收到帧:源 MAC = A,端口 = 1
2. 记录:MAC A → 端口 1
3. 表项老化时间:通常几分钟

交换机 vs 集线器

特性交换机集线器
工作层次链路层物理层
转发方式基于 MAC 地址广播
冲突域每端口独立所有端口共享
带宽端口独享所有端口共享

虚拟局域网(VLAN)

  • 逻辑上划分局域网
  • 一个物理交换机可划分多个 VLAN
  • 隔离广播域,提高安全性

实际应用

  • 企业网络:多交换机互联
  • 数据中心:大规模交换网络
  • 网络隔离:VLAN 划分安全区域

六、物理层

6.1 物理层概述

概念解释

物理层:网络体系结构的最底层,负责在物理介质上传输比特流。

基本原理

物理层功能

  1. 定义电气特性:电压电平、数据速率
  2. 定义机械特性:接口形状、引脚数量
  3. 定义功能特性:各引脚功能
  4. 定义规程特性:传输时序

传输介质

导引型介质

  1. 双绞线

    • 无屏蔽双绞线(UTP):便宜,易受干扰
    • 屏蔽双绞线(STP):抗干扰,价格高
    • 类别:Cat5(100Mbps)、Cat6(1Gbps)、Cat7(10Gbps)
  2. 同轴电缆

    • 基带同轴电缆:数字信号
    • 宽带同轴电缆:模拟信号
  3. 光纤

    • 单模光纤:长距离,激光光源
    • 多模光纤:短距离,LED 光源
    • 优点:高速、抗干扰、安全

非导引型介质

  1. 无线电波:全向传播,穿透能力强
  2. 微波:直线传播,需要中继
  3. 卫星:覆盖范围广,延迟大

实际应用

  • 家庭网络:双绞线、Wi-Fi
  • 骨干网络:光纤
  • 移动通信:无线电波

6.2 编码与调制

概念解释

编码:将数字数据转换为数字信号。

调制:将数字数据转换为模拟信号。

基本原理

数字编码方式

  1. 不归零编码(NRZ)

    • 高电平 = 1,低电平 = 0
    • 问题:连续 0 或 1 时无法同步
  2. 曼彻斯特编码

    • 位周期中间跳变:低→高 = 1,高→低 = 0
    • 以太网使用
    • 优点:自同步
    • 缺点:带宽利用率低
  3. 差分曼彻斯特编码

    • 位周期中间总有跳变
    • 位开始有跳变 = 0,无跳变 = 1

模拟调制方式

  1. 调幅(AM):载波幅度随信号变化
  2. 调频(FM):载波频率随信号变化
  3. 调相(PM):载波相位随信号变化

数字调制方式

  1. 幅移键控(ASK):幅度表示 0/1
  2. 频移键控(FSK):频率表示 0/1
  3. 相移键控(PSK):相位表示 0/1

实际应用

  • 以太网:曼彻斯特编码
  • Wi-Fi:QAM(正交幅度调制)
  • 光纤:光强度调制

七、网络安全

7.1 网络安全基础

概念解释

网络安全:保护网络系统免受攻击、破坏、窃取。

安全目标

  • 机密性(Confidentiality):只有授权方可以访问
  • 完整性(Integrity):数据未被篡改
  • 可用性(Availability):服务正常可用

基本原理

常见攻击类型

  1. 窃听攻击:截获通信内容
  2. 篡改攻击:修改传输数据
  3. 重放攻击:重复发送旧数据
  4. 拒绝服务攻击(DoS):耗尽资源,使服务不可用
  5. 中间人攻击:冒充通信双方

密码学基础

对称加密

  • 加密和解密使用相同密钥
  • 算法:AES、DES、3DES
  • 优点:速度快
  • 缺点:密钥分发问题

非对称加密

  • 公钥加密,私钥解密
  • 算法:RSA、ECC
  • 优点:解决密钥分发问题
  • 缺点:速度慢

混合加密

  • 使用非对称加密交换对称密钥
  • 使用对称加密传输数据

实际应用

  • HTTPS:SSL/TLS 加密
  • VPN:虚拟专用网络
  • 数字签名:身份认证和完整性

7.2 加密与认证

概念解释

加密:将明文转换为密文。

认证:验证身份或数据来源。

基本原理

对称加密算法

AES(Advanced Encryption Standard)

  • 分组加密,分组长度 128 位
  • 密钥长度:128、192、256 位
  • 工作模式:
    • ECB:电子密码本模式(不安全)
    • CBC:密码分组链接模式
    • CTR:计数器模式

非对称加密算法

RSA

  • 基于大数分解难题
  • 密钥生成:
    1. 选择两个大素数 p, q
    2. 计算 n = p·q
    3. 计算 φ(n) = (p-1)(q-1)
    4. 选择公钥 e,满足 gcd(e, φ(n)) = 1
    5. 计算私钥 d,满足 e·d ≡ 1 (mod φ(n))
  • 加密:c = m^e mod n
  • 解密:m = c^d mod n

消息摘要(哈希函数)

  • 输入任意长度,输出固定长度
  • 单向性:不可逆
  • 抗碰撞性
  • 算法:MD5(已不安全)、SHA-1(已不安全)、SHA-256

数字签名

发送方:
1. 计算消息摘要:H(m)
2. 用私钥签名:Sign = (H(m))^d mod n
3. 发送消息和签名

接收方:
1. 用公钥验证签名:H(m) = Sign^e mod n
2. 验证消息完整性

数字证书

  • 由证书颁发机构(CA)签名
  • 包含:公钥、持有者信息、CA 签名、有效期
  • 证书链验证

实际应用

  • HTTPS:证书 + SSL/TLS
  • SSH:公钥认证
  • 区块链:数字签名

7.3 防火墙与入侵检测

概念解释

防火墙:控制网络访问的安全设备。

入侵检测系统(IDS):检测网络攻击。

入侵防御系统(IPS):检测并阻止攻击。

基本原理

防火墙类型

  1. 包过滤防火墙

    • 基于 IP 地址、端口号过滤
    • 无状态,效率高
  2. 状态检测防火墙

    • 维护连接状态表
    • 可识别关联的分组
  3. 应用层网关(代理防火墙)

    • 检查应用层内容
    • 深度包检测(DPI)

防火墙规则

规则示例:
允许:源 IP 192.168.1.0/24,目的端口 80
拒绝:源 IP 任意,目的端口 23

IDS/IPS 技术

  1. 基于特征:匹配已知攻击特征
  2. 基于异常:检测异常行为

实际应用

  • 企业网络:边界防火墙
  • Web 应用:WAF(Web 应用防火墙)
  • 云安全:安全组、网络 ACL

总结

关键概念速查表

层次核心协议关键概念
应用层HTTP, SMTP, DNS客户-服务器, P2P, URL
传输层TCP, UDP端口, 套接字, 可靠传输, 拥塞控制
网络层IP, ICMP, OSPF, BGP路由, 转发, IP 地址, 子网划分
链路层Ethernet, PPPMAC 地址, 帧, CSMA/CD, 交换机
物理层-比特, 编码, 调制, 传输介质

协议对比

协议层次可靠性连接性应用场景
HTTP应用层依赖 TCP无连接Web 浏览
TCP传输层可靠面向连接文件传输、邮件
UDP传输层不可靠无连接DNS、流媒体
IP网络层不可靠无连接网络互联
Ethernet链路层不可靠无连接局域网

学习建议

  1. 自顶向下学习:从应用层开始,理解实际应用
  2. 抓包实践:使用 Wireshark 分析协议
  3. 动手实验:搭建网络环境,配置路由器、交换机
  4. 阅读 RFC:深入理解协议细节

参考资料