踩坑package java0329; import java.io.*; import java.util.*; public class Main1 { public static void main(String[] args) throws Exception { int count = 0; for (int i = 1; i <= 2025; i++) { long x = (long)i*i*i; if (x%10==3) count++; } System.out.println(count); } }long x = (long)i*i*i;一定加(long)，否则溢出import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.print(409876661809331L); scan.close(); } }长数字后一定加L，否则溢出
「操作系统」学习：（二）进程与线程 2.1 进程与线程
二、进程与线程（一）进程与线程1.进程的概念和特征(1) 进程的概念多道程序环境下，程序并发执行会失去封闭性，出现间断性和不可再现性，因此引入进程来描述和控制并发执行，实现操作系统的并发性与共享性。进程实体（进程映像）：由程序段、相关数据段和 进程控制块（PCB） 三部分构成。PCB：是进程存在的唯一标志，用于描述进程的基本情况和运行状态，控制和管理进程。创建 / 撤销进程的本质：创建 / 撤销进程实体中的 PCB。进程的定义：程序的一次执行过程。程序及其数据在处理机上顺序执行时所发生的活动。具有独立功能的程序在一个数据集合上运行的过程，是系统进行资源分配和调度的独立单位。传统操作系统定义：进程是进程实体的运行过程，是系统进行资源分配和调度的独立单位。(2) 进程的特征进程与程序是截然不同的概念，其基本特征如下：动态性：进程是程序的一次执行，有创建、活动、暂停、终止等生命周期，是动态产生、变化和消亡的，这是进程最基本的特征。并发性：多个进程可同存于内存，在一段时间内同时运行，这是进程和操作系统的重要特征。独立性：进程是能独立运行、独立获得资源和独立接受调度的基本单位，未建立 PCB 的程序不能作为独立单位参与运行。异步性：进程按各自独立、不可预知的速度向前推进，异步性会导致执行结果不可再现，因此操作系统需配置相应的进程同步机制。2.进程的状态与转换进程的 5 种状态运行态：进程在处理机上执行。单处理机中任一时刻只有 1 个进程处于运行态。就绪态：进程已获得除处理机外的所有所需资源，只要获得处理机即可立即运行。多个就绪进程会排成就绪队列。阻塞态（等待态）：进程因等待某一事件（如 I/O 完成、等待资源）而暂停运行，即使处理机空闲也无法执行。多个阻塞进程会根据阻塞原因排成不同的阻塞队列。创建态：进程正在被创建，尚未转到就绪态。步骤为：申请空白 PCB → 填写控制信息 → 分配资源 → 转入就绪队列（若资源不足则保持创建态）。终止态：进程从系统中消失，可能是正常结束或因其他原因退出。系统会先将进程置为终止态，再处理资源回收和 PCB 释放等工作。3 种基本状态间的转换：就绪态 → 运行态：处于就绪态的进程被调度程序选中，获得处理机时间片，开始执行。运行态 → 就绪态：进程的时间片用完，或有更高优先级进程进入就绪队列，调度程序将当前进程转为就绪态，让更高优先级进程执行。运行态 → 阻塞态：进程请求某一资源（如外设、系统调用）或等待某一事件（如 I/O 完成），主动放弃处理机，转为阻塞态。阻塞态 → 就绪态：进程等待的事件发生（如 I/O 操作完成、中断结束），由中断处理程序将其转为就绪态。进程从运行态变为阻塞态是主动行为，而从阻塞态变为就绪态是被动行为，需要其他相关进程协助（如中断处理程序）。就绪态和等待态是进程生命周期中最常见的两种状态，转换次数也最多。3.进程的组成(1) 进程控制块本质与作用PCB 是操作系统为每个进程创建的核心数据结构，是进程实体的一部分，也是进程存在的唯一标志。它常驻内存，贯穿进程的整个生命周期，系统通过 PCB 感知、控制和管理进程。主要功能存储进程的当前状态、优先级、程序和数据地址等关键信息。用于进程调度、切换、同步、通信及文件访问等所有操作。保存进程的处理机环境，确保进程被切换后能从断点继续执行。核心组成部分分类主要内容进程描述信息进程标识符（PID）、用户标识符（UID）等进程控制和管理信息进程当前状态、优先级、代码入口地址、程序外存地址、运行时间等资源分配清单代码段 / 数据段指针、文件描述符、I/O 设备信息等处理机相关信息通用寄存器、地址寄存器、控制 / 标志寄存器、状态字等组织方式链接方式：将同一状态的 PCB 链接成队列（如就绪队列、不同阻塞队列）。索引方式：将同一状态的进程组织在一个索引表中，表项指向相应 PCB（如就绪索引表、阻塞索引表）。(2) 程序段程序段就是能被进程调度程序调度到 CPU 执行的程序代码段。程序可被多个进程共享，即多个进程可以运行同一个程序。(3) 数据段一个进程的数据段，可以是进程对应的程序加工处理的原始数据，也可以是程序执行时产生的中间或最终结果。4.进程控制在操作系统中，一般把程序控制用的程序段称为原语，原语的特点是执行期间不允许中断，它是一个不可分割的基本单位。(1) 进程的创建父子进程关系父进程创建子进程，子进程可继承父进程资源；子进程撤销时归还资源，父进程撤销时通常一并撤销所有子进程。触发场景：终端用户登录、作业调度、系统提供服务、用户程序请求等。创建原语（步骤）分配唯一 PID，申请空白 PCB → PCB 不足则创建失败。分配运行资源（内存、文件、I/O、CPU 时间等）→ 资源不足则创建失败，进程处于创建态等待资源。初始化 PCB：标志信息、处理机状态 / 控制信息、优先级等。插入就绪队列，等待被调度运行。(2) 进程的终止终止原因正常结束：任务完成，主动退出。异常结束：运行中出现错误（存储越界、保护错、非法指令、超时、算术运算错、I/O 故障等）。外界干预：操作员 / 系统干预、父进程请求、父进程终止等。终止原语（步骤）根据标识符检索 PCB，读取进程状态。若进程处于运行态，立即终止执行，释放处理机。递归终止所有子孙进程。回收全部资源，归还父进程或操作系统。从所在队列（链表）中移除该 PCB。(3) 进程的阻塞和唤醒阻塞（Block）触发条件：期待事件未发生（如请求资源失败、等待操作完成、数据未到、无新任务等）。本质：运行态进程主动调用阻塞原语，转为阻塞态，是进程的主动行为。阻塞原语步骤：找到对应 PCB。若为运行态，保护现场，转为阻塞态，停止运行。插入对应事件的等待队列，释放处理机给其他就绪进程。唤醒（Wakeup）触发条件：期待事件出现（如 I/O 完成、数据到达），由相关进程调用唤醒原语。唤醒原语步骤：在等待队列中找到对应 PCB。移出队列，置为就绪态。插入就绪队列，等待调度。注意事项Block 与 Wakeup 是一对成对使用的原语，必须配对使用，否则阻塞进程可能永久无法唤醒。5.进程的通信(1) 共享存储核心思想：在通信进程间开辟一块可直接访问的共享空间，通过对该空间的读写操作交换信息。关键要点：需要使用同步互斥工具（如 P、V 操作）控制读写。分为两种方式：低级方式：基于数据结构的共享。高级方式：基于存储区的共享（操作系统提供共享空间和同步互斥工具，数据交换由用户自行安排）。注意：进程空间通常独立，需通过特殊系统调用实现共享；进程内线程天然共享空间。(2) 消息传递核心思想：以格式化的消息为单位进行数据交换，隐藏通信细节，对用户透明，是当前应用最广泛的机制。两种方式：直接通信：发送进程直接将消息挂到接收进程的消息缓冲队列上。间接通信：通过 “信箱”（中间实体）传递消息，广泛应用于计算机网络。应用场景：微内核操作系统中，内核与服务器之间的通信即采用此机制，也适用于多处理机、分布式系统和计算机网络。(3) 管道通信核心思想：以生产者 - 消费者方式通信，数据在管道中先进先出（FIFO）。关键机制：管道为空时，读进程阻塞；管道写满时，写进程阻塞。需提供互斥、同步和确定对方存在的协调能力。Linux 中的管道：本质是一种特殊文件，固定大小为 4KB 的缓冲区。只能由创建进程的子进程访问，子进程继承父进程的管道。普通管道为单向通信，双向通信需定义两个管道；数据读取为一次性操作，读取后释放空间。6.线程和多线程模型(1) 线程的基本概念引入线程的目的引入进程是为了更好地实现多道程序并发执行，提高资源利用率和系统吞吐量。引入线程则是为了减小程序并发执行的时空开销，进一步提升操作系统的并发性。线程的核心定义线程可理解为 “轻量级进程”，是基本的 CPU 执行单元和程序执行流的最小单元。线程由线程 ID、程序计数器、寄存器集合和堆栈组成，是进程中的一个实体。线程是被系统独立调度和分派的基本单位，自身不拥有系统资源，仅持有运行必需的少量资源，但可与同一进程内的其他线程共享该进程的全部资源。线程的基本特性一个线程可以创建或撤销另一个线程。同一进程中的多个线程之间可以并发执行。线程也有就绪、阻塞和运行三种基本状态，运行时会因相互制约而出现间断性。进程与线程的内涵变化引入线程后，进程的角色转变为除 CPU 外的系统资源分配单元。线程则成为处理机的分配单元。同一进程内的线程切换，时空开销远小于进程间的切换。(2) 线程与进程的比较对比维度进程线程调度（核心）传统 OS 中独立调度 + 资源拥有单位；调度需完整上下文切换，开销大引入线程后独立调度的基本单位；切换代价远低于进程，同进程内切换不引发进程切换并发性仅进程间可并发进程间、同一进程内多线程间、不同进程的线程间均可并发，并发能力显著提升拥有资源系统中拥有资源的基本单位，持有完整系统资源不拥有系统资源（仅持运行必需的少量资源），共享所属进程的全部资源（如地址空间）独立性拥有独立地址空间和资源，除全局变量外，其他进程不可访问对其他进程不可见；同一进程内线程共享地址空间和资源，独立性低系统开销创建 / 撤销需分配 / 回收 PCB 及内存、I/O 等资源，开销大；切换需完整上下文切换创建 / 撤销、切换开销极小（仅需保存 / 设置少量寄存器）；同进程内线程同步通信易实现，无需 OS 干预多处理机支持单线程进程仅能运行在一个处理机上多线程进程可将不同线程分配到多个处理机并行执行(3) 线程的属性轻型实体线程不拥有系统资源，但每个线程都有唯一标识符和线程控制块（TCB），用于记录寄存器、栈等执行状态。可执行相同程序不同线程可以执行相同的程序代码，例如同一个服务程序被不同用户调用时，会被创建为不同的线程。共享进程资源同一进程内的所有线程，共享该进程所拥有的全部资源（如地址空间、文件描述符等）。独立调度与并发执行线程是处理机独立调度的基本单位，可并发执行。单 CPU 系统中，线程交替占用 CPU；多 CPU 系统中，线程可并行占用不同 CPU，缩短进程整体处理时间。生命周期与状态变化线程创建后即开始生命周期，直至终止，期间会经历阻塞态、就绪态、运行态等多种状态变化。(4) 线程的状态与转换执行状态就绪状态阻塞状态(5) 线程的组织与控制线程控制块（TCB）作用：与进程控制块（PCB）类似，用于记录和管理线程的控制信息。主要内容：线程标识符一组寄存器（程序计数器、状态寄存器、通用寄存器）线程运行状态线程优先级线程专有存储区（线程切换时保存现场）堆栈指针（保存局部变量和返回地址）资源共享：同一进程内的所有线程共享进程的地址空间和全局变量，可互相访问彼此的堆栈。线程的创建线程具有生命周期，由创建而产生，由调度而执行，由终止而消亡。用户程序启动时，通常只有一个初始化线程，负责创建新线程。创建新线程时，需调用线程创建函数，并提供入口指针、堆栈大小、优先级等参数，函数返回线程标识符。线程的终止线程完成任务或运行异常时，可调用终止函数结束运行；系统线程可能持续运行。线程终止后，通常不会立即释放资源，需在其他线程执行分离函数后，资源才会被回收利用。被终止但未释放资源的线程，可被其他线程调用并恢复运行。(6) 线程的实现方式用户级线程（ULT）管理方式：线程管理（创建、撤销、切换）全部在用户空间完成，内核完全感知不到线程的存在。调度特点：系统仍以进程为单位进行调度，同一进程内的所有线程共享该进程的时间片。优点：线程切换无需进入内核态，节省了模式切换开销。调度算法可由进程自定义，灵活性高。实现与操作系统平台无关，可移植性好。缺点：一个线程执行系统调用导致阻塞时，整个进程内的所有线程都会被阻塞。无法利用多处理器优势，一个进程在同一时间只能有一个线程在 CPU 上执行。内核级线程（KLT）管理方式：线程管理全部在内核空间完成，内核通过线程控制块（TCB）感知并控制线程。调度特点：内核直接对线程进行调度，线程是独立的调度单位。优点：能充分利用多处理器，同一进程的多个线程可并行执行。一个线程阻塞时，内核可调度同一进程内的其他线程执行。线程切换速度快、开销小。内核自身也可采用多线程技术，提升系统效率。缺点：同一进程内的线程切换需要从用户态切换到内核态，系统开销相对较大。组合方式实现机制：系统同时支持内核级线程和用户级线程，多个用户级线程可以复用同一个内核级线程。优势：结合了 ULT 和 KLT 的优点，既可以利用多处理器，又能避免频繁的内核态切换，同时克服了各自的不足。主流线程库POSIX Pthreads：可提供用户级或内核级实现，是类 UNIX 系统的标准。Windows API：专用于 Windows 系统的内核级线程库。Java 线程 API：通常依赖宿主系统的线程库实现，在 Windows 上用 Windows API，在类 UNIX 系统上用 Pthreads。(7) 多线程模型多对一模型（M:1）映射方式：多个用户级线程映射到同一个内核级线程。管理方式：线程调度和管理在用户空间完成，仅当访问内核时才绑定到内核级线程，且一次只允许一个线程映射。优点：线程管理在用户空间进行，效率较高。缺点：一个线程因内核访问阻塞时，整个进程都会阻塞；同一时刻只有一个线程能访问内核，无法利用多处理器并行。一对一模型（1:1）映射方式：每个用户级线程都对应一个独立的内核级线程。优点：一个线程阻塞时，可调度其他线程运行，并发能力强；支持多处理器并行执行。缺点：创建用户线程时需同步创建内核线程，系统开销较大。多对多模型（M:N）映射方式：将 n 个用户级线程映射到 m 个内核级线程（n ≥ m），通过复用内核线程实现。特点：克服了多对一模型并发度不高的问题。避免了一对一模型中线程创建开销过大的缺点。结合了前两种模型的优点，在并发能力和系统开销之间取得了平衡。
三、数据链路层（一）数据链路层的功能数据链路层在物理层提供服务的基础上向网络层提供服务，其主要作用是：加强物理层传输原始比特流的功能，将物理层提供的可能出错的物理连接改造为逻辑上无差错的数据链路，使之对网络层表现为一条无差错的链路。1.为网络层提供服务无确认的无连接服务有确认的无连接服务有确认的面向连接服务帧传输过程：建立数据链路、传输帧、释放数据链路注：有连接就一定有确认，不存在无确认的面向连接服务。2.链路管理链路管理，指数据链路层连接的建立、维持和释放过程，主要服务于面向连接的通信。局域网等多站点共享同一物理信道时，信道的分配与管理也归属于数据链路层的链路管理范畴。3.帧定界、帧同步与透明传输帧封装两台主机传输信息时，网络层的分组需要被封装成帧进行传送。通过在一段数据的前后分别添加首部和尾部来构成帧，帧长等于数据部分长度加上首部和尾部后的总长度。帧定界帧的首部和尾部包含控制信息，其重要作用之一是确定帧的界限，即帧定界。帧同步指接收方能够从接收到的二进制比特流中区分出帧的起始与终止。例如，在 HDLC 协议中，使用标识位 F（01111110）来标识帧的开始和结束。透明传输当所传输的数据中恰好出现了与帧定界符相同的比特组合时，会导致接收方误判帧的结束。因此需要采取措施解决这个问题，实现透明传输，即无论所传数据是什么样的比特组合，都应当能在链路上正常传送。最大传送单元（MTU）为了提高帧的传输效率，应使帧的数据部分长度尽可能大于首部和尾部的长度，但每种数据链路层协议都规定了帧的数据部分长度上限，即最大传送单元（MTU）。4.流量控制流量控制实际上就是限制发送方的数据流量，使其发送速率不超过接收方的接收能力。这个过程需要通过某种反馈机制使发送方能够知道接收方是否能跟上自己，即需要有一些规则使得发送方知道在什么情况下可以接着发送下一帧，而在什么情况下必须暂停发送，以等待收到某种反馈信息后继续发送。流量控制不是数据链路层特有的功能，许多高层协议中也提供此功能。在 OSI 体系结构中，数据链路层具有流量控制的功能；而在 TCP/IP 体系结构中，流量控制功能被移到了传输层。5.差错控制差错控制是数据链路层用于确保数据正确传输的核心机制，主要处理位错和帧错两类问题：位错控制检测：采用循环冗余校验（CRC）等方法，在数据帧后附加冗余校验码，接收方据此检测传输中出现的比特错误。重传：通过自动重传请求（ARQ）机制，若接收方检测到错误则丢弃该帧，发送方超时后自动重传，直至确认接收正确。帧错控制针对帧的丢失、重复或失序等问题，在数据链路层引入定时器和编号机制，确保每一帧最终都能被正确、有序地交付给目的结点。（二）组帧组帧主要解决帧定界、帧同步、透明传输等问题。通常有以下4种方法实现组帧：1.字符计数法在帧头部使用一个计数字段来标明帧内字符数。缺点：如果计数字段出错，帧边界划分失效，无法继续帧同步。2.字符填充的首尾定界符法帧定界使用控制字符 SOH（Start of Header）表示帧的首部开始。使用控制字符 EOT（End of Transmission）表示帧的结束。透明传输当数据段中出现与定界符（SOH、EOT）相同的字符时，会在其前面插入转义字符 ESC（转义字符是 ASCII 码中的一个字符，而非 “E”“S”“C” 的组合），以避免被误判为帧边界。接收方收到数据后，会自动删除插入的 ESC 字符，从而还原原始数据。如果转义字符 ESC 本身也出现在数据中，则在其前面再插入一个 ESC 字符进行转义。3.零比特填充的首尾标志法零比特填充法允许数据帧包含任意个数的比特，也允许每个字符的编码包含任意个数的比特。帧定界使用特定的比特模式 01111110 作为帧的首尾标志，用于标识一帧的开始和结束。透明传输发送方处理：在信息位中，每遇到连续 5 个 “1”，就自动在其后插入一个 “0”，以避免信息位中出现与帧标志01111110相同的比特组合，防止被误判为帧边界。接收方处理：执行逆操作，每收到连续 5 个 “1”，就自动删除后面紧跟的 “0”，从而恢复原始信息。零比特填充法很容易由硬件实现，性能优于字符填充法。4.违规编码法违规编码法是一种在物理层实现帧定界的技术，它利用了物理层编码中的冗余特性。在物理层进行比特编码时，某些电平对或码型是违规的，即正常数据比特不会使用这些编码。例如，在曼彻斯特编码中：数据比特 “1” 被编码为 “高 - 低” 电平对。数据比特 “0” 被编码为 “低 - 高” 电平对。而 “高 - 高” 和 “低 - 低” 电平对在正常数据中是违规的。这些违规的编码序列可以被借用，用来定界帧的起始和终止。局域网 IEEE 802 标准 就采用了这种违规编码法来实现帧定界。常用组帧方法由于字符计数法中计数字段的脆弱性，以及字符填充法实现上的复杂性与不兼容性，目前较常用的组帧方法是：零比特填充法、违规编码法。（三）差错控制比特在传输过程中可能发生翻转（1 变 0 或 0 变 1），这种现象称为比特差错，它是传输差错的一种，本节重点讨论此类差错。主要利用编码技术进行差错控制，分为两大类：自动重传请求（ARQ）：接收端检测到差错时，通知发送端重发，直至收到正确码字。该方式仅能检错，无法纠错。前向纠错（FEC）：接收端不仅能发现差错，还能确定错误比特的位置并加以纠正。基于上述技术，差错控制可分为检错编码和纠错编码两种方式。1.检错编码（1）奇偶校验码奇校验码/偶校验码：由n-1位信息元和1位校验元组成。奇校验码：附加一个校验元后，码长为n的码字中“1”的个数为奇数；偶校验码：附加一个校验元后，码长为n的码字中“1”的个数为偶数。检错能力：可以检测出所有奇数个比特错误（如 1 个、3 个比特翻转）。无法检测出偶数个比特错误（如 2 个、4 个比特翻转），因为此时奇偶性不变。无法定位错误位置，也不能纠正错误，只能发现错误。（2）循环冗余码通过模2除法（不进位的异或运算），在原始数据后附加一段校验码。发送方： 数据 M ÷ 生成多项式 G → 取余数作为校验码。完整数据=原始数据+校验码。接收方： 完整数据 ÷ 生成多项式 G → 余数为 0 则数据正确。计算示例 (典型步骤)已知条件：待发数据：1101生成多项式：$G(X) = X^3 + X + 1$ (对应二进制 1011)计算过程：补零： 多项式最高阶为 3，在数据后补 3 个 0 → 1101000。模2除法（异或）： 用 1101000 除以 1011。1101 XOR 1011 = 0110 (首位为1则除)落下下一位 0 → 1100 XOR 1011 = 0111落下下一位 0 → 1110 XOR 1011 = 0101取余： 最终得到的 3 位余数为 101。最终发送： 1101 101 (原始数据 + 校验码)可检测所有奇数位错、所有偶数位错、所有突发错（长度≤生成多项式位数），检错率极高。循环冗余码（CRC）是具有纠错功能的，只是数据链路层仅使用了它的检错功能，检测到帧出错则直接丢弃，是为了方便协议的实现。2.纠错编码（3）海明码海明码是一种具有一位纠错能力的多重奇偶校验码。通过在有效信息位中插入若干校验位，使得每一个校验位控制一组特定的数据位。当某位发生错误时，会引起相关的多个校验位发生变化，从而精确定位错误位置。计算步骤假设有效信息位为 $n$ 位，校验位为 $k$ 位：确定校验位个数 $k$：需满足不等式 $2^k \ge n + k + 1$。校验位 $k$ 是满足该式的最小整数。确定位置：校验位 $P_i$ 必须放在海明码全码的 $2^{i-1}$ 位置（如第1, 2, 4, 8...位）。分组校验：每个数据位的位置索引（二进制形式）决定了它由哪些校验位负责。例如，位置7（$111_2$）由 $P_1$ (001), $P_2$ (010), $P_4$ (100) 共同校验。计算校验位值：通常采用偶校验，即每一组包含校验位在内的“1”的个数为偶数。典型题目题目：求有效信息 1100 的海明码（采用偶校验）。第一步：确定校验位个数 $k$信息位 $n = 4$。代入公式：$2^k \ge 4 + k + 1$当 $k=2$ 时，$4 < 7$（不成立）当 $k=3$ 时，$8 \ge 8$（成立）所以需要 3 个校验位，总码长为 $4 + 3 = 7$ 位。第二步：确定位置并填入数据校验位 $P_1, P_2, P_3$ 分别占据第 $1, 2, 4$ 位。将信息位 $D_1, D_2, D_3, D_4$ 按序填入剩余空格：位置索引1234567位置类型$P_1$$P_2$$D_1$$P_3$$D_2$$D_3$$D_4$数据填充??1?100第三步：分组并计算校验位将所有数据位的位置索引写成二进制：$D_1$ (位置3): $3 = 1+2 = 2^0 + 2^1$ → 由 $P_1, P_2$ 校验$D_2$ (位置5): $5 = 1+4 = 2^0 + 2^2$ → 由 $P_1, P_3$ 校验$D_3$ (位置6): $6 = 2+4 = 2^1 + 2^2$ → 由 $P_2, P_3$ 校验$D_4$ (位置7): $7 = 1+2+4 = 2^0 + 2^1 + 2^2$ → 由 $P_1, P_2, P_3$ 校验计算校验位（偶校验下，组内异或运算结果应为0）：$P_1$ 负责位置 {1, 3, 5, 7}（二进制倒数第1位为1的位置）：$P_1 \oplus 1 \oplus 1 \oplus 0 = 0 \Rightarrow \mathbf{P_1 = 0}$$P_2$ 负责位置 {2, 3, 6, 7}（二进制倒数第2位为1的位置）：$P_2 \oplus 1 \oplus 0 \oplus 0 = 0 \Rightarrow \mathbf{P_2 = 1}$$P_3$ 负责位置 {4, 5, 6, 7}（二进制倒数第3位为1的位置）：$P_3 \oplus 1 \oplus 0 \oplus 0 = 0 \Rightarrow \mathbf{P_3 = 1}$第四步：写出最终海明码将计算出的 $P$ 值填回原表：位置1234567最终码0111100答案：1100 的海明码为 0111100。如何纠错？接收端收到后，重新计算各组的奇偶性（记为 $G_1, G_2, G_3$）：$G_1 = P_1 \oplus D_1 \oplus D_2 \oplus D_4$$G_2 = P_2 \oplus D_1 \oplus D_3 \oplus D_4$$G_3 = P_3 \oplus D_2 \oplus D_3 \oplus D_4$将结果排列为 $G_3 G_2 G_1$，若结果为 000 则无错；若结果为 110（十进制 6），则说明第 6 位出错了，直接取反即可纠正。（四）流量控制与可靠传输机制1.流量控制、可靠传输与滑动窗口机制流量控制：控制发送方的发送速率，确保接收方有足够缓冲空间接收数据，避免过载。常见方式有停止 - 等待协议和滑动窗口协议。1. 停止 - 等待流量控制原理：发送方每发送一帧，必须等待接收方的应答信号，才能发送下一帧；接收方每接收一帧，反馈一个应答信号。特点：每次只允许发送一帧，传输效率低。2. 滑动窗口流量控制核心概念：发送窗口：发送方维护的一组连续允许发送的帧序号，其大小 WT 代表未收到确认时最多可发送的数据帧数。接收窗口：接收方维护的一组连续允许接收的帧序号，只有序号落在窗口内的数据帧才会被收下，否则丢弃。窗口滑动规则：发送端收到确认帧后，发送窗口向前滑动；窗口内无待发帧时停止发送，直到窗口可滑动。接收端收到数据帧后，窗口向前移动并回发确认帧，落于窗口外的帧被丢弃。重要特性：只有接收窗口向前滑动（同时发送确认帧）时，发送窗口才可能向前滑动。不同协议的窗口大小：停止 - 等待协议：发送窗口 = 1，接收窗口 = 1后退 N 帧协议：发送窗口 > 1，接收窗口 = 1选择重传协议：发送窗口 > 1，接收窗口 > 1接收窗口大小为 1 时，可保证帧的有序接收。数据链路层滑动窗口协议的窗口大小在传输中固定（与传输层协议不同）。3. 可靠传输机制实现方式：通过确认和超时重传完成。确认：接收方反馈应答，告知发送方数据被正确接收；可采用捎带确认（将确认捎在回复帧中）提高效率。超时重传：发送方发送数据帧后启动计时器，若超时未收到确认，则重传该帧。自动重传请求（ARQ）：分类：停止 - 等待 ARQ、后退 N 帧（Go-Back-N）ARQ、选择性重传（Selective Repeat）ARQ。后两种是滑动窗口与请求重发技术的结合，窗口足够大时可实现连续流传输，又称连续 ARQ 协议。注意：实际有线网络的数据链路层很少采用可靠传输，多数教材将此内容放在传输层，本书按 408 考纲保留在链路层。2.单帧滑动窗口与停止-等待协议本质：从滑动窗口角度看，停止 - 等待协议就是发送窗口 = 1、接收窗口 = 1的滑动窗口协议。差错处理：数据帧丢失 / 破坏：发送方超时重传，直到正确到达。确认帧丢失 / 破坏：接收方已收到正确帧，但发送方超时重传；接收方收到重复帧后丢弃并重传确认帧。序号与缓存：用 1bit 编号（0 和 1 交替），区分新帧和重传帧。发送方缓存帧副本，收到 ACK 后清除；接收方也需缓存以判定重复帧。缺点：信道利用率低，因此产生了后退 N 帧协议和选择重传协议。3.多帧滑动窗口与后退N帧协议（GBN）核心特点：发送方无需等待上一帧 ACK，可连续发送多帧；接收窗口 = 1，保证按序接收。若检测到帧丢失 / 出错，需重传出错帧及之后所有未确认帧。确认机制：采用累积确认：对第 n 号帧的确认，表示前 n 号帧均已正确接收。接收端按序接收，丢弃出错帧后的所有无差错帧。窗口约束：若用 n 比特编号，发送窗口 $$W_T$$ 需满足 $$1 < W_T \le 2^n - 1$$，否则无法区分新帧和旧帧。缺点：信道质量差时，重传大量已正确到达的帧，传输效率降低。4.多帧滑动窗口与选择重传协议（SR）核心特点：仅重传出错或超时的单个帧，避免重传已正确到达的帧。接收窗口 WR 和发送窗口 WT 均大于 1，可缓存乱序帧，等缺失帧到齐后再交付主机。确认机制：对单帧进行确认，若怀疑出错，发送否定确认 NAK，要求重传指定帧。窗口约束：若用 n 比特编号，最大窗口 $W_{max} = 2^{n-1}$，否则无法区分新数据帧和重传数据帧。代价：接收端需要更大的缓存区来暂存未按序到达的帧。补充概念：信道利用率（信道效率）：从时间角度定义，指发送方在一个发送周期内，有效发送数据的时间占整个发送周期的比率。$$\text{信道利用率} = \frac{L/C}{T}$$其中 $T$ 为发送周期，$L$ 为发送数据量，$C$ 为传输速率。信道吞吐率：信道利用率 $\times$ 发送方的发送速率。（五）介质访问控制介质访问控制所要完成的主要任务是，为使用介质的每个结点隔离来自同一信道上其他结点所传送的信号，以协调活动结点的传输。用来决定广播信道中信道分配的协议属于数据链路层的一个子层，称为介质访问控制（Medium Access Control, MAC）子层。常见的介质访问控制方法有信道划分介质访问控制、随机访问介质访问控制和轮询访问介质访问控制。其中前者是静态划分信道的方法，而后两者是动态分配信道的方法。1.信道划分介质访问控制信道划分介质访问控制通过分时、分频、分码等方式，将一条广播信道逻辑上划分为多条互不干扰的子信道，实现多设备共享信道、互不干扰。(1) 频分多路复用（FDM）原理：将多路信号调制到不同频率的载波上，叠加成复合信号传输；每个子信道独占一段带宽。特点：同一时间可同时传输多路信号，充分利用信道带宽。相邻信道间需加入 “保护频带”，防止干扰。优点：充分利用传输介质带宽，系统效率高，技术成熟易实现。(2) 时分多路复用（TDM）原理：将物理信道按时间分成若干时间片，轮流分配给多个信号使用，每个时间片由一个信号占用。特点：就某一时刻看，信道仅传输一对设备的数据；就某段时间看，是多路复用。统计时分复用（STDM）：不固定分配时间片，按需动态分配，提高线路利用率。示例：线路速率 8000b/s，4 个用户平均速率 2000b/s；采用 TDM 时，每个用户最高速率为 2000b/s；采用 STDM 时，总最高速率可达 8000b/s。(3) 波分多路复用（WDM）原理：光的频分多路复用，在一根光纤中传输多种不同波长的光信号，各波长光信号互不干扰，最后通过波分复用器分解各路波长。特点：光纤频带极宽，可实现多路复用，通信容量大。(4) 码分多路复用（CDM/CDMA）原理：采用不同的编码（码片序列）区分各路原始信号，共享信道、共享时间。每个站被分配唯一的 m 位码片序列（如 64 位或 128 位），发送 1 时发送码片本身，发送 0 时发送码片的反码。关键特性：任意两个不同站的码片序列正交（内积为 0），任意站的码片序列与自身的规格化内积为 1。优点：频谱利用率高、抗干扰能力强、保密性强、语音质量好，可减少投资和降低运行成本，主要用于无线通信系统，特别是移动通信系统。2.随机访问介质访问控制注：此部分内容较复杂，预习阶段不深入理解。随机访问（争用型）协议不采用集中控制，所有用户可随机发送数据，通过竞争获取信道使用权，核心思想是 “胜利通过争用获得信道”。它将广播信道的共享转化为逻辑上的点对点通信。(1) ALOHA 协议分为纯 ALOHA和时隙 ALOHA两种：纯 ALOHA 协议核心思想：站点需要发送数据时，不进行任何检测就立即发送；若未收到确认，则认为发生冲突，等待一段随机时间后重传，直至成功。特点：实现简单，但冲突概率高，信道利用率低。最大吞吐量：当网络负载 G=0.5 时，吞吐量 S 达到最大值 Smax=0.5e−1≈0.184。时隙 ALOHA 协议核心思想：将时间划分为等长的时隙，所有站点同步，只能在每个时隙开始时发送数据，避免了随机发送，减少了冲突。特点：冲突概率降低，信道利用率是纯 ALOHA 的两倍。最大吞吐量：当 G=1 时，吞吐量 S 达到最大值 Smax=e−1≈0.368。(2) CSMA 协议（载波监听多路访问）CSMA 在 ALOHA 基础上增加了 “载波监听” 机制，发送前先检测信道是否空闲，以降低冲突概率。根据监听后信道忙时的处理方式，分为三类：类型核心思想优点缺点1 - 坚持 CSMA信道空闲则立即发送；信道忙则持续监听，一旦空闲立即发送抢占信道，减少信道空闲时间多个站点同时监听时，冲突概率大非坚持 CSMA信道空闲则立即发送；信道忙则等待一个随机时间后再监听避免多个站点同时争抢，降低冲突增加了数据在网络中的平均延迟，信道利用率降低p - 坚持 CSMA信道空闲则以概率 p 发送，以概率 1−p 推迟到下一时隙；信道忙则持续监听折中方案，兼顾吞吐量和延迟实现复杂，需合理选择 p 值(3) CSMA/CD 协议（载波监听多路访问 / 碰撞检测）CSMA/CD 是 CSMA 的改进方案，增加了 “碰撞检测”，适用于总线形或半双工以太网，全双工网络无需使用。核心流程：先听后发，边听边发，冲突停发，随机重发。载波监听：发送前持续检测信道，空闲则发送。碰撞检测：发送过程中同时监听信道，若检测到碰撞，立即停止发送。强化碰撞：发送人为干扰信号，通知所有站点已发生碰撞。退避重传：采用截断二进制指数退避算法计算随机等待时间，避免再次冲突。关键概念：争用期（碰撞窗口）：端到端传播时延 τ 的 2 倍（2τ），站点在发送后最多经过 2τ 就能确认是否发生碰撞。最短有效帧长：为确保在争用期内检测到碰撞，规定了以太网的最短帧长为 64 字节，小于此长度的帧为无效帧。局限性：仅适用于半双工通信，无法用于无线网络（存在 “隐蔽站” 问题）。(4) CSMA/CA 协议（载波监听多路访问 / 碰撞避免）CSMA/CA 是为无线局域网（如 802.11）设计的协议，无法简单使用 CSMA/CD，主要原因是无线信号强度变化大，碰撞检测硬件成本高，且存在 “隐蔽站” 问题。核心思想：不是完全避免碰撞，而是通过设计尽量降低碰撞概率，使用确认帧（ACK）*和*退避机制保证可靠传输。关键机制：帧间间隔（IFS）：不同类型的帧等待不同的时间后再发送，如 SIFS（短）、PIFS（中）、DIFS（长）。退避机制：信道从忙变为空闲时，站点需等待 DIFS 时间，再进入退避窗口，随机选择退避时间，退避到 0 才能发送。RTS/CTS 机制（可选）：发送前先广播短的请求发送（RTS）帧，AP 响应允许发送（CTS）帧，为发送方预留信道，解决 “隐蔽站” 问题，但会降低信道效率。与 CSMA/CD 的区别：碰撞检测：CSMA/CD 可检测并处理碰撞；CSMA/CA 无法检测碰撞，只能尽量避免。传输介质：CSMA/CD 用于有线以太网；CSMA/CA 用于无线 802.11 等。检测方式：CSMA/CD 通过电缆电压变化检测；CSMA/CA 采用能量检测、载波检测和能量载波混合检测。3.轮询访问：令牌传递协议核心概念轮询访问（令牌传递）是一种集中式控制的介质访问控制方式，用户不能随机发送信息，必须通过监控站以循环方式轮询每个结点，决定信道的分配。典型协议为令牌传递协议，主要用于令牌环局域网。令牌传递协议原理令牌（Token）：一个特殊的 MAC 控制帧，本身不包含信息，仅用于控制信道使用权，确保同一时刻只有一个站点独占信道。工作机制：令牌在环形拓扑的各结点间依次传递，结点只有取得令牌后才能发送数据帧，因此不会发生碰撞。发送完成后，站点释放令牌，供其他结点使用。令牌按顺序依次传递，对所有入网结点而言，访问权是公平的。无数据发送时：令牌在环网上持续循环游荡；只有拿到令牌的计算机才能发送数据帧，因此不会发生冲突。令牌环网中令牌和数据的传递过程网络空闲时：环路中只有令牌在循环传递。有数据发送时：令牌传递到有数据要发送的站点，该站点修改令牌标志位，附加数据，将令牌变为数据帧并发送。数据帧沿环传输，各结点检查目的地址，仅目的站复制该帧。数据帧到达源站后，源站不再转发，通过返回帧检查传输是否出错，若有错则重传。源站完成传送后，重新生成令牌并传递给下一站。协议特点适用场景：非常适合负载很高的广播信道（多结点同时高概率发送数据），能有效避免冲突，满足通信需求。信道特性：既不共享时间，也不共享空间，在随机访问控制的基础上，限定了只有一个结点拥有发送权。逻辑拓扑：传输介质的物理拓扑不必是环形，但令牌传递的逻辑通路必须是一个环。（六）局域网1.局域网的概念和体系结构定义：在小地理范围（如学校、办公室）内，通过双绞线、同轴电缆等介质连接计算机、外部设备和数据库，实现资源与信息共享的计算机互连网络。主要特点：(1) 为一个单位所拥有，地理范围和站点数目有限。(2) 所有站点共享较高的总带宽（数据传输速率高）。(3) 较低的时延和较低的误码率。(4) 各站点为平等关系，而非主从关系。(5) 支持广播和组播。决定局域网特性的三要素：(1) 拓扑结构：常见有星形、环形、总线形，以及星总线复合型。(2) 传输介质：主流为双绞线，也可使用铜缆、光纤等。(3) 介质访问控制方式（最重要）：决定局域网技术特性，主要包括 CSMA/CD、令牌总线、令牌环。典型局域网拓扑实现：以太网：逻辑拓扑为总线形，物理拓扑为星形或拓展星形，是目前使用最广的局域网。令牌环（Token Ring, IEEE 802.5）：逻辑拓扑为环形，物理拓扑为星形。FDDI（光纤分布数字接口，IEEE 802.8）：逻辑拓扑为环形，物理拓扑为双环结构。IEEE 802 局域网参考模型：对应 OSI 模型的数据链路层和物理层，并将数据链路层拆分为两个子层：(1) 媒体接入控制子层（MAC）：处理与接入传输媒体相关的内容，向上层屏蔽对物理层访问的差异，提供对物理层的统一访问接口，主要功能包括组帧 / 拆帧、比特传输差错检测、透明传输。(2) 逻辑链路控制子层（LLC）：与传输媒体无关，向网络层提供无确认无连接、面向连接、带确认无连接、高速传送 4 种不同的连接服务类型。由于以太网的垄断地位，LLC 子层作用已不大，许多网卡仅装有 MAC 协议。2.以太网与 IEEE 802.3IEEE 802.3：基带总线形局域网标准，定义了物理层和数据链路层 MAC 子层的实现方法，通常与 DIX Ethernet V2 标准统称为以太网。以太网特点：逻辑上为总线拓扑，共享总线，采用广播方式发送。使用CSMA/CD进行总线访问控制。无连接、最大努力交付，不提供可靠服务，差错纠正由高层完成。采用曼彻斯特编码，每个码元中间有一次电压转换，便于提取同步信号。(1) 传输介质与网卡常用传输介质：粗缆、细缆、双绞线、光纤，典型标准如下：标准传输媒体编码方式拓扑结构最大段长最多结点数10BASE5粗缆曼彻斯特编码总线形500m10010BASE2细缆曼彻斯特编码总线形185m3010BASE-T非屏蔽双绞线曼彻斯特编码星形100m210BASE-FL光纤曼彻斯特编码点对点2000m2网卡（NIC）：工作在数据链路层和物理层，实现数据的串 / 并转换、帧的收发与封装拆封、介质访问控制、编码解码等功能。每块网卡出厂时都有唯一的MAC 地址（48 位），用于控制主机在网络上的数据通信。(2) MAC 帧与地址MAC 地址：6 字节（48 位），高 24 位为厂商代码，低 24 位为网卡序列号，一般用 12 个十六进制数表示（如02-60-8c-e4-b1-21）。以太网 V2 MAC 帧格式：前导码：8 字节，用于同步，其中最后 1 字节为帧开始定界符。目的地址：6 字节（MAC 地址）。源地址：6 字节（MAC 地址）。类型：2 字节，指示数据域应交给哪个协议实体处理。数据：46~1500 字节，包含高层协议消息；不足 46 字节时需填充至 64 字节最小长度。校验码（FCS）：4 字节，采用 32 位 CRC 校验，校验范围从目的地址到数据段末尾。802.3 帧格式：用 “长度域” 替代了 “类型域”，用于指出数据域的长度，最大为 1500 字节。(3) 高速以太网100BASE-T：双绞线传输，100Mb/s，星形拓扑，支持全 / 半双工。全双工下不使用 CSMA/CD，最短帧长不变，最大电缆长度减至 100m，帧间间隔缩短为 0.96μs。吉比特以太网（1Gb/s）：支持全 / 半双工，半双工下使用 CSMA/CD，与 10/100BASE-T 兼容。10 吉比特以太网（10Gb/s）：仅使用光纤，工作在全双工方式，不使用 CSMA/CD，帧格式与传统以太网完全一致。3.IEEE 802.11 无线局域网(1) 无线局域网的组成无线局域网主要分为两大类：有固定基础设施的无线局域网协议标准：IEEE 802.11 系列（如 802.11a/b/g/n），也称为 Wi-Fi。拓扑结构：星形拓扑，中心为接入点（AP），在 MAC 层使用 CSMA/CA 协议。基本构件：基本服务集（BSS）：由一个 AP 和若干移动站组成，是无线局域网的最小构成单元。基本服务区（BSA）：一个 BSS 覆盖的地理范围，一般不超过 100m。扩展服务集（ESS）：通过 AP 连接到分配系统（DS），再连接到多个 BSS 构成。门户（Portal）：作为无线局域网和有线以太网的桥接设备。标识：AP 需要配置SSID（服务集标识符）和信道，SSID 是该无线局域网的名称。无固定基础设施的移动自组织网络又称自组网络（ad hoc network），由一些平等状态的移动站组成临时网络，无中心 AP。各结点地位平等，可作为转发结点，因此具备路由器功能。网络拓扑随移动结点的出现和移动而动态变化，路由协议需特别设计。(2) 802.11 局域网的 MAC 帧帧类型：数据帧、控制帧、管理帧。帧组成：MAC 首部：共 30 字节，包含 4 个重要的地址字段（MAC 地址）。帧主体：承载数据，不超过 2312 字节。FCS：4 字节的帧检验序列。地址字段（4 个）：地址字段的含义由控制字段中的 “去往 AP” 和 “来自 AP” 两位决定：去往 AP=1，来自 AP=0：地址 1 是 AP 的 MAC 地址，地址 2 是源站 A 的 MAC 地址，地址 3 是目的站 B 的 MAC 地址。去往 AP=0，来自 AP=1：地址 1 是目的站 B 的 MAC 地址，地址 2 是 AP 的 MAC 地址，地址 3 是源站 A 的 MAC 地址。与有线网互联：当无线局域网通过 AP 连接到有线以太网时，地址 3 用于标识以太网中的路由器接口 MAC 地址，是实现无线与有线网互联的关键。4.VLAN基本概念与基本原理(1) 为什么需要 VLAN一个大的以太网是一个大的广播域，会带来以下问题：大量广播帧（如 ARP、DHCP）占用网络带宽，影响性能。不同部门共享同一网络，不利于信息保密和安全。虚拟局域网（VLAN） 可以将一个大的物理局域网，在逻辑上分割成多个小的广播域，与地理位置无关。(2) VLAN 的实现原理（802.1Q 标准）帧格式扩展：在标准以太网帧的源地址和类型字段之间，插入一个 4 字节的 VLAN 标签，形成 802.1Q 帧。VLAN 标签结构：前 2 字节：标签类型，固定为 0x8100，表示这是一个 802.1Q 帧。后 2 字节：标签控制信息，其中 12 位为 VID（VLAN ID），唯一标识该帧所属的 VLAN，最多可识别 4096 个不同的 VLAN。帧长变化：插入标签后，以太网最大帧长从 1518 字节变为 1522 字节，FCS 校验序列也必须重新计算。(3) VLAN 的工作机制跨交换机 VLAN：一个 VLAN 可以跨越多个交换机，前提是交换机支持 VLAN 协议。链路类型：接入链路：主机与交换机之间，传输标准以太网帧，主机不知道自己的 VID。干线链路（Trunk）：交换机之间，传输带 VLAN 标签的 802.1Q 帧，用于传递 VLAN 信息。转发流程：交换机根据帧的源 MAC 地址或端口，确定其所属 VLAN。若在同一交换机的同一 VLAN 内转发（如 A→B），则直接转发普通以太网帧。若转发到另一交换机（如 A→E），则在转发前插入 VLAN 标签，形成 802.1Q 帧；接收交换机在转发给主机前，移除标签。若在不同 VLAN 之间通信（如 A→C），则需要通过第 3 层的路由器或三层交换机来转发。(4) 核心结论VLAN 只是局域网提供的一种逻辑服务，并非新型局域网技术。它通过隔离广播域，提升了网络的性能、安全性和管理灵活性。（七）广域网1.广域网的基本概念定义：覆盖范围广（远超一个城市）的长距离网络，是因特网的核心部分，负责长距离传送主机数据。组成：由结点交换机（负责存储转发分组）和高速链路（光缆、卫星链路等）组成，结点间为点到点连接，通常一个结点交换机会与多个结点相连以提高可靠性。与互联网的区别：广域网≠互联网，互联网通过路由器连接不同类型的网络（局域网、广域网）。局域网可通过广域网与远距离的另一局域网通信。层次差异：局域网协议主要在数据链路层（少量在物理层）。广域网协议主要在网络层，核心问题是路由选择和分组转发。广域网与局域网的区别与联系：对比项广域网局域网覆盖范围很广，通常跨区域较小，通常在一个区域内连接方式结点间点到点连接，一个结点常连多个结点普遍采用多点接入技术OSI 层次三层：物理层、数据链路层、网络层两层：物理层、数据链路层着重点强调数据传输强调资源共享联系1. 均为互联网重要组成，地位平等；2. 网内通信使用物理地址同上广域网数据链路层协议：PPP 协议：目前使用最广泛。HDLC 协议：已很少使用。2.PPP协议PPP（Point-to-Point Protocol）是一种面向字节的点对点链路层协议，用于在串行线路上建立连接、传输数据。(1) PPP 协议的组成链路控制协议（LCP）：建立、配置、测试和管理数据链路。网络控制协议（NCP）：为不同的网络层协议（如 IP）配置并建立逻辑连接。封装机制：将 IP 数据报封装到串行链路的帧中，信息部分长度受最大传送单元（MTU）限制。(2) PPP 帧格式标志字段 F（1 字节）：固定为7E (01111110)，用于帧定界。地址字段 A（1 字节）：固定为0xFF。控制字段 C（1 字节）：固定为0x03。协议字段（2 字节）：标识信息字段承载的协议类型，如0x0021表示 IP 数据报。信息字段（0~1500 字节）：承载网络层数据报。帧校验序列 FCS（2 字节）：对地址、控制、协议和信息字段进行 CRC 校验。(3) 透明传输当信息字段中出现与标志字段 7E 相同的比特组合时，需进行填充：异步线路（默认）：采用字符填充法，使用转义字符7D。同步线路（如 SONET/SDH）：采用比特填充法（与 HDLC 相同）。(4) PPP 协议的特点不可靠传输：提供 CRC 差错检测，但不提供纠错、序号和确认机制。仅支持点对点链路：不支持多点线路，因此无需 CSMA/CD 协议。全双工通信：支持双向同时传输。兼容性强：两端可运行不同的网络层协议，但仍可使用同一 PPP 通信。面向字节：所有 PPP 帧长度均为整数个字节。(5) PPP 链路状态过程静止状态：无物理层连接。建立状态：检测到载波信号，建立物理连接，LCP 协商选项。身份验证状态：协商成功后进行身份验证。网络层协议状态：通过 NCP 配置网络层。打开状态：可进行数据传输。终止状态：数据传输完成后，线路终止，回到静止状态。3.HDLC协议HDLC（高级数据链路控制）是一种面向比特的数据链路层协议，具有以下核心特点：主要特性：透明传输：通过 “0 比特插入法” 实现，发送端检测到 5 个连续的 1 时，自动插入一个 0；接收端检测到 5 个连续的 1 后紧跟一个 0 时，删除该 0，还原原始比特流。全双工通信：传输效率高。差错控制：所有帧采用 CRC 校验，对信息帧进行顺序编号，可防止漏收或重发，传输可靠性高。传输控制与处理功能分离：灵活性强。帧格式：HDLC 帧由以下字段构成：标志字段 F（8bit）：固定为01111110，用于帧定界。地址字段 A（8bit）：表示从站或应答站的地址。控制字段 C（8bit）：实现流量控制、差错控制等重要功能。信息字段 Info（可变长度）：承载用户数据。帧校验序列 FCS（16bit）：用于差错检测。标志字段 F（8bit）：帧结束定界。特性HDLC 协议PPP 协议面向对象面向比特面向字节协议字段无有（2 字节，值为0x0021时表示 IP 数据报）可靠传输信息帧使用编号和确认机制，提供可靠传输不使用序号和确认机制，仅保证无差错接收（CRC 校验），端到端差错检测由高层协议负责（八）数据链路层设备1.网桥的基本概念工作层次：数据链路层的 MAC 子层。核心作用：连接多个以太网网段，扩大覆盖范围，同时将各网段隔离为独立的碰撞域（冲突域），过滤通信量，避免一个网段的故障影响其他网段。具备路径选择功能，接收数据帧后检查帧中的地址：若目的地址在另一网段，则转发到对应网段；若目的地址在本网段，则丢弃该帧（源站和目的站可直接通信，无需网桥转发）。与转发器对比：工作在物理层的转发器不具备隔离碰撞域的功能。2.局域网交换机1. 交换机的原理和特点本质：多端口的网桥，工作在数据链路层，通常工作在全双工方式。核心原理：检测数据帧的源和目的 MAC 地址，与内部动态交换表（MAC 地址表）比较，将帧转发到对应端口；若地址不在表中，则广播该帧。主要特点：每个端口可直接与单台主机相连，一般工作在全双工方式。支持多对主机同时通信，每对通信独占信道，无碰撞传输。即插即用，内部交换表通过自学习算法自动建立。采用专用交换结构，交换速率高。独占传输媒体带宽，可显著提升网络总容量（如 N 个 10Mb/s 端口的交换机，总容量可达 N×10Mb/s）。两种交换模式：直通式交换机：仅检查目的地址，帧接收后立即转发，速度快，但缺乏智能性和安全性，不支持不同速率端口的转换。存储转发式交换机：先将帧缓存，检查数据正确性后再转发，可靠性高，支持不同速率端口转换，但延迟较大。应用扩展：可实现虚拟局域网（VLAN），隔离冲突域和广播域。2. 交换机的自学习功能核心机制：交换机通过 “过滤”（丢弃本网段帧）和 “转发”（转发到其他端口）的过程，自动学习并维护交换表。自学习过程：初始时交换表为空。当交换机从某端口收到一帧时，会将帧的源 MAC 地址与入端口号写入交换表。若目的 MAC 地址在交换表中，则按表中端口转发；若不在，则向除入端口外的所有端口广播该帧。交换表中的表项具有有效时间，超时自动更新，以适应网络拓扑变化。优势：实现即插即用，无需人工配置，使用非常方便。
一、计算机系统概述（一）操作系统的基本概念1.操作系统的概念操作系统是指：控制和管理整个计算机系统的硬件与软件资源，合理地组织、调度计算机的工作与资源的分配，进而为用户和其他软件提供方便接口与环境的程序集合。2.操作系统的特征(1) 并发操作系统的并发性是指计算机系统重同时存在多个运行的程序，因此它具有处理和调度多个程序同时执行的能力。在操作系统中引入进程的目的是，使程序能并发执行。操作系统的并发性是通过分时得以实现的。注意区分并发和并行。(2) 共享资源共享，系统中的资源可以供内存中多个并发执行的进程共同使用。分为互斥共享方式和同时访问方式。互斥访问方式同时访问方式【并发和共享的关系】：并发和共享是操作系统两个最基本的特征，两者之间互为存在的条件：没有并发就无法共享；没有共享就无法并发(3) 虚拟虚拟是指把一个物理实体变为若干逻辑上的对应物。虚拟处理器虚拟内存虚拟外部设备虚拟技术可以归纳为：时分复用技术（如处理器的分时共享）、空分复用技术（如虚拟存储器）(4) 异步在多道程序环境下，多个进程并发执行，但由于资源有限（比如 CPU 只有一个），进程会交替使用 CPU，执行过程是“走走停停”的，而不是一气呵成，这就是进程的异步性。异步性使操作系统运行在随机环境下，可能导致与时间有关的错误，如：多个进程访问同一全局变量，执行顺序不同可能导致结果不同。3.操作系统的目标和功能(1) 操作系统作为计算机资源的管理者处理机管理（处理机的分配和运行以进程为基本单位，因而对处理机的管理可归结为对进程的管理。）存储器管理文件管理设备管理(2) 操作系统作为用户与计算机硬件系统之间的接口命令接口：允许用户通过特定的命令来组织和控制作业（任务）的执行。联机命令接口（交互式命令窗口）脱机命令窗口（批处理命令窗口）程序接口：由一组系统调用（System Call）组成，允许运行中的程序请求操作系统内核提供服务（如申请内存、读写磁盘、创建进程等）。(3) 操作系统实现了对计算机资源的扩充没有任何软件支持的计算机称为裸机。操作系统提供的资源管理功能和方便用户的各种服务功能，将裸机改造成功能更强，使用更方便 的机器。我们把覆盖了软件的机器称为扩充机器或虚拟机。（二）操作系统的发展历程1. 手工操作阶段（无操作系统）特点：所有操作（装程序、运行、输出）均需人工干预，用户独占全机。缺点：资源利用率极低，CPU 频繁等待手工操作，效率低下。核心矛盾：人机速度不匹配，资源浪费严重。2. 批处理阶段（操作系统开始出现）为解决人机矛盾及 CPU 与 I/O 速度不匹配问题，批处理系统应运而生。单道批处理系统特征：自动性（无需人工干预）、顺序性（按进入顺序执行）、单道性（内存中仅一道作业）。局限：CPU 在作业 I/O 时仍需等待，资源利用率仍有提升空间。多道批处理系统（引入多道程序设计技术）特征：多道（内存中同时存放多道程序）、宏观上并行（程序都处于运行过程中）、微观上串行（程序轮流占用 CPU）。优点：资源利用率高，系统吞吐量大，CPU 和外设保持 “忙碌” 状态。缺点：用户响应时间长，无交互能力，无法干预或了解程序运行。3. 分时操作系统核心思想：将处理器时间划分为短时间片，按时间片轮转分配给多个终端用户。主要特征：同时性：允许多个用户同时使用一台计算机。交互性：用户可通过终端与系统对话，控制程序运行。独立性：用户间互不干扰，感觉独占计算机。及时性：用户请求能在短时间内获得响应。解决问题：良好的人机交互，满足用户对系统响应的即时性需求。4. 实时操作系统核心目标：在严格的时间限制内完成紧急任务，无需排队。分类：硬实时：任务必须在绝对规定的时间内完成（如飞行器控制）。软实时：偶尔超时不会造成严重后果（如机票预订）。特点：对外部信号响应及时，处理过程具有及时性和可靠性。5. 网络操作系统与分布式操作系统网络操作系统：将计算机网络中的各台计算机有机结合，提供统一、经济、有效的网络通信与资源共享服务。分布式操作系统：由多台计算机组成，系统中任意两台计算机可通过通信方式交换信息；所有计算机地位平等，可并行、协作完成同一任务，具有分布性和并行性。6. 个人计算机操作系统应用场景：广泛应用于文字处理、电子表格、游戏等，是目前使用最广泛的操作系统。常见代表：Windows、Linux、MacOS 等。（三）程序运行环境1.处理器运行模式CPU运行两种不同性质的程序：操作系统内核程序、应用程序。指令分为：特权指令、非特权指令。内核程序可以执行特权指令，应用程序不可以。CPU的运行模式划分为：用户态（目态）、核心态（管态、内核态）。与硬件关联紧密的模块（时钟管理等）和运行频率较高的程序（进程管理等）共同构成操作系统的内核。操作系统的内核包括4方面的内容：(1) 时钟管理向用户提供系统时间采用时间片轮转调度，实现进程的切换(2) 中断机制中断机制的本质是让CPU在执行当前任务时，能够相应并处理来自硬件或软件的紧急请求，处理完毕后再无缝回到原来的任务重。中断机制中，内核负责保护和恢复中断现场的信息。例：你正在电脑上写代码（CPU 执行程序），突然收到了一封新邮件（外设中断）。主程序运行：你正在用编辑器写代码，CPU 正在执行编辑器进程的指令，屏幕上不断刷新你输入的字符。中断发生：网卡检测到新邮件到达，向 CPU 发送了一个硬件中断信号。内核响应（中断处理核心）：CPU 立即暂停当前的编辑器代码执行，由内核保护现场（保存当前寄存器、程序计数器等）。内核根据中断号，找到对应的网卡驱动处理程序入口，将控制权转移过去。处理程序执行：网卡驱动程序开始执行，读取网卡缓冲区中的邮件数据，将其存入内存，并更新邮件客户端的未读计数。恢复执行：处理完成后，内核恢复之前保存的编辑器现场，CPU 继续执行被打断的代码编辑任务，你几乎感觉不到任何卡顿。(3) 原语原语处于操作系统最底层，运行具有原子性，运行时间短，调用频繁。(4) 系统控制的数据结构及处理系统控制的数据接口有作业控制块、进程控制块、设备控制块、各类链表、消息队列、缓冲区、空闲区登记表、内存分配表等。2.中断和异常定义中断，也称外中断，是指来自CPU执行指令外部的事件。通常用于信息输入/输出。时钟中断：硬件定时器按预设频率周期性地向CPU发送中断信号，就像心脏跳动。每次中断，CPU 都会暂停当前任务，进入内核态执行时钟中断处理程序，更新系统时间、检查进程时间片、驱动调度器等。异常，也称内中断，是指来自CPU执行指令内部的事件。如程序的非法操作码、地址越界等。异常不能被屏蔽，一旦出现必须立即处理。分类异常可以分为故障、自陷、终止。（异常是不可屏蔽的）故障（Fault）：通常是由指令执行引起的异常，如除数为0等。（属于软件中断）自陷（Trap）：一种事先安排的异常事件，用于在用户态下调用操作系统内核程序。（属于软件中断）终止（Abort）：出现了使得CPU无法继续执行的硬件故障，如控制器出错等。（属于硬件中断）外中断可以分为可屏蔽中断、不可屏蔽中断。（都属于硬件中断）可屏蔽中断：通过INTR线发出的中断请求。通过改变屏蔽字可以实现多重中断，使中断处理更加灵活。不可屏蔽中断：通过NMI线发出的中断请求。通常是紧急的硬件故障，如电源掉电等。处理过程中断和异常处理过程的大致描述如下：当CPU在执行用户程序的第i条指令时检测到一个异常事件/执行第i条指令后发现一个中断请求信号，则CPU打断当前的用户程序，转到相应的中断或异常处理程序去执行。若中断或异常处理程序能解决相应的问题，则在中断或异常处理程序的最后，CPU通过执行中断或异常返回命令，回到被打断的用户程序的第i条指令或第i+1条指令继续执行；若中断或异常处理程序发现是不可恢复的致命错误，则终止用户程序。3.系统调用系统调用按功能可分为：设备管理、文件管理、进程控制、进程通信、内存管理。系统调用的处理需要操作系统内核程序负责完成。要运行在核心态，用户程序可以执行陷入指令（访管指令、trap指令）来发起系统调用。过程：用户程序执行 “陷入指令”，之后相当于把 CPU 的使用权主动交给操作系统内核程序（CPU 状态会从用户态进入核心态），之后操作系统内核程序再对系统调用请求做出相应处理。处理完成后，操作系统内核程序又会把 CPU 的使用权还给用户程序（即 CPU 状态会从核心态回到用户态）。由用户态转到核心态，会用到访管指令，访管指令是在用户态使用的，它不是特权指令。从核心态转向用户态由一条指令实现，一般是中断返回指令，这条指令是特权命令。注：由用户态进入核心态，不仅状态需要切换，而且所用的堆栈也可能需要由用户堆栈切换为系统堆栈，但这个系统堆栈也是属于该进程的。（四）操作系统结构1.分层法核心思想：将操作系统分为若干层，仅能调用紧邻的低层功能（单向依赖）。优点：便于系统调试和验证；易于扩充和维护。缺点：合理定义各层比较困难；层间依赖导致灵活性不足；效率较低。2.模块化核心思想：按功能划分为若干独立模块，模块间通过接口通信（微内核由模块、子模块组成）。衡量标准：内聚性（模块内部关联程度）、耦合度（模块间相互影响程度）。优点：提高系统设计正确性、可理解性和可维护性；增强可适应性；加速开发过程。缺点：模块接口验证困难，难以找到可靠的决定顺序。3.宏内核（单内核）核心思想：将系统主要功能模块作为紧密整体运行在核心态，管理模块间共享信息。代表系统：Windows、Android、iOS、macOS、Linux 等。优势：性能高，模块间交互直接。发展趋势：逐步吸收微内核优点，向混合内核架构演进（如 Fuchsia、鸿蒙 OS）。4.微内核基本概念：将内核中最基本的功能保留在内核，不需要在核心态执行的功能移到用户态，以降低内核设计复杂性。微内核是精心设计的小型内核，仅包含与硬件紧密相关及较基本的功能，其余功能由用户态服务器实现。微内核通常功能：进程（线程）管理：进程创建、切换、调度等机制部分放入微内核。低级存储器管理：地址映射等依赖硬件的机制放入微内核。中断和陷入处理：仅将与硬件紧密相关的小部分放入微内核，其余交由服务器处理。主要优点：扩展性和灵活性好；可靠性和安全性高；可移植性强；支持分布式和网络系统。主要问题：频繁的核心态与用户态切换导致执行开销增大，可通过将频繁使用的服务移回内核改善性能。5.外核核心思想：在裸机上运行外核程序，为虚拟机分配独立的硬件资源（如磁盘块），并检查资源使用权限。优点：减少了地址映射等不必要的抽象，提高性能；应用可根据需求定制资源。缺点：应用需自行管理资源，复杂度增加；外核需保证虚拟机间不发生冲突。（五）操作系统引导操作系统引导是指计算机利用CPU运行特定程序，通过程序识别硬盘，识别硬盘分区，识别硬盘分区上的操作系统，最后通过程序启动操作系统。操作系统引导过程（8 步）激活 CPU：CPU 读取 ROM 中的 boot 程序，将指令寄存器设置为 BIOS 的第一条指令，开始执行 BIOS。硬件自检：BIOS 启动后进行硬件自检（POST），检查硬件故障；有故障则蜂鸣中止，无故障则显示硬件信息。加载带操作系统的硬盘：BIOS 按启动顺序（Boot Sequence），将控制权交给首位可引导存储设备，CPU 加载其引导扇区内容。加载主引导记录（MBR）：硬盘以特定标识区分引导盘和非引导盘，MBR 告诉 CPU 去哪个主分区找操作系统。扫描硬盘分区表：MBR 包含硬盘分区表，扫描后识别活动分区（含操作系统的分区），并将控制权交给它。加载分区引导记录（PBR）：读取活动分区的第一个扇区（PBR），其作用是寻找并加载活动分区根目录下的启动管理器。加载启动管理器：PBR 搜索并加载活动分区中的启动管理器。加载操作系统：启动管理器加载操作系统内核，完成引导，系统启动。（六）虚拟机虚拟机是一台逻辑计算机，是指利用特殊的虚拟化技术，通过隐藏特定计算平台的实际物理特性，为用户提供抽象的、统一的、模拟的计算环境。有两类虚拟化方法。1. 第一类虚拟机管理程序（裸金属架构）运行位置：直接运行在裸机硬件上，是唯一拥有最高特权级的程序，具备多道程序功能。核心特点：向上层提供与裸机硬件精确复刻的虚拟机，因此虚拟机上可运行任意操作系统。本质：像一个专门用于虚拟化的操作系统，直接管理硬件资源。2. 第二类虚拟机管理程序（寄居架构）运行位置：作为用户态进程，依赖于 Windows、Linux 等宿主操作系统来分配和调度资源。核心特点：虚拟机上的操作系统认为自己运行在内核态（实际为虚拟内核态），执行敏感指令时会陷入虚拟机管理程序。虚拟机管理程序会检查指令来源：若来自虚拟机操作系统，则安排其正确执行；若来自虚拟机用户进程，则模拟硬件行为。在不支持虚拟化的 CPU 上，敏感指令会被转为对虚拟机管理程序的调用，由其模拟功能。典型代表：VMware Workstation。
二、物理层（一）通信基础1.基本概念数据、信号与码元数据：连续变化的数据称为模拟数据；取值离散的数据称为数字数据。信号：连续变化的信号称为模拟信号；取值离散的信号称为数字信号。串行传输、并行传输码元：码元是指用一个固定时长的信号波形（数字脉冲）表示一位 k 进制数字，代表不同离散数值的基本波形，是数字通信中数字信号的计量单位。这个时长内的信号称为 k 进制码元，而该时长称为码元宽度。1 码元可以携带若干比特的信息量。例如，在使用二进制编码时，只有两种不同的码元：一种代表 0 状态，另一种代表 1 状态。信源、信道与信宿数据通信是数字终端间的通信，系统主要由三部分构成：信源：产生和发送数据的源头（如计算机）。信道：信号的传输媒介，是线路的逻辑部件，包含发送信道和接收信道。信宿：接收数据的终点（如计算机）。图示为一个单向通信系统的模型，实际的通信系统大多为双向的，包括一条发送信道和一条接收信道，信道可以进行双向通信。信道的分类：(1) 按传输信号形式模拟信道：传输模拟信号。数字信道：传输数字信号。(2) 按传输介质无线信道：如无线电波。有线信道：如双绞线、光纤。(3) 按传输信号类型基带信号：将数字信号 1 和 0 直接用不同电压表示，在数字信道上传输（基带传输）。宽带信号：将基带信号调制后形成频分复用模拟信号，在模拟信道上传输（宽带传输）。通信双方的交互方式：(1) 单向通信：仅一个方向通信，无反向交互，仅需一条信道。例：无线电广播、电视广播。(2) 半双工通信：双方均可发送 / 接收，但不能同时进行，需两条信道。(3) 全双工通信：双方可同时发送和接收信息，需两条信道。速率、波特与带宽速率也称数据率，指的是数据传输速率，表示单位时间内传输的数据量。可以用码元传输速率和信息传输速率表示。指标名称别名定义单位关键特性码元传输速率波特率、调制速率单位时间内传输的码元个数（脉冲 / 信号变化次数）波特（Baud）1 波特 = 每秒传输 1 个码元；与码元进制数无关，可适用于二进制 / 多进制信息传输速率信息速率、比特率单位时间内传输的二进制码元个数（比特数）比特 / 秒（b/s）反映实际有效信息的传输效率若一个码元携带 n 比特信息量，则：信息传输速率 = 码元传输速率 × n（单位：b/s）带宽存在物理本义和网络应用义两个核心维度，实际网络中以应用义为主。物理本义：指信号的频带宽度，反映信号的频率范围，单位为赫兹（Hz）。网络应用义：表示通信线路所能传输数据的最高能力，即单位时间内从一点到另一点可通过的最高数据率，此时单位为比特 / 秒（b/s）。带宽与数据率存在数值互换关系，是衡量网络通信线路传输能力的核心指标。2.奈奎斯特定理与香农定理奈奎斯特定理（奈氏准则）适用场景： 理想低通信道（无噪声、带宽有限）。核心公式： $C = 2W \log_2 V$ （单位：b/s）$W$：信道带宽（Hz）$V$：每个码元的离散电平数目（码元进制数）核心结论：任何信道的码元传输速率存在上限，超过则会产生严重码间串扰，导致接收端无法正确识别码元。信道带宽越宽，可支持的码元传输速率越高。奈氏准则仅限制码元传输速率，不限制每个码元携带的比特数。要提高数据传输速率，需采用多元制调制方法，让每个码元携带更多比特信息。香农定理适用场景： 带宽有限且受高斯白噪声干扰的信道。核心公式： $C = W \log_2 (1 + S/N)$ （单位：b/s）$W$：信道带宽（Hz）$S$：信号平均功率$N$：信道内部高斯噪声功率$S/N$：信噪比（无量纲），也可表示为分贝形式：$\text{信噪比(dB)} = 10 \log_{10}(S/N)$核心结论：信道带宽或信噪比越大，信息的极限传输速率越高。对于给定的带宽和信噪比，极限传输速率是确定的上限。只要传输速率低于该极限，理论上可找到无差错的传输方法。香农定理给出的是极限信息传输速率，实际信道能达到的速率远低于此值。两者对比：奈奎斯特定理： 仅考虑带宽，限制码元传输速率，未考虑噪声影响。香农定理： 同时考虑带宽和信噪比，给出了更现实的极限信息传输速率，指出一个码元对应的二进制位数是有限的。3.编码与调制数据无论是数字的还是模拟的，为了传输的目的，都必须转变成信号。把数据变换为模拟信号的过程称为调制，把数据变换为数字信号的过程称为编码。数字数据可以通过数字发送器转换为数字信号传输，也可以通过调制器转换成模拟信号传输；模拟数据可以通过PCM编码器转换成数字信号传输，也可以通过放大器调制器转换成模拟信号传输。数字数据编码为数字信号数字数据编码用于基带传输，核心目标是有效区分数字信号 “0” 和 “1”，同时兼顾自同步（时钟基准）与传输效率。基础编码类（核心区分 0/1）编码方式核心规则核心优势核心劣势关键考点(1) 归零编码（RZ）高电平 = 1、低电平 = 0；每个时钟周期中间必须跳变归零自带自同步，接收方可精准校准时钟占用额外带宽，传输效率低对比 NRZ 的 “不归零”(2) 非归零编码（NRZ）全程不归零，一个周期完整传输数据带宽利用率高无时钟信号，难以同步，需额外时钟线编码最简单但同步差跳变优化类（平衡同步与效率）编码方式核心规则核心优势关键定位(3) 反向非归零码（NRZI）信号翻转 = 0，信号保持 = 1结合 NRZ 的高效与 RZ 的同步，开销小USB 2.0 标准编码(4) 曼彻斯特编码每个码元中间跳变：前高后低 = 1，前低后高 = 0（或相反）中间跳变同时作为时钟 + 数据，自带同步以太网 标准编码（必考）(5) 差分曼彻斯特编码中间必跳变（同步）；码元边界电平不变 = 1，变 = 0（或相反）抗干扰性优于曼彻斯特编码局域网传输，抗干扰强效率优化类（解决长连续 0/1 问题）(6) 4B/5B 编码原理：将每 4 位数据组转换为 5 位码（32 种组合中仅用 16 种对应 4 位数据，其余 16 种作控制码）。目的：解决长串 “0” 导致的同步丢失问题，提高编码效率，减少冗余开销。数字数据调制为模拟信号数字数据调制技术在发送端将数字信号转换为模拟信号，在接收端将模拟信号还原为数字信号，分别对应调制解调器的调制和解调过程。幅移键控 (ASK, Amplitude Shift Keying)原理：通过改变载波信号的振幅来表示数字信号 1 和 0，而载波的频率和相位保持不变。特点：方法简单，容易实现，但抗噪声和抗干扰能力较差。频移键控 (FSK, Frequency Shift Keying)原理：通过改变载波信号的频率来表示数字信号 1 和 0，而载波的振幅和相位保持不变。特点：容易实现，抗干扰能力较强，是目前应用较为广泛的调制方式。相移键控 (PSK, Phase Shift Keying)原理：通过改变载波信号的相位来表示数字信号 1 和 0，而载波的振幅和频率保持不变。分类：绝对调相：利用相位角本身的数值表示信息。相对调相 (DPSK)：利用前后码元的相位差表示信息。正交振幅调制 (QAM, Quadrature Amplitude Modulation)原理：在载波频率相同的前提下，将 ASK（幅移键控） 与 PSK（相移键控） 结合，形成振幅与相位共同叠加的复合信号。速率公式：若波特率为 $B$，调制方式采用 $m$ 个相位，且每个相位有 $n$ 种不同的振幅，则该调制方式的状态数 $V = m \times n$。根据数据传输速率（位速率）公式：$$R = B \log_2(m \times n) \quad (\text{单位: b/s})$$模拟数据编码为数字信号最典型的方式是脉码调制（PCM），用于将模拟信号（如音频）转换为数字信号，包含三个核心步骤：采样定义：对模拟信号进行周期性扫描，将时间上连续的信号变为离散信号。采样定理（奈奎斯特定理）：若原始信号最高频率为 $f$，则采样频率 $f_{\text{采样}} \ge 2f$，才能保证采样后的信号无失真地代表原始模拟数据。量化定义：将采样得到的电平幅值按分级标度转换为离散的数字值并取整，把连续的电平值转为离散量。编码定义：将量化后的结果转换为对应的二进制编码。模拟数据调制为模拟信号目的：为了实现传输的有效性，将模拟数据（如声音）加载到更高频率的载波信号上进行传输。技术：可使用 频分复用（FDM） 技术，充分利用带宽资源。应用：电话机和本地局交换机就采用这种方式，将模拟的声音数据加载到模拟的载波信号中进行传输。4.电路交换、报文交换与分组交换电路交换核心流程：分为连接建立→数据传输→连接释放三个阶段，建立后通路被双方独占，直到通信结束释放。关键特点：结点采用 “直通方式”，无存储转发耗时；适用于数据量大、传输时间远大于呼叫时间的场景。典型应用：传统电话网。报文交换核心机制：以 “完整报文” 为单位，交换结点采用存储转发模式，无需预先建立专用通路。关键局限：对报文大小无限制，要求结点具备大缓存空间；转发时延包含存储、校验、排队等环节，效率较低。现状：早期用于电报通信网，现基本被分组交换取代。分组交换核心改进：将长报文拆分为固定大小的分组，添加源地址、目的地址、编号等控制信息，解决报文交换的大缓存和高时延问题。两种服务类型：数据报服务：可能出现分组失序、丢失、重复，需接收方排序重组。虚电路服务：无失序问题，有呼叫建立、数据传输、电路释放三个过程。适用场景：端到端多链路、计算机之间的突发式数据通信（当前互联网的核心交换方式）。交换方式核心特征传输单位关键机制核心优势核心劣势电路交换建立独占物理通路连续数据无存储转发，直通传输时延小、有序无冲突、实时性强建立连接慢、线路独占（利用率低）、故障容错差报文交换无专用通路，存储转发完整报文接收→存储→校验→转发无需建连、线路利用率高、多目标服务转发时延大、需大缓存、早期技术（现已少用）分组交换无专用通路，存储转发分组（Packet）报文拆分→分组传输→重组时延适中、线路利用率高、缓存易管理、可靠性强有存储转发时延、额外控制信息开销、可能失序 / 丢失5.数据报与虚电路数据报服务传输过程：报文拆分为带序号的分组→每个分组独立路由→中间结点短暂存储转发→分组可能经不同路径、无序到达接收方。关键优势：无需建连、故障适应性强、资源利用率高、存储转发时延小。关键劣势：分组可能失序 / 丢失，需主机端负责排序、重传和流量控制。虚电路服务核心机制：建立阶段分配虚电路号，各结点维护 “虚电路表”（记录电路号、前后结点标识）；传输阶段按虚电路号转发，无需重复选路；结束后发送 “释放请求” 拆除电路。关键优势：分组有序、开销小、网络提供可靠性保障，适合长时高频通信。关键劣势：建连 / 拆连耗时，对交互式短分组通信不经济；故障时虚电路整体瘫痪，容错性差。对比维度数据报服务虚电路服务连接建立无需建立，随时发送分组必须建立（呼叫请求→呼叫应答），分 “建立→传输→释放” 三阶段地址携带每个分组含完整源 / 目的地址仅建立阶段用完整地址，传输阶段仅带虚电路标识符（开销小）路由选择每个分组独立选路，路径可能不同仅建立阶段选路，传输阶段固定路径转发分组顺序不保证有序到达（接收方需重组排序）保证分组按序到达可靠性保障网络不保证，由用户主机负责网络保证（有序、无丢失），可由网络 / 主机负责流量控制故障适应性故障结点丢失分组，其余分组重新选路，不影响整体故障结点 / 链路失效，该虚电路所有分组均无法传输适用场景突发式数据、短分组、对有序性要求低的通信长时间、频繁的大数据交换，对有序性 / 可靠性要求高的通信（二）传输介质1.双绞线、同轴电缆、光纤与无线传输介质(1) 传输介质分类：传输介质是数据传输的物理通路，分为两大类：导向传输介质：电磁波沿固体媒介（铜线、光纤）传播，如双绞线、同轴电缆、光纤。非导向传输介质：电磁波在空气、真空、海水等中传播，如无线电波、微波、红外线、激光。(2) 导向传输介质：双绞线结构：两根绝缘铜导线按规则绞合，可减少电磁干扰。非屏蔽双绞线（UTP）：无额外屏蔽层，价格便宜。屏蔽双绞线（STP）：增加金属丝屏蔽层，抗干扰能力更强。应用：局域网、传统电话网，模拟 / 数字传输均可，通信距离为几千米到数十千米，距离过远需放大器或中继器。同轴电缆结构：由内导体、绝缘层、网状编织屏蔽层和塑料外层构成。分类：50Ω 基带同轴电缆：用于基带数字信号传输，局域网中应用广泛。75Ω 宽带同轴电缆：用于宽带信号传输，主要用于有线电视系统。特点：抗干扰性好，传输速率高、距离远，但价格高于双绞线。光纤原理：利用光导纤维传递光脉冲通信，有光脉冲表示 1，无光脉冲表示 0。结构：纤芯（高折射率）+ 包层（低折射率），光线在纤芯中通过全反射传输。分类：多模光纤：允许多条光线同时传输，光源为发光二极管，易失真，适合近距离传输。单模光纤：纤芯极细，光线直线传播，光源为半导体激光器，衰减小，适合远距离（数十千米）传输。优点：通信容量大、传输损耗小、抗雷电和电磁干扰、保密性好、体积小重量轻。(3) 无线传输介质：无线电波特点：穿透能力强，传输距离远，信号向所有方向散播，接收设备无需对准发射方向。应用：移动电话、无线局域网（WLAN）等。微波、红外线和激光共性：均为视线介质，需收发方之间存在视距通路，方向性强，沿直线传播。微波通信：频率高、频段宽、通信容量大，地面传播距离有限，需中继接力；卫星通信可利用地球同步卫星实现全球通信，优点是容量大、距离远、覆盖广，缺点是保密性差、传播时延长。红外线 / 激光通信：将信号转换为红外光或激光信号，直接在空间中传播。2.物理层接口的特性物理层的主要任务可以描述为确定与传输媒体的接口有关的一些特性:(1) 机械特性。指明接口所用接线器的形状和尺寸、引脚数目和排列、固定和锁定装置等。(2) 电气特性。指明在接口电缆的各条线上出现的电压的范围。(3) 功能特性。指明某条线上出现的某一电平的电压表示何种意义。(4) 过程特性。或称规程特性。指明对于不同功能的各种可能事件的出现顺序。常用的物理层接口标准有 EIA RS-232-C、ADSL 和 SONET/SDH等。（三）物理层设备1.中继器核心功能中继器工作在物理层，主要功能是对信号进行整形并放大再生，以消除信号长距离传输后的失真和衰减，从而扩大网络传输距离。其原理是信号再生，而非简单放大衰减的信号。工作特点端口：仅有两个端口，数据从一端输入，另一端输出。作用范围：仅作用于信号的电气部分，不检测数据错误或适用性。连接对象：用于连接网段，而非子网。连接后的多个网段仍属于同一个局域网，且两端网段必须使用同一协议，且速率必须相同（因无存储转发功能）。重要规则与限制“5-4-3 规则”：在 10BASE5 以太网规范中，互相串联的中继器不能超过 4 个，且用 4 个中继器串联的 5 段通信介质中，只有 3 段可挂接计算机，其余 2 段仅用作链路扩展，不能接计算机。数量限制：理论上中继器可无限使用，但受网络标准中信号延迟范围限制，超范围会引发网络故障。与放大器的区别放大器：放大模拟信号，原理是直接放大衰减的信号。中继器：放大数字信号，原理是将衰减的信号整形再生。2.集线器本质定义集线器是一个多端口的中继器，工作在物理层。它本质上并非智能网络设备，而是单纯的信号转发装置。工作原理(1) 信号处理：接收信号后进行整形放大再生（恢复信号），并转发给除输入端口外的其他所有端口。(2) 冲突机制：若同时有两个或多个端口输入数据，会发生冲突，导致数据无效。(3) 共享式设备：信息传输方向固定，所有端口共享带宽，逻辑上属于同一个总线网络。核心特征与局限(1) 共享带宽：所有端口属于同一个冲突域。只能在半双工状态下工作，吞吐率受限。例：10Mb/s 集线器连接 8 台计算机，若同时工作，每台计算机实际带宽仅为 1.25Mb/s。(2) 集中式管理：组网灵活，以 Hub 为中心集中管理各结点。故障隔离：可隔离出问题的工作站，防止其影响全网运行。(3) 连接方式：主要使用双绞线组建共享网络，是服务器连接桌面的经济方案。交换式网络中，Hub 直接与交换机相连，将交换机端口的数据送到桌面。
六、应用层（一）网络应用模型1.客户/服务器（C/S）模型在客户/服务器（C/S）模型中，有一个总是打开的主机称为服务器，它服务于许多来自其他称为客户机的主机请求。工作流程：服务器持续处于接收请求的待机状态；客户机向服务器发送服务请求，并等待响应结果；服务器接收请求后，完成解析、处理，将结果返回给客户机。主要特征：客户机是服务请求方，服务器是服务提供方主要特点还有：特点具体解读典型示例地位不平等网络中计算机分层管理，服务器可限制客户机权限，网络管理集中化服务器禁止客户机随意删除服务器端数据客户机不直连客户机之间无直接通信链路，需通过服务器中转Web 应用中，两个浏览器无法直接交互可扩展性受限受服务器硬件性能、网络带宽约束，支持的客户机数量存在上限高并发场景下，单台 Web 服务器易出现访问拥堵2.P2P模型C/S、P2P 对比C/S 模型痛点：性能依赖中心服务器，大量用户请求时服务器易成为系统瓶颈。P2P 模型核心：网络传输内容不存储于中心服务器，所有结点兼具下载、上传功能，权利与义务对等，无固定客户机与服务器划分。P2P模型看似去中心化，实则本质上仍然使用客户/服务器模式，每个结点均兼具 “客户”（访问资源）与 “服务器”（提供资源）双重身份，对等方（Peer）可直接通信。P2P 的优势：(1) 降低服务器依赖：减轻中心服务器计算压力，消除单点依赖，任务分布式分配，提升系统效率与资源利用率。(2) 支持点对点共享：多个客户机之间可直接共享文档等资源。(3) 可扩展性强：突破传统服务器的响应能力与带宽限制，能承载更多请求。(4) 网络健壮性高：单个结点失效不会影响其他结点的正常运行。P2P 的缺点：(1) 本地性能损耗：结点在获取服务的同时需为他人提供服务，占用大量内存，降低整机运行速度，频繁 P2P 下载还会损耗硬盘。(2) 网络拥塞问题：P2P 流量占互联网总流量的 50%~90%，易造成网络拥堵，因此多数 ISP（互联网服务提供商）对其持反对态度。（二）域名系统1.层次域名空间定义：因特网采用层次树状结构的命名方法，每个连接到因特网的主机或路由器都有一个唯一的层次结构名称，即域名（Domain Name）。标号规则英文不区分大小写。除连字符（-）外，不能使用其他标点符号。每个标号不超过 63 个字符，完整域名最长不超过 255 个字符。顶级域名（TLD）分类(1) 国家（地区）顶级域名（nTLD）：代表不同的国家或地区，如 .cn（中国）、.us（美国）、.uk（英国）。其下注册的二级域名由对应国家（地区）自行确定。(2) 通用顶级域名（gTLD）：常见的有 .com（公司）、.net（网络服务机构）、.org（非营利性组织）、.gov（政府部门）等。(3) 基础结构域名：只有一个，即 .arpa，用于反向域名解析，又称反向域名。域名空间的管理：域名空间是一个倒置的树状结构，每个域由不同的组织进行管理。管理组织可以将其域再分成一定数目的子域，并委托给其他组织管理。例如，中国管理 .cn 域，并将 edu.cn 子域授权给 CERNET 管理。2.域名服务器DNS 系统整体设计结构：因特网的域名系统（DNS）是一个联机分布式数据库系统，采用客户 / 服务器模型。核心任务：完成域名到 IP 地址的解析。特点：域名到 IP 地址的映射并非集中存储，而是分布在所有 DNS 服务器上，通过分布式设计实现了高可扩展性和健壮性。四种主要域名服务器类型(1) 根域名服务器地位：最高层次的域名服务器，是整个 DNS 体系的 “入口”。作用：存储所有顶级域名服务器的 IP 地址。当本地域名服务器无法解析时，会首先求助于根域名服务器。根服务器通常不直接转换域名，而是告知下一步应查询的顶级域名服务器地址。部署：因特网上共有 13 个根域名服务器，每个服务器实际上是一个冗余服务器集群，以保障安全性和可靠性。(2) 顶级域名服务器（TLD）作用：负责管理在该顶级域名（如.com、.cn）下注册的所有二级域名。响应：收到查询请求后，可能给出最终结果，也可能返回下一步应查询的授权域名服务器的 IP 地址。(3) 授权域名服务器（权限域名服务器）作用：每台主机都必须在授权域名服务器处登记，该服务器负责保存其管辖区域内所有主机的域名到 IP 地址的映射，并能将这些主机名转换为对应的 IP 地址。建议：为了可靠工作，一台主机最好至少配置两个授权域名服务器。许多域名服务器同时充当本地域名服务器和授权域名服务器。(4) 本地域名服务器作用：当一台主机发出 DNS 查询请求时，首先将请求发送给本地域名服务器。它对 DNS 系统的性能至关重要，是用户主机与整个 DNS 系统交互的入口。归属：通常由 ISP、大学或机构提供，我们在 Windows 系统中配置的 “DNS 地址”，就是本地域名服务器的地址。当本地域名服务器无法解析时，会迭代查询根服务器、顶级域名服务器，最终找到授权域名服务器，完成解析。这种层次化、分布式的设计，使得 DNS 系统能够高效、可靠地支撑全球因特网的域名解析需求。3.域名解析域名解析定义：将域名映射为 IP 地址（正向解析），或将 IP 地址映射为域名（反向解析）的过程。工作方式：客户端通过本机 DNS 客户端构造 DNS 请求报文，以UDP 数据报方式发往本地域名服务器。两种查询方式(1) 递归查询本地域名服务器只需向根服务器查询一次，后续的多次查询都由其他服务器递归完成。特点：给根域名服务器造成的负载过大，因此在实际中几乎不使用。(2) 递归与迭代相结合的查询（实际主流）主机 → 本地域名服务器：采用递归查询。若本地服务器不知道答案，就以 DNS 客户的身份继续查询，而非让主机自己进行下一步操作。本地域名服务器 → 根 / 顶级 / 授权服务器：采用迭代查询。服务器收到请求后，要么给出最终 IP 地址，要么告知下一步应查询的服务器地址，让本地服务器自行继续查询。解析过程示例（以查询 y.abc.com 为例）(1) 客户机向本地域名服务器发出递归查询请求。(2) 本地服务器查询本地缓存，若无记录则以 DNS 客户身份向根服务器发出迭代查询。(3) 根服务器返回.com顶级域名服务器dns.com的 IP 地址。(4) 本地服务器向dns.com发起迭代查询。(5) dns.com返回abc.com授权域名服务器dns.abc.com的 IP 地址。(6) 本地服务器向dns.abc.com发起迭代查询。(7) dns.abc.com返回y.abc.com的 IP 地址。(8) 本地服务器将结果缓存，并返回给客户机。性能优化：高速缓存为提高查询效率、减少 DNS 报文数量，DNS 服务器广泛使用高速缓存。当服务器收到查询结果时，会将信息缓存。后续相同域名查询可直接从缓存返回 IP 地址，无需再向其他服务器查询。由于主机名和 IP 地址的映射并非永久有效，DNS 服务器会在一段时间后丢弃高速缓存中的信息。（三）文件传输协议概念：文件传输协议（FTP） 是因特网上使用最广泛的文件传输协议，采用客户 / 服务器模式，基于可靠的 TCP 传输服务。核心特点：屏蔽了各计算机系统的细节，适合在异构网络的任意计算机之间传送文件。主要功能：(1) 提供不同主机系统之间的文件传输能力。(2) 以用户权限管理的方式提供对远程 FTP 服务器上的文件管理能力。(3) 支持匿名 FTP，实现公用文件共享。工作原理FTP 服务器进程由两大部分组成：主进程：负责接收新的请求。从属进程：负责处理单个客户端请求，处理完毕后即终止。工作步骤：打开熟知端口 21（控制端口），等待客户连接。等待客户进程发起连接请求。启动从属进程处理客户请求，主、从进程并发执行。从属进程处理完毕后终止，主进程回到等待状态，继续接收新请求。注：FTP 服务器在整个会话期间必须保留用户状态信息，如用户账户、当前远程目录位置等。控制连接与数据连接FTP 使用两个并行的 TCP 连接，这是其重要特征：连接类型服务器端口作用特点控制连接21传输控制信息（如连接请求、传送请求、中止命令等），控制信息以 7 位 ASCII 格式传送整个会话期间一直保持打开，不用于传送文件数据连接20用于实际的文件数据传输传输完毕后即关闭由于控制信息和数据传输使用不同的连接，FTP 的控制信息被称为带外（Out-of-band）传送。数据连接的两种传输模式数据连接的建立由客户端决定，分为两种模式：主动模式（PORT）客户端随机开放一个端口，发送 PORT 命令告知服务器。服务器通过端口 20 主动连接到客户端开放的端口进行数据传输。特点：“服务器” 连接到 “客户端” 的端口。被动模式（PASV）客户端发送 PASV 命令，服务器在本地随机开放一个端口并告知客户端。客户端主动连接到服务器开放的端口进行数据传输。特点：“客户端” 连接到 “服务器” 的端口。与 NFS 的对比FTP：若要修改服务器上的文件，必须先将文件下载到本地，修改后再上传回服务器，来回传输耗费时间。网络文件系统（NFS）：允许进程直接打开一个远程文件，并在文件的特定位置开始读写数据，无需复制整个文件，效率更高。（四）电子邮件1.电子邮件系统的组成结构电子邮件的核心特点异步通信：通信时不需要双方同时在场，邮件被发送到收件人邮件服务器的收件箱中，收件人可随时读取。应用广泛：是因特网上流行的通信方式，适合非实时信息传递。电子邮件系统的三大组成构件(1) 用户代理（UA）：是用户与电子邮件系统的接口，提供友好的界面用于撰写、显示和处理邮件。(2) 邮件服务器：负责发送和接收邮件，并向发件人报告邮件传送状态（已交付、被拒绝、丢失等）。工作方式：采用客户 / 服务器模式，同时充当客户和服务器。例如，当服务器 A 向服务器 B 发送邮件时，A 是 SMTP 客户，B 是 SMTP 服务器；反之亦然。(3) 电子邮件协议发送协议（SMTP）：用于用户代理向邮件服务器发送邮件，或邮件服务器之间转发邮件。采用 “推（Push）” 方式，主动将邮件送达服务器。读取协议（POP3/IMAP）：用于用户代理从邮件服务器读取邮件。采用 “拉（Pull）” 方式，由用户代理主动向服务器请求邮件。邮件传输的基本流程① 发信人调用用户代理来撰写和编辑要发送的邮件。用户代理用 SMTP 把邮件传送给发送端邮件服务器。② 发送端邮件服务器将邮件放入邮件缓存队列中，等待发送。③ 运行在发送端邮件服务器的 SMTP 客户进程，发现邮件缓存中有待发送的邮件，就向运行在接收端邮件服务器的 SMTP 服务器进程发起建立 TCP 连接。④ TCP 连接建立后，SMTP 客户进程开始向远程 SMTP 服务器进程发送邮件。当所有待发送邮件发完后，SMTP 就关闭所建立的 TCP 连接。⑤ 运行在接收端邮件服务器中的 SMTP 服务器进程收到邮件后，将邮件放入收信人的用户邮箱，等待收信人在方便时进行读取。⑥ 收信人打算收信时，调用用户代理，使用 POP3（或 IMAP）协议将自己的邮件从接收端邮件服务器的用户邮箱中取回（如果邮箱中有来信的话）。2.电子邮件格式与MIME电子邮件格式整体结构：电子邮件由信封和内容两大部分组成，其中内容又分为首部和主体。首部格式：由 RFC 822 规定，包含若干关键字段，每个字段由 “关键字：字段值” 组成。必需字段：To：收件人邮箱地址，格式为用户名@邮件服务器域名（如abc@cskaoyan.com），保证地址全网唯一。From：发件人邮箱地址，通常由邮件系统自动填入。可选字段：Subject：邮件主题，概括邮件主要内容。分隔规则：首部与主体之间用一个空行分隔。多用途网际邮件扩充（MIME）产生背景：SMTP 协议仅能传送有限长度的 ASCII 码邮件，无法传输中文、二进制文件等非 ASCII 内容，因此提出 MIME 作为补充。核心作用：MIME 不改动或取代 SMTP，而是在其基础上增加了邮件主体的结构，定义了非 ASCII 码的编码规则，使其能在现有邮件系统下传输。主要内容：新增 5 个邮件首部字段，包括 MIME 版本、内容描述、内容标识、传送编码和内容类型。标准化了多媒体电子邮件的内容格式。定义了传送编码，可将任意内容格式转换，避免被邮件系统误改。3.SMTP和POP3SMTP（简单邮件传输协议）SMTP 是一种可靠的电子邮件传输协议，采用客户 / 服务器模式，基于 TCP 连接，使用熟知端口 25。其通信分为三个阶段：(1) 连接建立发送方邮件服务器的 SMTP 客户定期扫描邮件缓存，发现邮件后，与接收方邮件服务器的 SMTP 服务器直接建立 TCP 连接。接收方服务器返回 220 Service ready 表示就绪。SMTP 客户发送 HELO 命令，附上发送方主机名，完成握手。特点：SMTP 不使用中间邮件服务器，TCP 连接直接在发送方和接收方服务器之间建立。(2) 邮件传送MAIL 命令：开始传送，指明发件人地址（如 MAIL FROM: <hoopdog@hust.edu.cn>），服务器回复 250 OK 表示就绪。RCPT 命令：指明收件人地址（如 RCPT TO: <收件人地址>），用于提前确认地址有效性，避免浪费资源。DATA 命令：开始传输邮件内容，以 <CRLF>.<CRLF> 标识内容结束。(3) 连接释放邮件发送完毕后，SMTP 客户发送 QUIT 命令。服务器返回 221 表示服务关闭，同意释放 TCP 连接。POP3 和 IMAP（邮件读取协议）(1) POP3（邮局协议第 3 版）采用 “拉（Pull）” 方式，用户代理向邮件服务器发出请求，取回邮件。基于 TCP 连接，使用熟知端口 110。两种工作方式：下载并保留：邮件读取后仍保存在服务器，用户可再次读取。下载并删除：邮件一旦被读取，即从服务器删除，无法再次读取。(2) IMAP（因特网报文存取协议）比 POP3 更复杂，提供了创建文件夹、移动邮件、远程查询邮件头等高级功能。服务器维护会话状态信息，允许用户只获取报文的部分内容（如首部），适合低带宽环境。(3) 基于万维网的电子邮件如 Hotmail、Gmail 等，用户通过浏览器访问。特点：用户与邮件服务器之间使用 HTTP 协议，而邮件服务器之间的传输仍使用 SMTP。（五）万维网（WWW）1.WWW 的概念与组成结构定义：万维网是一个分布式、联机式的信息存储空间，其中的有用事物被称为 “资源”，并由 统一资源定位符（URL） 唯一标识。资源通过 超文本传输协议（HTTP） 传送，用户通过点击超链接即可获取资源。通过超链接实现从一个站点到另一个站点的便捷访问，支持主动按需获取信息。万维网的三大核心标准(1) 统一资源定位符（URL）：负责标识万维网上的各种文档，使每个文档在整个万维网内具有唯一的标识符。一般形式：<协议>://<主机>:<端口>/<路径>协议：获取文档的方式，如 http、ftp 等。主机：存放资源的主机域名或 IP 地址。端口和路径：有时可省略，URL 不区分大小写。(2) 超文本传输协议（HTTP）：应用层协议，使用 TCP 连接进行可靠传输，是客户端和服务器交互必须遵守的协议。(3) 超文本标记语言（HTML）：一种文档结构标记语言，使用约定标记对页面上的文字、声音、图像、视频等信息及格式进行描述，方便超链接跳转和页面显示。万维网的工作方式——客户 / 服务器模式客户端：用户使用的浏览器（如 Chrome、Edge）。服务器：存放万维网文档的主机，即万维网服务器。工作流程：用户通过浏览器（指定 URL）与 Web 服务器建立连接，并发送浏览请求。服务器将 URL 转换为文件路径，返回请求的万维网文档。通信完成，关闭连接。万维网的地位：万维网是无数网络站点和网页的集合，构成了因特网最主要的部分（因特网还包括电子邮件、Usenet 和新闻组等其他服务）。2.超文本传输协议（HTTP）定义：HTTP 是面向事务的应用层协议，定义了浏览器（客户端）与万维网服务器之间的请求 / 响应格式与规则，是可靠交换多媒体文件的基础。HTTP 操作过程：用户单击鼠标后所发生的事件按顺序如下（以访问清华大学的网站为例）：1)浏览器分析链接指向页面的URL (http://www.tsinghua.edu.cn/chn/index.htm)。2)浏览器向 DNS 请求解析www.tsinghua.edu.cn的IP地址。3)域名系统 DNS 解析出清华大学服务器的IP地址。4)浏览器与该服务器建立 TCP 连接（默认端口号为80）。5)浏览器发出 HTTP 请求：GET /chn/index.htm。6)服务器通过 HTTP 响应把文件index.htm发送给浏览器。7)释放 TCP 连接，8)浏览器解释文件index.htm，并将 Web 页显示给用户。HTTP 核心特点：(1) 传输层依赖：使用 TCP 保证可靠传输，但 HTTP 本身是无连接的，通信前无需建立 HTTP 连接。(2) 无状态性：服务器不记忆客户端的历史访问，简化了服务器设计。实际应用中通过 Cookie + 数据库跟踪用户活动。Cookie 原理：服务器为用户生成唯一识别码，通过 Set-cookie 首部写入浏览器；后续请求时，浏览器在 Cookie 首部带回识别码，服务器据此查询用户活动记录。(3) 连接方式：非持久连接：每个网页元素（如图片、Flash）都需单独建立 TCP 连接，开销大，每个对象导致 2×RTT 延迟。持久连接（HTTP/1.1 支持）：连接在响应后保持，可复用传输后续请求。非流水线方式：客户端需等待前一个响应后才能发送下一个请求，连接易空闲。流水线方式（默认）：客户端可连续发送多个请求，所有对象共享 1 个 RTT 延迟，减少空闲时间，提升效率。HTTP 报文结构：HTTP 是面向文本的协议，报文字段均为 ASCII 码串，分为请求报文和响应报文两类，均由三部分组成：组成部分请求报文响应报文开始行请求行：方法 + URL + 版本状态行：版本 + 状态码 + 短语首部行说明浏览器、服务器或报文主体信息说明服务器、响应内容等信息实体主体通常不用部分响应报文包含返回数据常用请求方法：GET：请求读取由 URL 标识的资源。HEAD：请求读取资源的首部。POST：向服务器添加信息（如提交表单）。CONNECT：用于代理服务器。常见应用层协议小结FTP 数据连接：TCP，端口 20FTP 控制连接：TCP，端口 21TELNET：TCP，端口 23SMTP：TCP，端口 25DNS：UDP，端口 53TFTP：UDP，端口 69HTTP：TCP，端口 80POP3：TCP，端口 110SNMP：UDP，端口 161
「计算机网络」预习：（一）计算机网络体系结构
计算机网络1、计算机网络体系结构2、物理层3、数据链路层4、网络层5、传输层6、应用层章节建议天数难度系数核心任务1. 体系结构1天⭐⭐⭐定基调：搞懂分层、服务、协议、SAP、原语2. 物理层1天⭐⭐重概念：信号、码元、速率、信道复用技术（不深究通信数学）3. 数据链路层2天⭐⭐⭐重逻辑：封装成帧、差错检测、流量控制、MAC协议（特别是以太网）4. 网络层3天⭐⭐⭐⭐⭐最难啃：IP协议、子网划分、路由算法（RIP/OSPF）、ARP协议5. 传输层2.5天⭐⭐⭐⭐最核心：TCP/UDP、三次握手/四次挥手、流量控制/拥塞控制6. 应用层1.5天⭐⭐轻应用：HTTP、DNS、FTP、SMTP（结合抓包工具体验最佳）一、计算机网络体系结构（一）计算机网络概述1.概念：3种观点，由低级到高级广义观点：强调物理层面的网络连通。——计算机网络发展低级阶段计算机网络是“用通信线路（如光纤、网线、微波）将分布在不同地理位置、具有独立功能的多台计算机系统（以及终端、外设）连接起来，以功能完善的网络软件（网络协议、操作系统等）实现数据通信的系统”资源共享观点：强调共享资源（软件、硬件、数据）——当前计算机网络的基本特征“以相互共享资源（硬件、软件、数据）为目的而连接起来的、具有各自独立功能的计算机系统的集合”用户透明性观点：分布式系统，强调服务与抽象——计算机网络未来发展理想状态“存在一个能为用户自动管理资源的网络操作系统，它能够调用用户所需要的资源，而整个网络就像一个虚拟的巨型计算机系统，对用户是透明的”比如你使用百度网盘时，你不需要关心你的文件存在哪个机房的哪块硬盘上，系统自动帮你完成了这一切，这即是“透明性”的体现。2.组成：3种角度从组成部分角度来看：计算机网络由硬件、软件、协议三大部分组成。从工作方式角度来看：计算机网络分为边缘部分和核心部分。从功能组成角度来看：计算机网络由通信子网和资源子网组成。3.功能：5大功能数据通信资源共享分布式处理提高可靠性负载均衡4.分类：6种角度按分布范围分类(1) 广域网(远程网)（WAN）(2) 城域网（MAN）(3) 局域网 （LAN）(4) 个人局域网（PAN）注：若中央处理器之间的距离非常近(如<=1m)，一般称为多处理器系统，而不称为计算机网络。按传输技术分类(1) 广播式网络(2) 点对点网络按拓扑结构分类(1) 总线形(2) 星形(3) 环形(4) 网状按使用者分类(1) 公用网(2) 专用网按交换技术分类(1) 电路交换网络(2) 报文交换网络(3) 分组交换网络按传输介质分类传输介质可以分为有线和无线两大类，因此网络可以分为：(1) 有线网络(2) 无线网络5.性能指标：7个指标带宽：最高数据传输速率，单位：比特/秒。时延：数据从网络的一段传送到另一端的总耗时。包括4部分：(1) 发送时延（传输时延）：发送时延 = 分组长度/信道宽度(2) 传播时延：传播时延 = 信道长度/电磁波在信道上的传播速率(3) 处理时延(4) 排队时延：在输入队列中排队、在输出队列中排队总时延计算：总时延 = (1) + (2) + (3) + (4)注1：计算时，(3)(4)一般忽略不计。注2：高速链路减少了发送时延而非传播时延。时延带宽积：链路管道可以容纳的比特数量。时延带宽积 = 传播时延 × 信道带宽往返时延：从发送端发出一个短分组，到收到确认的总时延。吞吐量：单位时间内通过某个网络的数据量。速率：数据传输速率。最高传输速率称为带宽。信道利用率：信道有数据通过的时间所占总时间的比例。信道利用率 = 有数据通过的时间/总时间（二）计算机网络体系结构与参考模型1.计算机网络分层结构不同机器上的同一层称为对等层，同一层的实体称为对等实体。第n层使用第n-1层的服务，向第n+1层提供服务，称为服务提供者。最高层向用户提供服务。下一层提供服务的实现细节对上一层透明；两台主机通信时，对等层在逻辑上有一条直接信道，表现为不经过下层就把信息传送到对方。2.计算机网络协议、接口、服务协议：网络协议只存在于对等层。协议由语法、语义、同步三部分组成。一个完整的协议通常具有线路管理、差错控制、数据转换等功能。接口：同一结点内，相邻两层之间交换信息的连接点。在典型的接口上，相邻两层的实体通过SAP（服务访问点）进行交互。服务：下层为上层提供的功能调用。上层使用下层提供的服务时，必须交换一些命令，在OSI参考模型中称为服务原语。OSI将服务原语分为4类：请求、指示、响应、证实。服务可以按照3种角度分类：(1) 面向连接服务与无连接服务(2) 可靠服务和不可靠服务(3) 有应答服务和无应答服务3.ISO/OSI参考模型和TCP/IP模型OSI参考模型ISO提出的网络体系结构模型，称为开放系统互连参考模型（OSI/RM），简称OSI参考模型。OSI参考模型有7层，自下而上依次为：物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。其中，低三层统称为通信子网，高三层统称为资源子网。(1) 物理层(2) 数据链路层(3) 网络层(4) 传输层(5) 会话层(6) 表示层(7) 应用层TCP/IP模型TCP/IP模型从低到高依次为网络接口层（对应物理层和数据链路层）、网际层、传输层、应用层（对应会话层、表示层、应用层）。比较相同点(1) 二者都采取分层的体系结构，将庞大且复杂的问题划分为若干较容易处理的、范围较小的问题，而且分层的功能也大体相似。(2) 二者都是基于独立的协议栈的概念。(3) 二者都可以解决异构网络的互连，实现世界上不同厂家生产的计算机之间的通信。不同点(1) OSI 参考模型精确地定义了三个主要概念：服务、协议和接口；TCP/IP 模型在这三个概念上却没有明确区分。(2) OSI 参考模型：先有模型，后有协议，通用性强，但因设计者经验不足，功能分层不够合理。TCP/IP 模型：先有协议，后有模型，协议与模型匹配度高，但通用性差，仅适用于自身协议栈。(3) TCP/IP 模型在设计之初就考虑到了多种异构网的互连问题，并将网际协议（IP）作为一个单独的重要层次。OSI 参考模型最初只考虑到用一种标准的公用数据网将各种不同的系统互连。OSI 参考模型认识到 IP 的重要性后，只好在网络层中划分出一个子层来完成类似于 TCP/IP 模型中的 IP 的功能。(4) OSI 参考模型在网络层支持无连接和面向连接的通信，但在传输层仅有面向连接的通信。TCP/IP 模型认为可靠性是端到端的问题，因此它在网际层仅有一种无连接的通信模式，但传输层支持无连接和面向连接两种模式。无论是 OSI 参考模型还是 TCP/IP 模型，都不是完美的，对二者的讨论和批评都很多。学习计算机网络时，我们往往采取折中的办法，采用只有 5 层协议的体系结构，即物理层、数据链路层、网络层、传输层和应用层。
Golang入门语法（一）1.变量声明var a int = 10 // 如果不指定值，默认赋值为 0 var b = 10 // 自动推断类型 c : = 10 // 只能在func函数体内实现多变量声明var a, b int var c, d int = 1, 2 var e, f = 100, "hello" // 可以是不同类型 var ( g int h bool ) // 这种分解写法，一般用于声明全局变量2.常量const LENGTH int = 10 const WIDTH int = 5枚举const ( Unknown = 0 Female = 1 Male = 2 )常量表达式中，函数必须是内置函数const ( a = "abc" b = len(a) c = unsafe.Sizeof(a) )unsafe.Sizeof(a)输出的结果是16。字符串类型在 go 里是个结构, 包含指向底层数组的指针和长度,这两部分每部分都是 8 个字节，所以字符串类型大小为 16 个字节。iota自增长：简化了常量用于增长数字的定义const ( CategoryBooks = iota // 0 CategoryHealth // 1 CategoryClothing // 2 )iota 和表达式：type Allergen int const ( IgEggs Allergen = 1 << iota // 1 << 0 which is 00000001 IgChocolate // 1 << 1 which is 00000010 IgNuts // 1 << 2 which is 00000100 IgStrawberries // 1 << 3 which is 00001000 IgShellfish // 1 << 4 which is 00010000 )type ByteSize float64 const ( _ = iota // ignore first value by assigning to blank identifier KB ByteSize = 1 << (10 * iota) // 1 << (10*1) MB // 1 << (10*2) GB // 1 << (10*3) TB // 1 << (10*4) PB // 1 << (10*5) EB // 1 << (10*6) ZB // 1 << (10*7) YB // 1 << (10*8) )当把两个常量定义在一行时，iota 在下一行增长，而不是立即取得它的引用。const ( Apple, Banana = iota + 1, iota + 2 Cherimoya, Durian Elderberry, Fig ) // Apple: 1 // Banana: 2 // Cherimoya: 2 // Durian: 3 // Elderberry: 3 // Fig: 43.函数Go 函数可以返回多个值func swap(x, y string) (string, string) { return y, x }init、import、package、main：Go 里面有两个保留的函数：init 函数（能够应用于所有的package）和main函数（只能应用于package main）。这两个函数在定义时不能有任何的参数和返回值；go程序会自动调用init()和main()。虽然一个package里面可以写任意多个init函数，为了可维护性，建议用户在一个package中，每个文件只写一个init函数。每个package中的init函数都是可选的，但package main必须包含一个main函数。指针指针引用写法/* 定义交换值函数*/ func swap(x *int, y *int) { var temp int temp = *x /* 保持 x 地址上的值 */ *x = *y /* 将 y 值赋给 x */ *y = temp /* 将 temp 值赋给 y */ }调用：swap(&a, &b)4.defer 语句defer语句被用于预定对一个函数的调用。可以把这类被defer语句调用的函数称为延迟函数。如果一个函数中有多个defer语句，它们会以LIFO（后进先出）的顺序执行。func Demo() { defer fmt.Println("1") defer fmt.Println("2") defer fmt.Println("3") defer fmt.Println("4") } func main() { Demo() } // output: // 4 // 3 // 2 // 1recover错误拦截运行时panic异常一旦被引发就会导致程序崩溃。Go语言提供了专用于“拦截”运行时panic的内建函数“recover”。它可以使当前的程序从运行时panic的状态中恢复并重新获得流程控制权。recover只有在defer调用的函数中有效。package main import "fmt" func Demo(i int) { //定义10个元素的数组 var arr [10]int //错误拦截要在产生错误前设置 defer func() { //设置recover拦截错误信息 err := recover() //产生panic异常 打印错误信息 if err != nil { fmt.Println(err) } }() //根据函数参数为数组元素赋值 //如果i的值超过数组下标 会报错误：数组下标越界 arr[i] = 10 } func main() { Demo(10) //产生错误后 程序继续 fmt.Println("程序继续执行...") }
CSAPP：第3章 程序的机器级表示 3.1 历史观点 & 3.2 程序编码 & 3.3 数据格式
第3章 程序的机器级表示IA32 是 x86-64 的 32 位前身。3.1 历史观点摩尔定律：集成电路上可容纳的晶体管数量，大约每经过26个月便会翻一番。3.2 程序编码gcc命令调用一整套的程序，将源代码转化成可执行代码。C预处理器扩展源代码，插入所有用#include命令指定的文件，并扩展所有用#define声明指定的宏；编译器产生源文件的汇编代码（.s文件）；汇编器将汇编代码转化成二进制目标代码（.o文件）；链接器将目标代码与实现库函数的代码合并，产生最终的可执行代码文件（.exe文件）。1.机器级代码两种抽象指令集架构（ISA），将程序的行为描述成好像每条指令都是按顺序执行的。虚拟地址，认为程序使用的内存模型是一个非常大的字节数组。x86-64 的机器代码和原始的 C 代码差别非常大。一些通常对 C 语言程序员隐藏的处理器状态都是可见的：程序计数器（PC。在x86-64中用 %rip表示）给出将要执行的下一条指令在内存中的地址。整数寄存器文件包含16个命名的位置，分别存储64位的值。这些寄存器可以存储地址或整数数据。有的寄存器被用来记录某些重要的程序状态，而其他的寄存器用来保存临时数据，例如过程的参数和局部变量，以及函数的返回值。条件码寄存器保存着最近执行的算术或逻辑指令的状态信息。它们用来实现控制或数据流中的条件变化，如实现if和while语句。一组向量寄存器可以存放一个或多个整数或浮点数值。C语言中的聚合数据类型，例如数组和结构，在机器代码中用一组连续的字节来表示。即使是对标量数据类型，汇编代码也不区分有符号或无符号整数，不区分各种类型的指针，甚至于不区分指针和整数。程序内存包含：程序的可执行机器代码，操作系统需要的一些信息，用来管理过程调 用和返回的运行时栈，以及用户分配的内存块（比如说用 malloc库函数分配的）。2.代码示例long mult2(long, long); void multstore(long x, long y, long* dest) { long t = mult2(x, y); *dest = t; }编译：linux> gcc -Og -S mstore.c汇编：linux> gcc -Og -c mstore.c反汇编：linux> objdump -d mstore.o下面是汇编代码：multstore: pushq %rbx movq %rdx, %rbx call mult2 movq %rax, (%rbx) popq %rbx ret3.关于格式的注解所有以.开头的行都是指导汇编器和链接器工作的伪指令。我们通常可以忽略这些行。对千一些应用程序，程序员必须用汇编代码来访问机器的低级特性。一种方法是用汇编代码编写整个函数，在链接阶段把它们和 C 函数组合起来。另一种方法是利用 GCC 的支持，直接在C程序中嵌入汇编代码。3.3 数据格式Intel 用术语”字(word)" 表示 16 位数据类型。因此，称 32 位数为“双字(double words)”，称 64 位数为“四字(quad words)”。大多数GCC生成的汇编代码指令都有一个字符的后缀，表明操作数的大 小。例如，数据传送指令有四个变种： movb(传送字节）、 movw(传送字）、 movl(传送双 字）和 movq(传送四字）。后缀 'l'用来表示双字，因为 32 位数被看成是“长字(long word)" 。汇编代码也使用后缀'l'来表示 4 字节整数和 8 字节双精度浮点数。这不会产生歧义，因为浮点数使用的是一组完全不同的指令和寄存器。
2.4 浮点数（表示与运算）1.二进制小数定点表示法二进制小数点向左移动一位相当于这个数被 2 除；类似，二进制小数点向右移动一位相当于将该数乘 2。我们仅考虑有限长度的编码，那么十进制表示法不能准确地表达像1/3这样的数；类似的，小数的二进制表示法只能表示那些能够被写成x * 2^y的数，其他值只能够被近似的地表示。2.IEEE浮点表示基本表示方法IEEE浮点标准用V=(-1)^s M 2^E的形式来表示一个数：符号s，尾数M，阶码E。将二进制浮点数的位表示划分为三个字段，分别对这些值进行编码：一个单独的符号位 s 直接编码符号s；k 位的阶码字段 exp 编码阶码 E；n 位小数字段 frac 编码尾数 M，但是编码出来的值也依赖于阶码字段的值是否等于0。单精度与双精度在单精度浮点格式（float）中，s、exp、frac字段分别为1位，8位，23位；在双精度浮点格式（double）中，s、exp、frac字段分别为1位，11位，52位。单精度浮点格式为32位，双精度浮点格式为64位。分类给定位表示，根据exp的值， 被编码的值可以分成三种不同的情况（最后一种情况有两个变种），下面是单精度格式的情况。规格化的值exp的位既不全为0，也不全为1。偏置值：Bias。这是一个固定的偏移量，取决于浮点数格式。单精度（32位）：指数字段占 8位，能表示 0 到 255 共256个数。Bias = 2^(8-1) - 1 = 127。双精度（64位）：指数字段占 11位，Bias = 2^(11-1) - 1 = 1023。对于规格化数：阶码 e 的取值范围是：1 到 254。代入公式 E = e - Bias：当 e = 1（最小值）：E_min = 1 - 127 = -126当 e = 254（最大值）：E_max = 254 - 127 = 127所以，规格化数的真实指数范围是：-126 ≤ E ≤ 127编码（存储时）：e = E + Bias （将真实指数 E “偏置”为正数 e）解码（计算时）：E = e - Bias （将存储的阶码 e “去偏置”得到真实指数 E）小数字段 frac 被解释为描述小数值 f, 其中 0<=f<1，二进制小数点在最高有效位左边，尾数定义为 M = 1 + f。（隐含的以1开头的表示）我们总是能够调整阶码 E，使得尾数 M 在范围 1<=M<2 之中，我们第一位总是等于1，那么我们只需表示它的小数部分。非规格化的值当阶码域全为0时，所表示的数是非规格化形式。阶码值是E=1-Bias（而不是0-Bias），尾数M=f（而不是1+f）。两个用意：表示0。若使用规格化数，必须总是使M>=1，无法表示0；使用非规格化数，s=M=f=0时，得到+0.0，s=1且M=f=0时，得到-0.0。表示非常接近于 0.0 的数。它们提供了一种属性，称为逐渐溢出(gradual underflow)，其中，可能的数值分布均匀地接近于 0.0。特殊值阶码全为1时，表示特殊值。小数域全为0时，表示无穷：s=0表示+∞，s=1表示-∞。当把两个非常大的数相乘或者除以0时，无穷能够表示溢出的结果。小数域为非0时，表示NaN：例如计算根号-1等，或者表示未初始化数据。3.数字示例可以观察到，那些可表示的数并不是均匀分布的——越靠近原点处它们越稠密。4.舍入向零舍入：把正数向下舍入，负数向0舍入，得到|x^|<=|x|。向下舍入：把正数和负数都向下舍入，得到x-<=x。向上舍入：把正数和负数都向上舍入，得到x+>=x。向偶数舍入：向偶数舍入在大多数现实情况中避免了统一向一个方向舍入带来的统计偏差，在 50% 的时间里，它将向上舍入，而在 50% 的时间里，它将向下舍入。假设我们有4位精度（1位符号，3位尾数），要舍入：要存储的二进制数：1.1011（精确值）可表示的最近值：1.110 和 1.101计算距离：到 1.110 = 1.1011 - 1.101 = 0.0001到 1.110 = 1.110 - 1.1011 = 0.0001距离相等！是平局！应用向偶数规则：1.101 的二进制最后一位是 1（奇数）1.110 的二进制最后一位是 0（偶数）选择 1.110（因为它的最低位是偶数）5.浮点运算当参数中有一个是特殊值（如-0、-∞或 NaN)时， IEEE标准定义了一些使之更合理的规则。例如，定义 1/-0将产生-∞, 而定义 1/+0会产生+∞；+∞-∞=NaN)；NaN+x=NaN。整数（包括无符号和补码）加法形成了阿贝尔群。实数上的加法也形成了阿贝尔群，但是我们必须考虑舍入对这些属性的影响。浮点加法不具有结合性，这是缺少的最重要的群属性。另外，浮点乘法在加法上不具备分配性。eg. 单精度浮点情况下，表达式(1e20*1e20)*1e-20求值为+∞，而1e20*(1e20*1e-20)将得出1e20。6.C语言中的浮点数因为C语言标准不要求机器使用 IEEE浮点，所以没有标准的方法来改变舍入方式或者得到诸如-0、+∞、-∞或者 NaN之类的特殊值。强制类型转换：从 int 转换成 float, 数字不会溢出，但是可能被舍入。从 double 转换成 float,因为范围要小一些，所以值可能溢出成+∞或-∞。另 外，由于精确度较小，它还可能被舍入。float 或者 double 转换成 int,值将会向零舍入。例如，1.999将被转换成 1，而 -1.999 将被转换成 -1。进一步来说，值可能会溢出。整数不确定值：与 Intel 兼容的微处理器指定位模式[10…00](字长为 w 时的 TMinw) 为整数不确定(integer indefinite)值。一个从浮点数到整数的转换，如果不能为该浮点数找到一个合理的整数近似值，就会产生这样一个值。因此，表达式 (int)+1e10 会得到-21483648, 即从一个正值变成了一个负值。2.5 小结（与习题）64 位程序的优势是可以突破 32 位程序具有的 4GB 地址限制。