Skip to content

计算机网络与通信重点笔记

根据 6 份课件整理。只保留主干概念和常见计算题套路,尤其注意单位、时延、CRC、子网/CIDR、IP 分片、TCP 窗口与拥塞控制。

0. 计算公式速查

单位换算

  • 1 Byte = 8 bit
  • 文件/数据块大小常见用二进制单位:1 KB = 2^10 B1 MB = 2^20 B
  • 链路速率常见用十进制单位:1 Mbit/s = 10^6 bit/s1 Gbit/s = 10^9 bit/s
  • 做题先统一单位:字节先乘 8 变 bit,距离和传播速率单位要一致。

性能与时延

  • 发送时延:
    t_send = 数据长度(bit) / 发送速率(bit/s)
  • 传播时延:
    t_prop = 信道长度(m) / 信号传播速率(m/s)
  • 总时延:
    D_total = t_send + t_prop + t_process + t_queue
  • 时延带宽积:
    BDP = 带宽 x 传播时延,单位是 bit,表示链路中“在路上”的比特数。
  • RTT:通常近似为 2 x 单程传播时延 + 接收端处理/排队/发送确认时间
  • 有效数据率:
    effective_rate = 有效数据量 / 总耗时
  • 利用率与时延关系:
    D = D0 / (1 - U)U 越接近 1,排队时延急剧上升。

物理层极限

  • 奈氏准则:无噪声低通信道最高码元率
    Baud_max = 2W 码元/s。
  • 若每个码元有 V 种离散状态,则最高数据率
    R_max = 2W log2(V) bit/s。
  • 信噪比:
    SNR(dB) = 10 log10(S/N)
  • 香农公式:
    C = W log2(1 + S/N) bit/s。

CRC

  • 生成多项式或除数 P 长度为 n+1 位,则 CRC/FCS 为 n 位。
  • 发送端:把原数据 M 后补 n 个 0,用模 2 除法除以 P,余数 R 就是 FCS。
  • 发送数据:M + R
  • 接收端:收到的数据除以 P,余数为 0 则接受,否则丢弃。
  • 模 2 除法没有借位/进位,减法等价于异或 XOR。

以太网与 CSMA/CD

  • 10 Mbit/s 以太网争用期:51.2 us,可发送 512 bit = 64 B
  • 最短有效帧长:64 B。小于 64 B 的帧通常视为冲突导致的无效帧。
  • 退避算法:第 i 次重传,k = min(i, 10),随机取 r in [0, 2^k - 1],等待 r x 争用期
  • 参数:a = 单程端到端传播时延 / 帧发送时间
  • 极限信道利用率近似:Smax = 1 / (1 + a)。要提高利用率,应减小传播时延或增大帧发送时间。

IP 编址、子网与 CIDR

  • 网络地址:IP地址 AND 子网掩码
  • 主机位数:h = 32 - 前缀长度
  • 地址块大小:2^h
  • 通常可用主机数:2^h - 2,全 0 主机号是网络地址,全 1 主机号是广播地址。
  • CIDR 写法:a.b.c.d/nn 是网络前缀长度。
  • 最长前缀匹配:若多个路由表项都匹配,选择前缀最长的那个。
  • 固定长度子网常用步长:在变化的八位组里,步长 = 256 - 掩码值

IP 分片

  • IP总长度 > MTU,且 DF=0,需要分片。
  • 每片数据部分最大值:
    payload_per_fragment = floor((MTU - IP首部长度) / 8) x 8
  • 片偏移:
    fragment_offset = 本片数据在原始数据部分中的起始字节 / 8
  • 每片总长度:IP首部长度 + 本片数据长度
  • MF=1 表示后面还有分片,最后一片 MF=0
  • 所有分片的标识字段相同。

TCP

  • TCP 实际发送窗口:
    send_window = min(rwnd, cwnd)
    rwnd 由接收方通告,用于流量控制;cwnd 由发送方根据网络拥塞状态维护。
  • 停止等待信道利用率:
    U = TD / (TD + RTT + TA)
    TD 是数据发送时间,TA 是确认发送时间。
  • 平滑 RTT:
    RTTs_new = (1 - alpha) RTTs_old + alpha RTT_sample,推荐 alpha = 1/8
  • RTT 偏差:
    RTTD_new = (1 - beta) RTTD_old + beta |RTTs - RTT_sample|,推荐 beta = 1/4
  • 超时重传时间:
    RTO = RTTs + 4 x RTTD
  • Karn 修正:重传过的报文段不用于 RTT 估计;每次重传可令 RTO_new = gamma x RTO_old,典型 gamma = 2
  • 慢开始:每个 RTT 内 cwnd 近似翻倍。
  • 拥塞避免:每个 RTT cwnd 约加 1 MSS。
  • 超时:ssthresh = max(cwnd/2, 2 MSS)cwnd = 1 MSS,重新慢开始。
  • 三个重复 ACK:立即快重传,ssthresh = cwnd/2,快恢复后进入拥塞避免。

HTTP 时间估算

  • 非持续连接请求一个对象:约 2 RTT + 对象传输时间
    第 1 个 RTT 建 TCP 连接,第 2 个 RTT 发送 HTTP 请求并收到响应首部,后面是对象传输。
  • 持续连接可复用 TCP 连接;流水线方式可在收到响应前连续发送多个请求,减少空闲 RTT。
  • 流量强度:
    traffic_intensity = 请求率 x 平均对象大小 / 链路速率。接近 1 时排队时延会很大。

1. 第 1 章 概述

互联网的基本结构

  • 互联网的两个重要特征:连通性、资源共享。
  • 小写 internet:泛指由多个网络通过路由器互连形成的互连网,是一类网络。
  • 大写 Internet:专指全球最大的、采用 TCP/IP 协议族的互联网。
  • 边缘部分:主机、端系统、客户/服务器、P2P 应用。
  • 核心部分:路由器和网络,核心任务是分组转发。
  • 路由器转发分组时通常最高只用到网络层,不处理运输层和应用层内容。

计算机网络的类别

  • 按作用范围:
    • 广域网 WAN:范围通常几十到几千公里,是互联网核心部分的重要组成。
    • 城域网 MAN:覆盖一个城市,范围约 5-50 km。
    • 局域网 LAN:范围较小,通常约 1 km,常使用高速通信线路。
    • 个人区域网 PAN:范围很小,约 10 m;无线个人区域网可称 WPAN。
  • 按使用者:
    • 公用网:按规定交费的人都可使用,也称公众网。
    • 专用网:为特定业务或单位需要建设,供特定用户使用。
  • 接入网 AN:把用户接入互联网的网络,也称本地接入网;通常是从用户端系统到本地 ISP 第一个路由器之间的网络。

交换方式

  • 电路交换:通信前建立专用物理通路,通信时独占端到端资源,结束后释放连接。适合连续传送大量数据或恒定速率实时通信,但计算机数据常有突发性,线路利用率低。
  • 报文交换:整份报文作为单位进行存储转发,不预先建立专用连接。信道利用率较高,但整报文转发导致时延大,对节点缓存要求高。
  • 分组交换:把较长报文划分为较小数据段,加上首部形成分组,以分组为传输单位逐跳存储转发。
    • 分组首部携带目的地址、源地址等控制信息,路由器检查首部并查转发表转发。
    • 各分组可独立选择路径,链路带宽动态分配,通信链路逐段占用。
    • 优点:高效、灵活、迅速、可靠,适合突发数据。
    • 缺点:会产生排队时延,不保证带宽;首部和路由器处理会增加开销。
交换方式是否先建立连接传输单位资源占用主要优点主要缺点
电路交换连续比特流端到端独占大量连续数据时速率稳定建连开销;突发数据利用率低
报文交换整个报文逐段占用无需预分配带宽,信道利用率较高时延大;节点缓存压力大
分组交换分组逐段占用时延小于报文交换,灵活高效有排队、首部和处理开销

性能指标

  • 速率:数据传送速率,也叫数据率或比特率。
  • 带宽:在通信领域可指频带宽度;在网络中常指最高数据率。
  • 吞吐量:单位时间通过网络、信道或接口的实际数据量,常小于额定速率。
  • 时延:发送时延、传播时延、处理时延、排队时延。
  • 时延带宽积:链路中可容纳的比特量。
  • RTT:从发送方发送完数据,到收到接收方确认的总时间。
  • 利用率:不是越高越好。利用率接近 1 时,排队时延会急剧增加。

典型计算

例:1000 km 光纤链路,传播速率 2.0 x 10^5 km/s,传播时延:

text
t_prop = 1000 / (2.0 x 10^5) = 0.005 s = 5 ms

发送 100 MB 数据:

text
100 MB = 100 x 2^20 x 8 bit

若 R = 1 Mbit/s:
t_send = 100 x 2^20 x 8 / 10^6 = 838.9 s

若 R = 100 Mbit/s:
t_send = 100 x 2^20 x 8 / 10^8 = 8.389 s

结论:大文件传输常由发送时延主导;极小数据在远距离链路上传输时,传播时延可能主导。提高带宽只能减小发送时延,不能提高比特在介质中的传播速度。

网络体系结构

  • 网络协议:为网络中数据交换而建立的规则、标准或约定。
  • 协议三要素:
    • 语法:数据与控制信息的结构或格式。
    • 语义:需要发出什么控制信息、完成什么动作、做出什么响应。
    • 同步:事件实现顺序的详细说明。
  • 网络体系结构:计算机网络各层及其协议的集合,是网络及构件应完成的功能的精确定义,不涉及具体实现。
  • 五层体系结构:应用层、运输层、网络层、数据链路层、物理层。
  • TCP/IP 四层:应用层、运输层、网际层、网络接口层。
  • 每层对上提供服务,对等层之间通过协议“逻辑通信”。
  • PDU 名称:应用层报文,运输层报文段/用户数据报,网络层 IP 数据报,链路层帧,物理层比特流。
层次主要任务典型协议或数据单位
应用层通过应用进程间交互完成特定网络应用DNS、HTTP、SMTP;报文
运输层为两台主机中的进程通信提供通用数据传输服务,负责复用和分用TCP 报文段、UDP 用户数据报
网络层为分组交换网上不同主机提供通信服务,负责路由选择和转发IP 数据报
数据链路层在相邻节点之间的链路上传送帧,进行差错检测等
物理层在传输媒体上传送比特流,规定接口机械、电气、功能、过程特性比特流

2. 第 2 章 物理层

物理层任务

  • 物理层关心如何在传输媒体上传输比特流,而不是具体传输媒体本身。
  • 作用:尽量屏蔽不同传输媒体和通信手段的差异。
  • 主要确定与传输媒体接口有关的 4 类特性:
    • 机械特性:接口接线器形状、尺寸、引线数目和排列、固定和锁定装置等。
    • 电气特性:接口电缆各条线上出现的电压范围。
    • 功能特性:某条线上某一电平电压的意义。
    • 过程特性:不同功能的各种可能事件出现的顺序。

数据通信基本概念

  • 消息:语音、文字、图像、视频等。
  • 数据:运送消息的实体,是有意义的符号序列。
  • 信号:数据的电气或电磁表现。
  • 模拟数据:取值连续的数据,如语音、连续变化的图像亮度等。
  • 数字数据:取值离散的数据,如文本、整数、二进制比特序列等。
  • 模拟信号:参数连续。
  • 数字信号:参数离散。
  • 码元:表示离散数值的基本波形。
  • 基带信号:来自信源的基本频带信号,常含较多低频成分,甚至含直流成分。
  • 带通信号:用载波调制后形成的信号,频率范围被搬移到较高频段,只在一段频率范围内通过信道。
  • 通信方式:
    • 单工通信:只能单方向传输,没有反方向交互。
    • 半双工通信:双方都能发送和接收,但不能同时发送。
    • 全双工通信:双方可同时发送和接收。
  • 串行传输:比特按时间顺序一个接一个发送,线路少,适合远距离传输。
  • 并行传输:多个比特在多条线中同时发送,短距离速度快,但线路多、同步要求高。

编码与调制

  • 基带调制也叫编码:数字信号变换为另一种数字信号。
  • 带通调制:用载波把基带信号搬移到较高频段,形成模拟带通信号。
  • 常用编码:
    • 不归零制:正/负电平表示 1/0。
    • 归零制:正/负脉冲表示 1/0。
    • 曼彻斯特编码:位周期中心跳变,具有自同步能力,但频带需求更高。
    • 差分曼彻斯特编码:每位中心都有跳变,位开始边界是否跳变表示数据。
  • 基本带通调制:调幅 AM、调频 FM、调相 PM。
  • QAM:振幅和相位混合调制。若有 16 个码元点,则每个码元携带 log2(16)=4 bit,同码元率下数据率提高 4 倍。

信道极限容量

  • 奈氏准则回答“无噪声时码元率最高多少”。
  • 香农公式回答“有噪声时信息传输速率绝对上限是多少”。
  • 香农公式:C = W log2(1 + S/N)。已知 CW 反求信噪比:S/N = 2^(C/W) - 1
  • 提高数据率的方向:
    • 增大带宽 W
    • 提高信噪比 S/N
    • 用更高阶编码/调制,让每个码元携带更多 bit。
  • 注意:高阶调制会更依赖信噪比,误码率可能更高。

传输媒体

  • 导引型:双绞线、同轴电缆、光纤。
  • 非导引型:无线电、微波、卫星、红外等。
  • 光纤优点:容量大、损耗小、中继距离长、抗电磁干扰、保密性较好、体积小。
  • 多模光纤适合近距离;单模光纤衰耗小,适合远距离,但成本较高。
  • 卫星通信传播时延大,常在 250-300 ms 量级,但并不等于传送数据总时延一定大,仍需看发送时延和数据量。

复用

  • FDM:频分复用。所有用户同一时间占用不同频带。
  • FDMA:频分多址。给不同用户分配不同频带,或让更多用户轮流使用这些频带来接入共享信道。
  • TDM:时分复用。用户周期性占用固定时隙,空闲用户会浪费时隙。
  • TDMA:时分多址。给不同用户分配不同时隙,或让更多用户轮流使用这些时隙来接入共享信道。
  • STDM:统计时分复用。按需动态分配时隙,提高利用率。
  • WDM:波分复用,本质上是光纤中的频分复用。例:8 x 2.5 Gbit/s = 20 Gbit/s
  • DWDM:密集波分复用,在一根光纤中使用更密集的波长间隔复用更多光载波。
  • CDM/CDMA:码分复用/码分多址。所有用户可同时使用同一频带,用正交码片序列区分。

数字传输系统

  • SONET:Synchronous Optical Network,同步光纤网。以 51.84 Mbit/s 为基础速率,对电信号称 STS-1,对光信号称 OC-1。
  • SDH:Synchronous Digital Hierarchy,同步数字系列。ITU-T 以 SONET 为基础制定的国际标准。
  • STM-1:Synchronous Transfer Module level 1,SDH 第 1 级同步传递模块,速率 155.52 Mbit/s,相当于 SONET 的 OC-3。
  • OC-48:Optical Carrier level 48,SONET 第 48 级光载波,速率 48 x 51.84 = 2488.32 Mbit/s,约 2.5 Gbit/s,对应 SDH 的 STM-16。

CDMA 计算套路

  • 把 0/1 码片转换为 -1/+1 向量。
  • 正交条件:两个不同站的码片向量规格化内积为 0。
  • 判定某站发送内容:收到的叠加向量 R 与该站码片向量 S 做规格化内积:
text
(1/m) sum(R_i S_i) =  1  -> 发送 1
(1/m) sum(R_i S_i) = -1  -> 发送 0
(1/m) sum(R_i S_i) =  0  -> 未发送

3. 第 3 章 数据链路层

数据链路层的基本问题

  • 使用点对点信道和广播信道。
  • 三个基本问题:封装成帧、透明传输、差错检测。
  • 帧:数据链路层的协议数据单元。
  • MTU:帧的数据部分长度上限。
  • 网络适配器/网卡:计算机通过适配器接入局域网。适配器负责串行/并行转换、数据缓存、配合设备驱动程序工作,并实现以太网协议;它包含物理层和数据链路层功能,通常说主要工作在数据链路层和物理层。

封装成帧与透明传输

  • 封装成帧:在数据前后添加首部和尾部,用于帧定界和控制。
  • 必须解决封装成帧:接收方需要知道一帧从哪里开始、到哪里结束,否则无法从比特流中取出完整帧。
  • 透明传输:无论数据中出现什么比特组合,链路层都应按原样传输。
  • 若用控制字符定界,数据中出现同样字符会误判边界,需要字节填充或字符填充。
  • 必须解决透明传输:数据字段中可能出现与帧定界符相同的比特组合,若不处理会被误认为帧边界。

差错检测与 CRC

  • 比特差错:1 -> 00 -> 1
  • 误码率 BER:错误比特数占传输比特总数的比例。
  • 必须解决差错检测:链路传输会产生比特差错,接收方至少要能发现错误帧并丢弃。
  • CRC 只能做到“无比特差错地接受”的高概率保证;它不是可靠传输的全部。
  • 可靠传输还需要编号、确认、重传等机制。

CRC 例题套路:

text
已知 M = 101001,P = 1101
P 长度为 4,所以 FCS 长度 n = 3
M 后补 3 个 0:101001000
用模 2 除法除以 1101,余数 R = 001
发送数据 = 101001001

PPP

  • PPP 用于点对点链路。
  • 三部分:
    • 将 IP 数据报封装到串行链路的方法。
    • LCP 链路控制协议。
    • NCP 网络控制协议。
  • PPP 面向字节,使用标志字段和字节填充实现透明传输。

以太网与 CSMA/CD

  • 以太网提供无连接、不可靠、尽最大努力交付。
  • CSMA/CD:载波监听多点接入/碰撞检测。
  • 载波监听:发送前和发送中都检测信道。
  • 碰撞检测:边发送边监听,检测到碰撞立即停止发送。
  • 检测到碰撞后发送人为干扰信号,再按截断二进制指数退避算法等待重发。
  • 争用期也叫碰撞窗口。只有经过争用期仍未检测到碰撞,才可确认本次发送不会碰撞。

常考点:

  • 10 Mbit/s 以太网争用期 51.2 us
  • 争用期内发送 10 x 10^6 x 51.2 x 10^-6 = 512 bit = 64 B
  • 因此以太网最短有效帧长为 64 B。
  • 帧间最小间隔:96 bit 时间,10 Mbit/s 下为 9.6 us
  • 10BASE-T10 表示 10 Mbit/sBASE 表示基带传输,T 表示双绞线。

以太网 MAC 帧

  • 以太网 V2 MAC 帧字段:目的地址 6 B,源地址 6 B,类型 2 B,数据 46-1500 B,FCS 4 B。
  • 前面还会由硬件插入 7 B 前同步码和 1 B 帧开始定界符。
  • MAC 地址工作在链路层,只在同一链路或局域网内直接使用。

交换机与 VLAN

  • 集线器工作在物理层,逻辑上仍是共享总线,冲突域大。
  • 交换机工作在数据链路层,按 MAC 地址转发帧,能隔离冲突域。
  • 使用集线器时,N 个用户共享总带宽 B,平均每个用户约 B/N
  • 使用交换机时,每个端口提供带宽 B,每个用户独占端口带宽;交换机总容量约为 B x N
  • 交换机自学习:收到帧后,把源 MAC 地址和进入接口写入交换表;若目的 MAC 地址未知,则向除进入接口外的所有接口泛洪;若目的 MAC 地址已知,则只向对应接口转发;若对应接口就是进入接口,则丢弃。
  • VLAN 把一个物理局域网划分成多个逻辑广播域,常用 IEEE 802.1Q 标记。

4. 第 4 章 网络层

网络层服务

  • 网络层解决异构网络互连、主机标识、路由选择、分组转发。
  • 两种服务思想:
    • 虚电路服务:网络负责可靠交付,通信前建立逻辑连接。
    • 数据报服务:网络只提供无连接、尽最大努力交付,可靠性交给端系统。
  • TCP/IP 采用数据报服务。
  • 网络层有两个层面:
    • 数据层面/转发层面:按转发表快速转发分组。
    • 控制层面:运行路由选择协议,生成路由表。

网络互连设备

  • 转发器/中继器:物理层设备,只转发比特或再生信号,不识别帧和地址。
  • 网桥/桥接器:数据链路层设备,按 MAC 地址转发帧,可连接局域网网段;用转发器或网桥连接的若干局域网仍可看成一个网络。
  • 路由器:网络层设备,按 IP 地址和路由表转发 IP 数据报,用于连接不同网络。
  • 网关:网络层以上的中继系统,常用于不同协议体系之间的转换;在一些 TCP/IP 文献中,历史上也把路由器称为网关。

IPv4 地址

  • IPv4 地址是 32 位,通常写成点分十进制。
  • IP 地址标识接口,不只是主机。路由器有多个接口,通常有多个 IP 地址。
  • 分类地址:
类别开头位第 1 字节范围默认前缀用途
A01-126/8大型网络
B10128-191/16中型网络
C110192-223/24小型网络
D1110224-239-多播
E1111240-255-保留

特殊地址:

  • 主机号全 0:网络地址。
  • 主机号全 1:该网络广播地址。
  • 127.0.0.0/8:本地环回。
  • 0.0.0.0/0:默认路由。
  • /32:特定主机路由。

子网划分

  • 子网划分把两级地址变为三级地址:<网络号, 子网号, 主机号>
  • 基本做法:从主机号借若干位作为子网号。
  • 子网掩码左边连续 1 对应网络号和子网号,右边连续 0 对应主机号。
  • 路由表项应包含目的网络地址、子网掩码、下一跳。
  • VLSM/CIDR 分配地址块时,先按需求从大到小排序;每个需求选择能容纳它的最小 2^k 地址块,再按地址块边界对齐分配。

例:IP = 141.14.72.24,掩码 255.255.192.0

text
第三字节 72 = 01001000
掩码第三字节 192 = 11000000
AND 结果 = 01000000 = 64
网络地址 = 141.14.64.0

若掩码改为 255.255.224.0255.255.240.0,第三字节仍为 64,所以网络地址仍是 141.14.64.0,但前缀长度和地址块规模不同。

CIDR 与路由聚合

  • CIDR 消除了 A/B/C 分类,用变长网络前缀表示地址块。
  • 例:128.14.32.0/20
    • 主机位数:12
    • 地址数:2^12 = 4096
    • 范围:128.14.32.0128.14.47.255
    • 等价于 16 个 C 类网络。
  • 路由聚合:把连续、前缀相同的地址块合成一个更短前缀,减少路由表项。
  • 查表使用最长前缀匹配。例:目的地址 206.0.71.130 同时匹配 206.0.68.0/22206.0.71.128/25,选 /25

IP 地址与 MAC 地址

  • IP 地址用于网络层定位目的网络和主机接口,端到端转发过程中源/目的 IP 基本不变。
  • MAC 地址用于链路层,只负责同一链路上的直接交付;经过路由器转发时,每一跳帧首部中的源/目的 MAC 地址都会改变。
  • IP 地址是逻辑地址,体现网络前缀和主机/接口位置,便于跨网络路由;MAC 地址是硬件地址,通常固化在网卡中,便于同一局域网内交付帧。
  • ARP 用于在同一二层广播网络内,由 IP 地址解析出 MAC 地址。
  • ARP 请求广播,ARP 响应单播。
  • ARP 高速缓存保存最近的 IP-MAC 映射,减少广播。

IP 数据报与分片

  • IPv4 首部固定部分 20 B,可选部分最多 40 B。
  • 重要字段:
    • 版本:IPv4 为 4。
    • 首部长度:单位 4 B,常见值 5,表示 20 B。
    • 总长度:首部 + 数据,最大 65535 B。
    • 标识、标志、片偏移:用于分片。
    • TTL:每经过一个路由器减 1,为 0 时丢弃并发送 ICMP 超时。
    • 协议:指出数据部分交给 TCP、UDP、ICMP、OSPF 等。
    • 首部检验和:只检验 IP 首部。

分片例:原始 IP 数据报总长度 6578 B,首部 20 B,数据 6558 B,通过以太网 MTU=1500 B

text
每片最大数据 = floor((1500 - 20) / 8) x 8 = 1480 B
6558 = 1480 x 4 + 638

片1: 数据 1480, 总长 1500, 偏移 0,   MF=1
片2: 数据 1480, 总长 1500, 偏移 185, MF=1
片3: 数据 1480, 总长 1500, 偏移 370, MF=1
片4: 数据 1480, 总长 1500, 偏移 555, MF=1
片5: 数据 638,  总长 658,  偏移 740, MF=0

ICMP

  • ICMP 用于差错报告和询问,不是高层协议,封装在 IP 数据报中。
  • 常见差错报告:终点不可达、时间超过、参数问题、重定向。
  • 常见应用:
    • ping 使用回送请求/回答。
    • traceroute 利用 TTL 逐步增加和 ICMP 超时报文探测路径。

路由选择协议

  • 静态路由:简单、开销小,但不自适应。
  • 动态路由:能适应拓扑变化,但复杂且有额外开销。
  • AS 自治系统:一个管理域内的一组路由器,对外表现为一致的路由策略。
  • IGP:AS 内部路由协议,如 RIP、OSPF。
  • EGP:AS 间路由协议,主要是 BGP。

RIP:

  • 基于距离向量,距离为跳数。
  • 直连网络距离为 0,非直连网络距离为经过路由器数加 1。
  • 最大有效距离 15,16 表示不可达,只适合小型网络。
  • 只和相邻路由器交换信息,交换完整路由表,通常每 30 秒交换一次。
  • 优点:简单、开销小。
  • 缺点:规模受限,坏消息传播慢,可能收敛慢。

距离向量更新规则:

text
收到邻居 X 的路由表后:
每条距离先 +1,下一跳改为 X。
若本路由表没有该目的网络,加入。
若下一跳原本就是 X,用新信息更新。
若新距离更小,用新路由替换旧路由。

OSPF:

  • 开放最短路径优先,链路状态协议。
  • 使用洪泛法向 AS 内所有路由器发送链路状态。
  • 每个路由器建立一致的链路状态数据库,再用 Dijkstra 算法求最短路径。
  • 支持 VLSM/CIDR、区域划分、负载均衡、鉴别。
  • 直接封装在 IP 中,不使用 UDP。
  • 收敛快,适合较大网络。

BGP:

  • AS 间路由协议,关注可达性和策略,不追求绝对最短路径。
  • 使用 TCP,端口 179。
  • BGP 路由可表示为 [前缀, AS-PATH, NEXT-HOP]
  • 常见选择顺序:本地偏好高优先,AS 跳数少优先,热土豆路由,路由器 ID 小优先等。

IPv6、NAT、VPN、MPLS、SDN

  • IPv6 地址 128 位,首部更简化,取消 IPv4 首部检验和,分片由源主机处理。
  • IPv6 压缩写法:连续 0 可用 :: 压缩一次。
  • ICMPv6 合并了 IPv4 中 ARP 和 IGMP 的部分功能。
  • 私有 IPv4 地址:
    • 10.0.0.0/8
    • 172.16.0.0/12
    • 192.168.0.0/16
  • NAT:专用网地址与全球地址转换。
  • NAPT:用端口号复用一个全球 IP,多个内网主机可同时访问外网。
  • VPN:通过隧道技术在公共网络上构建逻辑专用通路。
  • MPLS:在二层和三层之间插入标签,用标签交换加速转发,标签操作有 push、swap、pop。
  • SDN:控制平面和数据平面分离,逻辑集中控制,转发设备按流表处理数据。

5. 第 5 章 运输层

运输层作用

  • 网络层提供主机到主机通信;运输层提供进程到进程的端到端逻辑通信。
  • 复用:多个应用进程共用运输层协议发送。
  • 分用:运输层根据端口号把数据交给正确进程。
  • TCP 和 UDP 都运行在无连接的 IP 之上;若应用使用 TCP,则应用看到的是面向连接、可靠、全双工的运输层逻辑信道;若应用使用 UDP,则应用看到的是无连接、不可靠的运输层逻辑信道。
  • 运输层复用靠端口号和协议号实现:应用数据加上 TCP/UDP 首部形成 TCP 报文段或 UDP 用户数据报,再封装到 IP 数据报中;接收端按 IP 首部协议字段交给 TCP/UDP,再按目的端口分用给应用进程。
  • 端口分类:
    • 熟知端口:0-1023。
    • 登记端口:1024-49151。
    • 短暂端口:49152-65535。
  • 端口的作用:用统一的协议端口号标识应用层“功能”或服务,而不是依赖不同操作系统中的进程标识符。
  • 常见端口:HTTP 80,HTTPS 443,FTP 20/21,SMTP 25,DNS 53,TFTP 69,SNMP 161/162。

UDP

  • 无连接,尽最大努力交付。
  • 面向报文:应用层交下来的报文既不合并也不拆分。
  • 无拥塞控制,适合实时音视频、DNS、DHCP、RIP 等。
  • 一些应用选择 UDP 的原因:不想建立连接、首部开销小、希望应用自己控制重传/超时、能容忍少量丢包但不能容忍大时延,或需要一对多/多播/广播。
  • 首部 8 B:源端口、目的端口、长度、检验和。
  • UDP 检验和计算使用伪首部,伪首部只参与计算,不真正发送。

TCP

  • 面向连接、可靠、全双工、面向字节流。
  • 不支持广播和多播。
  • 最小首部 20 B,选项最多 40 B。
  • 重要字段:
    • 序号 seq:本报文段数据第一个字节的序号。
    • 确认号 ack:期望收到的下一个字节序号。
    • 数据偏移:TCP 首部长度,单位 4 B。
    • ACK、SYN、FIN、RST、PSH、URG。
    • 窗口:接收方允许对方继续发送的数据量,单位字节。
    • 检验和:覆盖伪首部、TCP 首部和数据。
    • MSS:TCP 报文段数据字段最大长度,尽量避免 IP 分片。

可靠传输

  • 停止等待:每发一个分组就等待确认,简单但信道利用率低。
  • 超时重传:发送方给已发送分组设置定时器,超时未确认则重发。
  • ARQ:自动重传请求,不需要接收方显式请求重传。
  • 流水线传输:发送方可连续发送多个分组,提高利用率。
  • 连续 ARQ:发送窗口内分组可连续发送,常结合滑动窗口。
  • 累积确认:确认按序到达的最后一个分组或字节。
  • Go-Back-N:若中间一个分组丢失,发送方可能回退重传多个分组。

TCP 滑动窗口与确认

  • TCP 的确认基于字节序号,不基于报文段序号。
  • 发送窗口包括:已发送未确认、允许发送但尚未发送。
  • 接收窗口包括:按序到达未交付、不按序到达但在窗口内的数据。
  • 接收方必须支持累积确认;对乱序数据通常先缓存,等缺失字节到达后按序交付。
  • 接收方不应过度推迟 ACK;若收到连续最大长度报文段,通常至少每隔一个报文段确认一次。

RTO 计算

  • RTO 不能太短,否则造成不必要重传;不能太长,否则链路空闲、效率低。
  • 用加权平均估计 RTT:
text
RTTs_new = (1 - alpha) RTTs_old + alpha RTT_sample
RTO = RTTs + 4 x RTTD
  • 重传报文段的 ACK 有歧义,因此 Karn 算法不使用重传样本。
  • 修正 Karn 算法:每次重传把 RTO 加倍,直到不再重传时再更新 RTT 估计。

流量控制

  • 流量控制是端到端问题:接收方通过 rwnd 限制发送方。
  • 若接收方通告 rwnd=0,发送方停止发送新数据。
  • 若非零窗口通知丢失,可能死锁。解决:持续计时器和零窗口探测报文。
  • 糊涂窗口综合症:接收方每次只空出很小空间,导致发送方反复发送很小报文,效率很低。解决:接收方等到有足够空间再通告窗口;发送方可用 Nagle 算法合并小数据。

拥塞控制

  • 拥塞控制是全局问题,防止过多数据注入网络。
  • 与流量控制区别:流量控制保护接收方;拥塞控制保护网络。
  • 拥塞信号常见为分组丢失、超时、重复 ACK、显式拥塞通知 ECN。

慢开始和拥塞避免:

text
cwnd < ssthresh: 慢开始,cwnd 指数增长
cwnd >= ssthresh: 拥塞避免,cwnd 线性增长

发生超时:

text
ssthresh = max(cwnd / 2, 2 MSS)
cwnd = 1 MSS
重新慢开始

收到 3 个重复 ACK:

text
立即重传丢失报文段
ssthresh = cwnd / 2
cwnd = ssthresh
进入拥塞避免或快恢复

记忆:TCP Reno 的核心是“慢开始、拥塞避免、快重传、快恢复”,表现为 AIMD:加法增大、乘法减小。

TCP 连接管理

三报文握手:

text
1. A -> B: SYN=1, seq=x
2. B -> A: SYN=1, ACK=1, seq=y, ack=x+1
3. A -> B: ACK=1, ack=y+1
  • SYN 会消耗一个序号。
  • 三次握手用于确认双方存在、协商参数、分配资源、同步初始序号。
  • 两次握手可能因迟到的旧连接请求导致服务器误建立连接。

四报文挥手:

text
1. A -> B: FIN
2. B -> A: ACK
3. B -> A: FIN
4. A -> B: ACK
  • 主动关闭方进入 TIME_WAIT,等待 2MSL
  • 作用:
    • 保证最后 ACK 丢失时还能重传 ACK。
    • 让旧连接中滞留的报文从网络中消失,避免污染新连接。

6. 第 6 章 应用层

应用层概念

  • 应用层协议规定报文类型、语法、语义、发送时机和响应规则。
  • 两种工作模式:
    • C/S:服务器长期在线,有固定地址,集中管理资源。
    • P2P:节点既请求服务也提供服务,可扩展性和健壮性较好。

DNS

  • DNS 把域名解析为 IP 地址,是分布式、层次化数据库。
  • 域名结构:从右到左层次升高,如 www.tsinghua.edu.cn
  • 每个标号最长 63 字符。
  • 服务器类型:
    • 根域名服务器。
    • 顶级域名服务器。
    • 权限域名服务器。
    • 本地域名服务器。
  • 区 zone 是服务器实际管辖范围,不完全等同于域 domain。
  • 主机到本地域名服务器通常用递归查询。
  • 本地域名服务器到根、TLD、权限服务器通常用迭代查询。
  • DNS 高速缓存用 TTL 控制有效期,可减轻根服务器负担,但 TTL 太长会降低更新准确性。
  • 早期 DNS 响应限制在 UDP 512 B 内,根服务器信息需放入响应,因此出现 13 个根服务器名称的设计。

FTP

  • FTP 使用 TCP。
  • 控制连接通常使用 21 端口,在整个会话期间保持。
  • 数据连接用于传输文件,传输时建立,传完可释放。
  • 控制连接和数据连接分离,是 FTP 的重要特征。

电子邮件

  • 电子邮件系统组成:用户代理、邮件服务器、邮件协议。
  • SMTP:发送/转发邮件,使用 TCP,典型端口 25。
  • POP3/IMAP:用户从服务器读取邮件。
  • MIME:扩展邮件内容类型,使邮件可传输非 ASCII 文本、图片、音频、附件等。

WWW 与 URL

  • WWW 是分布式超媒体系统,不是某种特殊网络。
  • URL 一般形式:
text
<协议>://<主机>:<端口>/<路径>
  • HTTP 默认端口 80,HTTPS 默认端口 443。
  • 若访问默认端口和默认首页,端口和文件名常可省略。

HTTP

  • HTTP 是应用层协议,使用 TCP 提供可靠传输。
  • HTTP 本身是无连接、无状态、面向事务的请求/响应协议。
  • 无状态优点是服务器负担轻;缺点是动态交互困难,需要 Cookie/Session。
  • Cookie 是服务器和客户端之间传递的状态信息,会随 HTTP 请求发送;明文 Cookie 有安全风险,HTTPS 可缓解。

HTTP 事务:

text
建立 TCP 连接
客户端发送 HTTP 请求
服务器发送 HTTP 响应
浏览器解析并渲染
释放或保持 TCP 连接

持续连接:

  • HTTP/1.1 默认使用持续连接。
  • 非流水线:收到前一个响应后再发下一个请求。
  • 流水线:未收到响应前可继续发送请求,减少 RTT 浪费。
  • HTTP/2 在同一 TCP 连接中复用多个请求/响应,并把报文分成二进制帧,减少首部开销。

HTTP 报文:

  • 请求报文:请求行、首部行、空行、实体主体。
  • 常用方法:GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。
  • 响应报文:状态行、首部行、空行、实体主体。
  • 状态码:
    • 1xx 信息。
    • 2xx 成功,如 200 OK
    • 3xx 重定向。
    • 4xx 客户端错误,如 400 Bad Request403 Forbidden404 Not Found
    • 5xx 服务器错误,如 500 Internal Server Error503 Server Unavailable

Web 缓存/代理服务器

  • 代理服务器也叫 Web cache,代表浏览器发出 HTTP 请求。
  • 若请求资源已缓存,可直接返回,减少访问时延和外部链路流量。
  • 课件例:请求率 15 req/s,平均对象 1 Mb,外部链路 15 Mbit/s
text
外部链路流量强度 = 15 x 1 Mb / 15 Mbit/s = 1

流量强度接近 1,排队时延会很大。若使用缓存命中部分请求,可显著降低外部链路负载。

DHCP

  • DHCP 用于动态分配 IP 配置。
  • 常见流程 DORA:
text
Discover -> Offer -> Request -> ACK
  • DHCP 使用 UDP,服务器端口 67,客户端端口 68。
  • 分配内容通常包括 IP 地址、子网掩码、默认网关、DNS 服务器、租约时间。

7. 常见计算题模板

模板 1:时延

text
1. 数据长度转 bit。
2. t_send = L / R。
3. t_prop = d / v。
4. 总时延 = t_send + t_prop + t_process + t_queue。
5. 若有确认或停止等待,再把 RTT 或 ACK 发送时间算进去。

模板 2:奈氏/香农

text
1. 看是否有噪声。
2. 无噪声低通信道:用奈氏。
3. 有噪声且给 S/N 或 dB:先把 dB 转为 S/N,再用香农。
4. 若给码元种类 V:bit/码元 = log2(V)。

模板 3:CRC

text
1. P 有 n+1 位,FCS 有 n 位。
2. M 后补 n 个 0。
3. 模 2 除以 P。
4. 余数不够 n 位左补 0。
5. 发送 M+R。

模板 4:子网/CIDR

text
1. 根据前缀求主机位 h = 32 - n。
2. 地址数 = 2^h,可用主机数通常 = 2^h - 2。
3. 网络地址 = IP AND mask。
4. 广播地址 = 网络地址主机位全 1。
5. 可用范围 = 网络地址 + 1 到 广播地址 - 1。
6. 路由查表有多个匹配时,选最长前缀。

模板 5:IP 分片

text
1. 原始数据长度 = IP总长度 - IP首部长度。
2. 每片最大数据 = floor((MTU - IP首部长度)/8) x 8。
3. 依次切片。
4. 每片总长度 = IP首部长度 + 本片数据长度。
5. 片偏移 = 本片数据起始位置 / 8。
6. 除最后一片外 MF=1,最后一片 MF=0。

模板 6:TCP 拥塞窗口

text
1. cwnd < ssthresh: 每 RTT 翻倍。
2. cwnd >= ssthresh: 每 RTT 加 1 MSS。
3. 超时: ssthresh = cwnd/2, cwnd = 1 MSS。
4. 3 个重复 ACK: ssthresh = cwnd/2, 快重传,进入快恢复/拥塞避免。
5. 实际可发窗口 = min(rwnd, cwnd)。

8. 易混点

  • 高带宽不等于传播速度更快,只是单位时间能“推出”更多 bit。
  • 吞吐量是实际值,带宽/速率常是上限。
  • CRC 是检错,不是纠错;也不等于可靠传输。
  • IP 地址在端到端转发中基本不变,MAC 地址每一跳都会变。
  • 子网掩码是路由表项的重要属性;只看网络地址不够。
  • CIDR 查表要用最长前缀匹配,不是先匹配谁就选谁。
  • IP 分片偏移单位是 8 字节,不是 1 字节。
  • TCP 的 ACK 号表示“期望收到的下一个字节序号”。
  • TCP 流量控制看接收方 rwnd,拥塞控制看网络状态 cwnd
  • HTTP 使用 TCP,但 HTTP 本身仍可说是无连接、无状态。