File Transfer Protocol
FTP 解决什么问题将一台计算机中的文件通过网络传送到另一台计算机,是基本的网络应用需求。文件传送协议(File Transfer Protocol,FTP)是因特网上使用最广泛的文件传送协议。 FTP 提供交互式访问,允许客户指明文件类型与格式(如 ASCII 码或二进制),并允许文件具有存取权限(访问文件的用户必须经过授权并输入有效口令)。FTP 屏蔽了各计算机系统的细节,因而适用于在异构网络中任意计算机之间传送文件。 FTP 采用客户/服务器方式。FTP 客户计算机可将各种类型的文件上传到 FTP 服务器,也可以从 FTP 服务器下载文件。 FTP 的基本工作原理FTP 与其他 C/S 协议最大的不同是:它使用两条 TCP 连接。 控制连接 数据连接 服务器端口 TCP 21 主动模式通常使用 TCP 20;被动模式使用服务器临时端口 生命周期 整个 FTP 会话期间保持打开 每次文件传送时临时建立,传送完毕后释放 传送内容 FTP 命令(如...
World Wide Web
万维网是什么万维网(World Wide Web,WWW)并非某种特殊的计算机网络——它是一个大规模的、联机式的信息储藏所,是运行在因特网上的一个分布式应用。万维网利用网页之间的超链接,将不同网站的网页链接成一张逻辑上的信息网。 万维网的核心思想很简单:用户点击链接,浏览器向对应服务器请求文档,服务器将文档返回给浏览器,浏览器渲染展示。背后的关键协议就是 HTTP(超文本传输协议)。 URL:统一资源定位符万维网上的每一个文档(网页、图片、视频等)在整个因特网范围内都有唯一的标识符——统一资源定位符 URL。 URL 的一般格式: $$\text{<协议>://<主机>:<端口>/<路径>}$$ 组成部分 说明 示例 协议 访问资源所用的应用层协议 http、https、ftp 主机 存放资源的服务器的域名或 IP 地址 www.hnust.edu.cn 端口 服务器监听的端口号(可省略,使用协议默认端口) HTTP 默认 80,HTTPS 默认...
OS Boot
操作系统引导解决的问题是:按下电源后,CPU 如何从一无所有的硬件初始状态,一步步走到操作系统就绪、用户可以开始使用? 核心矛盾是一个自举问题:要加载操作系统,需要磁盘读写能力和文件系统解析能力;但这些能力本身就是操作系统才提供的。开机时内存是空的,操作系统还没运行——谁来加载操作系统? 答案是一段极小的固化程序充当起点。它只做最基础的事:从磁盘的固定位置找到下一段稍大的程序,把控制权交过去。每一段程序再找到更大、更完整的下一段,像接力一样逐级放大,直到完整的内核被装入内存并接管整台机器。 引导块引导程序的存放位置是约定好的——在磁盘的某个固定位置。这个位置称为引导块,也叫启动块。 为什么必须是固定位置 开机早期没有操作系统,ROM 中的小程序不能依赖文件系统去”按路径查找”下一段程序。它只能用最简单的规则——比如”去磁盘的第一个扇区”——找到引导程序。所以启动块、MBR、活动分区引导记录等位置都需要硬件或固件级别的约定,不能随意变动。 拥有引导块的磁盘称为启动磁盘或系统磁盘。 BIOS 引导链 ↻ + − 典型的 BIOS 引导过程: CPU 上电复位...
OS Kernel
操作系统内核内核是操作系统中最基本、最核心的部分。实现内核功能的程序称为内核程序,运行在内核态。 内核态与用户态CPU 至少提供两种执行状态: 状态 权限 运行内容 内核态 可执行所有指令,访问所有内存和硬件 内核程序 用户态 只能执行非特权指令,访问受限地址空间 普通应用程序 区分两种状态是为了保护。如果任意程序都能直接操作硬件或修改内核数据结构,一个用户程序的 bug 就可能破坏整个系统。CPU 在硬件层面强制执行这一隔离——用户态程序执行特权指令会触发异常,CPU 把控制权交还给内核处理。 内核的典型功能 功能 说明 时钟管理 利用时钟中断实现计时、进程调度 中断处理 响应外部中断和异常,转入对应处理程序 原语 完成不可被中断打断的关键操作 进程管理 进程创建、撤销、调度、切换 存储器管理 内存分配、地址转换、虚拟存储 设备管理 I/O...
OS VMM
虚拟机虚拟机是用软件模拟出来的计算机。它在一台物理机器上创建多个彼此隔离的执行环境,每个环境可以独立运行一个操作系统,就像独占一台真实机器一样。 VMM 负责管理这些虚拟机。VMM 也叫 Hypervisor。 虚拟化的典型用途: 服务器整合:多台虚拟机跑在同一台物理服务器上,提高硬件利用率、降低运维成本。 隔离测试:在一台机器上同时运行多个操作系统实例,彼此互不影响,适合安全研究和兼容性测试。 兼容旧系统:在新硬件上运行为旧操作系统编写的程序,无需保留老机器。 VMM 的两种类型 类型 位置 特点 第一类 VMM 直接运行在硬件上,本身就是一个精简的操作系统 管理虚拟机更直接,性能较高,常用于数据中心(如 VMware ESXi、KVM) 第二类 VMM 运行在宿主操作系统上,作为一个用户态或内核态程序 安装使用方便,常见于桌面虚拟化(如 VirtualBox、VMware Workstation) 第一类 VMM 直接面对硬件,不需要经过宿主 OS 中转,因此指令模拟和资源调度的路径更短。第二类 VMM 借助宿主 OS...
TCP Congestion Control
拥塞控制要解决的问题拥塞是网络内部的问题——路由器缓存、链路带宽、处理能力等资源不足以承载当前的通信量,导致队列溢出和大量丢包。 拥塞控制与流量控制的目标不同: 维度 流量控制 拥塞控制 要解决的问题 接收方来不及处理 网络来不及转发 范围 点对点 全局 反馈来源 接收方直接通告 rwnd 发送方通过超时、重复 ACK 等推断 拥塞控制的核心思想:试探着增加发送窗口,丢包了就减小,但不应一次砍过头。 开环控制与闭环控制从控制论的角度,拥塞控制分为两类: 开环控制 闭环控制 思路 设计阶段就保证问题不发生 运行时根据反馈动态调整 适用条件 流量特征可准确规定、性能要求可事先获得 流量特征不可准确描述、网络不提供资源预留 因特网选择 — ✅ 因特网采用闭环控制 闭环控制包含三个环节:监测拥塞(何时何地发生)→ 传递拥塞信息(传送到能采取行动的地方)→...
TCP Flow Control
TCP 流量控制TCP 流量控制的目标是:防止发送方发送太快,导致接收方接收缓存溢出而丢包。它不是解决网络拥塞,而是解决接收方的处理能力瓶颈——应用程序一时来不及从接收缓存中取走数据。 流量控制与TCP 可靠传输以及滑动窗口机制紧密配合,但解决的问题不同。可靠传输关注确认、重传和按序交付;流量控制关注接收方的缓存水位。 rwnd:接收窗口通告流量控制的基本方法是:接收方通过 TCP 首部的窗口字段,把自己接收缓存的可用空间大小通告给发送方。 这个值记为 rwnd(receiver window)。 发送方收到报文段后,从中取出确认号 ack 和窗口值 rwnd,结合拥塞窗口 cwnd 构造发送窗口: $$\text{swnd} = \min(\text{rwnd}, \text{cwnd})$$ 在仅讨论流量控制时,通常暂不考虑 cwnd,令 $\text{swnd} = \text{rwnd}$。 窗口字段为 16 bit,所以 rwnd 最大为 $2^{16}-1 = 65535$...
TCP Reliable Transmission
TCP 可靠传输TCP 可靠传输的目标是:无差错、无丢失、无重复、按序交付。为实现这一目标,TCP 采用基于字节序号的滑动窗口、累积确认、超时重传和选择确认等机制。 字节编号与累积确认字节流编号TCP 面向字节流,对发送缓存中的每一个字节分配一个 32 bit 序号。序号字段 seq 的值是本报文段数据载荷第一个字节的序号。 确认号 ACK_n 是累积确认:它表明序号 $n-1$ 及之前的所有字节都已正确按序收到,接收方期望下一个收到的是序号 $n$ 的字节。只有 ACK=1 时确认号字段才有效。 上图展示了 TCP 可靠传输的基本单位:发送方按字节序号维护发送窗口,接收方用累积确认号说明“下一个期望字节”,窗口由确认号和接收窗口共同推动。 发送窗口与三个指针TCP 的发送窗口不是固定大小,它取决于接收方通告的接收窗口 rwnd 和发送方估算的拥塞窗口 cwnd: $$\text{swnd} = \min(\text{rwnd}, \text{cwnd})$$ 为了方便描述发送窗口内各字节的状态,TCP...
TCP Connection Management
TCP 连接管理TCP 是面向连接的协议。通信双方传送数据前要建立连接,数据传输结束后要释放连接。 每个连接通常需要记录: 本端和对端的 IP 地址、端口号。 当前连接状态。 当前发送序号和接收序号。 发送缓存、接收缓存和重传队列。 发送窗口、接收窗口和相关计时器。 这些信息常放在传输控制块 TCB 中。 TCP 状态TCP 状态名用于描述连接处于建立、传输、释放过程中的哪个阶段。 常见状态含义: 状态 含义 LISTEN 服务器被动打开,等待连接请求 SYN-SENT 客户端已发送 SYN,等待服务器确认 SYN-RCVD 服务器已收到 SYN 并发送 SYN+ACK ESTABLISHED 连接已建立,可双向传输数据 FIN-WAIT-1 主动关闭方已发送 FIN,等待确认 FIN-WAIT-2 主动关闭方的 FIN 已被确认,等待对方 FIN CLOSE-WAIT 被动关闭方收到 FIN,等待本地应用关闭 LAST-ACK 被动关闭方已发送 FIN,等待最后 ACK TIME-WAIT 主动关闭方等待 2MSL...
TCP Segment
TCP 报文段TCP 为应用层提供面向连接、可靠、全双工的字节流服务。应用进程交给 TCP 的数据会先进入发送缓存,TCP 再按当前发送策略取出一段字节,加上 TCP 首部,形成 TCP 报文段。 TCP 报文段由两部分构成: TCP 首部:承载端口、序号、确认、窗口、标志位、检验和、选项等控制信息。 数据载荷:从 TCP 字节流中取出的若干字节。 TCP 的连接管理、可靠传输、流量控制和拥塞控制都依赖首部字段。先把首部字段读懂,才能读懂 TCP 的过程。 首部格式TCP 首部最小 20 B,最大 60 B。前 20 B 是固定首部,后面最多 40 B 是选项和填充。 字段 长度 含义 源端口、目的端口 各 16 bit 标识通信双方应用进程 序号 seq 32 bit 本报文段数据载荷第一个字节的序号 确认号 ack 32 bit 期望收到对方下一个字节的序号 数据偏移 4 bit TCP 首部长度,单位是 4 B 保留 6 bit 保留,通常置 0 标志位 6 bit URG ACK PSH RST SYN FIN 窗口 16...