From b8d2271cb408ed74680571051f2daf47d0066173 Mon Sep 17 00:00:00 2001 From: NH5 Date: Sun, 18 Jan 2026 22:47:04 +0800 Subject: [PATCH] Chapter 6 of Computer Network --- Computer-Network/06-applications.typ | 260 +++++++++++++++++++++++++++ Computer-Network/note.typ | 3 +- 2 files changed, 262 insertions(+), 1 deletion(-) create mode 100644 Computer-Network/06-applications.typ diff --git a/Computer-Network/06-applications.typ b/Computer-Network/06-applications.typ new file mode 100644 index 0000000..962a88c --- /dev/null +++ b/Computer-Network/06-applications.typ @@ -0,0 +1,260 @@ +#import "../template/components.typ": card +#import "@preview/cetz:0.3.4": canvas, draw + += 应用层 + +== 引言:应用层的重要性 + +应用层是TCP/IP协议栈的最高层,也是我们作为用户最常直接接触和感知的部分.从浏览网页,收发邮件到文件共享,所有面向用户的网络应用程序都在这一层运行.应用层的核心作用是定义应用程序之间通信和交互的规则,它决定了应用程序如何利用底层网络提供的服务来交换数据.因此,深入理解应用层的核心协议与关键技术,对于掌握网络应用的开发逻辑,理解网络服务的工作原理,具有至关重要的战略意义. + +本笔记将系统性地梳理应用层的核心协议,包括域名系统DNS,文件传输协议FTP,万维网HTTP,电子邮件协议等. + +== 域名系统 DNS (Domain Name System) + +域名系统(DNS)是互联网一项至关重要的基础设施.想象一下,如果没有DNS,我们访问网站时将不得不记忆一长串毫无规律的IP地址(如110.242.68.3),而不是方便记忆的域名(如www.example.com).这一挑战凸显了DNS的战略价值:它作为互联网至关重要的"目录服务",构建了一座关键的桥梁,将人类易于理解和记忆的域名,自动转换为机器能够识别和处理的IP地址. + +=== 域名系统概述 + +DNS的核心功能可以概括为以下两点: + +- 域名解析:将用户提供的主机域名(如 www.example.com)解析为对应的IP地址.这是DNS最主要,最核心的任务. +- 反向域名解析:将IP地址反向解析为对应的主机域名,主要用于网络管理和安全审计等场景. + +=== 互联网的域名结构 + +互联网的域名被设计成一种层次化的树状结构,以确保全球域名的唯一性和管理的高效性.一个完整的域名由多个标号(label)组成,标号之间用点(.)分隔.以 www.example.com 为例: + +- .com 是顶级域名 (Top-Level Domain, TLD),表示该域名所属的类别(如.com代表商业公司,.org代表非营利组织,.cn代表中国). +- example 是二级域名,通常是组织或公司的名称,由对应的机构自行管理. +- www 是三级域名,通常用来指代提供Web服务的主机,也可以根据需要自定义(如mail.example.com). + +=== 域名服务器 + +DNS的解析过程是一个分布式的协作过程,由不同类型的域名服务器共同完成. + +#table( + columns: (auto, auto, auto), + [服务器类型], [核心职责], [在解析过程中的作用], + [根域名服务器], [存储所有顶级域名服务器的地址信息,是整个域名解析体系的起点.], [当本地域名服务器无法解析时,它会首先向根服务器查询,根服务器会告知其应向哪个顶级域名服务器查询.], + [顶级域名服务器], [负责管理其注册的所有二级域名,存储对应权限域名服务器的地址信息.], [接收到根服务器引导的查询后,它会告知本地域名服务器下一步应查询哪个权限域名服务器.], + [权限域名服务器], [存储并维护其管辖区域内(如example.com)所有主机的域名与IP地址的对应关系.], [负责对其授权管理的域名进行最终的权威性解答,返回查询的IP地址.], + [本地域名服务器], [直接面向用户,接收用户的域名解析请求,并负责代理用户完成整个查询过程.], [作为解析过程的核心.它接收来自用户主机的递归查询请求,然后代表主机向根,顶级和权限服务器发起一系列迭代查询,最终将解析结果返回给用户并进行缓存.], +) + +总而言之,DNS通过其精巧的分布式,层次化设计,成为了支撑整个互联网正常运行的关键基础设施,其重要性不言而喻.接下来,我们将探讨另一项基础网络应用:文件传输. + +== 文件传送协议 FTP (File Transfer Protocol) + +文件传输是互联网上最古老,最核心的应用之一.早在万维网普及之前,用户就需要在不同的计算机系统之间可靠,高效地共享和传输文件.文件传送协议(FTP)的出现,正是为了满足这一基本需求,并为此提供了一套标准化的解决方案. + +=== FTP 概述 + +FTP是一个基于客户端/服务器(C/S)架构的协议.用户通过FTP客户端软件连接到远程主机上的FTP服务器,进行文件的上传(Upload)或下载(Download)操作. + +=== FTP 的基本工作原理 + +FTP最显著的一个特点是,它在工作时会使用两个并行的TCP连接,这种设计在应用层协议中非常独特. + +1. 控制连接: + - 用途:用于传输FTP命令(如用户登录,目录切换,文件操作请求等)以及服务器的响应信息.该连接建立在服务器的21号端口上. + - 生命周期:在整个FTP会话期间保持打开状态.客户端通过这个连接来"指挥"服务器. +2. 数据连接: + - 用途:专门用于传输文件内容本身.在标准(主动)模式下,该连接使用服务器的20号端口. + - 生命周期:这是一个临时连接.每当有文件需要传输时,FTP才会建立一个新的数据连接;文件传输完毕后,该连接立即关闭.这种设计将命令与数据分离,使得协议控制更加清晰. + +=== 简单文件传送协议 TFTP + +TFTP (Trivial File Transfer Protocol) 是一个功能被大大简化的文件传输协议.与FTP相比,它具有以下显著特点: + +- 使用UDP协议:TFTP运行在UDP之上,不提供像FTP那样的可靠传输保证. +- 协议简单:代码量小,易于实现,非常适合嵌入式设备或资源受限的环境. +- 适用场景:常用于无盘工作站或网络设备通过网络启动时,从服务器下载启动映像文件. + +TFTP牺牲了FTP的复杂功能和高可靠性,换来了实现的简单与高效,是特定场景下的优选方案. + +FTP协议解决了远程管理文件的需求,而另一项早期的协议TELNET,则旨在通过远程命令行来管理计算机本身. + +== 远程终端协议 TELNET + +TELNET是一种历史悠久的远程登录协议,它使得用户可以在本地计算机上通过网络访问并操作一台远程计算机,就像直接坐在远程计算机的显示器前一样. + +TELNET的功能是为用户提供一个在远程主机上工作的命令行界面. 然而,它存在一个致命的缺陷:所有传输的数据,包括用户名和密码,都以明文方式在网络中传输.这意味着任何中间攻击者都可以轻易地窃听和截获敏感信息,存在严重的安全隐患.正因如此,在现代网络环境中,TELNET已基本被SSH (Secure Shell) 等提供加密功能的协议所取代,仅在一些内部,隔离且绝对安全的环境中偶尔使用. + +从TELNET简单的文本交互,我们自然地过渡到内容更丰富,应用更广泛的万维网世界. + +== 万维网 WWW (World Wide Web) + +万维网(WWW)无疑是应用层中最具影响力的应用,它深刻地改变了人类获取,分享和创造信息的方式.需要强调的是,万维网并非互联网本身,而是一个构建在互联网之上的,由全球无数服务器上的网页,图片,视频等资源组成,并通过超链接互相连接起来的巨大信息系统. + +=== 万维网概述与核心构件 + +万维网的成功构建在三个核心技术基石之上: + +1. 统一资源定位符 (URL):为网络上的每一个资源(文档,图片等)提供一个全球唯一的地址. +2. 超文本传送协议 (HTTP):定义了浏览器(客户端)如何向服务器请求资源,以及服务器如何将资源传送给浏览器. +3. 超文本标记语言 (HTML):一种用于创建网页的标准标记语言,它定义了网页的结构和内容. + +=== 统一资源定位符 URL + +URL的通用格式为:<协议>://<主机>:<端口>/<路径>. + +- 协议 (Protocol):指明访问该资源所使用的协议,如http,https或ftp. +- 主机 (Host):存放资源的服务器的域名或IP地址. +- 端口 (Port):服务器上监听请求的特定端口号.HTTP默认端口为80,HTTPS为443,通常可以省略. +- 路径 (Path):资源在服务器上的具体位置,类似于文件系统中的文件路径. + +=== 超文本传送协议 HTTP + +HTTP协议是万维网数据通信的基础,其核心特性对Web应用产生了深远影响: + +- 请求-响应模型 (Request-Response Model):通信总是由客户端(通常是浏览器)发起一个请求,然后服务器返回一个响应.服务器不会主动向客户端推送信息. +- 无状态性 (Stateless):HTTP协议本身不记录任何关于过去请求的信息.服务器处理每个请求时,都将其视为一个独立的,全新的请求,不依赖于之前的交互.这种设计简化了服务器的实现,但也使得需要记录用户状态(如购物车)的应用必须借助Cookie等额外技术. +- 持久连接与非持久连接:这是HTTP性能演进的关键.HTTP/1.0采用非持久连接,每个网页对象(如一张图片)的请求都需要建立一个新的TCP连接,请求完成后即断开,效率低下.HTTP/1.1引入了持久连接,允许在同一个TCP连接上发送多个请求和接收多个响应,极大地减少了连接建立的开销,显著降低了网页加载延迟,提升了用户体验. + +=== Web 缓存与内容分发网络 (CDN) + +在万维网中,为了进一步提升性能,减少网络延迟和服务器负载,引入了 Web 缓存 (Web Cache) 和内容分发网络 (Content Delivery Network, CDN) 两项关键技术.它们通过将内容存储在网络中更靠近用户的位置,极大地改善了用户的访问体验. + +==== Web 缓存 + +Web 缓存的核心思想是:将用户请求过的资源副本临时存储起来,当同一资源再次被请求时,可以直接从缓存中提供,而无需再次向原始服务器发起请求.这不仅减少了网络流量和服务器压力,也显著降低了访问延迟. + +根据缓存位置的不同,Web 缓存主要分为两类: + +- *浏览器缓存*: 位于用户本地的浏览器内部.浏览器会自动将访问过的页面,图片等资源存储在本地磁盘中.当用户再次访问同一页面时,浏览器会首先检查本地缓存,如果资源未过期且有效,则直接使用缓存副本,无需进行网络请求.这是最靠近用户的缓存层,响应速度最快. +- *代理缓存*: 位于网络中间节点(如企业网关,ISP网络)的缓存服务器.它可以为多个用户提供缓存服务,当某个用户请求的资源已经被其他用户请求过并缓存在代理服务器上时,代理服务器可以直接返回缓存副本,从而节省了到原始服务器的往返时间.代理缓存又可以分为正向代理缓存和反向代理缓存(常作为负载均衡器的一部分). + +HTTP 协议为缓存控制提供了丰富的头部字段,使得服务器和客户端可以精确地控制缓存行为.其中最重要的头部包括: + +#table( + columns: (auto, auto), + [缓存头部字段], [核心作用与示例], + [Cache-Control], [最核心的缓存控制字段,可以指定资源的可缓存性(public, private, no-cache),缓存最大有效期(max-age),是否必须验证(no-cache)等.例如: `Cache-Control: public, max-age=3600` 表示该资源可以被任何缓存存储,且有效期为3600秒.], + [ETag], [服务器为资源生成的唯一标识符(哈希值).当客户端再次请求该资源时,可以在请求头中带上缓存的ETag值(使用 `If-None-Match` 字段).服务器会比较该ETag与当前资源的ETag,如果一致,则返回 `304 Not Modified` 状态码,告知客户端缓存依然有效;否则返回新的资源.], + [Last-Modified], [服务器记录的资源最后修改时间.客户端再次请求时,可以在请求头中使用 `If-Modified-Since` 字段携带该时间.服务器会判断资源在此时间后是否被修改过,从而决定是返回 `304` 还是新的资源.], +) + +缓存机制通过减少不必要的网络传输,成为提升Web性能不可或缺的一环.然而,当用户与原始服务器地理距离遥远时,仅靠缓存仍可能面临较高的网络延迟.内容分发网络(CDN)正是为解决这一全球性挑战而设计的. + +==== 内容分发网络 (CDN) + +内容分发网络(CDN)是一种构建在现有互联网基础之上的分布式网络系统.其战略目标是通过在全球各地部署大量的边缘服务器(Edge Server),将网站的内容(尤其是静态内容,如图片,视频,CSS,JavaScript文件)缓存到这些离用户更近的节点上,从而使用户能够从地理位置上最近的服务器获取所需资源,极大地缩短了网络延迟,并减轻了原始服务器的负载压力. + +CDN 的核心工作原理可以概括为以下几个关键步骤: + +1. *内容缓存与分发*: 网站管理员将其静态内容上传到原始服务器(Origin Server),并配置CDN服务.CDN网络会自动将这些内容复制并分发到全球各地的边缘服务器上. +2. *智能DNS解析*: 当用户请求一个使用了CDN的网站资源时,DNS解析请求会被CDN提供商智能地处理.CDN的DNS系统会根据用户的地理位置,网络状况等因素,选择一个最优的边缘服务器IP地址返回给用户. +3. *边缘服务器响应*: 用户浏览器随后直接向该边缘服务器发起请求.如果边缘服务器上缓存了用户请求的资源,则直接返回;如果未缓存或缓存已过期,边缘服务器会向原始服务器请求最新的资源,缓存后再返回给用户. + +CDN 带来的主要优势包括: + +- *显著降低访问延迟*: 用户从地理距离最近的边缘服务器获取内容,减少了网络往返时间(RTT). +- *大幅减轻原始服务器负载*: 大量请求被边缘服务器分担,原始服务器只需处理边缘服务器的回源请求,压力骤减. +- *提升网站的可用性与可靠性*: CDN的分布式架构使得即使某个边缘服务器或原始服务器出现故障,其他节点仍可继续提供服务,增强了抗故障能力. +- *优化网络带宽成本*: CDN提供商通常拥有更优化的网络路径和带宽资源,可以降低数据传输成本. + +总而言之,Web 缓存与 CDN 共同构成了现代万维网性能优化的两大支柱.它们通过智能的内容存储与分发策略,极大地提升了全球用户访问Web资源的效率与体验. + +=== 万维网的信息生态 + +现代万维网已经发展成为一个庞大而复杂的信息生态系统,其关键载体包括: + +- 万维网的文档:构成Web内容基础的HTML页面,图片,视频等. +- 信息检索系统:即搜索引擎,是用户在海量信息中发现内容的主要入口. +- 博客/微博:为个人和组织提供了便捷的内容发布和传播平台. +- 社交网站:构建了人与人之间的连接网络,成为信息分享和社交互动的重要场所. + +万维网彻底革新了信息的组织与获取方式,而电子邮件则在异步通信领域扮演着同样重要的角色. + +== 电子邮件 (Email) + +尽管即时通讯工具层出不穷,但电子邮件作为一种经典的异步通信工具,在正式的商业沟通和个人通信中仍然占据着不可或缺的地位.它是互联网最早的基石应用之一,其设计思想和协议体系至今仍在广泛使用. + +=== 电子邮件系统概述与格式 + +一个完整的电子邮件系统通常由用户代理 (User Agent),邮件服务器 (Mail Server) 和邮件协议三部分组成.其工作流程依赖于不同协议的协同:简单邮件传送协议 (SMTP) 是一种推协议 (Push Protocol),负责将邮件从发件人的用户代理"推送"到其邮件服务器,以及在邮件服务器之间进行"推送"中转.而当收件人需要读取邮件时,则使用拉协议 (Pull Protocol),如邮局协议 (POP3) 或网际报文存取协议 (IMAP),将邮件从其邮件服务器"拉取"到本地的用户代理. + +一封电子邮件由信封和内容两部分组成.信封信息由SMTP协议在传输时使用,而内容则由首部(如发件人,收件人,主题)和主体(邮件正文)构成. + +=== 邮件读取协议:POP3 vs. IMAP + +当用户需要从邮件服务器上收取邮件时,主要使用POP3或IMAP协议.两者在工作模式上有本质区别. + +#table( + columns: (auto, auto, auto), + [比较维度], [邮局协议 POP3 (Post Office Protocol 3)], [网际报文存取协议 IMAP (Internet Message Access Protocol)], + [工作模式], [将邮件从服务器下载到本地设备.默认情况下,下载后会从服务器上删除邮件.], [用户直接在邮件服务器上管理邮件,所有操作(阅读,删除,移动)都实时同步到服务器.], + [多设备同步性], [较差.由于邮件被下载到单一设备,不适合在多个设备(如手机,电脑)上同步管理邮件.], [极佳.任何设备上的操作都会反映在服务器上,确保所有设备看到的邮件状态完全一致.], + [适用场景], [适合在单一固定设备上收发邮件,或希望将邮件完全备份到本地的用户.], [适合需要在多个设备上无缝访问和管理邮件的现代用户.], +) + +=== 通用互联网邮件扩充 MIME + +早期的电子邮件协议只支持传输7位的ASCII文本.为了解决这一局限性,MIME (Multipurpose Internet Mail Extensions) 应运而生.MIME并非一个独立的邮件协议,而是对现有邮件格式的扩展.它的战略重要性在于,它定义了一种机制,使得电子邮件能够支持传输非文本内容,如图像,音频,视频,应用程序文件(如PDF,Word文档)等.可以说,没有MIME,现代电子邮件的功能将大打折扣. + +电子邮件系统通过多种协议协同工作,为主机提供了强大的通信能力.而要让主机能上网,首先需要为其配置网络参数,这就引出了DHCP协议. + +== 动态主机配置协议 DHCP (Dynamic Host Configuration Protocol) + +在任何一个网络中,为每一台新加入的主机手动配置IP地址,子网掩码,默认网关和DNS服务器,都是一项极其繁琐且容易出错的工作.动态主机配置协议(DHCP)正是为解决这一挑战而设计的自动化方案,它实现了网络接入的"即插即用". + +DHCP的核心功能是让网络中的DHCP服务器能够自动地为客户端主机分配IP地址及其他网络配置参数.其工作流程通常遵循一个清晰的"四步交互过程": + +1. 发现 (Discover):新接入的客户端在网络中广播一个DHCP发现报文,寻找DHCP服务器. +2. 提供 (Offer):收到发现报文的DHCP服务器,会从其地址池中选择一个可用的IP地址,并通过一个DHCP提供报文单播给客户端. +3. 请求 (Request):客户端可能会收到多个服务器的提供报文,它会选择其中一个,并向网络广播一个DHCP请求报文,正式请求使用该IP地址. +4. 确认 (Acknowledge):被选中的DHCP服务器收到请求后,会返回一个DHCP确认报文,正式将该IP地址和配置信息分配给客户端,并设定一个租约期限. + +主机配置完成后,网络管理员还需要对整个网络的运行状态进行监控和管理. + +== 简单网络管理协议 SNMP (Simple Network Management Protocol) + +随着网络规模和复杂性的急剧增加,对路由器,交换机,服务器等大量网络设备进行有效的监控,配置和故障排查变得至关重要.简单网络管理协议(SNMP)的出现,为网络管理提供了一套标准化的框架和协议,极大地简化了网络运维工作. + +=== 网络管理的核心框架 + +SNMP的网络管理模型主要由以下三个核心部分构成: + +- 管理信息结构 (SMI - Structure of Management Information) : 它定义了一套通用规则,用于命名被管理的对象,指定它们的数据类型以及如何将这些对象组织起来.SMI为网络管理提供了统一的"语法". +- 管理信息库 (MIB - Management Information Base) : 这是一个在每个被管理设备上维护的数据库.它存储了该设备上所有符合SMI规范的管理对象(如接口流量,CPU使用率等)的实例和值.MIB是SMI规则的具体体现. +- SNMP协议本身:定义了网络管理站(管理者)和被管设备上的代理(Agent)之间如何通信.它规定了请求和响应报文的格式,以及获取(Get),设置(Set)和接收陷阱(Trap)等操作. + +为了更好地理解这三者的关系,我们可以做一个类比:如果将网络管理看作一场对话,那么 SMI 就是定义对话语言结构的"语法",MIB 就是被管理设备所能理解的"词典",而 SNMP协议 则是规定如何提问(Get)和下达指令(Set)的"对话规则"本身. + +SNMP为网络运维提供了标准化的管理手段.那么,从根本上说,应用程序是如何与这些底层网络协议栈进行交互的呢? + +== 应用进程跨网络通信 + +我们已经讨论了多种应用层协议,但这些协议最终都需要由运行在主机上的应用程序进程来使用.应用程序进程为了实现网络通信,必须通过一种标准化的机制来调用操作系统提供的网络服务,特别是运输层的服务. + +=== 系统调用和应用编程接口 (API) + +应用程序并非直接与网络硬件或协议栈的底层代码打交道.相反,它们通过操作系统提供的应用编程接口(API)套接字(Socket)API. + +我们可以将套接字形象地比作是应用程序进程与网络协议栈之间的一扇"门"或一个"插座".应用程序通过这个"门"来发送和接收数据,而无需关心数据在网络中传输的具体细节,这些复杂的工作都由操作系统内核中的协议栈来完成. + +=== 应用对运输层协议的选择 + +应用进程在通过Socket API请求网络服务时,最关键的一步是选择使用运输层的哪一个协议.最常见的选择是TCP和UDP,它们提供截然不同的服务模型: + +- 选择TCP (Transmission Control Protocol):当应用程序需要一个可靠的,面向连接的数据传输服务时,会选择TCP.TCP能保证数据不丢失,不重复,无差错且按序到达,适合文件传输(FTP),网页浏览(HTTP),电子邮件(SMTP)等对数据完整性要求极高的应用. +- 选择UDP (User Datagram Protocol):当应用程序更看重低开销,低延迟和无连接的传输时,会选择UDP.UDP提供的是一种"尽最大努力"的服务,不保证可靠性,但传输效率高.适合实时音视频流,在线游戏,DNS查询等能容忍少量丢包但对实时性要求高的应用. + +== 最终总结:本章核心概念回顾 + +本章我们探讨了应用层的多个关键协议和概念,它们共同构成了我们日常使用的丰富多彩的网络应用的基础.下表对本章的核心知识点进行了高度凝练的总结: + +#table( + columns: (auto, auto), + [核心协议/概念], [一句话核心功能], + [DNS], [将人类可读的域名转换为机器可读的IP地址,是互联网的"电话簿".], + [FTP], [使用独立的控制和数据连接,在客户端和服务器之间提供可靠的文件传输服务.], + [HTTP], [定义了浏览器与Web服务器之间的通信规则,是万维网数据交换的基础.], + [SMTP], [定义了邮件服务器之间以及客户端向服务器发送邮件的规则(推协议).], + [POP3/IMAP], [定义了用户客户端从邮件服务器读取和管理邮件的规则(拉协议).], + [DHCP], [自动为网络中的主机分配IP地址及其他网络配置参数,实现即插即用.], + [SNMP], [为网络管理员提供一套标准化的方法来监控和管理网络设备.], + [URL], [为互联网上的每一个资源提供一个唯一的,可定位的地址.], + [MIME], [扩展了电子邮件的功能,使其能够传输文本以外的多种媒体类型.], + [Socket API], [应用程序用于请求操作系统网络服务的编程接口,是应用与网络协议栈的桥梁.], +) diff --git a/Computer-Network/note.typ b/Computer-Network/note.typ index 73aade8..75ea9a2 100644 --- a/Computer-Network/note.typ +++ b/Computer-Network/note.typ @@ -17,4 +17,5 @@ #include "02-physical.typ" #include "03-links.typ" #include "04-internet.typ" -#include "05-transport.typ" \ No newline at end of file +#include "05-transport.typ" +#include "06-applications.typ" \ No newline at end of file