跳到主要内容

计算机网络

  • PDU(Protocol Data Unit)协议数据单元,指不同层级的网络协议进行数据交换时使用的数据传输格式,物理层是bit,数据链路层是帧……
  • 互联网构成
    • 网络边缘:与互联网相连的计算机和其他设备(各类主机)
    • 网络核心:互联端系统的分组交换设备(路由器,链路层交换机)和通信链路(光纤,铜缆,无限电,激光链路)构成的网络
  • 典型交换方式
    • 电路交换:首先建立连接(固定的通信通路),进行链路带宽/交换机的交换能力等资源预留,建立连接后物理通路被通信双方独占,资源专用,不与其他连接共享
      • 传输性能好,实时性最好,通信时延少
      • 通信效率低,通信建立过程复杂
      • 若中途设备故障,则传输中断
    • 报文交换:以报文为单位进行数据运输,每个报文包括源地址,目的地址和数据信息。不需要建立固定的通路,通过节点交换机进行存储和转发,直到到达接收方
      • 不需要建立固定的通路,线路利用率高
      • 无需建立连接
      • 由于在交换机中存在存储-转发的过程,实时性差
      • 报文大小灵活(与交换机的存储空间有关,因此需要足够的缓存空间)
    • 分组交换:对报文交换的改进,也是存储-转发的方式,将长报文分割成若干个小分组,以分组作为数据传输单元,独立地选择传输路径,支持灵活的统计多路复用(多个主机可以按需共享带宽)
      • 无需建立连接
      • 可以高效利用线路资源
      • 具有较好的实时性
      • 相对报文交换,分组长度固定,缓冲区容易管理
      • 传输时间较报文更短
      • 灵活性高
      • 缺点:附加信息开销大,仍然存在时延,分组可能遇到失序,丢失,重复等问题
  • 网络协议
    • 为进行网络中的数据交换而建立的规则/标准/约定
    • 三要素
      • 语法:数据的格式
      • 语义:规定要完成的功能
      • 时序:操作的顺序
  • 网络体系结构:
    • 层和协议的集合,特定系统使用的一组协议成为协议栈
    • 对等实体之间:协议
    • 相邻层次之间:接口,定义了下层向上层提供的原语和服务
  • 不同类型的服务:
    • 面向连接:请求或响应之后,对方回复“指示”或“确认”
    • 无连接:传输的数据携带了完整的目标地址,不需要应答
  • 参考模型
    • 降低系统的复杂度,便于实现和维护,提高灵活性和可扩展性
    • OSI与TCP/IP的比较与问题
      • OSI:
        • 模型,不局限于特定协议,明确了服务,协议,接口等概念,通用性(所以可以支持无连接和面向连接通信
        • 问题:从未真正被实现,分层将功能重复
      • TCP/IP:
        • 对已有协议的描述(因此仅支持无连接通信(IP))
        • 问题:未区分服务/接口/协议等概念,不具备通用性,混用接口与分层的设计,欠缺完整性
  • OSI(Open Systems Interconnection)参考模型(7层)
    • 物理层(Physical Layer):定义如何在信道上传输0/1,包括机械接口,电子信号,时序接口,介质等
    • 数据链路层(Data Link Layer):实现相邻网络实体的数据传输,包括成帧(Framing,从物理层的比特流中提取出完整的帧),错误检测与纠正,流量控制(快速的发送端遇到慢速的接收端),访问控制(同一个信道同时传输信号)
      • 涉及到物理地址MAC
    • 网络层(Network Layer):将数据包跨越网络从原设备(主机)发送到目的设备(主机),包括路由(Routing),路由协议,服务质量控制(处理网络拥塞,负载均衡,准入控制,保障延迟),异构网络互联等
      • 面向运营商
    • 传输层(Transport Layer):将数据从源端口(进程)发送到目的端口(进程),包括可靠的传输模式(对通信质量有要求的应用场景)和不可靠的传输模式(对通信质量要求不高,但是对通信相应速度要求高)
      • 面向终端用户
    • 会话层(Session Layer):在应用程序之间建立和维持会话
    • 表示层(Presentation Layer):关注传递信息的语法和语义,表示方法,数据结构等
    • 应用层(Application Layer):提供应用程序便捷的网络服务调用
  • TCP/IP参考模型(事实标准)、
    • TCP/IP 协议栈可以用于同一主机上不同进程的通信。
    • 结构
      • 网络接口层(Host-to-Network Layer):对应OSI中的物理层与数据链路层,定义主机与传输线路之间的接口
      • 互联网层(Internet Layer):对应OSI中的网络层,允许主机将数据包注入网络,让其独立地传输至目的地,包括数据包格式和协议(IPv4,IPv6)
      • 传输层(Transport Layer):对应OSI中的传输层,允许源主机与目标主机上的对等实体(进程)进行端到端的数据传输(TCP,UDP)
      • 引用层(Application Layer):对应OSI中的会话层,表示层与应用层,包括许多高等协议(DNS,HTTP,FTP,SMTP)
    • 特点:
      • 聪明终端&简单网络,由端系统TCP负责丢失恢复,实现了建立在简单的/不可靠部件上的可靠系统
      • 可以在底层物理网络上运行,可以支持各类上层应用
      • 核心功能简单,适应网络的爆炸性增长
  • 比特率:主机在数字信号上传送数据的速率,单位bit/s(bps)
  • 带宽:单位时间内网络中某通道传送数据的能力,单位为bit/s
  • 包转发率(Packet Per Second):交换机或路由器以包为单位的转发速率(线速转发:交换机满负载的情况下,对帧进行转发能达到的端口线路的最高速度,大包更容易实现)
  • 时延
    • 传输时延(Transmission Delay):数据从结点进入传输媒体需要的时间
    • 传播时延(Propagation Delay):电磁波在信道中传播一段距离花费的时间
    • 处理时延(Processing Delay):主机或路由器收到分组后,处理分组(分析首部,提取数据,差错检验或查找路由)花费的时间
    • 排队时延(Queueing Delay):分组在路由器队列中排队等待处理的时延
    • 往返时延(RTT,Round-Trip Time):发送方发送数据开始到收到接收方返回的确认,经历的总时间
      • 可以衡量网络延迟,计算吞吐量
    • 时延带宽积:传播时延×带宽(按比特计数的链路长度,若发送端连续发送数据,则发送的第一个bit到达终点时,已经发送了时延带宽积个bit)
    • 时延抖动:变化的时延,源于网络中的队列或缓冲,难以精确预测
    • 延迟丢包:多媒体引用中,由于数据包延迟到达,在接收端需要丢弃失去使用价值的包
  • 利用率:信道有百分之几的时间是被利用的
  • 吞吐量(throughput):单位时间内通过某个网络/信道/接口的数据量,单位bps
  • 有效吞吐量(goodput):单位时间内,目的地正确接收到的有用信息的数目,单位bps
  • 丢包率:丢失数据包数量占发送数据包的比率

物理层

  • 网络体系结构中的最底层
  • 数据链路层获得数据比特流,按照传输媒体的需要进行编码,通过传输媒体传输到下一个节点的物理层
  • 屏蔽不同传输媒体和通信手段的差异,提供统一的数据传输服务
  • 基本概念,术语
    • 通信:在原点和终点之间传递消息/信息
    • 消息:能被通信双方所理解/可以相互传递
    • 信息:包含在消息中对通信者有意义的部分
    • 消息是信息的载体,消息中可能含有信息
    • 数据:消息的一种表示形式,在通信系统中,消息通过电信号传递
    • 信号是消息的载体
    • 信息:(香农)信息是用来消除随机不确定性的东西(强调“使用”,在使用前可能数数字信号,使用后才是信息)
      • 消息包含信息的多少称为信息量
      • 信息量的大小与描述事件的出现概率有关
      • 消息荷载的信息量等于它表示的事件发生的概率 PP 的倒数的对数 I=loga1pI=\log_{a}{\frac{1}{p}} ,单位bit
      • 总信息量公式为:I=i=0m1npilogpi=ni=0m1pilogpiI = \sum_{i=0}^{m-1} -n p_i \log p_i = -n \sum_{i=0}^{m-1} p_i \log p_i,其中II表示总信息量,nn表示消息的总数或长度,pip_i表示第ii个符号出现的概率,mm表示可能的符号数量或种类
      • 每个符号的平均信息量(熵)公式为:H=i=0m1npilogpin=i=0m1pilogpiH = \frac{\sum_{i=0}^{m-1} -n p_i \log p_i}{n} = -\sum_{i=0}^{m-1} p_i \log p_i,其中HH表示平均信息量(熵),单位是比特/符号,pip_i表示第ii个符号出现的概率,mm表示可能的符号数量或种类,log\log表示对数函数,通常以2为底,单位为比特。
      • 若消息表示的事件是必然事件,则不含有任何信息量;若该事件根本不可能发生,则含有无穷的信息量
    • 数据分为模拟数据(具有连续的值)与数字数据(具有离散的值),数据可以与信号(数字信号,模拟信号)进行两两组合(如数字数据数字信号/数字数据模拟信号这样的组合)
  • 传输方式
    • 数字(以数字信号传输,抗干扰性前,保密性好,设备易于集成,便于计算机处理)通信/模拟(以模拟信号传输,占用较多的带宽,信道利用率低)通信
      • 调制解调用于模拟信道传输数字数据
    • 基带传输(不搬移信号频谱的传输)/频带传输(利用调制解调器搬移信号频谱以适应信道的频率特性)
    • 时空顺序:串行(在一个信道上按位依次传输,所需线路少,利用率高,在发送/接收端需要进行串并转化,收发之间必须实施同步)/并行传输(数据在多个信道上同时传输,在终端和线路之间不需要对传输代码作时序变换,需要n条信道,适宜要求传输速率高的短距离数据传输)
    • 同步方法:异步(时钟不同步,传送数据附加起始位和停止位,为保证正确接收,利用频率为传输比特率的n(16)倍的时钟,在比特周期的中心采样)/同步(时钟同步,每一个字符使用起止位按位进行传送,数据块以帧作为整体传输,并做到发/收之间的位同步,每一帧建立同步标志,建立帧同步)
    • 传送方向与时间的关系:单工(两个站之间只能沿一个指定的方向传送数据信号)/半双工(两个站之间可以在两个方向上传输数据信号,不能同时进行,转向时间20~50ms)/全双工(两个方向同时传送数据信号)
  • 传输损伤
    • 误码(Error):接收和发送数字信号的单个数字之间的差异
    • 抖动(Jitter):码元有效瞬间相对理想时间位置的短时间偏移
    • 漂移(Wander):码元有效瞬间相对理想时间位置的长期缓慢漂移
    • 滑动(Slip):信号在传输过程中不可恢复地丢失/增加若干码元
    • 时延(Delay):信号有效瞬间相对理想时间位置的滞后或推迟
  • 性能度量
    • 传输速率:单位时间传输的信息量
      • 调制速率(波特率,码元速率),单位时间内调制信号波形的变换次数,单位波特: RB=1T(s)(Baud)R_{B}=\frac{1}{T(s)}(Baud)
      • 数据信号速率(传信率,比特率),单位时间内通过信号的信息量,单位比特/秒:Rb=i=1n1Tilog2MiR_{b}=\sum^n_{i=1} \frac{1}{T_{i}}\log_{2}M_{i}nn 信号的总类数,TiT_{i}ii 类信号的持续时间,MiM_{i} 每个信号单元可以表示的不同状态的数量)
      • Rb=RBlog2MR_{b}=R_{B}\log_{2}M
      • 进制越大,比特速率越高,码元差错率也越大
    • 带宽:单位时间从网络一点到另一点可以达到的最高数据速率,单位bps(物理特性)
    • 信道容量,信道在单位时间内能传输的最大信息量(实际,受多个因素的影响),以bps为单位:
      • 模拟信道容量(香农定律):在信号平均功率受限的高斯白噪声信道中,C=Blog2(1+SN)C=B\log_{2}\left( 1+\frac{S}{N} \right)BB 是信道带宽(HzHz ,模拟信号是这样的),SN\frac{S}{N} 是模拟信噪功率比,SS 为接收信号功率,NN 为噪声(正态分布的加性高斯白噪声)
        • 提升方式:增加系统带宽,提升源端信号发射功率,降低噪声
      • 数字信道容量(奈奎斯特定律):邮箱贷款无噪声,无码间干扰的理想信道信道容量的计算公式: C=2Blog2MC=2B\log_{2}MMM 是信号取值的状态数。
        • 给定带宽可以通过增加信号取值状态提高信号容量,当会加重接收器的负担
    • 频带利用率:单位传输带宽所能实现的传输速率 η=RBB(Bd/hz)\eta=\frac{R_{B}}{B}(Bd/hz)η=RbB(Bps/Hz)\eta=\frac{R_{b}}{B}(Bps/Hz)
      • 衡量数据传输系统信息传输效率
      • 与采用的调制与编码方式有关
    • 传输质量
      • 信噪比(SNR)信号功率与噪声功率之比,一般在接收端测量 SNR=10lgPSPN(dB)SNR=10lg \frac{P_{S}}{P_{N}}(dB)
      • 平均误码率:单位时间内接收的出错码元数占总码元数的比例 Pe=nenP_{e}=\frac{n_{e}}{n} ,与测量时间的分布和长短有关,一般测试时间是15min;对二进制传输,由于码元=比特,因此误码率又称误比特率,当多进制传输时两者不等
  • 复用技术:允许多个用户使用共享信道进行通信,避免相互干扰,降低成本,提高利用率
    • 时分复用(Time Division Multiplexing,TDM,也称为等时信号) 将时间划分为时分复用帧,每个用户占用固定序号的时隙,该时隙周期性出现。时分复用的所有用户在不同的时间占用同样的频带宽度
      • 缺点:造成线路资源的浪费
    • 统计时分复用(Statistical Time Division Multiplexing,STDM),按需分配共用信道的时隙,只将要传送数据的终端连入信道。
    • 频分复用(Frequency-Division Multiplexing,FDM)将基带信号调制到不同频率载波上,之后叠加为复合信号。用户分到一个频带后就一直用这个频带。所用用户在同样的时间占用不同的带宽(频带带宽)资源
    • 波分复用(Wavelength Division Multiplexing,WDM)多个激光器在单条光纤上同时发送不同波长激光的技术(光的频分复用)
    • 码分复用(Code Division Multiple Access,CDMA)用不同地址码区分地址,有较强的抗干扰能力。每个比特时间被划分为m个短间隔,称为码片,每个用户指派唯一的mbit码片序列,若要发送1,则发送mbit码片,反之,则发送反码。
      • 码片序列需要互相正交(内积为0:ST=0S\cdot T=0,码片自己和自己内积则为1,与自己反码的规格化内积为-1),实际上使用伪随机码序列。
      • 可以通过对组合的信号取自己对应码片的内积反解出的信号
      • 实现了扩频(由于每个比特要转换成m个比特的码片,因此实际数据率到mb bit/s),属于扩频通信中的直接序列扩频(另一种是跳频扩频)
    • 空分复用(Space Division Multiplexing,SDM)同一个频段在不同的空间内重复利用,采用自适应阵列天线实现空间分割,若用其区分不同的用户,则叫做空分多址技术(SDMA)

数据链路层

  • 利用物理层提供的位流服务,向网络层提供明确的服务接口
  • 提供的服务
    • 无确认,无连接(Unacknowledged connectionless)的服务(接收方不对收到的帧进行确认,适合误码率低的可靠信道与实时通信,eg以太网)
    • 有确认无连接(Acknowledged connectionless)的服务,每一帧都得到单独的确认,适用与不可靠信道
    • 有确认有连接(Acknowledged connection-oriented)服务,适用长延迟的不可靠信道
  • 功能:成帧(比特流划分成帧,Framing),差错控制(Error Control),流量控制(Flow Control)
  • 成帧:网络层下来的分组加上头标和尾标,成为帧,帧中的数据是有效载荷。
    • 字节计数法(注意开头要写字符个数)/带字节填充的定界符法/带比特填充的定界符法(传输的数据中多于5个1就加0)/物理层编码违例
  • 差错控制:噪声导致错误,丢失,乱序,重复(repeatedly delivery)
    • 方式
      • 确认:接收方校验数据,给发送方应答
      • 定时器:发送方启动定时器防止丢失
      • 顺序号:接收方检查序号,防止乱序和重复
    • 检错码:使接收方判断是否发生错误,但不能推断哪一位有错,这时接收方直接请求重传,用在高可靠,误码率较低的信道上,比如光纤链路
    • 纠错码:加入足够的冗余信息,接收方可以判断接收到的数据是否有错,并能纠正错误,用在错误发生比较频繁的信道上,也常用于物理层和更高层,使用纠错码的技术通常成为前向纠错(FEC,Forward Error Correction)
    • 概念
      • 码字(code word):包含m个数据位和r个校验位的n位单元,描述为(n,m)码
      • 码率(code rate):码字中不含冗余部分所占的比例,用m/n表示
      • 海明距离:两个码字之间不同比特的数目
        • 海明距离为d,d个单比特就可以把一个码字转化为另一个
        • 检查出d个错,可以使用d+1的编码
        • 纠正d个错,可以使用海明距离为2d+1的编码
    • 检错码
      • 奇偶检验:1位奇偶校验,可以检查奇数位错误
        • 偶校验(保证1的个数为偶数个)
      • 校验和:
        • 发送方:将数据分割成16位的块,求和,计算结果取反,随数据一同发送
        • 接收方:数据分割成16位的块,求和,和取反的求和,如果非全1,则检测到错误
      • 循环冗余校验(Cyclic Redundancy Check)
        • 要产生 nn 位校验码,选定一个n+1二进制位模式 GG ,最高位为 11
        • 原始数据 DD 左移 nn 位,用 GG 做模2除(也就是xor),获得余数 RR ,即为CRC校验码
        • 接收信号的时候,把CRC放在原数右边,之后用 GG 做模二除,若余数不为 00 ,则进行数据重传请求
    • 纠错码
  • 基本协议
    • 乌托邦单工协议
      • 数据单向传输/完美信道/网络层始终就绪/瞬间处理无穷多的数据/不处理流量控制与纠错,无确认的无连接服务
      • 发送方:网络层数据→成帧→物理层→不断循环
      • 接收方:等待帧→物理层获得帧→解封装,传回网络层→不断循环
    • 无错信道上的停等式协议
      • 不假设数据可以被瞬间处理/半双工物理信道/其他保持不变
      • 发送方发送一帧之后暂停,等待确认后再发下一帧
      • 接收方完成接收后回复确认接收,确认帧称为哑帧,其内容不是重要信息
    • 有错信道上的单工停等式协议
      • 假设通信信道有错,导致帧损坏(可检测)和帧丢失
      • 发送方增加计时器,若一段时间内未收到确认,则发送方超时,再次发送
      • 若延时过长或者确认帧丢失,接收方会收到重复的副本→接收方需要区分到达的帧是否是第一次发来的,因此需要发送方再发送的帧的头部添加序号(SEQ),它所需要的最小位数是1bit(因为只需要区分当前帧和其直接后续帧)
      • 发送方最开始要初始化帧序号为0,并且发送帧,发送后等待正确确认/错误确认/超时,并作出对应的答复
        • ARQ(Automatic Repeat reQuest):检测到错误后明确告知发送端当前的帧出错
        • PAR(Positive Acknowledgement with Retransmission):检测到出错不发送重传请求,只是通过是否接收ACK来判定传输的成败
      • 接收方初始化期待0号帧,正确帧交给网络层,错误帧发送上一个成功接收帧的确认。
      • 效率:
        • 每帧发送时间(工作时间): F(frame size)R(channel capacity)\frac{F(frame\ size)}{R(channel\ capacity)}
        • 总延迟(Total Delay,空闲时间)= D=2I(propagation delay+processor servicetime)D=2I(propagation\ delay+processor\ service time)
        • 信道利用率:FF+RD\frac{F}{F+R \cdot D}
    • 停止等待协议的问题:只能有一个没有被确认的帧在发送中 ,若传播延迟较长,信道利用率就变低,当然可以使用更大的帧,但是这会使得传输中出错的概率变高,导致更多的重传→解决:流水线协议/管道协议,允许发送方在收到确认之前连续发送多个帧
      • 长肥网络(短帧长,高带宽,高传播延迟)会导致信道利用率较差
  • 滑动窗口协议
    • 窗口机制:发送方和接收放都有一定容量的缓冲区,发送端在收到确认之前可以发送多个帧
      • 可以发出的最多帧数受限→方法:使用有限的帧序号
      • 流量控制的方法:接收窗口驱动发送窗口的转动
        • 发送窗口大小 WTW_{T} ,收到对方确认的信息之前,可以连续发出的最多数据帧数
          • 发出一帧后窗口的下限前移一格,收到确认后窗口的上限前移
        • 接收窗口大小 WRW_{R} ,可以连续接收的最多数据帧数
          • 接收一帧后窗口的下限前移,发出确认后窗口的上限前移
      • 累计确认:对按序到达的最后一个分组进行确认
    • 回退 N 协议(GBN),出错全部重发
      • 接收端收到一个出错帧或乱序帧时,丢弃所有后续帧,且不发送确认
      • 发送端超时,重传所有未被确认的帧
      • 对接收端窗口为1的情况,只能按顺序接收帧,对按序到达的帧立即确认或延迟确认(收到多帧后一起确认),但出错/乱序的,返回出错的信号或者不应答
      • 连续发送提高信道利用率,但按序接收,出错后即便有正确帧到达也要丢弃重传。
    • 选择重传协议(SR)
      • 接收方对出错帧和计时器超时的数据帧返回否认帧(NAK),发送方接收到后,只重传出错帧或计时器超时的数据帧,这样可以避免重传已正确传送的帧
      • 给每一个帧设置计时器
      • 设置计时器
      • 接收窗口大于1,可以暂存接收方出错帧之后的数据帧,但在接收端需要占用一定容量的缓存
      • 数据包中必须含有顺序号帮助接收端进行排序
      • 接收端收到的数据包的顺序与发送的数据包顺序不同
      • 发送端需要响应:
        • 上层的调用:是否有可以使用的序号,有则发送
        • 收到ACK:若收到的是最小序号的ACK,窗口滑动,若收到其他的,进行标记
        • 超时:超时则重传
  • 只有帧同步,差错控制与流量控制,没有拥塞控制

MAC 子层

  • 主要负责控制对物理传输介质的访问
  • 多个终端需要同时访问共享介质时,如何确保各终端能够正常通信,同时又最大化介质利用率
  • 介质多路访问控制
    • 静态分配
      • 排队论分析
        • 报文到达速率 λ\lambda 帧/s,信道输出速率 μC\mu C 帧/s(帧平均长度 1μ\frac{1}{\mu} 位/帧,信道容量 CC 位/s)
        • 报文在网络中经历的平均时间(单信道平均延迟时间) T=1μCλT=\frac{1}{\mu C-\lambda}
        • 若信道为频分复用,报文到达速率与信道容量均乘以 1N\frac{1}{N} ,则 TFDM=NTT_{FDM}=NT
      • 适用于用户数量少且用户数目固定的额情况/通信量大且流量稳定的情况/不适于突发性业务的情况
      • 资源分配不合理有浪费,不满足用户的不同需求,延迟时间增大 NN
    • 动态分配
      • 随机访问协议
        • ALOHA
          • 纯ALOHA:想法就发/两个以上的帧发生冲突,冲突的帧完全破坏,破坏后要重传。
          • 数字
            • TT 帧时,发送一个标准长的帧所需的时间
              • 冲突危险期 2T2T (想图)
            • NN 帧时内用户产生新帧服从泊松分布的均值
              • 0<N<10<N<1 ,重载 NN 接近于1
            • GG 帧时内信道产生的帧(包括重传)均值
              • GNG\geq N ,轻载 G=NG=N 无冲突,重载 G>NG>N ,冲突or重传。
              • 帧时内信道中产生 kk 个帧的概率 GkeGk!\frac{G^ke^{ -G }}{k!}
              • 冲突危险期不遭受冲突的概率 P0=e2GP_{0}=e^{ -2G }
            • P0P_{0} 一帧发送成功的概率
            • SS 吞吐量,时间 TT 内发送成功的平均帧数,越接近 11 信道利用率越高,S=G×P0S=G\times P_{0}
              • 代入前面冲突危险期的公式,得 S=Ge2GS=Ge^{ -2G }
              • G=0.5G=0.5S=0.184S=0.184
          • 分隙 ALOHA (Slotted ALOHA)
            • 时间分成时隙,长度恰好为一帧的传输时间,发送帧在时隙的起点,冲突也发生在时隙的起点
            • 冲突危险期 TT
              • 吞吐率 GeGGe^{ -G }
              • G=1G=1 ,最大吞吐率 0.3680.368
        • CSMA(载波侦听多路访问协议,Carrier Sense Multiple Access)
          • 先听后发
          • 非持续性 CSMA
            • 侦听:介质空闲,则发送,若介质忙,则等待随机分布的时间,之后继续侦听
            • 等随机时间可以减少碰撞冲突的可能性
            • 等待时间没有数据传送,会浪费时间
          • 1-持续性CSMA
            • 侦听:介质空闲,则发送,介质忙,持续侦听,空闲就发送,若冲突,等待随机分布的时间,之后侦听
            • 延迟时间少于非持续式
            • 两个以上的站等待发送,介质空闲一定发生冲突
            • p-持续性的特例
          • p-持续性CSMA
            • 介质空闲,以 pp 的概率发送,以 1p1-p 的概率延迟时间单元发送,之后再监听
            • 高延迟
          • 侦听到介质无数据才发送,也会发生冲突
            • 冲突窗口(争议期):发送站发出帧后能检测到冲突的最长时间
            • 等于单边延迟 DD 的两倍,相当于一个来回传播延迟 RTT(Round Trip Time)
          • CSMA with Collision Detection
            • 冲突则发送强化(Jam)信号,等待一段随机时间后重发
            • 传输周期:一个站点使用信道,其他站点禁止使用
            • 竞争周期:所有站点有权使用信道,争用时间槽
            • 空闲周期:所有站点都不使用信道
            • 吞吐量:高于ALOHA,低于p-CSMA
            • 冲突:低于ALOHA,比p-CSMA高
      • 受控访问协议
        • 位图协议
          • 竞争期:自己的时槽发送竞争比特,获得资源预留
          • 传输期:按序发送,避免冲突
          • 信道利用率
            • 低负荷 dd+N\frac{d}{d+N}
            • 高负荷 dd+1\frac{d}{d+1} 接近 100%100\%
          • 缺点:无法考虑优先级
        • 二进制倒计数
          • 编序号,长度相同,竞争期从高到低序号排队,高者得到发送权
          • 信道利用率:dd+log2N\frac{d}{d+\log_{2}N}
          • 若竞争的同时也在发送,则效率为 100%100\%
        • 令牌
          • 发送工作站抓取令牌,获得发送权
          • 发送的帧需要目的站/发送站去除,防止无限循环
          • 负载低时,节点还是需要拿到令牌,延迟大
          • 维护令牌要有代价
      • 低负载随机访问效率高,高负载受控访问效率高
      • 有限竞争协议
        • 自适应树
          • 第一次成功传输后所有站点同时竞争,若只有一个站点申请,获得信号,否则在下一时隙另一半站点竞争
  • 以太网:MAC子层协议
    • 主机运行CSMA/CD协议
      • 检测冲突时,中止传输,发出段冲突加强信号,等待随机时间重发
      • 随机时间由二进制指数后退(Binary Exponential Backoff)决定
        • 确定基本退避时间槽,其长度为以太介质上往返传播时间 (2τ)(2\tau),以太网中设为 512 比特时间。
        • 定义重传次数 kkk10k \leq 10,即k=min[重传次数,10]k = \min[\text{重传次数}, 10]
        • 从整数集合 [0,1,,(2k1)][0, 1, \ldots, (2^k - 1)] 中随机地取出一个数,记为 rr
        • 重传所需的时延就是 rr 倍的时间槽 2τ2\tau
        • 当重传达到 16 次仍不能成功时即丢弃该帧,并向高层报告。
    • 帧格式:DIX Ethernet V2(常用)/IEEE 802.3
    • 硬件地址:物理地址/MAC地址
    • MAC帧的格式:目的地址(6字节),源地址(6字节),类型(2字节),数据(46-1500字节),校验和(4字节)
      • 最小帧长:46+18=64B
      • 最大帧长1500+18=1518B
    • 以太网 MAC 帧不小于64字节
      • 长度小于64字节的都是由于冲突而异常中止的无效帧,这是因为802.3规范中10Mbps的以太网最大长度2500米,4个中继器,中最差情况下往返一次能发送500bit,加上安全余量512bit,64Bytes
      • 接收后,计算校验和FCS(Frame Check Sequence)
      • 检查出的无效MAC帧就丢弃
    • 以太网性能
      • 信道效率: PP+2τA=11+2BLecF\frac{P}{P+\frac{2\tau}{A}}=\frac{1}{1+\frac{2BLe}{cF}} 站获得信道的概率是 AA ,站成功获得信号的平均尝试次数是 1A\frac{1}{A} ,每次尝试需要等待的时间是 2τ2\tauFF 为帧长,BB 为带宽, LL 为电缆长度,cc 为信号传播速度,每帧 ee 个竞争时间槽
      • 电缆越长, τ\tau 越大,最大电缆距离会影响性能
      • 给定帧长,增加带宽或距离会降低网络效率
    • 实体器件
      • 集线器:端口内部连通,同一根总线。用集线器组成的局域网都在一个冲突域,限制了网络的可扩展性(物理层设备)
      • 交换机:交换式以太网的核心,工作在数据链路层,检查MAC的目的地址并且转发
  • 数据链路层交换原理
    • 使用网桥或交换机分隔冲突域
    • 网桥MAC地址表的构建:逆向学习源地址,记录/更新到达时间,并设定老化时间,到期时,会被清除
      • 即使站点不发送数据,网桥也会通过广播或泛洪方式转发数据帧,站点回应后,网桥学习到它的MAC地址并更新转发表
    • 对收到的帧进行处理
      • 转发(发现MAC地址的目的地址跟发送地址不是同一个端口)
      • 过滤(发现MAC表中目的地址和源地址是同一个端口)
      • 泛洪(发现MAC表不完善时或广播帧)除了入境口全部发送,但存在安全隐患
    • 设备:POE(Power Over Ethernet) 交换机,无需电源专门布线
  • 广播域:广播帧能够到达的范围,缺省情况下,交换机所有端口同属于一个广播域,但广播帧在广播域中传播,具有安全隐患
  • 交换机可以通过划分VLAN(虚拟局域网)分隔广播域,通过路由或三层交换机进行VLAN间路由
    • 在一个物理网络上根据用途,工作组,应用等划分为多个逻辑局域网络
    • 有一部分带4字节的VLAN帧标记
  • 无线局域网(WLAN)
    • 小范围,无需授权的频谱,高速率应用,实时和非实时应用
    • 物理层技术目标:提升传输速率,增强可靠性,支持高密度接入
    • 为什么CSMA/CD不能用于WLAN
      • 冲突检测困难
        • 接收端发射/接收功率相差太大
        • 发送时关闭接收功能,无法同时检测冲突
      • 隐藏终端问题(发送端无法检测到BSS(Basic Service Set,基本服务集,基本的无线网络单元)中可能的冲突)
        • 由于距离太远(或障碍物)导致站点无法检测到竞争对手的存在
        • 隐藏终端在发送端的侦听范围之外,但小于目的端的干扰范围
        • 隐藏终端可以干扰接收端
        • 在接收站点处发生冲突
      • 暴露终端问题(终端不知道BSS中的信息是传给谁的)
        • 某终端侦听到其他站点的发送,误以为其他站点占了自己的信道
        • 暴露终端在发送端的侦听范围之内,但大于目的端的干扰范围
        • 暴露终端能侦听到发送端但不会干扰接收端
        • 降低了网络的吞吐量
      • 信号衰落随时间发生变化
    • 使用CSMA/CA(Carrier Sense Multiple Access with Collision Avoid)
      • 当信道空闲时间大于 IFS(帧间隙)时,立即传输
      • 当信道忙时,延迟直到当前传输结束 + IFS 时间
      • 开始随机退后过程
      • 从 (0, CWindow) 中选择一个随机数作为退后计数器(backoff counter)
      • 通过侦听确定每个时间槽是否活动
      • 如果没有活动,则减少退后时间
      • 退后过程中如果信道忙,则挂起退后过程(解决站点之间的公平问题)
      • 在当前帧传输结束后恢复退后过程
      • 使用退后过程延迟发送的目的:避免多个站点同时传输引起的冲突。
      • 流程
      • 使用二进制指数退后算法来确定竞争窗口,使其与网络负载情况相适应
        • 初始值为最小值,冲突时加大窗口,直到达到最大值
        • 负载轻,冲突几率小,竞争窗口小,减小站点的等待时间
        • 负载重,冲突几率大,竞争窗口大,防止冲突
      • 差错检测:32CRC校验,停等机制,达到最大重传限制,丢弃帧,告知上层协议
    • 使用RTS-CTS机制
      • 通过信道预约,避免前述隐藏/暴露终端的问题
      • 发送端发送:Request to Send帧
      • 接收端回送:Clear to Send帧
      • 使用了虚拟载波监听(Virtual Carrier Sense) 技术
        • 基于网络分配矢量(NAV) :虚拟载波监听是由网络分配矢量(NAV)实现的,其本身是一个微秒定时器。当一个工作站要发送数据时,会在所发送帧的 MAC 帧首部设置一个“持续时间”字段,用来通知其他站点预计占用信道的时间长度,其他站点收到该帧后,会据此更新自己的 NAV,将 NAV 设置为该持续时间,在 NAV 计时结束前,认为信道处于忙碌状态,从而停止发送数据,避免与当前传输发生冲突
      • 这两种帧很短,产生冲突时信道浪费较少

网络层

  • 实现了端系统多跳传输,实现这个目标的基础是数据链路层提供点到点的传输
  • TCP/IP模型提供在任意节点之间进行无连接,不可靠的数据报传输
  • 存在于每台主机和路由器中,关键功能是路由(选择数据从源到目的端的路径)和转发(从路由器的输入接口传送到正确的输出接口)
  • 向上级(传输层)提供的服务
    • 无连接(数据报)
      • 无连接,尽最大努力交付
      • 独立转发可能经过不同路径
      • 不提供服务质量的承诺
      • 造价低,运行方式灵活,适应多种应用
    • 面向连接(虚电路)
      • 通信之前建立逻辑连接(并非真正建立了物理连接,区别于电路交换),并预留网络资源
      • 所有分组沿着逻辑连接(同一条虚电路)按照存储转发方式传送
      • 不一定能完全保证数据的可靠传输
      • 过程:建立连接→发送数据→释放连接
  • 二者的区别
对比内容虚电路服务数据报服务
可靠传输的保证网络主机
连接的建立必须要不需要
地址每个分组含有一个短的虚电路号每个分组需要有源地址和目的地址
状态信息建立好的虚电路要占用子网表空间子网不存储状态信息
路由选择分组必须经过建立好的路由发送每个分组独立选择路由
分组顺序总是按序到达可能乱序
路由器失效所有经过失效路由器的虚电路都要终止失效结点可能丢失分组
差错处理和流量控制网络或用户主机负责用户主机负责
拥塞控制容易控制难控制
  • 网络协议:IPv4协议
    • 无连接的协议,互联网的核心
    • 基本功能:寻址,分片
    • 格式
    • 分片:IPv4协议对数据报进行分片
      • 需要考虑MTU(Maximum Transmission Unit,最大传输单元)
        • 在具体情况下,分为链路MTU(分片策略:允许途中分片,根据下一跳链路的MTU实施分片)和路径MTU(分片策略:不允许途中分片,数据报长度须小于路径MTU)
        • 重组策略:途中重组(难度大,对网络中的路由器造成压力,对网络性能不好)/目的端重组(互联网的策略),在重组时,需要原始数据报编号,分片偏移量,是否收集所有分片
      • 原始报文与分片报文具有相同的IP标识
      • 注意片段偏移的字段值的单位为8B
      • 对IPv4而言
        • 传输途中可多次分片(通过DF标志位设置)
        • 在目的IP对应的目的端系统进行重组
        • 字段在IP头部,包括标识,标志,片偏移
    • 寻址:
      • IP地址,网络上的每一台主机的每一个接口有全球唯一的32位标识符
        • 分为网络号(网络前缀,前缀)和主机号
        • 点分十进制写法
        • 分为5类,ABC类为单播地址
        • 特殊地址(0.0.0.0只能作为本主机在本网络上的源地址)
        • 子网划分
      • 无类域间路由:CIDR
        • IP地址后加斜线,然后写网络前缀所占位数(包含子网掩码)
      • 最长前缀匹配
        • 选取子网掩码最长的匹配项
      • 全球统一(ICANN)向ISP分配,可以申请后静态设定(如路由器,服务器),也可以动态获取(使用DHCP协议等动态配置协议,主机加入IP网络时从服务器动态获取,可以有效利用IP地址)
  • DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)协议
    • 模式:客户/服务器模式(C/S)
    • 基于UDP工作
    • 客户向服务器发送请求时,服务器返回客户机所需的IP地址(缺省路由器IP地址,DNS服务器IP地址,网络掩码等)
  • IP地址与MAC地址
    • IP地址在IP数据报的首部,硬件地址在MAC帧的首部
    • IP数据报经过不同链路时,IP数据报中IP地址不发生改变,MAC帧中的硬件地址发生了改变
    • 需要二者的原因
      • MAC是固定的,难以用于路由寻址
      • IP属于网络层,MAC属于数据链路层,没有MAC的话需要解析网络层才能进行转发(可以打通网络层和数据链路层来做到这点,但由于发展的历史问题并不现实)
  • ARP(Address Resolution Protocol)协议
    • 实现了逻辑地址和物理地址的映射
    • 方式
      • A已知B的IP地址,需要获得B的MAC地址(物理地址)
      • 如果A的ARP表中缓存有B的IP地址与MAC地址的映射关系,则直接从ARP表获取
      • 如果A的ARP表中未缓存有B的IP地址与MAC地址的映射关系,则A广播包含B的IP地址的ARP query分组
      • 在局域网上的所有节点都可以接收到ARP query
      • B接收到ARP query分组后,将自己的MAC地址发送给A
      • A在ARP表中缓存B的IP地址和MAC地址的映射关系
        • 超时时删除
    • 同一以太网段,不需发送ARP请求分组
  • NAT(网络地址转换)
    • 私有地址转化为共有IP地址
      • A类地址:10.0.0.0--10.255.255.255
      • B类地址:172.16.0.0--172.31.255.555
      • C类地址:192.168.0.0--192.168.255.255
    • 根据不同的IP上层协议进行表项管理
    • 私有IP地址 \leftrightarrow NAT设备的全局IP地址+新分配的端口号
    • 优势:节省合法地址,减少冲突/灵活连接网络/保护网络的私密性
    • 问题:违反了IP结构模型,路由器处理传输层协议/违反了端到端的原则/违反了最基本的协议分层规则/不能处理报头加密/新型网络应用的设计者需要考虑NAT场景
  • ICMP协议(Internet Control Message Protocol,互联网控制报文协议)
    • 允许主机或路由器报告差错情况和提供异常情况
    • 封装在在IP数据报中,上层协议号为1
    • 本身出错将不再处理
    • 包括
      • 差错报告报文(终点不可达)
      • 询问报文(回送请求/回答,ping使用)
    • 格式
    • 是把出错的IP原始数据当作ICMP的数据,封装在另一个IP包里传输
    • PING(Packet InterNet Groper)测试两主机之间的连通性,使用了回送请求与回送回答报文(ICMP)
  • 路由算法
    • 是否随网络的通信量/拓扑自适应划分
      • 静态路由选择策略
      • 动态路由选择策略
    • 最短路径算法
      • 链路状态(Dijkstra)全局算法
        • 从开始的点逐渐去找每个点的最短路径
        • 过程
          • 发现邻居,了解他们的网络地址
          • 设置到每个邻居的成本度量
          • 构造链路状态分组(link state packet,LSP),分组中包含刚收到的所有信息
          • 将此分组发送给其他的路由器
            • LSP分组包含递增的序列号
            • 路由器记录收到所有的源路由器-序列号对
            • 新分组到达
              • 新分组,洪泛广播
              • 重复:丢弃
              • 过时:拒绝
          • 计算到其他路由器的最短路径
      • 距离向量路由算法(Bellman-Ford)算法
        • 每个节点周期性地向邻居发送它自己到某些节点的距离向量
        • 当节点x接收到来自邻居的新DV估计,它使用B-F方程更新其自己的DV
        • B-F方程:Dx(y)=minc(x,m)+Dm(y)D_x(y) = min {c(x,m) + D_m(y) }
        • 迭代的、分布式的
          • 每次本地迭代由下列引起: 本地链路费用改变、邻居更新报文
          • 分布式:各节点依次计算,相互依赖
        • 问题:好消息传播快,坏消息传播慢
      • 比较:
比较维度距离向量 (DV)链路状态 (LS)
信息交换范围邻居间交换全网扩散
信息可靠性部分道听途说自己测量
健壮性健壮性差健壮性好
收敛速度慢,可能有计数到无穷问题
  • 实际路由协议:
    • OSPF(Open Shortest Path First,开放最短路径优先协议)
      • 分布式链路状态算法
      • 开始或发生变化时向所有路由器洪泛信息,获得与本路由器相邻的所有路由器的链路状态
      • 最后简称链路状态数据库LSDB,同时也是区域内的拓扑结构图
    • RIP(Routing Information Protocol,路由选择协议)
      • 基于距离矢量算法
      • 利用跳数(经过的路由器数量)来衡量到目的网络的距离,最多包含15个
      • 每30s与相邻路由器交换路由表
      • 算法简单,易于实现,收敛慢,交换的信息量大
      • 适用于中小型网络
    • 边界网关协议BGP (Border Gateway Protocol)
  • 拥塞控制
    • 拥塞:网络中存在很多数据包,导致数据包传输延迟或丢失,导致吞吐量下降
    • 原因
      • 数据包数量超过网络承载能力
      • 突发流量填满缓冲区导致一些数据包被丢弃
    • 策略
      • 开环控制(预防性拥塞控制):事先对通信流参数进行协商,协商后,不管网络是拥塞还是带宽充足,参数不能动态改变
        • 不考虑网络的当前状态
      • 闭环控制:根据网络状态进行动态控制,包括两部分:反馈机制和控制机制
        • 显式反馈
        • 隐式反馈
    • 途径
      • 提高网络供给
      • 流量感知路由
      • 准入控制
      • 流量调节
      • 负载丢弃
    • 流量感知路由
      • 可以通过跳数/带宽/传输延迟/负载/平均排队延迟参数计算路径权重,绕开热门的区域,疏散流量
      • 但可能导致路由表发生变化,导致不稳定路由
  • 流量调节
    • 抑制包(通知发送方减少发送量,发送方收到后,减少发向特定地址的流量)
    • 逐跳的抑制包:抑制包对经过的每个路由器都起作用,可以迅速缓解发生拥塞处的拥塞
    • 显示拥塞通道(ECN),在IP包头记录数据包是否经历拥塞
  • 随机早期检测(RED, Random Early Detection)
    • 当平均队列长度 LAV<THminL_{AV} < TH_{min} 时,新到数据报入队列排队。
    • 若平均队列长度 LAV>THmaxL_{AV} > TH_{max} ,新到数据报直接丢弃。
    • 当平均队列长度处于 THminLAVTHmaxTH_{min} \leq L_{AV} \leq TH_{max} 区间内,以概率 p 丢弃新到数据报。
  • IPv6:应付32bit地址空间耗尽问题

传输层

  • 传输层的作用
    • 网络层只能实现主机到主机之间的数据传输,无法区分主机中的多个应用程序(进程)。
    • 传输层提供“进程到进程”的通信服务,使运行在不同主机上的多个进程之间可以并发通信。
    • 传输层将网络层的“尽力而为”服务扩展为更可靠、有序的数据传送服务。
    • 因特网传输层主要提供两类服务
      • 最小传输服务(UDP)
        • 将主机 - 主机数据交付扩展为进程 - 进程数据交付
        • 提供检错服务
      • 增强服务(TCP)
        • 可靠数据传输(Reliable Data Transfer)
        • 流量控制(Flow Control)
        • 拥塞控制(Congestion Control)
    • 传输层与网络层的关系类比(邮件系统)
网络层类比角色功能说明
网络层邮政系统将信送达目的家庭
传输层家庭信使将信件交到具体的孩子手中
应用进程家庭中的孩子具体的通信参与者
IP 地址 + 端口号地址 + 姓名唯一标识一个进程
  • 套接字编程基础
    • 套接字的作用
      • 套接字(socket)是应用程序与传输层的接口。
      • 应用程序通过 socket API 与网络交互。
      • 套接字用主机 IP 和端口号来唯一标识一个通信进程。
    • 标识一个进程:IP 地址 + 端口号
      • IP 地址定位主机
      • 端口号定位主机中的具体进程
      • 因此,进程标识 = (IP 地址, 端口号)
    • socket API 支持的服务类型
协议类型特点
UDP数据报服务无连接、不可靠、无拥塞控制
TCP字节流服务面向连接、可靠、流控 + 拥控
  • 客户端 / 服务器通信流程

    • UDP 通信流程
    • TCP 通信流程
  • 传输层的复用与分用

    • 概念
      • 复用:指发送方不同的应用进程都可以使用同一个传输层协议传送数据。
      • 分用:接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的应用进程。
    • 类比理解
      • 类比为多个孩子共享一个家庭邮箱,每封信封上写明具体收件人(端口号)。
      • TCP/UDP 报文中都包含:
        • 源端口号:发送进程的标识
        • 目的端口号:目标进程的标识
    • 不同协议的套接字识别方式
协议套接字标识方式
UDP(目的 IP 地址, 目的端口号)
TCP(源 IP, 源端口号, 目的 IP, 目的端口号)
  • UDP 协议详解
    • 协议特性
      • 无连接(不需要握手建立连接)
      • 不可靠(不确认、可能丢包)
      • 传输效率高(无拥塞控制)
      • 每个 UDP 段独立处理,保留报文边界
    • 报文结构
      • 重要字段:
        • 源端口号
        • 目的端口号
        • 长度
        • 校验和(可选):用于检测错误
    • UDP 校验和的作用
      • 对发送的数据(包括伪首部)进行 16 位和校验。
      • 接收端验证校验和判断是否有差错。
      • 包含伪首部是为了避免错误投递。
    • 适用场景
      • 实时多媒体(如语音、视频)
      • DNS 请求
      • SNMP 协议
      • 简单回声服务
    • 为什么要使用UDP?让用户进程直接发送原始的IP分组不就足够了吗?仅仅使用IP分组还不够。IP分组包含IP地址,该地址指定一个目的机器。一旦这样的分组到达目的机器,网络控制程序如何知道把它交给哪个进程呢?UDP分组包含 一个目的端口,这一信息是必需的,因为有了它,分组才能被投递给正确的进程。此外,UDP可以对数据报做包括数据段在内的差错检测,而IP只对其首部做差错检测。
  • TCP 协议详解
    • 协议特点
      • 面向连接:通信前需三次握手
      • 提供可靠、有序的字节流服务
      • 支持全双工通信
      • 具备流量控制与拥塞控制功能
    • 只要源目的端口不同,就可能存在两个或多个TCP连接
    • 报文结构:TCP包头字段简介和TCP options介绍 - 无知是恶 - 博客园
      • 关键字段:
        • 序列号(Seq):标识数据在字节流中的位置(注意UDP没有序列号
        • 确认号(Ack):表示期望收到的下一个字节序号
        • 标志位:SYN(同步序列号)、ACK、FIN 等
        • 窗口大小:告知对方自己的接收能力
    • TCP 三次握手建立连接过程:
      • 第一次握手:
        • 客户端发送带有 SYN 标志位的 TCP 段,标志位字段为 SYN = 1。
        • 客户端进入 SYN_SENT 状态。
      • 第二次握手:
        • 服务器收到客户端的 SYN 段后,回送一个带有 SYN 和 ACK 标志位的 TCP 段,标志位字段为 SYN = 1 和 ACK = 1。
        • 服务器进入 SYN_RCVD 状态。
      • 第三次握手:
        • 客户端收到服务器的 SYN+ACK 段后,发送一个带有 ACK 标志位的 TCP 段,标志位字段为 ACK = 1。
        • 客户端进入 ESTABLISHED 状态。
        • 服务器收到这个 ACK 段后,也进入 ESTABLISHED 状态,连接建立完成。
    • TCP 四次挥手释放连接过程:
      • 第一次挥手:
        • 主动关闭连接的一方(通常是客户端)发送带有 FIN 标志位的 TCP 段,标志位字段为 FIN = 1。
        • 主动方进入 FIN_WAIT_1 状态。
      • 第二次挥手:
        • 被动关闭连接的一方(通常是服务器)收到主动方的 FIN 段后,发送一个带有 ACK 标志位的 TCP 段,标志位字段为 ACK = 1。
        • 被动方进入 CLOSE_WAIT 状态。
        • 主动方收到这个 ACK 段后,进入 FIN_WAIT_2 状态。
      • 第三次挥手:
        • 被动方完成数据发送后,向主动方发送一个带有 FIN 标志位的 TCP 段,标志位字段为 FIN = 1。
        • 被动方进入 LAST_ACK 状态。
      • 第四次挥手:
        • 主动方收到被动方的 FIN 段后,发送一个带有 ACK 标志位的 TCP 段,标志位字段为 ACK = 1。
        • 主动方进入 TIME_WAIT 状态。
        • 被动方收到这个 ACK 段后,进入 CLOSED 状态。
        • 主动方在经过一定时间后也进入 CLOSED 状态,连接释放完成。
  • TCP 可靠传输机制
    • 滑动窗口
      • 支持流水线式发送,提高效率
      • 接收方可缓存失序段,使用累积确认机制
    • 定时器与超时重传
      • TCP 只对最早未确认段设置定时器
      • 动态设置超时时间: EstimatedRTT = (1 - α) * EstimatedRTT + α * SampleRTT TimeoutInterval = EstimatedRTT + 4 * DevRTT
      • 若报文被重传,不更新 RTT 估计(Karn 算法)
      • 避免错误的 RTT 测量导致重传时间设置不当
    • 快速重传(用重复ACK检测报文段丢失)
      • 连续收到 3 个重复 ACK → 快速重传丢失段
      • 提前恢复通信,无需等待超时
  • TCP 流量控制
    • 原因
      • 接收端缓存有限,发送太快会溢出,导致数据丢失
    • 机制
      • 使用接收窗口字段(RcvWindow)表示剩余缓冲区空间
      • 发送方限制未确认数据字节数不超过 RcvWindow
    • 零窗口探测与坚持定时器
      • 接收端通告窗口为 0 → 发送方暂停发送
      • 发送方启动坚持定时器,周期性发送探测报文
      • 接收方用 ACK 告知窗口更新值
  • TCP 拥塞控制
    • 拥塞产生的原因
      • 网络资源有限,发送数据过快导致路由器缓存溢出
      • 表现为:延迟增大、吞吐下降、丢包频繁
    • 拥塞控制策略 TCP 采用端到端的拥塞控制方式,通过检测丢包和 ACK 间接判断网络状况。
    • 拥塞窗口(cwnd)
      • 表示网络允许发送的最大数据量
      • 实际发送窗口 = min(cwnd, RcvWindow)
  • TCP 拥塞控制四阶段 + AIMD 策略
    • MSS:Max Segment Size
    • 阶段 1:慢启动(Slow Start)
      • 初始 cwnd = 1 MSS
      • 每收到一个 ACK,cwnd 翻倍
      • cwnd &gt;= ssthresh → 进入拥塞避免
    • 阶段 2:拥塞避免(Congestion Avoidance)
      • cwnd += 1 MSS 每个 RTT(线性增长)
    • 阶段 3:快速重传与快速恢复
      • 收到 3 个重复 ACK:
        • ssthresh = cwnd / 2
        • 立即重传丢失段
        • cwnd = ssthresh + 3 MSS
        • 进入快速恢复阶段
      • 每收到一个重复 ACK:
        • cwnd += 1 MSS
      • 收到新 ACK 后退出快速恢复,进入拥塞避免
    • 阶段 4:超时处理
      • 若发生超时:
        • ssthresh = cwnd / 2
        • cwnd = 1 MSS
        • 回到慢启动
    • AIMD 策略(加性增大 / 乘性减小)
      • 加性增大(Additive Increase):
        • 拥塞避免阶段每 RTT 将 cwnd 线性增加 1 个 MSS
      • 乘性减小(Multiplicative Decrease):
        • 拥塞发生(超时或重复 ACK)时,将 cwnd 减半
      • TCP 通过 AIMD 实现逐步探测网络带宽上限,同时在出现问题时迅速减速,保持网络稳定性。

题目

  • MAC协议提供无连接(指数据传输之前不需要建立一个专用的连接路径)不可靠(不保障数据帧的可靠传输)服务。
  • 在公共网络上模拟一条点到点的逻辑专线用的隧道协议
  • 冲突域与广播域 冲突域:在数据链路层中,冲突域是局域网内数据帧碰撞检测的范围,同一冲突域内设备共享同一物理介质,可能出现数据传输冲突。 广播域:在数据链路层中,广播域是局域网内广播帧能够到达的范围,同一广播域内设备可接收彼此的广播帧。
设备名称工作层级功能描述特点
集线器物理层信号放大和中继,将数据广播到所有端口只能建立一个共享信道,效率低,易产生广播风暴
中继器物理层信号再生放大,延长网络距离直接转发信号,不处理数据,只能连接同一网络段
交换机数据链路层根据 MAC 地址转发数据,为每个端口创建独立冲突域转发效率高,能有效隔离冲突,支持多端口通信
网桥数据链路层连接不同局域网,过滤和转发数据帧可连接不同网络拓扑结构,减少网络冲突,但易产生广播风暴
路由器网络层根据 IP 地址转发数据包,连接不同网络可选择最佳路径,隔离广播,配置复杂,价格相对较高
  • 信噪比的计算 SNR=10log10(SN)SNR=10\log_{10}\left( \frac{S}{N} \right)

  • RIP协议更新表不要忘记+1

  • “子网分配给主机的IP地址数量”要减去网络地址与广播地址(2)

  • IPv4 到 IPv6 的过渡手段包括双协议栈、隧道技术、网络地址转换 / 协议转换(NAT-PT)等。 理由 :IPv4 地址的有限性限制了互联网的发展,而 IPv6 能够提供足够的地址空间来满足未来的需求。在 IPv4 向 IPv6 过渡期间,需要采用一些过渡手段来实现两者的兼容和互操作

  • 流量控制为了防止接收方缓冲区溢出

  • 拥塞控制防止网络中的数据包太多

  • 链路层:帧丢失→发送方启动定时器/帧重复→帧编号

  • 采用CRC检验后,链路层也没有变成可靠的运输,因为有差错就只是简单的丢帧

  • IEEE 802局域网标准对应OSI参考模型的:物理层和数据链路层

  • 网络适配器的作用是什么?网络适配器工作在哪一层? 适配器又称为网络接口卡(Network Interface Card, NIC)或简称为“网卡”。在适配器上面装有处理器和存储器(包括RAM和ROM)。 适配器和局域网之间的通信是通过电缆或双绞线以串行传输方式进行的,而适配器和计算机之间的通信则是通过计算机主板上的I/O总线以并行传输方式进行的。因此,适配器的一个重要功能就是要进行数据串行传输和并行传输的转换。由于网络上的数据率和计算机总线上的数据率并不相同,因此在适配器中必须装有对数据进行缓存的存储芯片。 若在主板上插入适配器时,还必须把管理该适配器的设备驱动程序安装在计算机的操作系统中。这个驱动程序以后就会告诉适配器,应当从存储器的什么位置上把多长的数据块发送到局域网,或者应当在存储器的什么位置上把局域网传送过来的数据块存储下来。适配器还要能够实现以太网协议。 适配器接收和发送各种帧时不使用计算机的CPU。这时CPU可以处理其他任务。当适配器收到有差错的帧时,就把这个帧丢弃而不必通知计算机。当适配器收到正确的帧时,它就使用中断来通知该计算机并交付协议栈中的网络层。当计算机要发送IP数据报时,就由协议栈把IP数据报向下交给适配器,组装成帧后发送到局域网。

  • 路由收敛:网络设备的路由表与网络拓扑结构保持一致

  • 当某个路由器发现一IP数据报的检验和有差错时,为什么采取丢弃的办法而不是要求源站重传此数据报? IP 首部中的源地址也可能变成错误的,要求错误的源地址重传数据报是没有意义的。

  • 为什么要使用UDP?让用户进程直接发送原始的IP分组不就足够了吗?仅仅使用IP分组还不够。IP分组包含IP地址,该地址指定一个目 的机器。一旦这样的分组到达目的机器,网络控制程序如何知道把它交给哪个进程呢?UDP分组包含一个目的端口,这一信息是必需的,因为有了它,分组才能被投递给正确的进程。此外,UDP可以对数据报做包括数据段在内的差错检测,而IP只对其首部做差错检测。

  • 在TCP/IP模型中,服务访问点(SAP)是上层协议实体与下层协议实体之间进行通信的逻辑接口。

层次名称(均作为下层)服务访问点(SAP)简要描述
应用层端口号用于标识应用进程,区分不同的应用程序
传输层端口号用于区分不同的应用程序进程,端到端通信的标识
网络层IP地址用于标识网络中的主机,网络层通信的标识
数据链路层MAC地址用于标识局域网中的物理节点,数据链路层通信的标识
物理层主要关注物理信号的传输,没有服务访问点
  • b与B
区分项目b(bit)B(Byte)
定义计算机中最小的数据单位,也叫二进制位,只能表示 0 或 1 两种状态计算机中存储信息的基本单位,1 个字节由 8 个二进制位组成,可用于表示一个字符等
换算关系1B = 8b1B = 8b
实际应用示例表示数据传输速率,如网络带宽是 100Mbps(100 兆比特每秒),衡量每秒可传输的数据量描述存储设备容量,像一个 U 盘容量是 16GB(16 吉字节),表示其能存储的数据量
  • 信道复用:
    • 静态:频分,时分,码分……
    • 动态:随机访问,受控访问,有限竞争
  • 什么是累计确认(Cumulative ACK)?累计确认的优点是什么?累计确认和 TCP 的推迟确认(Delayed ACK)的区别是什么?
    • 不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认。
    • 累计确认的优点是:减少控制开销,处理丢包时更加高效。
    • 两者的区别在于:累计确认是一种通过合并多个数据包的确认来减少开销的机制。推迟确认是 TCP 的一种优化技术,通过延迟发送 ACK 进一步减少控制流量。二者的核心区别在于累计确认关注的是合并确认的范围,而推迟确认关注的是延迟确认的时机。