跳到主要内容
SUN / 笔记
← 全部文章

第0章 Overview

计算机网络的分层结构:沙漏结构

image-20260411182457302

网络层不可靠传递:尽力而为,可能丢包

第1章 Introduction

1.1 计算机网络与互联网

  1. 计算机网络:通过通信技术连接的独立计算机的互连集合

  2. 计算机网络提供的服务:通信、资源共享

  3. 从“螺栓螺母”视角看互联网:

    1. 设备:主机、终端
    2. 连接:光纤、铜、无线电、卫星
    3. 路由器:通过网络转发数据包
    4. 协议:控制收发消息的规定
  4. 从服务视角看互联网:

    1. 使用通信设施进行通讯的分布式应用
    2. 通信服务分为无连接与面向连接的服务
  5. TCP可靠性:三次握手(建立链接)+四次挥手(双向确认结束)

<!-- 图片已丢失 -->

1.2 网络边缘与网络核心

  1. 互联网结构:

    • 网络边缘:应用程序、主机、资源
    • 网络核心:路由器、通讯设备等网络交换节点
    • 接入网和物理媒体
  2. 网络边缘:

    • 端系统(主机):运行应用程序
    • 端对端通信
      • 客户/服务器模式(C/S):客户端向服务器发送请求,服务器为客户端提供服务
      • 对等模式(P2P):无固定的客户端或服务器
  3. 网络核心:

    • 结构:网状结构的互联路由器

    • 功能:支持终端通讯

    • 信息传输方式:线路交换(circuit switch)、报文交换(message switch)、分组交换(packet switch)

    <!-- 图片已丢失 -->

  4. 线路交换:

    • 端到端的资源被分配给从源端到目标端的呼叫

    • 优点:性能好

    • 缺点:资源独占,不共享;不适合计算机之间的通信(呼叫方式建立连接时间长,计算机之间的通信由突发性,如果使用电路交换,则浪费的片多)

    • 电话网络中的线路交换:直接建立线路连接、交换机

    • 计算机网络中的线路交换:

      • 三阶段:建立线路连接、数据传输、线路释放 <!-- 图片已丢失 -->
    • 共享连接:将连接的片段分给呼叫,以减少叫后不用带来的浪费

      • 频分FDM
      • 时分TDM
      • 空分 <!-- 图片已丢失 -->
  5. 分组交换:将端到端的数据流分组,每组按固定格式传输

<!-- 图片已丢失 -->

  • 分组是定长的,且必须加上报头(Header)

    • 报头(Header)中包含控制信息,包括:源地址与目的地址、序列号、协议版本、分组总长等
  • 传输:每个分组在网络中按照报头(Header)中路线传输,每次传一跳(hop,即一个路由器)

  • 存储转发网络(store and forward):路由器接收到完整分组后,先存储,再转发

    • 时延:

      传输时延(Transmission delay):一个站点从开始发送数据到数据发送完毕所需要的全部时间

      传播时延(Propagation delay):发送端开始发送数据到接收端收到数据所需要的全部时间

    • 分类:

      数据包网络:每个分组的目的地址决定下一跳(hop),通信前无需建立连接,路由器根据当前分组的目的地址路由,类似问路,动态可变

      虚电路网络:每个分组自带标签(虚电路标识 virtual circuit),建立呼叫时确定路径,不可改变,由路由器维持呼叫状态信息,静态不可变

    • 流水线技术:每个环节并行工作

<!-- 图片已丢失 -->

  • 优点:分组传输时采用链路最大带宽传输

  • 统计多路复用技术:在一条线路上同时传递多个包时,包间没有固定顺序

<!-- 图片已丢失 -->

  1. 线路交换与分组交换的对比

    优点 缺点 适用场景
    线路交换 带宽有保证,通信性能可靠简单抽象,无需担心数据包无序或丢失转发简单,开销少 带宽浪费连接阻塞,资源不足无法服务网络节点需存储所有连接的信息存在连接延迟
    分组交换 可靠性优势,错误不传递统计多路复用提高效率可部署性优势,更容易建立网络 存在阻塞问题,路由器结构更复杂,难以提供良好的网络服务难以保证可靠数据传输 突发式数据传输

1.3 网络接入与物理媒体

  1. 端系统与边缘路由器的连接方式:住宅接入网络、单位接入网络、无线接入网络

    • 住宅接入网络:

      • 点对点传输:调制解调器拨号(不能同时启动多个设备)、非对称数字用户线路ADSL(上行下行速度不同)
      • 电缆调制解调器:混合光纤同轴电缆HFC
      • 光纤到户FTTP:结构:光线分配中心FDH - 光线分配终端FDT - 光纤线路中断OLT,FTTP有单位用户的最高理论容量:1G bps
    • 单位接入网络:有线局域网,仍为电缆连接

    • 无线接入网络:无线局域网

  2. 物理媒体

    • 分类:引导型媒体(有线,如同轴电缆、光纤、双绞线)、非引导型媒体(无线,如无线电)

      • 双绞线:两根绝缘铜线拧合

        • 通用标准:T568A、T568B

    <!-- 图片已丢失 -->

    text
    - 连接方式:直通线(对应位相连,计算机-交换机/设备)、交叉线(12-36,45-78,设备-设备)
    

    <!-- 图片已丢失 -->

    • 同轴电缆:两根同轴铜导线

    • 光缆:高速、低误码率

    • 无线电:用开放空间的电磁波传输数据,双向

      • 地面微波:直线传播,中继站转发
      • 广域网LAN
      • 广域wide-area,eg:蜂窝
      • 卫星:适合广播通信
    • 对比:

    <!-- 图片已丢失 -->

    • 理论极限容量:香农定理:C=Blog⁡2(1+SN)C=B\log_2(1+\frac{S}{N}),其中SN\frac{S}{N}为信噪比,1dB=10log⁡10SN1dB=10\log_{10}\frac{S}{N}

      传播速度极限:光纤理论最高速度为0.66c0.66c

1.4 传输技术

  1. 消息传播方式:单播、多播、广播
    • 单播:计算机成对连接,严格从发送端传输到接收端
    • 多播:一个发送端,多个接收端
    • 广播:所有计算机使用同一通信频道

1.5 类型与拓扑结构

  1. 按地理分类:局域网LAN、城域网MAN、广域网WAN

    • 局域网:使用广播技术,拓扑结构简单:总线、环形、星形、树形拓扑结构

    • 城域网:使用广播技术,可拓展性好:分布式队列,双总线结构DQDB(Distributed Queue, Dual Bus)

<!-- 图片已丢失 -->

  • 广域网:网状拓扑结构,包括两个子网络:资源子网、通信子网

    • 资源子网:负责信息加工,包括计算机、终端、程序等
    • 通信子网:负责信息传递与分发,包括路由与交换机
  1. 计算机网络拓扑结构:网络中各种组件的排列方式

<!-- 图片已丢失 -->

  • 总线拓扑:所有网络设备连接到公共电缆,一个主机故障则整个网络故障
  • 星形拓扑:所有设备连接到交换机,一条电缆故障不会影响整个网络
  1. 因特网拓扑结构:网络的网络

    • 特点:分层,每层由运营商ISP构成,层内彼此平等,低层ISP可视为高层ISP的用户

<!-- 图片已丢失 -->

1.6 网络性能

  1. 连接的属性:

    • 延迟Latency:数据在连接上传输的时间

    • 带宽Bandwidth:单位时间传送数据量

    • 带宽延迟积BDP Bandwidth-delay product:单位时间线路上的总比特数BDP=delay×bandwidthBDP=delay \times bandwidth

    • 利用率 Utilization:单位时间到达比特数Arrival除以传输比特数Bandwidth,ρ=AB\rho=\frac{A}{B}

  2. 延迟:数据包到达链路的速度超过输出链路速度

    丢包:路由器中自由缓冲区满时到达的数据包丢掉

  3. 数据包延迟 = 节点处理时间Nodal processing + 排队时间Queuing + 传输时间Transmission + 传播时间Propagation

<!-- 图片已丢失 -->

  1. 往返时间RTT:从发送方发送完数据,到发送方收到来自接收方的确认总共经历的时间

<!-- 图片已丢失 -->

1.7 协议层与服务模型

  1. 协议:规定同层之间如何通信,包括语法Syntax(协议结构)和语义semantics(表示信息)

    • 特点:分层结构

    • 优点:模块化、抽象方法、可重用

    • 层封装:

<!-- 图片已丢失 -->

  1. 服务:由低层提供给高层的一组通信能力和操作,通过服务原语定义

    类型:面向连接服务(eg:线路交换、虚电路分组交换)、无连接服务(eg:数据包分组交换)

    接口:进行相邻层间的数据的解析与封装

<!-- 图片已丢失 -->

  1. 服务vs协议:

    • 服务:低层实体向上层实体提供它们之间的通信的能力,是通过原语(primitive)来操作的,垂直关系

      协议:对等层实体(peer entity)之间在相互通信的过程中,需要遵循的规则的集合,水平关系

    • 本层协议的实现要靠下层提供的服务来实现;本层实体通过协议为上层提供更高级的服务

1.8 体系结构、OSI、TCP/IP模型

  1. 定义:

    • 网络架构:一组层 + 协议 + 层间接口
    • 协议层次结构:按照层次结构构建网络必须提供的服务
    • 协议栈:特定系统使用的协议列表
  2. ISO/OSI参考模型

    • 七层结构:

<!-- 图片已丢失 -->

  • 物理层:在通过单个物理链路连接的两个系统之间传输比特流bits,eg: 光纤、无线

    数据链路层:允许直接相连(物理连接)主机间通过帧frame交换信息,实现了点到点传输

    • 协议:路由、媒体访问控制MAC

    网络层:实现源主机到目标主机之间多转接结点的传输,数据单元为数据包package,通信子网最高层

    • 协议任务:构建路由表,eg:IP

    • 特点:不可靠传输

    运输层:从会话层获取数据,必要时对数据进行分割,然后将数据传递给网络层,提供主机两个进程之间数据的可靠传输,数据单元为数据段Segment

    • 协议:可靠性、流量控制、大信息打包、框架,eg:TCP、UDP

    • 特点:可靠传输

    会话层:管理会话之间逻辑连接,组织、协调两个会话进程之间的通信

    表示层:数据转换,协商和建立数据交换的格式,解决各应用程序之间数据表示上的差异

    应用层:提供给用户的各种服务,eg: HTTP,email

  • 数据封装过程:

<!-- 图片已丢失 -->

  1. TCP/IP参考模型

    • 四层结构:

<!-- 图片已丢失 -->

第2章 The Physical Layer

2.1 物理层介绍

  1. 功能:在传输线路上进行透明的、可靠的比特流收发

    物理特性:机械特性mechanical、电气特性electrical、功能特性functional、过程特性timing

2.2 数据通信基础

  1. 两种转换:信源编码、信道编码

  2. 物理层传输的问题:衰减attenuation、失真distortion、噪声noise

  3. 带宽B:信道允许通过的频率范围、每秒传输的比特数

  4. 波特率/码元速率/信号率baud rate:信号每秒变化的次数,单位Baud/sBaud/s

    比特率bit rate:每秒传输的比特数,单位bpsbps

    S=B∗log⁡2v=1T∗log⁡2vS=B*\log _2v=\frac{1}{T}*\log_2v,S为比特率,B为波特率,T为频率周期,v为码元数

  5. 奈奎斯特准则:对无噪声干扰的低通信道,带宽HHHz,进行2H2H采样时可以重建信号

    最高波特率=2H最高波特率=2H,最高比特率=2Hlog⁡2v最高比特率=2H\log_2v

  6. 香农公式:对有噪声信道,最高比特率=Hlog⁡2(1+SN)最高比特率=H\log_2(1+\frac{S}{N})

2.3 传输介质

2.4 调制与数据编码

  1. 信号类型:模拟信号(调制-解调)、数字信号(编码-解码)

  2. 数字数据传输:

    • 基带数据传输base-band:不改变数字信号直接传输,要求低通信道,0~HHz
    • 通带数据传输pass-band:高频载波信号传输数据
  3. 数字数据-数字信号编码:

    • 传输方式:

      • 不归零编码 NRZ-L: 0低电平,1高电平

      • 不归零翻转编码 NRZI: 0不变,1翻转

      • 曼彻斯特编码: 中心跳变,周期内0由低到高,1由高到低

      • 差分曼彻斯特编码:中心跳变,0边界翻转,1边界不翻转

      • 块编码 mB/nB :将mB块组映射为nB块组,一般与前面的编码方式联合使用,eg: 4B/5B encoding -> NRZ-I encoding -> transmit -> NRZ-I decoding -> 4B/5B decoding

        (插图未导入)

    • 对比:曼彻斯特编码产生信号的频率高于不归零制,曼彻斯特编码有自同步能力(中间位用于时钟同步)

  4. 带通传输:

    • 用特定频率做载波信号传输,需要调制,传输数字信号

    • 数字信号调制:

      • 调幅 ASK、调频 FSK、调相 PSK

        (插图未导入)

      • MaryM_{ary}调制,增加码元信号值:MaryASKM_{ary}ASK、MaryPSKM_{ary}PSK、MaryFSKM_{ary}FSK,M=2kM=2^k

        (插图未导入)

      • 正交幅度调制 QAM

  5. 模数转换:

    • 数字信号抗噪声效果更好,易恢复、校正、放大,因此一般将模拟信号转化成数字信号传输
    • 脉冲编码调制 PCM :采样-量化-编码
      • 采样:对原始模拟信号采样,采样频率fs⩾2ff_s \geqslant 2f
      • 量化:均匀量化
      • 编码:对每个量化值分配编码,码元比特数nb=log⁡2Ln_b=\log_2L
      • Bit rate=nb×fsBit\space rate = n_b \times f_s
    • 增量传输 Delta Modulation :DPCM
  6. 数据传输:

    • 并行:所有比特位同时传出
    • 串行:异步(按字节传输,每个字节需要start/stop位)、同步(按帧传输,每个帧需要start/stop位)、等时(固定间隔,不需要start/stop位)

2.5 多路复用

  1. 分类:
    • 模拟信号:
      • FDM:频分多路复用,多个信号在不相交的频段上传输
      • WDM:波分多路复用
    • 数字信号:
      • TDM:时分多路复用,每个时间框分成多个时间槽,分配给每个通道使用
        • 同步时分多路复用 Synchronous :每个通道划分固定时间槽,每个时间框同时传输
        • 统计时分多路复用 Statistical :根据需求动态分配时间槽
        • 异步时分多路复用 Asynchronous
      • CDMA:码分多路复用,每个bit位对应一个k位码片,码片互相正交
  2. 扩频技术:
    • 跳频扩频 FHSS :一个码元一个传输频率
    • 直接序列扩频 DSSS :将数字信号与更高数据速率的位序列(伪随机数 PN )组合(称为削片码)来传播信号
    • 跳时扩频 THSS
    • 宽带线性调频 CSS

第3章 数据链路层

3.1 介绍与服务

  1. 功能:在两台物理连接(相邻)的机器之间传送数据链路帧,在不可靠的物理层连接上实现可靠传输
  2. 连接类型:点对点链路、广播链路
  3. 向网络层提供的服务类型:
    • 不确认的无连接的服务:不建立连接,源计算机发送给目的计算机,目的计算机不确认,传输失败不恢复
    • 确认的无连接的服务:不建立连接,需确认,失败重传
    • 确认的面向连接的服务:建立连接,传输的每个帧都编号,需确认

3.2 帧

  1. 帧是数据链路层的传输单元
  2. 帧的同步化
    • 字符计数:每一帧的开头指出字符数
    • 用字节或字符填充标记字节:特殊ASCII码字符序列标记帧的开始和结束,透明传输,eg:ESC
    • 带位填充的起始和结束标志:使用特定比特序列标记帧的开始和结束,eg:01111110
    • 物理层编码冲突
    • 帧间插入时间间隔

3.3 错误检测与纠正

  1. 差错类型:比特错误、传输错误(帧损坏、帧丢失)

  2. 比特错误纠正方法:

    • 纠错码:向前纠错FEC(forward error correction)
    • 检错码 + 纠错技术
  3. 纠错码:能够检测与纠正错误,依靠发送端的冗余信息

    • 海明码:
      • m位信息码,r位纠错码,海明码有1位纠错能力条件:m+r+1≤2rm+r+1 \leq 2^r
      • 海明距离:两个二进制数不同位的个数
      • d个错,海明码检错条件:海明距离至少d+1,海明码纠错条件:海明距离至少2d+1
    • 二进制卷积码 binary convolution code
  4. 检错码:

    • 奇偶校验 Parity check :奇数位错误可检出,偶数位错误不可检出,无校验能力

      • 二维奇偶校验:1位纠错能力,2/3位检错能力,4及以上无法检错
    • 循环冗余校验 CRC Cyclic Redundancy Check

      • 基本原理:在p位二进制数据序列后面附加r位二进制检验码,检验码由原始数据与生成多项式做除法生成,可检测传输错误,生成多项式是二进制数,由发送方和接收方约定

      • 接收方用收到的二进制数除生成多项式,等于0则没有错误

      <!-- 图片已丢失 -->

    • 校验和 Checksum

  5. 错误控制

    • 纠错码 FEC :不保证可靠传输
    • 错误检测+自动重传请求 Error Detection + ARQ Automatic Repeat Request :
      • ED:二维奇偶校验、循环冗余校验、校验和、确认、序列
      • ARQ作用:无差错、无冗余、无损失、顺序不变 -> 将数据链路由不可靠转化为可靠
        • 类型:Stop-and-Wait ARQ、Go-Back-N ARQ、Selective Repeat ARQ
  6. 流量控制

    • 停止等待协议:发送方收到接收方确认后传输下一帧
    • 滑动窗口协议:发送方一次发W帧

3.4 停等协议

  1. 协议定义:发送一帧之后需等待确认,之后发下一帧

  2. 乌托邦单工协议:

    • 假设:数据单向传递,信道无差错,无限缓存空间,发送方接收方始终在线,处理时间可以忽略
    • 特点:无Ack、Seq,无差错控制、流量控制,唯一事件是 frame_arrival
  3. 无差错信道上的单工停止等待协议:

    • 假设:数据单向传递,信道无差错,接收方缓存有限,发送方需确认Ack,超时重传
    • 特点:有Ack、无Seq,帧损坏或帧丢失接收方不反馈Ack,重传
    • 过程:发送方发送帧 -> 接收方收到并发送Ack -> 发送发收到Ack后发送下一帧
  4. 有噪声信道上的单工停止等待协议:

    • 假设:数据单向传递,信道不可靠,接收方缓存有限,需确认Ack、Seq,超时重传
    • 特点:有Ack、Seq,Seq只有0/1,帧损坏、帧丢失、乱序帧需重传
    • 过程:发送方发送帧 -> 接收方收到并发送Ack+Seq -> 发送发收到Ack+Seq后发送下一帧
  5. 链路利用率U=tftT=Ttrans2×Tprop+Ttrans=12×α+1,α=tpropttransU=\frac{t_f}{t_T}=\frac{T_{trans}}{2\times T_{prop}+T_{trans}}=\frac{1}{2\times \alpha+1}, \alpha=\frac{t_{prop}}{t_{trans}},忽略处理时间、接收方Ack传输时间

    提升效率:滑动窗口协议,流水线

3.5 滑动窗口协议

  1. 内容:允许一次传输多帧,发送方与接收方各维护一个等大缓冲区(滑动窗口),帧有编号

    • 发送窗口维护允许发送的帧的范围,包括发送指针(右)和接收确认指针(左),大小不固定

    • 接收窗口维护允许接收的帧的范围,包括接收指针(右)和发送确认指针(左),大小固定

  2. 累计确认:Ack n 表示已累计收到n帧,即一次Ack可确认多帧

  3. 全双工通信:两个独立信道,可同时在两个方向传输

  4. 滑动窗口协议分类:

    • 1 bit sliding window protocol ARQ:发送窗口大小为1,接收窗口大小为1

      • 链路利用率:U=L/RRTT+L/RU=\frac{L/R}{RTT+L/R}
      • 改进:流水线技术,一次传w帧,U=w×L/RRTT+L/RU=\frac{w\times L/R}{RTT+L/R}
    • go back n ARQ(GBN):发送窗口大小大于1(<2n−1< 2^n-1),接收窗口大小为1,接受方必须按发送顺序确认

      出错处理:接收方丢弃从出错帧开始的所有帧,直到出错帧正确传输;发送方回退至出错帧全部重传

    • Selective Repeat ARQ:发送窗口大小大于1(<2n−1< 2^n-1),接收窗口大小大于1,只有出错帧重传

      • 接收端发出Ack i后窗口移动到第i位,Ack i表示前i帧已收到

    <!-- 图片已丢失 -->

    • 流水线技术:提高信道利用率
  5. 序列字段大小n、滑动窗口最大尺寸W、通道最大利用率U的关系

    • W=2n−1W=2^n-1,W=2×BD(带宽延时积)+1=1UW=2\times BD(带宽延时积)+1=\frac{1}{U},BD=TpropTtransBD=\frac{T_{prop}}{T_{trans}}

3.6 HDLC 与 PPP 协议

  1. 高级数据链路控制HDLC, High-Level Data Link Control:ISO标准的数据链路协议,针对点对点链路

    • 数据帧格式:

    <!-- 图片已丢失 -->

    • 标志字段:01111110(7EH)
    • 控制字段:前两位帧类型:信息帧、监督帧、无编号帧,后六位根据帧类型定义
    • 帧校验序列:16位CRC校验,多项式为x16+x12+x5+1x^{16}+x^{12}+x^5+1
  2. 点对点协议PPP, Point-to-Point Protocol,为因特网数据链路层协议,针对点对点链路

    • 将IP数据包封装到串行链路的方法

    • 子协议:

      • 链路控制协议LCP(link control protocol):发送端和接收端通过发送LCP包来确定在数据传输中的必要信息,用于建立点对点链路
      • 网络控制协议NCP(Network Control Protocol):用于对多种网络协议进行配置协商
    • 帧格式:

    <!-- 图片已丢失 -->

    • 不提供的功能:无错误控制与恢复、无流量控制、无序传输、不支持多点链路

4. 介质访问控制MAC Medium Access Control

4.1 MAC

  1. 共享信道的广播网络的数据链路层使用介质访问控制子协议MAC

    • 关键技术:信道分配(效率、公平、浪费时间最小)
      • 静态信道分配:用户静态分配带宽FDM或时间槽TDM,低效、性能差
      • 动态信道分配:MAC
  2. MAC:

    • 位置:数据链路层靠近物理层的子层,上一个子层为逻辑链路层

    (插图未导入)

    • 分类:信道划分、随机接入、受控接入协议
      • 信道划分介质访问控制 Channel partitioning:时分、频分、码分
      • 随机访问介质访问控制 Random access:不划分信道,允许冲突,冲突时恢复
      • 轮询访问介质访问控制 Controlled-access protocols:节点按顺序共享介质,公平
  3. 随机接入 Random Access:

    • 关键问题:如何检测冲突、冲突后如何恢复

    • 分类:纯AlOHA协议 pure ALOHA,时隙ALOHA slotted ALOHA,CSMA,CSMA/CD,CSMA/CA

    • 纯ALOHA协议 pure ALOHA:允许用户自由发送数据,发生碰撞时冲突帧丢弃,利用回退机制返回帧状态,丢弃帧重传

      • 吞吐率:S=G×e−2GS=G \times e^{-2G},Smax=0.184,G=12S_{max}=0.184,G=\frac{1}{2},G是每秒发送帧的个数,实际发送成功的帧的个数等于G*S
    • 时隙ALOHA协议 slotted ALOHA:将时间划分为时间槽,时间槽大小等于帧传输时间,仅时间槽开头可发送帧

      • 吞吐率:S=G×e−GS=G \times e^{-G},Smax=0.368,G=1S_{max}=0.368,G=1,G是每秒发送帧的个数,实际发送成功的帧的个数等于G*S
    • 载波监听多路访问 CSMA, Carrier Sense Multiple Access:监听信道,空闲时可发送帧,信道忙时不可发送帧

      • 冲突原因:传播时延,传播时延越长性能越差
      • 易受攻击时间=tprop易受攻击时间=t_{prop}
      • 分类:无坚持CSMA,1坚持CSMA,p坚持CSMA
        • Non-persistent:信道忙则等待随机时间后重新监听信道,空闲立刻传输,由于推迟监听,冲突减少,核心是减少冲突
        • 1-persistent:信道忙则持续监听信道,空闲立刻传输,冲突则等待随机时间后重传,核心是减少传输时间
        • p-persistent:信道忙则持续监听信道,空闲时以概率p发送,1-p时等待tpropt_{prop}到下一时隙,下一时隙仍按概率p发送
    • 含冲突检测的载波监听多路访问 CSMA/CD CSMA with Collision Detection:传输时发送方仍然监听是否冲突,有冲突则停止发送并发出干扰序列 jam sequence,告知所有站点发生冲突,等待一段随机时间后恢复

      • CSMA/CD广泛用于总线结构LANs

      • 检测冲突:收发器检测信号,观测到信号超过传输功率则说明冲突发生

        (插图未导入)

      • 争用期:最差情况下需要两倍传播时延才能检出冲突

      • 约束:帧传输时间≥冲突检测时间=2∗tprop+jam sequence transmission time帧传输时间\geq 冲突检测时间=2*t_{prop}+jam \space sequence \space transmission \space time

      • 最小帧长Lmin=Ra=2R(S0.7c+Tphy)L_{min}=Ra=2R(\frac{S}{0.7c}+T_{phy}),R为数据传输速率,TphyT_{phy}为物理层延迟

    • 含冲突避免的载波监听多路访问 CSMA/CA CSMA with Collision Avoid:

      • CSMA/CA常用于**无线网络 **Wireless networking,CSMA/CD不可用于无线局域网
      • 解决了隐蔽站点问题 hidden terminal problem
      • 过程:
        • A监听到信道空闲,等待DIFS后仍空闲则发送B一个RTS
        • B收到RTS后等待SIFS,之后发送A一个CTS,成功建立连接
        • AB之间互发信息之前需等待SIFS

4.2 LANs and IEEE 802

  1. 局域网 LANs:

    • 特点:私人拥有、小空间、高速度、高可靠性

    • 拓扑结构:物理拓扑结构、逻辑拓扑结构

  2. IEEE 802 参考模型:规定了数据链路层分2层协议层次结构,MAC、LLC(logical link control)

4.3 以太网 Ethernet

  1. 基本信息:

    • 拓扑结构:总线结构、星形结构、树形结构
    • 信号:数字信号,基带传输
    • 基于协议:IEEE 802.3 MAC,即CSMA/CD
    • 传输媒体:同轴电缆、双绞线、光缆
  2. 以太网帧结构:

<!-- 图片已丢失 -->

  • 帧内元素:

    • 前置字段 Preamble:同步时钟频率,包括7个字节的10101010和1个字节的10101011

    • 地址 Address:6个字节,物理硬件地址MAC,需要适配器进行物理地址到逻辑地址的转换

    • 类型 Type:指出高层协议的类型

      • 大小:64B - 1518B
  1. 以太网使用1-persistent CSMA/CD:线路理想则立即发送,线路忙则等待随机时间后再检测,发生冲突则广播jam信号,等待随机时间后恢复,等待时间由指数回退算法确定

    • 指数回退算法:R=random[0,2k−1],WaitingTime=R×SlotTimeR=random[0,2^{k-1}],WaitingTime=R\times SlotTime

      k=min⁡(retransmission,10)k=\min(retransmission,10)

      SlotTime=2∗propagation delay+Jam sequence transmission time=51.2us(以太网10Mbps)SlotTime=2*propagation \space delay+Jam \space sequence \space transmission \space time \\=51.2us(以太网10Mbps)

    • 失败16次后会放弃,并报告失败

    • 无冲突时最大吞吐率T=Ltprop+ttransT=\frac{L}{t_{prop}+t_{trans}},最大效率U=TR=1α+1,α=tpropttransU=\frac{T}{R}=\frac{1}{\alpha+1},\alpha=\frac{t_{prop}}{t_{trans}},R为数据传输速率

  2. Switched Ethernet:将网络划分为多个子网络,之间由高速交换机switch连接

    (插图未导入)

    • 交换机代替主机:解决了Ethernet Hubs结构冲突传播的问题,冲突只在冲突域内传播

4.4 无线局域网 Wireless LAN

  1. MAC功能:

    • 可靠数据传输:

      • 帧交换协议:Ack
      • 一次交换4帧
    • 访问控制:

      • 分布式协调功能DCF:基于竞争,CSMA/CA
      • 点协调功能PCF:无争用,集中式访问协议

      DCF、PCF被集成在一个超帧中

    • 安全

4.5 局域网互联 LAN Interconnection

  1. 网络互连:不同设备在不同层次进行交换
    • 物理层:电信号,中继器repeater和集线器hub
    • 数据链路层:帧,网桥bridge和交换机switch
    • 网络层:数据包,路由器router
    • 传输层及以上:消息,网关gateway
  2. 中继器Repeater和集线器Hub:存在冲突传播,不支持不同局域网设备,对最大节点数和距离有限制
  3. 网桥Bridge:通过MAC连接两个或多个局域网,并传输帧
  4. 路由器Router:连接不同子网,对主机不透明
  5. 网关Gateway:连接不同体系结构的网络,进行地址映射、报文格式转换、网络协议转换
  6. 网桥/交换机和路由器的结合:网桥自学习算法learning bridge algorithm、生成树算法spanning tree algorithm

4.6 LAN Switching

  1. 网桥:连接两个或多个局域网,并传输帧,每个局域网有自己的冲突域,网桥连接的局域网称为扩展局域网

<!-- 图片已丢失 -->

  1. 交换机:基于硬件的交换结构构成专用通道,分割冲突域

    (插图未导入)

    • 交通隔离:交换机将子网划分为局域网段,每个局域网段为一个冲突域collision domain,不同网段间通常不传输帧
  2. 直通交换 Cut-Through Switching:

    • 提出原因:缓冲帧花费的时间占总延迟的很大一部分

    • 要求:尽早开始传输,重叠传输

    • 特点:延迟为传输帧头的时间,即检查帧头后开始传输

    • 自学习机制:辅助确定帧传播路径

      • 交换机维护一个交换机表switch table**(MAC Address, Port, Age)**

        MAC address:目标地址,Port:输出端口,Age:该条记录存在的时间

      • 原理:若目的MAC地址有记录则按照记录的路径传输,否则洪泛(向交换机所有接口广播),并更新交换机表

    • 缺点:洪泛会导致消息循环loop -> 生成树算法Spanning Trees

  3. IEEE 802.1d规定生成树协议STP,网桥通过网桥协议数据单元BPDU构建生成树,称为透明网桥

    • 网桥ID BID:标识每个网桥,包括(Bridge Priority(2B), MAC Address(6B)),优先级越小越容易选中
    • 根网桥Root Bridge:最小ID的网桥,ID相同时选MAC地址最小的
    • 根端口root port:非根网桥到根网桥距离最小的端口
    • 工作原理:选出根网桥,所有非根网桥选择到达根网桥的最短路径,之后选择根端口和指定端口,完成生成树建立,当网络拓扑结构变化时,交换机自动启动备份链路
    • 无广播风暴,无MAC表震荡,无多帧复制

4.7 虚拟局域网VLAN

<!-- 图片已丢失 -->

  1. 优点:可划分广播域、更高的安全性、软件配置

  2. 虚拟局域网中继VLAN Trunk:点到点链路,一个端口可以承载多个VLAN的流量

<!-- 图片已丢失 -->

  • 使用帧标记Frame tagging区分VLAN,由交换机自动插入删除

<!-- 图片已丢失 -->

  1. 虚拟局域网中继协议 VLAN Trunk Protocol

5. Network Layer

5.1 网络层与设计问题

  1. 网络层工作结构:

  2. 网络层任务:了解子网拓扑结构,选择正确路径传输数据包,源主机与目的主机不同网络时处理

  3. 网络层功能:

    • 异构网络互联
    • 转发与路由
  4. 包交换方式:分组交换,包括虚电路分组交换(面向连接)、数据报分组交换(无连接)

    • 虚电路分组交换virtual circuit:建立虚电路表(入端口,入虚电路号,出端口,出虚电路号),第一个分组探索、建立虚电路表,后续分组按虚电路表传输而不需要目的地址,传输路径固定
    • 数据包分组交换datagram:路由表(目的地址,输出端口),不需要建立连接,传输路径不固定,可能乱序到达
      • 目的地址选择:最长前缀匹配

5.2 路由算法

  1. 转发:将包从路由器输入传输到合适的路由器输出,本地动作

    路由:建立与维护源地址到目的地址的路由表,由路由算法决定,全局规划

  2. 路由算法:确定与维护路由表,决定源地址到目的地址的最佳路径

    • 分类:非自适应路由选择算法(静态路由)、自适应路由选择算法(动态路由)
      • 非自适应路由选择算法:最短路径优先算法Dijkstra、洪泛算法flooding
      • 自适应路由选择算法:距离向量路由算法Distance Vector Routing、链路状态路由算法Link State Routing、层次化路由算法
    • 自适应路由选择算法分类:集中的、独立的、分布式的
      • 汇集树:从源到给定目的地的一组最优路由形成的树
  3. 洪泛算法Flooding:广播,利用跳步计数器/生存期限制一个包的广播次数,避免广播风暴(在数据链路层,交换机无法使用这一技术,必须预先去除环结构)

  4. 距离向量路由算法:基于Bellman-Ford算法,每个结点维护一个距离向量表(目的地,下一跳,距离)

    • Bellman-Ford算法:dx(y)=min⁡z(dz(y)+w(x,z))d_x(y)=\min_{z}(d_z(y)+w(x,z))

      • 特点:迭代、异步、分布式
    • 距离向量表更新:每个结点周期性地将自己的距离向量表发送给相邻结点,用于更新距离

    • 存在无穷计数问题:一个节点断开后,其他节点距离会逐渐增大到无穷大

    • 慢收敛问题的解决:

      • 有限计数:使用有限数代表无穷大(不可达)

      • 水平分割split horizon:如果 Z 通过 Y 到达 X,则 Z 不将X通告给Y

      • 毒性逆转poisoned reverse:如果 Z 通过 Y 到达 X,则 Z 将X通告给 Y, 但X的距离为无穷大

        • 不能完全消除路由回路问题
  5. 链路状态路由算法Link State Routing:每个路由器维护整个网络的拓扑图,将直接连接信息定期洪泛,在收到距离向量后,路由器更新本地拓扑图并重新计算最短路径

  6. 层次化路由算法:路由器分区,每个路由器维护包括区内路由器与其他区域距离的路由表

5.3 拥塞控制算法congestion

  1. 拥塞控制方法:增加传输能力/减少通信量
    • 分类:开环:事先预防,不利用反馈,闭环:反馈后解决
  2. 虚电路拥塞控制:拥塞时拒绝建立虚电路,选择替代路由建立新的虚电路,预先协商电路以流出缓冲区
  3. 数据包拥塞控制:抑制包(choke packet):拥塞时向拥塞数据包的源主机返回一个抑制包,源主机收到后按一定比例减少发向特定目的地的流量,并在固定时间间隔内忽略指示同一目的地的抑制包

5.4 IP

  1. 因特网可视为许多自治系统AS Autonomous System的集合,网络IP协议将这些网络连接起来

  2. IP数据包格式:IP header(最少20字节)+data

    (插图未导入)

  3. IP数据包分段与重组:

    • 最大传输单元MTU:IP数据包的最大长度

    • 分段传输:一个数据包划分为若干段数据包,包头每个数据包都复制一份,只在目的地址重组

    • offset字段13位,以8字节块为单位,表示当前数据包相对未分段数据包的偏移量

<!-- 图片已丢失 -->

  1. IP地址:

    • 32位,用于标识主机和路由器的接口,主机1个IP,路由器多个IP,因特网设备IP无重复
    • 地址表示:二进制、十进制,点号分隔4个字节
    • IP地址分配方案:有类寻址、子网、无类寻址、网络地址转换
  2. 有类寻址classful addressing:IPv4地址划分方案

    • 将32位地址按照第一个字节内容划分为5类:A(0-127块,每块16777216个地址)、B(128-191块,每块65536个地址)、C(192-223块,每块256个地址)、D(224-239块)、E(240-255块)

      (插图未导入)

    • IP地址分两层:网络号netid、主机号hostid,路由器鉴别位置在netid、hostid之间

    • 一个局域网上主机或路由器的IP地址网络号一样,路由器每个接口都有一个不同网络号的IP地址,唯一标识一个子网

    • IPv4的问题:B类网不够用,C类网没人用;小网络的路由表太大,浪费资源

      • 解决:划分子网Subnet,无类别域间路由CIDR,网络地址转换NAT
  3. 子网subnetting:

    • 方法:将一个网络划分为多个子网,解决网络IP浪费的问题

    • IP地址分三层:网络号netid、子网号subnetid、主机号hostid,路由器鉴别位置在netid、subnetid之间

      (插图未导入)

    • 子网掩码:将IP地址划分为网络号(netid+subnetid)和主机号(hostid),网络地址=IP\andMask网络地址=IP \and Mask

      • 子网掩码不需要与字节边界对齐
      • 子网掩码可以不连续
      • 全0子网与全1子网不可用
    • 子网转发报文:

      1. 用掩码取出目的地址网络号,若destip==subnetipdestip==subnetip,则在同一个子网上传输;否则将报文转发给路由器
      2. 路由器根据路由转发表传输,转发表结构:(subnet, mask, nextHop)
  4. 无类寻址classless addressing:无类别域间路由CIDR Classless InterDomain Routing

    • 目标:在最小化路由器需要知道的路由数量与高效分发地址之间取得平衡
    • 内容:不再按5类划分网络,IP地址子网长度任意,地址格式:a.b.c.d/x,x表示IP地址中子网位数
      • IP地址根据x划分为Prefix+Suffix,总长32位,Prefix:块中所有地址共用,用于区分块,Suffix:区分块中地址
    • 作用:将多个网络合并成一个大的网络,称为超网
    • 路由汇聚route aggregation:将路由表中prefix相同且nextHop相同的地址合并成一个CIDR地址,以减小路由表大小
      • 当一个IP在路由表中有多个prefix匹配时,按最长匹配原则选择
      • 分层寻址:prefix逐层汇聚,形成树状结构
    • 优点:灵活分配不同块的大小
  5. 网络地址转换NAT Network Address Translation

    • 意义:快速修复IP地址耗尽的问题

    • 内容:为每个公司分配唯一的IP地址(NAT IP Address),公司内部每个主机都有一个唯一内部IP地址,当数据包到达公司IP时进行地址转换,传给内部某主机IP

      • 三个地址域被声明为私有,用于该分配方案:10.0.0.0-10.255.255.255/8、172.16.0.0-172.31.255.255/12、192.168.0.0-192.168.255.255/16
      • 对外部世界,公司内部的IP分配时不可见的;公司内部数据传输到外界时,都使用公司的唯一IP
    • NAT路由转发表记录每个((source IP address, port #), (NAT IP address, new port #))对,NAT路由表进行替换:

      • 输出数据包:(source IP address, port #) -> (NAT IP address, new port #)
      • 输入数据包:(NAT IP address, new port #) -> (source IP address, port #)

      (插图未导入)

    • 缺点:违反端到端的观点,两个NAT主机难以建立连接

  6. IP数据包的路由与转发:

    • 按照是否在同一子网分类:直接交付direct delivery、间接交付indirect delivery
    • 路由根据路由表中内容分类:
      • 下一跳路由Next-hop routing:(host destination, next hop),当前子网
      • 网络特定路由Network-specific routing:(network destination, next hop),mask不是全1
      • 特定主机路由Host specific routing:(host destination, next hop),mask全1
    • 路由表包括default routing,只有这个位置允许路由0.0.0.0/0
    • 路由表至少四项内容:(mask, destination network address, next hop address, interface)
  7. 互联网控制报文协议ICMP Internet Control Message Protocols

  • 作用:在主机和路由器之间传输IP状态和错误消息

  • ICMP是IP数据包的有效负载:

    (插图未导入)

  • ICMP主要类型:

    (插图未导入)

    • 目的地址不可达Destination Unreachable(3):路由器发送至源主机
    • 源点抑制Source Quench(4):路由器或目标主机具有源主机的传输速率时发送至源主机,源主机限制传输速率直到quench结束
    • 重定向Redirect(5):对于直达的数据包,路由器向源地址发送报文,指出最佳的first hop,提高网络效率
    • 回送请求Echo Request(8) / 回送应答Echo Reply(0):
      • 格式:ICMP header (4 bytes) + identifier (2 bytes) + sequence number (2 bytes) + data (4 bytes),identifier、sequence用于回送请求与应答之间匹配
      • 作用:确认主机是否可达
      • 工作过程:
        1. 源主机发送echo request报文
        2. 目的主机收到报文,交换IP报文源地址和目的地址,ICMP类型设置为0,计算ICMP的checksum,identifier、sequence、data不变
        3. 目的主机发送echo reply报文
    • 超时(11):数据包超出生存期TTL,或重组时间内未收到完整数据包
  1. 地址解析协议ARP Address Resolution Protocol:

    • 作用:IP地址和MAC地址之间的转换,建立从IP地址到相应硬件地址的动态映射

      (插图未导入)

    • 每个IP结点都有ARP表:(IP address, MAC address, TTL)

    • ARP工作过程:

      1. 询问:某主机广播,向所有LAN中结点发送ARP请求包,询问目的IP主机的MAC地址
      2. 应答:拥有目的IP的MAC地址的主机单播返回该主机目的IP的MAC地址
    • ARP报文格式:

      (插图未导入)

    • IP转发算法 IP Forwarding Algorithm:ARP解决是位于子网内的地址转换问题,对于不在一个子网的情况,需要发送给缺省路由器,转交到下一个网络解决

  2. 反向地址转换协议RARP Reverse Address Resolution Protocol:

    • 作用:主机根据自身MAC地址查询自身IP地址
    • 工作过程:
      1. 主机发出受限广播(本地广播),询问本地网段的RARP服务器子集的IP地址
      2. 本地网段的RARP服务器收到请求后检查RARP列表,查询该MAC地址对应的IP地址,存在则返回一个响应数据包,提供该MAC地址的IP地址
    • RARP服务器:维护映射表(data link address, IP address)
  3. 路由协议:将路由器聚合成一个自治系统AS Autonomous Systems

    • Intra-AS:域内路由,运行内部网关协议IGP,AS内路由器运行相同的AS内部路由协议
    • Inter-AS:域间路由,运行外部网关协议EGP,不同AS内路由器可以运行不同的AS内部路由协议

<!-- 图片已丢失 -->

text
- **内部网关协议IGP Interior Gateway Protocols**
  - 常见协议:RIP(应用层协议,UDP)、OSPF(网络层协议,IP)、IGRP(应用层协议,TCP)
  - **路由信息协议RIP** (Routing Information Protocol):
    - 基于**距离向量算法**,距离用跳步数(max = 15 hops)计算
    - 维护:每30秒邻居之间使用UDP交换一次通告advertisement,包括该AS内最多25个目的子网
    - 每个路由器维护**RIP表**(destination network, next router, hops),根据advertisement更新
    - **RIP是应用层协议,通过UDP数据段维护**
    - 链路失效:超过180秒未收到邻居advertisement时认为邻居失效,将该信息通过advertisement迅速广播,使用**毒性逆转技术**避免环路
  - **开放式最短路径优先协议OSPF** (Open Shortest Path First)
    - 链路状态算法:路由器使用**Dijkstra算法**确定以自身为根结点到所有子网的最短路径树,链路发生变化时**洪泛**消息,根据广播的链路状态包更新链路状态信息
    - 层次结构:分为局部区域local area和主干区域backbone
  - **内部网关路由协议IGRP** (Interior Gateway Routing Protocol)
    - 基于**距离向量算法**,是应用层协议,通过TCP维护
- **外部网关协议EGP** Exterior Gateway Protocols
  - **边界网关协议BGP** (Border Gateway Protocol)
    - 基于**路径向量协议**Path Vector Protocol,获取相邻AS的可达信息并传播给其他AS
    - BGP目标是找到一条能够到达目的网络且较好的路由,而不是最优路由
    - 应用层协议,基于TCP

14. IPv6:

text
- 采用**128位**IP地址,解决了IPv4地址耗尽的问题

- IPv6 header格式:
<!-- 图片已丢失 -->
- 使用8个16进制数表示IPv6地址

  - 缩写:前导0可以不写,连续为0的一组或多组可以缩写为::(只能缩写一次)

第6章 传输层

6.1 传输服务

  1. 传输层为不同主机上的进程间提供端到端的逻辑通信
  2. 服务分类:面向连接的服务TCP、不可信无连接的服务UDP

6.2 传输协议元素

  1. 寻址:对于网络层提交上来的报文段,传输层根据报文段首部的目的端口号将报文提交给相应的应用进程
    • 传输服务访问点TSAP transport service access point,面向应用层,通常指端口Port,用于区分进程
    • 网络服务访问点NSAP network service access point,面向网络层
  2. 建立连接:遗忘域Forbidden region,三次握手
  3. 连接释放:将连接视为两个单向连接,由发送方关闭
  4. 流量控制与缓存
  5. 复用
  6. 错误恢复

6.3 简单传输协议

  1. 基于连接,使用原语

6.4 因特网传输层

  1. 传输层寻址:端口号port,16位,用于标识进程
    • 端口号划分为三段:0-1023(用户可用),1024-49151(已注册),49152-65535(动态)
    • 套接字地址socket address:(IP address, port number)
    • 传输层建立TCP连接需要一对套接字,(Local IP address, Local port, Remote IP address, Remote port)
  2. 复用Multiplexing:多个进程使用同一协议,解复用Demultiplexing:接收方将数据分解发送给对应进程

6.4.1 用户数据报协议UDP User Datagram Protocol

  1. 特点:

    • 基于数据包datagram
    • 不可靠的无连接
    • 支持单播、多播,复用、解复用
    • 应用:域名解析协议DNS、SNMP
  2. UDP数据包格式:

<!-- 图片已丢失 -->

  • 总长8-65535字节,头部8个字节

  • 计算校验和时要添加12个字节的伪首部,如果数据部分不是偶数个字节,还要在尾部填充一个全0字节,对整个UDP序列计算每16位和的反码

<!-- 图片已丢失 -->

6.4.2 传输控制协议TCP Transmission Control Protocol

  1. 特点:

    • 基于字节流,传输基本单位是TCP报文段Segment
    • 可靠的面向连接、有序
    • 只支持单播
    • 复用与解复用:使用端口,建立虚电路连接
    • TCP连接的端点:socket -> (host, port)
    • TCP连接用四元组表示:(src, src port, dest, dest port)
  2. TCP支持可靠传输:

    • 校验和 checksum
    • 序号 sequence number
      • TCP将数据流划分为片段,每段有一个32位序列号,初始序号随机生成
      • 序号中Ack字段指出下一个期望接收的字节序号,Ack字段是累积的
    • 重传 retransmission
  3. TCP报文段格式:

    (插图未导入)

    • 控制字段:

      (插图未导入)

    • TCP追踪校验和checksum是必须的,计算checksum时添加12个字节的伪首部

  4. TCP建立连接过程:

    • 建立连接:三次握手:SYN(seq x) -> SYN+ACK(seq y, ack x+1) -> ACK(seq x+1, ack y+1)

<!-- 图片已丢失 -->

text
 * **ACTIVE OPEN**:client发送,初始化client序列号ISN,不携带数据,消耗一个序列号
 * **PASSIVE OPEN**:server发送,初始化server序列号ISN,确认client序列号,不携带数据,消耗一个序列号
 * **Client ACK**:client发送,确认client序列号ISN,若不包括数据则不消耗序列号
  • 数据传输:每次交换双方的SEQ、ACK,表示收到对方的ACK请求作为发送给对方的新SEQ,收到对方的SEQ+length作为我方确认的ACK

  • 连接终止:四次挥手:FIN(seq x, ack y) -> ACK(seq y, ack x+1) -> Client断开连接-> FIN(seq z, ack x+1) -> ACK(seq x+1, ACK z+1) -> Server断开连接

<!-- 图片已丢失 -->

text
 - FIN不携带信息时,消费一个序列号

 - **2MSL等待**:避免最后一次ACK发送失败,TCP要求等待2MSL的时间,确认关闭当前连接

   - 2MSL等待状态:TIME_WAIT,$2MSL = 2*段最长生存周期$

   <img src=".\img\TCP中2MSL.png" alt="image-20220601105048037" style="zoom: 67%;" />
  • 连接重置:发送RST标记
  1. TCP可靠传输:checksum(解决比特级错误)、sequence numbers(解决序列级错误)、acknowledgement(累计确认)、timeouts、retransmission

    • timeouts

      • 估算RTT:SampleRTT:从段传输到ACK接收的时间

      • EstimatedRTT=(1−α)∗EstimatedRTT+α∗SampleRTTEstimatedRTT=(1-\alpha)*EstimatedRTT + \alpha*SampleRTT,α=0.125\alpha=0.125

        DevRTT=(1−β)∗DevRTT+β∗∣SampleRTT−EstimatedRTT∣DevRTT=(1-\beta)*DevRTT + \beta*|SampleRTT-EstimatedRTT|,β=0.25\beta=0.25

        Timeout=EstimatedRTT+4∗DevRTTTimeout=EstimatedRTT+4*DevRTT

  2. TCP滑动窗口技术实现错误控制、流量控制、拥塞控制

    • 滑动窗口:发送窗口+接收窗口,发送窗口<=接收窗口

    • 糊涂窗口综合症:

      • 问题:发送端接收端速度不匹配,导致网络上产生很多小包(报头长数据少),数据传输效率低
      • 解决:
        • 发送端:Nagle算法,数据够多再发
        • 接收端:延迟确认,Clark算法:有足够空间再通告ACK
    • 拥塞控制:拥塞窗口+拥塞策略AIMD(Additive Increase Multiplicative Decrease)

      • 拥塞控制参数:拥塞窗口cwnd + 慢速启动阈值ssthresh

        • 拥塞窗口:send window=min⁡(flow control window,congestion window)send \space window = \min(flow \space control \space window, congestion \space window)
        • 慢速启动阈值:慢启动指数增长到阈值,初值216−12^{16}-1
      • 发送端拥塞检测:丢包或收到3个重复ACK

      • 动作:减小拥塞窗口大小,从而限制发送的数据量

      • 拥塞控制两阶段:慢启动阶段(swnd < ssthresh)、拥塞避免阶段(swnd >= ssthresh)

        • 拥塞窗口大小从1开始,每收到一个ACK就窗口大小+1,每个RTT发送窗口大小*2

        • 增长至阈值后每次+1cwnd\frac{1}{cwnd},每个RTT发送窗口+1

        • 遇到网络拥塞后,ssthresh更新为拥塞窗口大小的一半,拥塞窗口大小减为1

        (插图未导入)

        • 快速恢复:遇到拥塞后,ssthresh更新为拥塞窗口大小的一半,拥塞窗口大小减为ssthresh

第7章 应用层

7.1 应用与应用层

  1. 应用层是用户与网络的接口,定义了进程process如何发送与回应消息message
  2. 开放域协议:HTTP、SMTP
  3. 专有协议:Skype
  4. 应用层通过API (application programming interface)访问传输层

7.2 C/S与P2P应用模型

  1. 客户-服务器模型 C/S:
    • 服务器server:固定IP地址
    • 客户client:动态IP地址,通过server与其他client交流
    • 应用:HTTP、FTP、Web service
  2. 点对点模型 P2P:
    • 每个结点都可以发起连接,可以提供、消费数据

7.3 域名系统DNS

  1. 域名系统DNS Domain Name System:一种基于域的分层命名方案和分布式数据库系统,用于将主机名和电子邮件目的地址映射到IP地址

  2. DNS名称空间:层次化命名方式

<!-- 图片已丢失 -->

  • 域是指这一命名空间中的子树
  • 域名是从叶结点到根结点的一条路径
  • 全称域名FQDN Fully Qualified Domain Name
  • 区域Zone:可以被直接管理的名称空间
  • 授权Delegation:给区域设置一个名称服务器name server,可以管理主机名和子域
  1. DNS服务器的层次结构:根服务器、最高级域TLD服务器、授权DNS服务器

<!-- 图片已丢失 -->

  • 每个服务器都知道根服务器地址,每个服务器都知道其直接子节点的地址
  1. DNS使用:

    • 部件:本地DNS服务器、主机解析软件
    • 请求方式:
      • 递归请求:从本地DNS服务器经过根服务器沿着链状传递请求和地址解析结果
      • 迭代请求:由本地DNS服务器直接进行多次查询,根据查询结果迭代查找下一个路由器
    • 名称服务器会缓存、更新域名与ip的映射
  2. DNS数据库资源记录结构:(name, TTL, class, type, value)

  3. DNS协议消息格式:

<!-- 图片已丢失 -->

7.4 文件传输协议FTP

  1. 特点:
    • 用于向远程主机收发文件,使用C/S模型
    • 使用TCP协议,建立两个TCP连接,port 21用于控制连接,port 20用于数据连接
  2. 控制连接建立过程:
    • 服务器打开21端口,被动等待客户进程发起连接请求
    • 处理客户端请求,并行开启数据连接
    • 关闭数据连接,回到等待状态
  3. 数据连接建立过程(已建立控制连接):
    • 客户端打开临时端口(ephemeral port)x,发送PORT请求告知服务端x
    • 服务端通过20端口与客户端x端口建立数据连接
  4. 匿名FTP:可使用匿名FTP登陆获取公共文件
    • 用户名:annonymous

    • 口令:guest或邮件地址

7.5 E-mail与SMTP/POP/IMAP

  1. 电子邮件Email三个主要组成部分

    • 用户代理UA:给用户提供发送和接收邮件的接口
    • 邮件传输代理MTA:邮件服务器,核心组件,发送和接收邮件,可分为client MTA(发送端邮件服务器)和server MTA(接收端邮件服务器),eg: SMTP
    • 邮件访问代理MAA,eg: POP、IMAP
  2. 简单邮件传输协议SMTP Simple Mail Transfer Protocol:C/S协议

    • 发送方 -> 发送方邮件服务器 -> 接收方邮件服务器 -> 接收方
    • 采用TCP端口25或2525
    • 负责push
    • 传输过程:
      1. 连接建立:发信方定期扫描邮件缓存,如果有邮件,则使用SMTP的25端口号与接收方的SMTP服务器建立连接。建立完成后,接收方发送服务就绪,发送方发送HELO指令

      2. 邮件传送:发送方SMTP发送MAIL命令,若接收方准备好则返回“250 OK”,开始发送,<CtrlF>.<CtrlF>表示结束

      3. 连接释放:SMTP客户发送QUIT命令,服务器返回221服务器关闭,释放TCP连接

  3. 邮局通讯协议POP3 Post Office Protocol version 3:

    • 用户代理向邮件服务器发送请求,获取邮箱内的邮件,采用TCP端口号110
    • 负责pull
    • 两个阶段:认证(客户端与服务器之间需要身份认证)、下载
  4. 因特网邮件访问协议IMAP Internet Mail Access Protocol:

    • 支持有连接和无连接的模式,基于TCP协议
  5. 多用途Internet邮件扩展MIME Multipurpose Internet Mail Extensions:

    • 发送非文本数据
    • 用于非ASCII码到ASCII码的转换,方便传输

7.6 WWW与HTTP

  1. 万维网WWW:World Wide Web

    • 使用超文本传输协议HTTP Hypertext Transport Protocol

    • 每个Web页由对象组成,包含基本的HTML文件,定义了文本格式

    • 统一资源定位器URL Uniform Resource Locators:

      • 指定网页资源

      • 格式:protocol://hostname[:port]/directorypath/resource

<!-- 图片已丢失 -->

  1. 超文本传输协议HTTP HyperText Transfer Protocol:

    • 用于访问万维网数据
    • 使用C/S模型,使用TCP端口80
    • 无状态协议,服务器不保留客户端过去请求信息
    • 工作过程:
      1. 客户端在80端口初始化TCP连接,服务器接受客户端连接
      2. 客户端发送HTTP请求,服务器返回HTTP响应
      3. 释放此次TCP连接
    • HTTP连接分类:
      • 非持久HTTP:一个TCP连接至多发送一个对象
      • 持久HTTP:一个TCP连接可以发送多个对象

7.7 DHCP

  1. 动态主机配置协议DHCP Dynamic Host Configuration Protocol
    • 基于UDP协议
    • 自动配置主机连接,包括含子网掩码的IP地址、默认网关、DNS服务器的IP地址

相关文章

HTTP →计算机网络 →客户端网络面试速记 →