计算机网络笔记

课程笔记

技术
技术数据结构算法Java

2025-05-28

《计算机网络》笔记

第1章 计算机网络基础

1.3 互联网的组成

边缘部分由所有连接在互联网上的主机组成,用户直接使用。用来进行通信(传送数据、音频或视频)和资源共享。

核心部分由大量网络和连接这些网络的路由器组成。为边缘部分提供服务(提供连通性和交换)。

核心部分的路由器是实现分组交换^[packet switching]的关键构件,它是一种专用计算机但不是主机

[!NOTE] 电路交换、分组交换和报文交换 ./computer-network/三种交换方式的对比.png

  • 电路交换

    • 若要连续传送大量的数据,并且数据传送时间远大于建立连接的时间,则使用电路交换可以有较高的传输效率。

    • 然而计算机的数据传送往往是突发式的,采用电路交换时通信线路的利用率会很低。报文交换和分组交换都不需要建立连接(即预先分配通信资源),在传送计算机的突发数据时可以提高通信线路的利用率。

  • 分组交换

    • 没有建立连接和释放连接的过程。分组传输过程中逐段占用通信链路,有较高的通信线路利用率。交换节点可以为每一个分组独立选择转发路由,使得网络有很好的生存性。

    • 分组首部带来了额外的传输开销。交换节点存储转发分组会造成一定的时延。无法确保通信时端到端通信资源全部可用,在通信量较大时可能造成网络拥塞。分组可能会出现失序和丢失等问题。

    • 计算分组数时要向下取整:\text{分组数} =\left\lceil \frac{\text{报文长度}}{\text{分组长度}} \right\rceil

  • 报文交换

    • 报文交换比分组交换带来的转发时延要长很多,需要交换节点具有的缓存空间也大很多。

    • 将报文构造成若干个更小的分组进行分组交换,比将整个报文进行报文交换的时延要小,并且还可以避免太长的报文长时间占用链路,有利于差错控制,同时具有更好的灵活性。

1.5 计算机网络的类别

按交换方式划分:电路交换、分组交换和报文交换。

按使用者划分:公用网(因特网)与专用网。

按传输介质划分:无线网络与有线网络。

按覆盖范围划分:广域网(MAN)、城域网(MAN)、局域网(LAN)、个人区域网(PAN)。

按拓扑结构划分:总线型、星型、环型(试图用令牌缓解冲突)、网状型。

1.6 计算机网络的性能

计算机网络的性能指标:

[!TIP] 发送时延和传播时延的计算 \text{发送时延} =\frac{\text{分组长度,单位bit}}{\text{发送速率,单位b/s}} \text{传播时延} =\frac{\text{信道长度,单位m}}{\text{信号传播速率,单位m/s}} 由于存在流水线效应(后续分组无需等待前一个分组完全到达目的地,即可开始传输),如果不考虑排队时延和处理时延,那么: \begin{aligned} \text{总时延} = & \text{所有分组的发送时延} + \\ & 1 \text{个分组的发送时延} \times \text{转发次数(即路由器个数)} + \\ & 1 \text{个分组在链路上的总传播时延} \end{aligned} ./computer-network/时延计算.png

[!NOTE] 信号传输速率

  • 真空:3.0\times 10^{8}\mathrm{m} /\mathrm{s}

  • 铜线:2.3\times 10^{8}\mathrm{m} /\mathrm{s}

  • 光纤:2.0\times 10^{8}\mathrm{m} /\mathrm{s}

[!NOTE] 利用率 当某链路的利用率增大时,该链路引起的时延就会迅速增加。 \text{理想情况下:网络当前时延} =\frac{\text{网络空闲时的时延}}{1-\text{网络利用率}} 由该式可知网络利用率逐渐接近1时,网络当前时延会急剧上升,因此一般会控制网络利用率小于一定值。

1.7 计算机网络体系结构

./computer-network/计算机网络体系结构.png

OSI参考模型(7层):物链网输会示用(物联网叔会使用)。OSI标准失败的原因

一般认为,路由器的最高网络体系结构为网际层

./computer-network/TCPIP四层协议的表示方法举例.png

TCP/IP协议族(常称TCP/IP协议栈)表明,向下看IP协议互连不同的网络接口(IP over everything),向上看IP协议可以为各种网络应用提供服务(Everything over IP)。

为了实现各种设备互连,网络接口层实际没有规定多少内容,因此TCP/IP协议族本质上是上三层的内容。

./computer-network/沙漏计时器形状的TCPIP协议族示意.png

计算机网络体系结构分层的必要性:计算机网络是非常复杂的系统,通过“分层”可将庞大复杂的问题转化为若干较小的局部问题。这即是“高内聚低耦合”(层内部联系紧密,层之间耦合度低)。

./computer-network/原理体系结构分层.png

计算机网络体系结构分层的思想:发送的报文由上至下是逐层封装(经过几层封装几次),由下至上是逐层解封。以浏览器向Web服务器发送一次请求为例:

./computer-network/数据在各层之间的传递过程.png

在计算机网络体系结构中:

./computer-network/计算机网络体系结构中的专用术语.png

[!Question] 第1章习题 1-10、11、15、17、18、19、30

第2章 物理层

2.1 物理层的基本概念

物理层接口特性:机械特性、电气特性、功能特性、过程特性。

2.3 物理层下面的传输媒体

传输媒体/传输介质/传输媒介:计算机网络设备之间的物理通路。其并不包含在计算机网络体系结构中。

./computer-network/传输媒体的分类.png

同轴电缆价格较贵且布线不够灵活和方便。随着技术的发展和集线器的出现,在局域网领域基本上都采用双绞线作为传输媒体。

线路绞合的作用:减少相邻导线间的电磁干扰;抵御部分来自外界的电磁干扰。

光纤通信利用光脉冲在光纤中的传递来进行通信。光在光纤中传输的方式是不断地全反射。由于可见光的频率非常高,因此光纤通信系统的传输带宽远大于目前其他各种传输媒体的带宽。

./computer-network/电信领域使用的电磁波的频谱.png

对于非导向型传输媒体,电磁波中频率高于10^4Hz的无线电波、微波、红外线、可见光和部分频段的紫外线可以通过调制波的振幅、频率或相位来传输信息。可自由使用的一些无线电频段:ISM^[Industrial, Scientific, and Medical]频段。

2.2 数据通信的基础知识

数据传输方式:包括串行传输并行传输同步传输异步传输单向通信双向交替通信双向同时通信

[!NOTE] 串行传输和并行传输

出于经济成本考虑,数据在计算机内部多采用并行传输方式,而在通信线路(传输媒体)上的传输方式一般都是串行传输。

网卡均支持这两种传输方式,当计算机通过内部网卡从传输线路接收数据时,其起到串/并转换的作用。

[!NOTE] 同步传输和异步传输 同步传输就是一连串的比特连续传送(比特流),字节之间无间隔,无起始终止位。

  • 接收方在比特信号的中间时刻进行采样,以判别接收的是比特0还是1,这要求双方就比特信号的时间长度达成一致(同步)。

  • 但收发双方的时钟频率总是存在着误差,随着数据量增大,误差逐渐积累造成比特信号采样时刻严重偏移。最终导致接收方误判比特信号。

[!NOTE] 收发双方时钟同步的方法

  • 外同步:在收发双方之间增加一条时钟信号线。

  • 内同步:发送端将时钟信号编码到发送数据中一起发送(例如曼彻斯特编码和查分曼彻斯特编码)。

异步传输以字节为传输单位,但字节之间的时间间隔不定(异步)。每个字节的首尾都附带起始位和结束位。

  • 接收方只在字节起始处对每个比特进行同步,也就是令每个信号持续时间相同。

[!NOTE] 单向通信、双向交替通信和双向同时通信 单工通信,只许我说你听。半双工通信,我们轮着说。全双工通信,我们同时说。

  • 单向通信/单工通信:应用于无线电广播、电视广播等。只需一条信道。

  • 双向交替通信/半双工通信:总线型以太网的各主机间、对讲机等。需要两条信道。

    • “单工电台”指的是双向交替通信。
  • 双向同时通信/全双工通信:交换式以太网的各主机间、有线电话、手机等。需要两条信道。

./computer-network/编码与调制的基本概念.png

在使用时间域的波形表示信号时,代表不同离散数值的基本波形称为码元

[!Example] 数字信号常用的编码方式 ./computer-network/数字信号常用的编码方式.png

  • 不归零制:正电平代表 1,负电平代表 0。缺点在于缺乏自同步,需要再给收发双方再添加一条时钟信号线。

  • 归零制:正脉冲代表 1,负脉冲代表 0。每个码元的中间时刻信号都会回归到零电平,接收方在信号归零后采样即可,故拥有自同步能力。然而归零编码中大部分数据带宽都因传输“归零”而浪费掉了。

  • 曼彻斯特编码:位周期中心的向上跳变代表 0,位周期中心的向下跳变代表 1。也可反过来定义。每个比特对应2个码元。

  • 差分曼彻斯特编码:在每一位的中心处始终都有跳变。位开始边界有跳变代表0,而位开始边界没有跳变代表1。码元中间时刻的电平跳变仅表示时钟信号,而不表示数据。每个比特对应2个码元。

对比曼彻斯特编码与其他编码:曼彻斯特编码产生的信号频率比不归零制高,且曼彻斯特编码具有自同步能力(能从信号波形本身中提取信号时钟频率)。

对比曼彻斯特与差分曼彻斯特:在传输大量连续1或连续0的情况下,差分曼彻斯特编码信号比曼彻斯特编码信号的变化少。在噪声干扰环境下,检测有无跳变比检测跳变方向更不容易出错,因此差分曼彻斯特编码信号比曼彻斯特编码信号更易于检测。在传输介质接线错误导致高低电平翻转的情况下,差分曼彻斯特编码仍然有效。

[!Example] 基本的带通调制方法和混合调制方法 基本的带通调制方法有三种:调幅AM、调频FM、调相PM。分别对应载波的振幅、载波的频率、载波的初始相位随基带数字信号而变化。

./computer-network/最基本的三种调制方法.png

使用基本调制方法,1个码元只能包含1个比特信息。但如果使用混合调制则能包含多个比特信息。

  • 载波的频率和相位是相关的(频率是相位随时间的变化率),所以载波的频率和相位不能进行混合调制

  • 载波的相位和振幅可以混合调制,例如正交振幅调制QAM^[Quadrature Amplitude Modulation]。

[!Example] 正交振幅调制QAM-16 共有12种相位,每种相位有1或2种振幅可选,总共可调制出16种码元(波形),由2^4=16, \log_2{16}=4可知每种码元可以对应表示4个比特

每个码元与4个比特的对应关系采用格雷码,即任意两个相邻码元只有1个比特不同。

造成信号失真的主要因素:

[!NOTE] 码间串扰 信道上传输的数字信号,可以看做是多个频率的模拟信号进行多次叠加后形成的方波。如果数字信号中的高频分量在传输时受到衰减甚至不能通过信道,则接收端接收到的波形前沿和后沿就变得不那么陡峭,每一个码元所占的时间界限也不再明确。这样,在接收端接收到的信号波形就失去了码元之间的清晰界限,这种现象称为码间串扰

信道的频带越宽,能够通过的信号的高频分量就越多,那么码元的传输速率就可以更高,而不会导致码间串扰。但是信道的频率带宽有上限,因此码元的传输速率也有上限(奈氏准则)。

[!TIP] 奈氏准则 \text{理想低通信道的} \textcolor{red}{\text{最高码元传输速率}} =2W\ \mathrm{B} \mathrm{a} \mathrm{u} \mathrm{d} 其中, \begin{gathered}W:\ \text{信道的频率带宽,单位为Hz}\\ \mathrm{B} \mathrm{a} \mathrm{u} \mathrm{d} :\ \text{码元传输速率的单位“波特”,即码元/秒}\end{gathered}

码元传输速率(又称波特率)与比特率有一定的关系:

  • 1个码元只携带1比特信息时,波特率(码元/秒)与比特率(比特/秒)在数值上相等

  • 1个码元携带n比特信息时,波特率(码元/秒)转换成比特率(比特/秒)要n

该公式由信道的频率带宽求信道的最高码元传输速率。只要码元传输速率不超过奈氏准则计算出的上限,就可以避免码间串扰。

实际的信道所能传输的最高码元传输速率,要明显低于奈氏准则给出的上限值。

[!TIP] 香农公式 \text{带宽受限且有高斯白噪声干扰的信道的极限信息传输速率}\ C=W \log_{2} \left( 1+\frac{S}{N} \right) 其中,C表示信道的极限信息传输速率(单位b/s);W表示信道的频率带宽(单位Hz);S表示信道内所传信号的平均功率;N表示信道内的高斯噪声功率。 \text{信噪比(单位为dB)}=10\log_{10} \frac{S}{N} 实际信道不可能无限制地提高频率带宽W或信道中的信噪比S/N

由于该公式未考虑其他干扰和衰减,实际信道中能够达到的信息传输速率,要比公式给出的极限传输速率低不少。

由上述两公式可知:频率带宽W一定时,若提高信息传输速率,必须采用更复杂的调制技术并努力提高信道中的信噪比

复用^[Multiplexing]就是在一条传输媒体上同时传输多路用户的信号。当一条传输媒体的传输容量大于多条信道传输的总容量时,就可通过复用技术在这条传输媒体上建立多条通信信道,以便充分利用传输媒体的带宽

[!Example] 常用的信道复用技术 包括频分复用FDM时分复用TDM波分复用WDM码分复用CDM

[!Example] 频分复用FDM 所有用户同时占用不同的频带资源并行通信。主要在模拟信号传输中应用。

./computer-network/频分复用FDM.png

[!Example] 时分复用TDM 所有用户在不同的时间占用同样的频带。主要在数字信号传输中应用。

./computer-network/时分复用TDM.png

[!Example] 波分复用WDM 在一根光纤上同时传输多个频率(波长)相近的光载波信号,实现基于光纤的频分复用技术。实际上是光的频分复用FDM方法。

目前可以在一根光纤上复用80路或更多路的光载波信号。因此这种复用技术也称为密集波分复用DWDM

./computer-network/波分复用WDM.png

[!TIP] 计算使用波分复用技术的光缆的总数据速率 在一根光缆中放入100根速率为2.5Gb/s的光纤,对每根光纤采用40倍的密集波分复用,则这根光缆的总数据速率为(2.5Gb/s × 40)× 100 = 10000Gb/s = 10Tb/s。

[!Example] 码分复用CDM 码分复用CDM^[Code Division Multiplexing]常称为码分多址CDMA^[Code Division Multiple Access]。与FDM和TDM不同,CDMA的每个用户可以在相同的时间使用相同的频带进行通信

CDMA将每个比特时间划分为m个更短的时间片,称为码片^[Chip]。m的取值通常为64或128。

CDMA中的每个站点都被指派一个唯一的m个比特的码片序列^[Chip Sequence]。将码片序列中的比特0记为-1,而比特1记为+1,可写出码片序列相应的码片向量

  • 由于分配给每个站点的码片序列必须互不相同相互正交,因此不同站点的码片向量计算内积一定为0。

  • 这里计算使用规格化内积,也就是向量内积的1/m

[!TIP] 使用码分多址传输比特 若是某一站点向CDMA系统其他站点发送同一比特:

某站点要发送比特1,就发送它自己的m比特码片序列;要发送比特0,就发送它自己的m比特码片序列的反码(各位取反)。

当接收站打算收 S 站发送的信号时,就用 S 站的码片序列与收到的信号求规格化内积。

  • 若求出的是1,那么其他站点发来的就是比特1

  • 若求出的是-1,说明发来的是比特0

  • 若求出的都是0,可能说明没有给当前设备发送数据。

./computer-network/CDMA例题.png


若是基站向不同接收方分别发送不同比特:

基站需要根据接收方的码片序列来确定传输的信号,然后将所有信号叠加。

接收方收到发来的叠加后的信号,就用自己的码片向量与收到的叠加后的码片向量做规格化内积运算。求出的结果便是基站发来的比特了。

./computer-network/CDMA发送端.png ./computer-network/CDMA接收端.png

[!Question] 第2章习题 2-7. 9. 11. 16.

第3章 数据链路层

3.1 数据链路层的几个共同问题

链路^[Link]是指从一个节点到相邻节点的一段物理线路(有线或无线),而中间没有任何其他的交换节点

数据链路^[Data Link]是基于链路的。当在一条链路上传送数据时,除需要链路本身,还需要一些必要的通信协议来控制这些数据的传输,把实现这些协议的硬件和软件加到链路上,就构成了数据链路。

^[Frame]是数据链路层对等实体之间在水平方向进行逻辑通信的协议数据单元PDU。

数据链路层的三个基本问题:封装成帧和透明传输差错检测可靠传输

[!Example] 封装成帧^[framing]就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。 ./computer-network/封装成帧和透明传输.png

网络层的IP数据报传送到数据链路层就成为帧的数据部分。在帧的数据部分的前面和后面分别添加上首部和尾部,构成了一个完整的帧。这样的帧就是数据链路层的数据传送单元。

为了提高数据链路层传输帧的效率,应当使帧的数据载荷的长度尽可能地大于首部和尾部的长度。但每一种数据链路层协议都规定了帧的数据载荷的长度上限,即最大传送单元MTU^[Maximum Transfer Unit]。

首部和尾部的一个重要作用就是进行帧定界(即确定帧的界限),除此以外还包含控制信息。帧定界可以使用特殊的帧定界符:控制字符SOH^[Start Of Header]放在一帧的最前面表示帧的首部开始;控制字符 EOT^[End Of Transmission]表示帧的结束。

  • 并不是每一种数据链路层协议的帧都包含有帧定界标志。例如以太网V2的MAC帧就没有帧定界,但是它会在物理层包装一个前导码。

./computer-network/以太网V2的MAC帧在物理层传输.png

[!Example] 透明传输指数据链路层对上层交付下来的PDU无任何限制,好像数据链路层不存在一样。 由于上层交给数据链路层的IP数据报中可能含有帧定界符FLAG的序列,为防止接收方因读取这些序列而导致错误地“找到帧的边界”,需要对其进行处理。

[!TIP] 面向字节的物理链路使用字节填充^[byte stuffing]的方法实现透明传输。 字节填充就是每当在帧的数据部分出现帧定界符序列就在其前面插入一个转义字符“ESC”。如果转义字符也出现在数据当中,那么解决方法仍然是在转义字符的前面插入一个转义字符

  • 接收端的数据链路层会在把数据送往网络层之前删除这个插入的转义字符。当接收端收到连续两个转义字符时,就删除其中前面的一个。

./computer-network/用字节填充法解决透明传输的问题.png

[!TIP] 面向比特的物理链路使用比特填充的方法实现透明传输。 零比特填充法:在数据部分每出现5个连续比特1就在后面插入一个比特0。这是因为PPP协议将帧首部和帧尾部中的标志字段作为帧定界符,其值为01111110(即十六进制下0x7E),为了防止错误读取就在1连续出现的地方插入一个0。高级数据链路控制协议HDLC也采用零比特填充法。

[!Example] 差错检测:检测数据在传输过程中是否产生了诸如比特差错之类的差错。 实际的通信链路都不是理想的,比特在传输过程中可能会产生差错(比特差错)。比特差错只是众多差错中的一种。

[!TIP] 传输错误的比特数量占所传输比特总数的比率称为误码率BER^[Bit Error Rate]。

提高链路的信噪比,可以一定程度上降低误码率。但无法使之降为0。因此需要使用差错检测技术:

  • 奇偶校验(很少使用,漏检率过高)

    • 奇校验是在待发送的数据后面添加1个校验位,使得添加该位后的整个数据中比特1的个数为奇数。偶校验是在待发送的数据后面添加1个校验位,使得添加该校验位后的整个数据中比特1的个数为偶数。

    • 如果有奇数个比特发生误码,则所包含比特1的数量的奇偶性会改变,可以检测出误码。有偶数个比特发生误码就无法检测,即发生漏检。

  • 根据帧尾中的帧检验序列FCS检测帧中是否有误码。而FCS是由漏检率极低的循环冗余校验CRC^[Cyclic Redundancy Check]生成的。

[!TIP] 循环冗余校验CRC 收发双方约定好一个生成多项式G(X),发送方基于待发送的数据和生成多项式G(X),计算出差错检测码(冗余码),将冗余码添加到待发送数据的后面一起传输。

接收方收到数据和冗余码后,通过生成多项式G(X)来计算收到的数据和冗余码是否产生了误码。

./computer-network/循环冗余校验.png

[!Example] 可靠传输 检测出误码后如何处理取决于数据链路层向其上层提供的服务类型,包括:

  • 不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做。

  • 可靠传输服务:通过某种机制实现发送方发送什么,接收方最终就能收到什么。

有线链路的误码率较低。一般不要求数据链路层向其上层提供可靠传输服务。但无线链路误码率比较高,因此要求数据链路层必须向其上层提供可靠传输服务。

传输差错包括误码(比特差错)分组重复分组失序分组丢失。后三者出现在数据链路层的上层。

3.2 点对点协议PPP

点对点协议PPP是因特网工程任务组IETF^[Internet Engineering Task Force]于1992年制定的。

./computer-network/PPP的帧格式.png

[!TIP] PPP帧实现透明传输 ./computer-network/PPP帧的透明传输.png

PPP的帧检验序列FCS的计算范围是ACP及数据载荷。

使用PPP的数据链路层,向上提供的是不可靠数据传输服务。即接收方每收到一个PPP帧就进行CRC检验。若CRC检验未通过就丢弃这个帧。

3.3 共享式以太网

以太网(Ethernet)目前已经从传统的共享式以太网发展到交换式以太网。

要将计算机连接到以太网,需要使用相应的网络适配器^[Adapter],简称“网卡”。计算机内部的网卡与CPU之间的通信一般通过计算机主板上的I/O总线以并行传输方式进行。网卡与外部以太网(局域网)之间的通信一般通过传输媒体(同轴电缆、双绞线电缆、光纤)以串行方式进行。

点对点信道中,数据链路层不需要使用地址;当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识,即一个数据链路层地址。在每个主机发送的帧的首部中,都携带有发送主机(源主机)和接收主机(目的主机)的数据链路层地址。由于这类地址是用于媒体接入控制^[Medium Access Control, MAC]的,因此被称为MAC地址

[!TIP] MAC地址是固化于硬件中的,因此又称物理地址/硬件地址。特别注意物理地址是属于数据链路层而非物理层

每块网卡都有一个全球唯一的MAC地址。MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。

IEEE 802局域网的MAC地址:

./computer-network/IEEE 802局域网的MAC地址格式.png

IEEE 802局域网的MAC地址发送顺序:从第1字节发送至第6字节,字节内的比特发送顺序是从b0b7

共享总线以太网具有天然的广播特性,即使总线上某个站点给另一个站点发送单播帧,表示帧的信号也会沿着总线传播到总线上的其他各站点。当某个站点在总线上发送帧时,总线资源会被该站点独占。此时如果总线上的其他站点也要在总线上发送帧,就会产生信号碰撞

为解决各站点争用总线的问题,共享总线以太网使用了一种专用协议CSMA/CD,即载波监听多址接入/碰撞检测^[Carrier Sense Multiple Access Collision Detection]。

[!NOTE] CSMA/CD

  • 多址接入MA:多个站点连接在一条总线上竞争使用总线。

  • 载波监听CS:每个站点在发送帧之前,先要检测一下总线上是否有其他站点在发送帧。

    • 若检测到总线空闲96比特时间(发送96比特所耗费的时间,即帧间最小间隔),则发送这个帧;

    • 若检测到总线忙,则继续检测并等待总线转为空闲96比特时间,然后发送这个帧。

  • 碰撞检测CD:每个正在发送帧的站点边发送边检测碰撞。一旦发现总线上出现碰撞,立即停止发送,退避一段随机时间后再次从载波监听开始进行发送。

  • 强化碰撞:发送帧的站点一旦检测到碰撞,除立即停止发送帧外还要再继续发送人为干扰信号^[Jamming Signal],以便使所有站点都能检测出碰撞。

可知,载波监听检测到总线空闲,但总线并不一定空闲。该协议不能完全避免碰撞。由于碰撞检测的存在,站点不可能同时进行发送和接收,只能进行半双工通信

[!TIP] 共享式以太网的争用期 ./computer-network/共享式以太网的争用期.png

站点从发送帧开始,最多经过时长2τ(即δ→0)就可检测出所发送的帧是否遭遇了碰撞。因此共享总线以太网的端到端往返时间2τ被称为争用期^[Contention Period]或碰撞窗口^[Collision Window]。

  • 站点从发送帧开始,经过争用期2τ这段时间还没有检测到碰撞,就可以肯定这次发送不会产生碰撞。

  • 总线的长度越长(单程端到端传播时延越大),网络中站点数量越多,发生碰撞的概率就越大。

10Mb/s共享总线以太网(传统以太网)规定:争用期2τ的值为512比特的发送时间,即51.2μs

./computer-network/10BASE-T共享式以太网的争用期.png

100BASE-T以太网与10Mb/s标准以太网(传统以太网)一样,仍然使用IEEE 802.3的帧格式和CSMA/CD协议。以太网最小帧长保持不变,仍为64字节。

为确保共享总线以太网上的每一个站点在发送完一个完整的帧之前能检测出是否产生了碰撞,帧的发送时延就不能少于共享总线以太网端到端的往返时间,即一个争用期2τ。这说明共享式以太网有“最小帧长”的限制。(最大帧长是PDU限制的最大数据载荷1500B)

[!TIP] \underset{\text{单位 bit}}{\text{最小帧长}} =\underset{\text{单位 b/s}}{\text{数据传输速率}} \times \underset{\text{单位 s}}{\text{争用期} 2\tau}

正在发送帧的站点会进行碰撞检测,当检测到碰撞时立即停止发送,退避一段随机时间后再重新发送。该随机时间由截断二进制指数退避^[Truncated Binary Exponential Backoff]算法得出。截断二进制指数退避算法使重传需要推迟的平均时间随重传次数而增大(动态退避),减小产生碰撞的概率。

[!TIP] 截断二进制指数退避算法 \begin{gathered}\text{令} k=\min \{ \textcolor{green}{\text{当前的数据重传次数}} ,\textcolor{green}{10} \}\\ \text{从离散的整数集} \textcolor{magenta}{\{ 0,1,\cdots ,2^{k}-1\}} \text{中随机选出一个数} \textcolor{blue}{r}\\ \text{退避时间} =\underset{\text{(基本退避时间)}}{\textcolor{red}{\text{争用期} 2\tau}} \times \textcolor{blue}{\text{随机数} r}\end{gathered} 当重传达16次仍不能成功时应放弃重传并向高层报告。

[!TIP] 共享式以太网的信道利用率 ./computer-network/以太网的信道被占用的情况.png

其中,发送帧需要的时间T_0等于帧长(bit)除以发送速率(bit/s)。要提高以太网的信道利用率,就必须减小\tauT_0之比。

理想情况下(无碰撞,总线一空闲就有站点发送数据): \text{极限信道利用率} S_{\mathrm{m} \mathrm{a} \mathrm{x}}=\frac{T_{0}}{T_{0}+\tau} =\frac{1}{1+\textcolor{blue}{\frac{\tau}{T_{0}}}} =\frac{1}{1+\textcolor{blue}{a}} 只有当参数a远小于1才能得到尽可能高的极限信道利用率。因此共享总线以太网端到端的距离不应太长,并且帧的长度应尽量大(不能大于最大帧长)。

3.4 扩展的以太网

[!Example] 以太网的命名 ./computer-network/以太网的命名.png

共享式总线以太网之后,以太网发展出使用集线器^[Hub]来替代总线的方案。站点连接到集线器的传输媒体也转而使用更便宜、更灵活的双绞线电缆

./computer-network/用多个集线器连成更大的以太网.png

在物理层扩展以太网通常使用集线器,但是物理层扩展的共享式以太网仍然是一个碰撞域,不能连接太多的站点,否则可能会出现大量的碰撞,导致平均吞吐量太低。因此转向在数据链路层扩展以太网。

网桥^[bridge]工作在数据链路层,可以识别帧的结构,根据帧首部中的目的MAC地址和网桥自身的帧转发表来转发或丢弃所收到的帧。

由于可靠性需求,可能需要在以太网中引入冗余链路,但这又可能导致出现环路,广播帧在环路中永久兜圈会浪费网络资源并阻断正常通信。

3.5 交换式以太网

以太网交换机^[Switch]本质上就是一个多接口的网桥。仅使用交换机(而不使用集线器)的以太网就是交换式以太网

./computer-network/共享式以太网与交换式以太网的对比.png

巨大的广播域会带来一系列问题,包括广播风暴。这会浪费网络资源和各主机的CPU资源。因此需要对广播域进行分割。由于路由器成本高昂,一般选用虚拟局域网VLAN^[Virtual Local Area Network]技术。

[!NOTE] 虚拟局域网是一种将局域网内的站点划分成与物理位置无关的逻辑组的技术。 局域网内的站点在物理上是相连的,但在逻辑上可以被划分进入不同的VLAN。

属于同一VLAN的站点之间可以直接进行通信,而不同VLAN中的站点之间不能直接通信。

[!TIP] 虚拟局域网VLAN并不是一种新型网络,它只是局域网能够提供给用户的一种服务。

基于以太网交换机的接口来实现VLAN的方法:

  • 要求交换机能够处理带有VLAN标记的帧(IEEE 802.1Q帧),并且交换机的各接口可以支持不同的接口类型,不同接口类型的接口对帧的处理方式有所不同。

./computer-network/IEEE802.1Q帧.png

Hybrid接口是华为交换机私有的接口类型。Hybrid接口既可以用于交换机之间的互连(与Trunk接口相同),也可用于交换机与用户计算机之间的互连(与Access接口相同)。

对于以太网V2的MAC帧来说,接收方可能收到的无效MAC帧包括:MAC帧的长度不是整数个字节;通过MAC帧的FCS字段的值检测出帧有误码;MAC帧的长度不在64~1518字节之间。

100BASE-T以太网与10Mb/s标准以太网(传统以太网)一样,仍然使用IEEE 802.3的帧格式和CSMA/CD协议。以太网最小帧长保持不变,仍为64字节。

[!Question] 第3章习题 7、8、9、10、16、18、20、21、22、27、30、31、32、33

第4章 网络层和路由控制

4.1 网络层的几个重要概念

网络层的主要任务就是将分组从源主机经过多个网络和多段链路传输到目的主机,可以将该任务划分为分组转发和路由选择两种重要的功能。

网络层向其上层提供的两种服务:

./computer-network/虚电路服务与数据报服务.png

网络层向上只提供简单灵活的、无连接的、尽最大努力(说明是不可靠的)交付的数据报服务。这种设计将相对简单的尽最大努力的分组交付功能置于因特网核心,而将复杂的网络处理功能置于因特网的边缘(即用户主机和其内部的运输层)。

网际协议IP^[Internet Protocol]是TCP/IP体系结构网际层中的核心协议,与IP协议配套使用的还有三个协议:

4.2 网际协议IP

要将众多的异构型网络都互连起来并且能够互相通信,则会面临许多需要解决的问题。但当网络层都使用相同的IP协议时,从网络层角度看好像是一个统一的网络(IP网)。IP网上的主机进行通信就好像在单个网络上通信一样,它们看不见互连的各网络的具体异构细节。这样就实现了异构网络互连。

网络层使用的中间设备叫做路由器^[router]。

IP地址就是给互联网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内唯一的 32 位标识符。IPv4地址的编址方法经历了三个历史阶段:分类编址、划分子网、无分类编址。

IPv4地址由32比特构成,为方便阅读、记录以及输入等,采用点分十进制表示方法:每8位分成一组(共四组),每组转换为十进制数,再在各组间加点以分隔。

[!NOTE] IPv4的分类编址 IPv4地址共分为5类:ABCDE类。

  • A类、B类和C类地址都是单播地址,只有单播地址可以分配给网络中的主机(或路由器)的各接口

    • A类中网络号为127的属于例外,它作为本地环回测试地址不能分配。
  • 主机号为“全0”的地址是网络地址不能分配给主机(或路由器)的各接口。

  • 主机号为“全1”的地址是广播地址不能分配给主机(或路由器)的各接口。

./computer-network/分类的IP地址.png

[!TIP] 可以根据第一个十进制数快速判断该IP属于哪类地址:A类1~127,B类128~191,C类192~223,D类224~239,E类240~255。

各类地址的数量占全部IP地址的比分别为:A类\frac{2^{32-1}}{2^{32}} =\frac{1}{2},B类\frac{2^{32-2}}{2^{32}} =\frac{1}{4},C类\frac{2^{32-3}}{2^{32}} =\frac{1}{8},D类和E类\frac{2^{32-4}}{2^{32}} =\frac{1}{16}

[!TIP] 根据分类编址方法确定节约的IPv4分配方案 先找出图中有哪些网络:

  • 路由器的每个端口连接的是一个网络。用网桥/交换机(它只在链路层工作)互连的网段仍然是属于一个局域网。

再根据各网络中主机和路由器的接口总数量给各网络分配相应类别的网络号:

  • 路由器每个端口都要参与分配。

  • 局域网中的主机数和路由器端口数之和不得大于该类地址所支持的最大主机数。

最后给各网络中的各主机和路由器的各接口分配IP地址:

  • 在同一局域网上的主机或路由器的 IP 地址中的网络号必须是一样的。

./computer-network/互联网中的IP地址.png

分类编址方法不够灵活且容易造成大量地址浪费,因此用划分子网编址方法对其进行改进。

[!NOTE] IPv4的划分子网编址 给定一个分类的IPv4地址及其相应子网掩码,就可得出子网划分的全部细节。

子网掩码可以表明分类IPv4地址的主机号部分被借用了几个比特作为子网号。子网掩码也是由32比特构成的,左起多个连续比特1对应IPv4地址中的网络号和子网号,之后的多个连续比特0对应IPv4地址中的主机号

将划分子网的IPv4地址与相应的子网掩码进行逐比特的逻辑与运算,就可得到该IPv4地址所在子网的网络地址。

  • 逻辑与运算后,网络号和子网号被保留(相当于乘1),而主机号被清零(相当于乘0)。

  • 使用子网号的位数越多,则子网的数目较多,但每个子网上可连接的主机数就较少。

若要在同一网络内划分出n个子网,就应该使用k位的子网号,且满足2^{k}\geqslant n

划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数。

默认子网掩码是指在未划分子网的情况下使用的子网掩码。

[!NOTE] IPv4的无分类编址 为解决IPv4地址资源紧张的问题,因特网工程任务组IETF发布了无分类域间路由选择CIDR^[Classless Inter-Domain Routing]。

  • CIDR消除了传统A类、B类和C类地址以及划分子网的概念,可以更有效地分配IPv4地址资源。

  • 分类编址和划分子网的网络号都是定长的,而CIDR的网络前缀是不定长的

无分类编址方法使用地址掩码。地址掩码用左起多个连续比特1表示IPv4地址中的网络前缀之后的多个连续比特0对应IPv4地址中的主机号

使用斜线记法表示IPv4地址:地址后面加一“/”再加网络前缀的位数。

CIDR将网络前缀都相同的、连续的多个无分类IPv4地址组成一个CIDR地址块。已知任一地址,就可知道该地址块的细节(包括最小地址、地址数量、聚合某类网络的数量、地址掩码)。

[!TIP] 由某一无分类IPv4地址求地址块的相关细节 给定一无分类IP地址,将网络前缀位原封不动,剩下的主机号展开成二进制。

  • 主机号全0和全1分别对应最小地址最大地址

  • 主机号有n位,那么地址数量就有2^n位。

  • 地址掩码就是将网络前缀部分的比特位保留不动,后面全置为0。

  • 假设该IPv4地址属于C类网,那么它所在的地址块聚合C类网的数量就是地址数量与C类地址最大主机数之商。

网络前缀越长,地址块越小,路由越具体。

使用无分类编址方法,可根据客户需要分配适当大小的CIDR地址块。除此以外,无分类编址允许进行路由聚合(也称构造超网)。

[!NOTE] 由于一个CIDR地址块中有很多地址,所以在路由表中就利用CIDR地址块来查找目的网络。这种地址的聚合常称为路由聚合构造超网。它使得路由表中一个项目可以表示原来传统分类地址的很多个路由。 若路由器查表转发分组时发现有多条路由条目匹配,则选择网络前缀最长的那条路由条目,这称为最长前缀匹配,因为这样的路由更具体。

./computer-network/路由聚合.png

将给定的IPv4地址块(或分类网络)划分成若干个更小的地址块(或子网),并将这些地址块(或子网)分配给互联网中的不同网络,进而可以给各网络中的主机和路由器的接口分配IPv4地址。这分为两种手段:

[!TIP] 分别使用定长子网掩码变长子网掩码划分子网 使用定长子网掩码:

./computer-network/使用定长子网掩码划分子网.png


使用变长子网掩码:

假设申请得到的地址块为218.75.230.0/24。仍分配给上图所示的网络。

  1. 仍然先划分网络计算各子网所需IP地址数

  2. 从地址需求数最多的子网开始,对每个子网都计算其主机号的所需位数用32减主机号位数得到网络前缀位数

  • 例如网络2所需地址数最多,其次为网络3。网络2需要28个地址,则从右边起取出5位作为主机号(2^5=32>28)。那么网络前缀就有32-5=27位,网络2分配到的子网即为218.75.230.0/27。

  • 同理依次对网络3、网络4、网络1、网络5进行上述步骤。

数据报传送过程中IPv4地址与MAC地址的变化情况:

查表转发的结果可以指明IP数据报的下一跳路由器的IP地址,但无法指明该IP地址所对应的MAC地址。因此数据链路层封装该IP数据报成为帧时,帧首部中的目的MAC地址字段就无法填写,该问题需要使用网际层中的地址解析协议ARP来解决。

./computer-network/地址解析协议ARP-1.png ./computer-network/地址解析协议ARP-2.png

路由器不转发广播IP数据报,即路由器隔离广播域。

./computer-network/IPv4数据报的首部格式.png ./computer-network/标识、标志、片偏移.png ./computer-network/首部检验和.png

./computer-network/因特网采用分层次的路由选择协议.png

./computer-network/路由信息协议.png RIP仅和相邻路由器交换信息。交换的是路由器自己的路由表。

RIP的距离向量算法:先修改再更新,更新时先看自己有没有相同的目的网络,再看下一跳,再看距离。

RIP缺点:“坏消息传播得慢”。

开放最短路径优先(Open Shortest Path First,OSPF)协议使用了Dijkstra提出的最短路径算法。

./computer-network/RIP与OSPF.png

为了更有效地转发IP数据报以及提高IP数据报交付成功的机会,TCP/IP体系结构的网际层使用了网际控制报文协议(Internet Control Message Protocol,ICMP)。主机或路由器使用ICMP来发送差错报告报文和询问报文。

./computer-network/ICMP报文类型.png

./computer-network/虚拟专用网.png

./computer-network/IPv6数据报的基本首部.png

在IPv6地址的冒号十六进制记法的基础上,再使用“左侧零”省略和“连续零”压缩,可使IPv6地址的表示更加简洁。

IPv6也需要使用网际控制报文协议ICMP来向发送IPv6数据报的源主机反馈一些差错信息,相应的ICMP版本为ICMPv6。

ICMPv6比ICMPv4要复杂得多,它合并了原来的地址解析协议ARP和网际组管理协议IGMP的功能。

[!Question] 第4章习题:11 12 14 15 17 18 19 20 22-33 37 43-51 57 58

第5章

./computer-network/进程间基于网络的通信.png

./computer-network/运输层端口号.png

./computer-network/UDP与TCP.png

停止等待协议

停止-等待协议属于自动请求重传(Automatic Repeat reQuest,ARQ)协议。即重传的请求是发送方自动进行的,而不是接收方请求发送方重传某个误码的数据分组。

发送方可在每发送完一个数据分组时就启动一个超时计时器(Timeout Timer)。

若到了超时计时器所设置的超时重传时间(Retransmission Time-Out,RTO),但发送方仍未收到接收方的ACK或NAK,就重传之前已发送过的数据分组。

为了让接收方能够判断所收到的数据分组是否是重复的,需要给数据分组编号。由于停止-等待协议的特性,只需1个比特编序号即可,即序号0和序号1。

为了让发送方能够判断所收到的确认分组是否是重复的,需要给确认分组编号,所用比特数量与数据分组所用比特数量一样。

./computer-network/停止-等待协议.png

./computer-network/停止-等待协议的信道利用率.png 在往返时间RTT相对较大的情况下,为了提高信道利用率,收发双方不适合采用停止-等待协议,而可以选择使用回退N帧(GBN)协议或选择重传(SR)协议。

回退N帧协议

./computer-network/回退N帧协议.png

回退N帧协议采用流水线传输方式,并且利用发送窗口来限制发送方连续发送数据分组的数量,这属于连续ARQ协议。

./computer-network/回退N帧协议-1.png ./computer-network/回退N帧协议-2.png

回退N帧协议的接收方采用累积确认方式。

./computer-network/回退N帧协议-0.png

./computer-network/对比停止-等待协议、回退N帧协议和选择重传协议.png

与回退N帧协议不同,选择重传协议不采用累积确认,接收方需要对每一个正确接收的数据分组进行逐一确认。 发送方仅重传未收到确认而超时的数据帧。

./computer-network/选择重传协议.png

TCP报文段

./computer-network/TCP报文段首部.png

./computer-network/TCP可靠传输的实现-1.png ./computer-network/TCP可靠传输的实现-2.png

接收方只能对按序收到的数据中的最高序号给出确认。

发送窗口内的序号已经用完了,发送方在未收到接收方发来确认的情况下,不能再发送新的数据。

序号落在发送窗口内的已发送数据,如果迟迟收不到接收方的确认,则会产生超时重传。

TCP接收方只能对按序收到的数据中的最高序号给出确认。当发送方超时重传时,接收方之前已收到的未按序到达的数据也会被重传。

TCP为应用程序提供了流量控制(Flow Control)机制,以解决因发送方发送数据太快而导致接收方来不及接收,造成接收方的接收缓存溢出的问题。

流量控制的基本方法:接收方根据自己的接收能力(接收缓存的可用空间大小)控制发送方的发送速率。

./computer-network/TCP流量控制-1.png ./computer-network/TCP流量控制-2.png

TCP发送方的发送窗口值 = min{TCP发送方的拥塞窗口值,TCP接收方的接收窗口值}

TCP运输连接有以下三个阶段:

TCP客户进程在发送完最后一个TCP确认报文段后,再经过2MSL时长,就可以使本次连接持续时间内所产生的的所有报文段都从网络中消失。这样就可以使下一个新的TCP连接中不会出现旧连接中的报文段。

TCP采用保活计时器./computer-network/TCP保活计时器.png

TCP的拥塞控制

./computer-network/流量控制与拥塞控制的区别.png

./computer-network/TCP的四种拥塞控制方法.png

第6章

应用层是计算机网络体系结构的最顶层,是设计和建立计算机网络的最终目的,也是计算机网络中发展最快的部分。

因特网采用层次树状结构的域名结构。域名的结构由若干个分量组成,各分量之间用“点”隔开,分别代表不同级别的域名。各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由因特网名称与数字地址分配机构ICANN进行管理。 ./computer-network/域名结构.png

域名和IP地址的映射关系必须保存在域名服务器中,供所有其他应用查询。显然不能将所有信息都储存在一台域名服务器中。DNS使用分布在各地的域名服务器来实现域名到IP地址的转换。

在域名服务器中广泛地使用了高速缓存。高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。

动态主机配置协议DHCP可为计算机自动配置网络参数,使得计算机“即插即联网”(Plug-and-Play Networking)。

文件传送协议(File Transfer Protocol,FTP)是因特网上使用得最广泛的文件传送协议。

./computer-network/文件传送协议FTP的基本工作原理.png

万维网(World Wide Web,WWW)并非某种特殊的计算机网络。它是一个大规模的、联机式的信息储藏所,是运行在因特网上的一个分布式应用。利用网页之间的超链接将不同网站的网页链接成一张逻辑上的信息网。

浏览器最重要的部分是渲染引擎,也就是浏览器内核。负责对网页内容进行解析和显示。

万维网使用统一资源定位符URL来指明因特网上任何种类“资源”的位置。<协议>://<主机>:<端口>/<路径>

超文本传输协议HTTP(HyperText Transfer Protocol)定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及万维网服务器怎样把万维网文档传送给浏览器。

电子邮件系统的三个主要组成构件:用户代理,邮件服务器,以及电子邮件所需的协议。

简单邮件传送协议(Simple Mail Transfer Protocol,SMTP)只能传送ASCII码文本数据,不能传送可执行文件或其他的二进制对象。

./computer-network/电子邮件系统.png

./computer-network/常用的邮件读取协议.png

[!Question] 第5章习题:12 13 14 22 23 24 30 31 49

第6章

./computer-network/网络安全威胁.png

./computer-network/对称密钥密码体制与公钥密码体制.png

./computer-network/报文摘要和报文鉴别码.png

最有名的报文摘要算法(或称密码散列函数或散列算法)有MD5(Message Digest,MD-5)和安全散列算法1(Secure Hash Algorithm,SHA-1)。

在计算机网络中传送的报文可以使用数字签名(Digital Signature)来证明其真实来源。采用公钥密码算法比采用对称密钥密码算法更容易实现数字签名。

对整个报文进行数字签名是一件非常耗时的事情,更有效的方法是仅对报文摘要进行数字签名。

《网络是怎样连接的》笔记

第1章 浏览器生成消息——探索浏览器内部

浏览器的第一步工作就是对 URL 进行解析。URL可以是以http:ftp:file:mailto:等开头。浏览器会使用HTTP协议来访问Web服务器。

URL开头表示访问数据源的机制,也就是协议。//后面的字符串表示服务器的名称。服务器后面是数据源(文件)的路径名。例如http://www.lab.glasscom.com/dir1/file1.html中,www.lab.glasscom.com为服务器名,/dir1/file1.html代表访问的文件路径,这部分可以省略为/dir1//甚至是完全省略。省略时会访问服务器指定的默认文件。