10059 字
50 分钟
计算机网络
2026-03-05

计算机网络的功能#

计算机网络的组成总览

三种交换技术#

  1. 电路交换 Circuit switching

    1. 定义:通信前从主叫端到被叫端建立一条专用的 物理通路,在通信的全部时间内,两个用户始终占用端到端的线路资源。
    2. 优缺点:
      • 优点:数据直送,传输速率高;
      • 缺点:建立/释放连接,需要额外的时间开销;
         线路被通信双方独占,利用率低;线路分配的灵活性差;
         交换节点不支持“差错控制”(无法发现传输过程中的发生的数据错误)
    3. 更适用于:低频次、大量传输数据(电话网)
  2. 报文交换

    1. 定义:把传送的数据单元先存储在中间节点,再转发给下一地址
         massage报文包括:控制信息 + 用户数据(发送方/接收方 + 传送的数据内容)
    2. 优缺点
      • 优点:通信前无需建立连接
         数据以“报文”为单位被交换节点间“存储转发”,通信线路可以灵活分配
         在通信时间内,两个用户无需独占一整条物理线路。相比于电路交换,线路利用率高
         交换节点支持“差错控制”(通过校验技术)
      • 缺点:报文不定长,不方便存储转发管理
         长报文的存储转发时间开销大、缓存开销大
         长报文容易出错,重传代价高
  3. 分组交换 Packet switching

    1. 基本概念:长报文的数据分为若干个小的定长数据,
      每部分的定长数据增加 控制信息(首部 Header) (包含:源地址、目的地址、分组号);
      定长数据+控制信息 = 分组(packet)
      路由器是一种典型的分组交换机
    2. 过程:数据被分成定长小数据,可以通过不同路径传输,最后在终端按照分组号进行排列
    3. 优缺点
      • 优点:相比于报文交换
         分组定长,方便存储转发管理
          分组的存储转发时间开销小、缓存开销小
          分组不易出错,重传代价低
      • 缺点:
         相比于报文交换,控制信息占比增加
         相比于电路交换,需要在中间存储,依然存在存储转发时延
         报文被拆分为多个分组,传输过程中可能出现失序、丢失等问题,增加处理的复杂度
  4. 虚电路交换 Virtual Circuit#

    1. 过程:将源地址、目的地址建立联系(虚拟电路),交换机处理,在传输过程中一直按序传输,最后释放连接
    2. 现代计算机采用 分组交换,用网络边缘终端强大的算力进行排序,而非用网络的核心部分
  5. 性能分析 alt text

    1. 电路交换 报文交换 分组交换

U4 数据链路层#

  • 所处地位 alt text

⭐1. 可靠传输/流量控制 与 滑动窗口#

  1. 可靠传输:解决帧之间的“帧错”:帧丢失、帧重复、帧失序
    流量控制:控制发送方发送帧的速率别太快,要让接收方来得及接收
  2. 3种机制#

    实现这两个功能需要多种机制配合: alt text alt text

  3. 本质是滑动窗口的3种协议#

    1. 停止-等待协议 S-W:发送窗口 = 1,接收窗口 = 1
    2. 后退N帧协议 GBN:发送窗口 > 1,接收窗口 = 1
    3. 选择重传协议SR:发送窗口 > 1,接收窗口 > 1

⭐1.1停止等待协议 S-W#

stop-wait

  1. 滑动窗口机制#

    发送窗口 = 1,接收窗口 = 1
  2. 帧编号#

    仅需 1 bit 给帧编号

    • 数据帧的组成:首 数据部分(可长可短) 尾
      确认帧的数据部分很短/为空
      首尾主要是:帧定界信息,校验码、帧类型(确认帧/反向传输的数据)、帧序号(0/1)
  • 正常情况#

    发送方 发送给 接收方;接收方 对数据进行“差错控制” 没有问题发送ACK给发送方,同时接收窗口右移;发送方接收到ACK也右移 继续发送数据。 alt text

  • 异常情况#

    数据帧丢失:超时重传机制;
    确认帧丢失:超时重传,接收方收到重复帧→丢弃重复帧,并重新返回ACK;
    重复数据帧:接收方通过帧序号判断收到重复数据帧→丢弃重复帧、返回重复帧的ACK
    数据帧有差错:接收方检测到差错→接收方将此帧“丢弃”,且不会返回ACK。导致超时重传

⭐1.2 后退N帧协议 GBN -累积确认#

go back N

  1. 滑动窗口机制#

    发送窗口 > 1,接收窗口 = 1

  2. 确认机制#

    确认帧:“累积确认”,连续收到多个数据帧返回最后一个帧的ACK,表示收到i号帧及之前的所有帧

  3. 重传机制#

    超时重传:若发送方超时未收到ACKiACK_i,则重传i号帧 及其之后的所有帧

  4. 帧编号#

    WT+WR≤nW_T + W_R \leq n

  • 正常情况#

    发送窗口连续传输数据,接收到最后一个数据 → 返回“累积确认”ACK2

  • 异常情况#

    数据帧丢失:发送最后收到的ACK,发送窗口移动
    确认帧丢失:发送方全部超时重传 → 但是接收方全都已经收到过了 → 丢弃重复帧,重传ACK

⭐1.3 选择重传协议 SR -差错帧返回“NCK”#

Selective Repeat

  1. 滑动窗口机制#

    发送窗口 > 1,接收窗口 > 1。WR≤WTW_R \leq W_T

  2. 确认机制#

    确认帧:每一帧返回ACKiACK_i

  3. 重传机制:超时重传 + 请求重传
    超时重传:超过时间,发送方重新传Data
    请求重传:NAK 否认帧:若接收方检测到DataiData_i有“差错” → 则丢弃该帧,返回发送方NAKiNAK_i,请求重传
    不必等到计时器超时再重传,而是收到NCK就立即重传 → 提升效率
  4. 帧编号#

    WT+WR≤n,WR≤WTW_T + W_R \leq n,W_R \leq W_T(接收窗口小于发送窗口)

  • 正常情况#

  • 异常情况#

    数据帧丢失:超时重传


    数据帧检测出差错而被丢弃:返回给发送方 NAK → 发送方重传帧、重置计时器


    确认帧丢失


1.4 对于可靠传输/流量控制机制的信道利用率分析#

发送信道的信道利用率:发送完当前数据到发送下一次数据(发送数据的占比)
ARQ 自动重传请求协议:包括这3个协议

  1. S-W协议#

    alt text

  2. GBN协议、SR协议#

    分母:第一次发送 ~ 可以发送下一组(分母中数据传输时间只取1个)
    利用率不会大于1。若N=5,信道一直有发送的数据填充,α=1\alpha=1 alt text

  • 例1
  • 例2alt text

⭐2.介质/多路访问控制#

广播通信时,多个节点争抢物理传输介质。怎么解决争抢问题,实现有序传输 alt text

2.1 信道划分#

  1. 时分复用 TDM
  2. 频分复用 FDM
  3. 码分复用 CDM

随机访问#

  1. ALOHA协议
    • 纯ALOHA:准备好数据帧,就立即发送;
    • 时隙ALOHA协议:准备好的数据要等到一个时隙的开始才发送;若发生冲突,分别随机等一段时间后发送
    数据模型
    数据模型
  2. CSMA协议:发送数据之前,先监听信道是否空闲,只有空闲时才发送数据(网络适配器要安装“载波监听装置”)
    • 1-坚持CSMA协议 alt text
    • 非坚持CSMA协议
      优点:使各节点错开发送数据,降低冲突概率;
      缺点:信道空闲时,可能不会被立即里哟个,导致信道利用率降低 alt text
    • p-坚持CSMA协议
      折中方法,降低冲突概率、提高信道利用率 alt text
  3. CSMA/CD协议:用于早期有线以太网(总线型)Collusion Detection
    数据模型
    数据模型
    - 接收方:依次检查检查若 帧小于最短帧长、不是发给自己的、CRC检错 帧有差错 → 丢弃帧
  4. CSMA/CA协议:用于IEEE 802.11 无线局域网(WIFI)

轮询访问#

令牌传递协议

  • 获得令牌的节点会持有令牌帧,想要发送数据时,把令牌帧转换为数据帧
     数据帧 = 令牌号 + 源地址&目的地址 + 数据部分 + 是否已接收(false/true)

  • 按固定方向遍历每个节点
     是目的地址:复制数据部分,已接收=true
     回到源地址:检查已接受。true:发送成功;false:发送失败,尝试重传
    alt text

    数据模型

以太网交换机#

  1. 自学习功能:最开始交换表为空[MAC帧:端口号]
    • 记录发送方的端口号
    • 不知道接收方地址 → 广播/直到接收方地址 → 精准发送

U5 网络层#

  1. IP数据报(分组)
    首部(包括源IP地址、目的IP地址) + 报文段
  2. 网络层 实现 主机间的传输(∵首部规定源地址、目的地址)
    数据链路层 实现 节点间的传输

网络层功能#

  1. 异构网络互联#

  • 异构? 每个网络的拓扑结构不同、物理层&数据链路层的实现不同、连接的主机不同
  • 重要设备:路由器 Router/网关
  1. 路由 & 转发#

    • 路由:
      各个路由器通过“路由协议”实现相互配合,最终生成各自的“路由表”。规划分组的“最佳转发路径”
    • 转发
      一台路由器有自己的“转发表”(精简的路由表),将收到的IP数据报选择合适的接口转发出去
  2. 拥塞控制#

    • 原因:网络上出现过量分组,超负荷,引起网络性能下降
    • 拥塞控制方法:
      • 开环控制(静态) :部署网络时,提前设计好的防止拥塞控制的方法
      • 闭环控制(动态):将拥塞信息转发给相关路由器(ICMP协议),路由器动态调整“路由表”

IPv4#

IP数据报/分组 的构成#

首部(20B 固定部分+0~40B 可变部分) + 数据部分
以下是首部固定部分的组成

  1. 第一行

    分组
  2. 分片组装问题

    标识标志片偏移
    16bit3bit13bit
    检查是否来自同一个IP数据报最低位MF=1(是否还有更多分片More Fragment)次低位DF=1(不允许被分片Don’t Fragment)被分片前的位置,×8B为单位
    • 标识相同、源地址相同 → 分片原同属于一个IP数据报

    • 分组
    • 生存时间TTL、协议、首部校验

    • 32 bit的源地址、32 bit的目的地址


分片问题#

alt text 解释

IP地址的分类#

  1. 最初的分类(A/B/C/D/E)
    判断目的IP类别 → 是否跟当前源IP地址的网络号相同 → 看前面的网络号 → 加上MAC地址封装成帧 不同网络的转发过程、 同一个网络的转发过程

  2. 子网划分 & 子网掩码
    源地址、目的地址 & 源IP、目的IP → 是否属于同一个子网 → 跟子网掩码相与后 是否等于目的网络号 → MAC帧转发给目的主机 子网内、 不同子网 有子网划分&无子网划分的网络之间

最初分类
子网划分
分类选择接口匹配后处理
最初ABCDE通过最先几位判断分类 → 保留多少位MAC帧直接定位目的主机
子网划分直接和子网掩码相与,判断属于哪个子网MAC帧直接定位目的主机
  1. 无分类编制 CIDR 网络前缀 + 主机号
    • 子网划分:定长子网划分、变长子网划分 alt text 解答
  2. 路由聚合
    • 会减小路由表的大小,但会引入无效地址
    • 最长前缀匹配原则
      例
    • ⭐综合过程
  3. 网络地址转换 NAT alt text
    NAT路由器包含传输层,普通路由器只包含网络层及以下。

协议#

alt text

ARP协议#

  1. 过程
  2. 集线器广播/交换机通过MAC表转发

DHCP协议#

  1. 发现报文 Discover的组成、非DHCP服务器过程(端口号才发现错误/丢弃)
  2. 提供报文 Offer
  3. 请求报文 Request
  4. 确认报文 ACK

ICMP协议(网际控制报文协议)#

  • ICMP报文的常见分类
    1. 差错控制报告:直接传输数据报,有问题就反馈给发送方
    2. 询问报文:传送之前,先询问接收方,确保网络通畅
  • 怎么区分分类? ICMP最先1B
    1. 差错控制报告
      1. 终点不可达
        路由器返回:目的IP地址不可到达,路由器返回ICMP报文告诉发送方终点不可达;目的主机的端口不存在:目的主机告诉发送方进程不存在
      2. 时间超过
        路由器返回:IP数据报的TTL=0,被丢掉;目的主机返回:IP数据报被分片,但是规定时间内分片没有到齐 → 全部丢弃
      3. 参数问题
        检测出IP首部错误/参数不合法,路由器把IP数据报丢弃
      4. 改变路由(重定向)
        路由器告诉发送方:对于某目的网络,发送到另一个路由器更近,下一次发送到该目的网络时 改变路由
    2. 询问报文
      1. Echo Request、Echo Reply(回送请求/回送回答ping)
        过程:源地址发送ICMP请求,目的地址返回ICMP回答 告诉当前道路是否通畅
      2. 时间戳请求、时间戳回答
        过程:源地址的时间xx,目的地址收到时间戳的时间yy,发送ICMP报文的时间是zz
  • 不必反馈ICMP差错报告报文的情况

IPv6#

  1. 对比
    选项IPv4IPv6
    位数32bit128bit
    转换8位,二进制 → 十进制4×4位,十六进制
    分片源主机/路由器只有源主机
    地址组成(same)网络号+主机号前缀+接口标识符
    数据报结构略略
  2. IPv6下的数据报结构
  3. IPv4到IPv6的迁移
    • 双栈协议:设备同时支持IPv4、IPv6
    • 隧道技术:IPv6封装进IPv4的数据部分。IPv4的数据报 = 首部 + 数据(IPv6数据报)

路由协议#

  1. 路由算法
  2. 分层次的路由协议

RIP#

应用层

  1. 定时更新过程/触发响应
  2. 路由表 = 目的网络 + 距离 + 下一跳路由器
  3. 路由表更新过程
    1. 初始路由表
    2. 每次给邻居发送RIP Response报文:目的网络号不变,距离+1,下一路由器 → 转发来的路由器
    3. 每隔30s,更新
      最初分类
    4. 慢收敛现象
      超过180s没收到邻居路由器 → 设为16,认为不可达
      更新:但还会通过其他Router路由表形成环路,直到 TTL=0 才丢弃

      更新 → 左脚踩右脚(R3通过R4可以到Net2,R4通过R3可以到Net2)
      最初分类
      发现错误:每次迭代距离+1,直到加到16才知道不可达 - 重新接入路由器
      下一个30s,更新 :每一对Router的周期可以不同
  4. RIP的优缺点

OSPF#

网络层,边带权

  1. 建立单链表
    最初分类
  2. 基础
    • 洪泛法:转发到除了入口之外的出口(不回流)
      检测到邻居的变化 → 洪泛最新的链表信息
    • Dijstra算法:每次看总共的最短路径
  3. 怎么生成路由表?
    构造本地链路状态数据库 LSDB(临界表) → Dijkstra算法计算最短路径 → 根据结果,构造路由表
    若网络拓扑变化 → 引起洪泛 → 基于新的网络重新计算路由表
    区域划分
  4. “区域”划分:系统过大,洪泛压力过大,Dijsktra运算开销也过大
    区域划分
  5. (选学)具体过程
    HELLO 问候分组:每10s发送,超过40s说明另据不存在
    DD 数据库描述分组:告诉对方自己有的信息
    LSR 链路状态请求分组:想要对方的哪些信息
    LSU ;链路状态更新分组:响应请求,给对方发送需要的信息
    LSAck 链路状态确认分组:告诉对方已经收到需要的数据

BGP协议#

应用层,基于TCP协议

  1. eBGP:发送BGP报文[目的网络,所属AS,下一跳路由器]
    iBGP:BGP报文不修改 → 根据内部网关协议IGP,找到到达下一跳Router最短路径的路由器。
  2. BGP路由选择
    1. 本地偏好值最高(优先级)
    2. AS跳数最少
    3. 热土豆路由
  3. BGP的4种报文

移动IP#

  1. A在归属网络:和前面一样,直接传数据报
  2. A不在归属网络

U6 传输层#

概述#

alt text

UDP vs TCP#

对比UDPTCP
首部很小,8B更大,20~60B
报文传输传输完整报文,不支持报文拆分/重装支持报文自动拆分/重装
连接性 & 可靠性无连接、不可靠(交给应用层处理)有连接、可靠
拥塞控制不支持拥塞控制支持拥塞控制
传输方式一对一/一对多只支持一对一传输
  • UDP一对多:封装成IP数据报时,IP首部为广播首部 → 会转发给不同网络中相同端口号的进程

UDP#

  1. 数据报格式

TCP#

  1. 面向字节流:UDP协议时面向报文的(把完整应用层报文 → 封装到UDP数据报→ 封装到IP数据报) alt text
  2. TCP报文段格式 alt text
  3. 建立连接(三次握手)
  4. 释放连接(四次挥手)
    区域划分
    - 从客户发出挥手1,到客户进程进入CLOSE状态,至少需要多久?一-1RTT+2MSL - 从客户发出握手1,到服务器进程进程进入CLOSE状态,至少需要多久?一-1.5RTT
  5. TCP传输的过程#

  • 三次握手
  • TCP传输的过程

    1. 发送3bit → Server检查有无比特错误 → 没有就接收 → 发送TCP报文:ack=603(接下来期待收到的序号),rcvwnd=5
      Client 就把发送成功的3bit移出buffer缓冲区 → 读入后面的数据 → 根据发来的rcvwnd动态调整发送buffer为5

    2. 累积确认:连续收到多个报文段,只返回1个ACK

    3. 接收缓冲区满了 → 清空接收缓冲区 → 发送TCP数据报:ACK=609,rwnd=8

    4. 捎带确认:确认+数据

    5. 超时重传

  1. TCP拥塞控制#

    alt text

    • 例

U7 应用层#

网络应用模型:C/S模型、P2P模型

DNS域名系统#

  1. 基础
    • 协议工作原理
    • 域名划分 -顶级域名
  2. DNS四类域名服务器 alt text
  3. DNS查询方式
    1. 递归查询:你问我问题,我想方设法帮你找到最终答案。 alt text

    2. <a href=“https://www.bilibili.com/video/BV19E411D78Q?t=1628.8&p=90 target=“_balnk”>递归查询:你问我问题,我如果不知道最终答案,就告诉你你“下一个该问谁”(踢皮球) alt text


FTP#

  1. 登录
  2. 数据传输
    • 主动模式:客户端告诉Server,想要Server主动传输数据
    • 被动模式:Client传给Server
  3. 总结

电子邮件#

过程

万维网 www#

  1. 访问网络的背后
  2. 响应报文的分类
    • 非连续连接:可以连续建立3个/图片.png的TCP连接
      区域划分
    • 连续连接:流水线方式/非流水线方式
      区域划分
      区域划分
计算机网络
https://lilyly9.github.io/posts/计网/
作者
Stari
发布于
2026-03-05
许可协议
CC BY-NC-SA 4.0