第六章 应用层

考研考点:
image-20260504160239966


开篇:应用层所处的地位
应用层是计算机网络体系结构的最顶层,是设计和建立计算机网络的最终目的,也是计算机网络中发展最快的部分。经典的网络应用:
image-20260504160255850

一、网络应用模型

1. 客户/服务器模型

在客户/服务器(Client/Server,C/S)模型中,有一个总是打开的主机称为服务器,它服务于许多来自其他称为客户机的主机请求。其工作流程如下:

1)服务器处于接收请求的状态。
2)客户机发出服务请求,并等待接收结果。
3)服务器收到请求后,分析请求,进行必要的处理,得到结果并发送给客户机。

客户机/服务器:
image-20260504160304269
服务器:提供计算服务的设备。

  • 永久提供服务
  • 永久性访问地址/域名

客户机:请求计算服务的主机。

  • 与服务器通信,使用服务器提供的服务
  • 间歇性接入网络
  • 可能使用动态IP地址
  • 不与其他客户机直接通信

应用:Web,文件传输FTP,远程登录,电子邮件

2. P2P模型

在C/S模型中,服务器性能的好坏决定了整个系统的性能,当大量用户请求服务时,服务器就必然成为系统的瓶颈。P2P(Peer-to-Peer)模型的思想是整个网络中的传输内容不再被保存在中心服务器上,每个节点都同时具有下载、上传的功能,其权利和义务都是大体对等的。
image-20260504160310317

在P2P模型中,各计算机没有固定的客户和服务器划分。相反,任意一对计算机称为对等方(Peer),直接相互通信。实际上,P2P模型从本质上来看仍然使用客户/服务器模型,每个节点既作为客户访问其他节点的资源,又作为服务器提供资源给其他节点访问

与C/S模型相比,P2P模型的优点主要体现如下:

1)减轻了服务器的计算压力,消除了对某个服务器的完全依赖,可以将任务分配到各个节点上,因此大大提高了系统效率和资源利用率。
2)多个客户机之间可以直接共享文档。
3)可扩展性好,传统服务器有响应和带宽的限制,因此只能接受一定数量的请求。
4)网络健壮性强,单个节点的失效不会影响其他部分的节点。

P2P模型也有缺点。在获取服务的同时,还要给其他节点提供服务,因此会占用较多的内存,影响整机速度。例如,经常进行P2P下载还会对硬盘造成较大的损伤。据某互联网调研机构统计,某些年份P2P程序占了互联网50%~90%的流量,使网络变得非常拥塞,因此各大ISP(互联网服务提供商,如电信、网通等)通常都对P2P应用持反对态度。

目前,在因特网上流行的P2P应用主要包括P2P文件共享、即时通信、P2P流媒体、分布式存储等。

二、域名系统DNS

1. 域名系统的作用

域名系统是将域名和IP地址相互映射的一个分布式数据库,主要功能是提供域名解析服务,并将域名解析为IP地址,实现用户访问网站时只用输入域名即可访问的功能,能够使人更方便地访问互联网。DNS系统采用客户/服务器模型,其协议运行在UDP之上,使用53号端口

【示例】
image-20260504160316243
注意:当前情况是用户主机在DNS高速缓存中未找到cnnic.cn对应的IP地址的情况。

2. 层次域名空间

  • 域名的结构由若干个分量组成,各分量之间用“点”隔开,分别代表不同级别的域名。
    … .三级域名.二级域名.顶级域名
    • 每一级的域名都由英文字母和数字组成,不超过63个字符,不区分大小写字母。
    • 域名倒置法:级别最低的域名写在最左边,而级别最高的顶级域名写在最右边。
    • 完整的域名不超过255个字符。
  • 域名系统既不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思。
  • 各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由因特网名称与数字地址分配机构ICANN进行管理。

【举例】湖南科技大学网络信息中心的域名
image-20260504160323276

  • 顶级域名(Top Level Domain,TLD)分为以下三类:

    • 国家顶级域名nTLD
      采用ISO 3166的规定。如cn表示中国,us表示美国,uk表示英国等等。
    • 通用顶级域名gTLD
      最常见的通用顶级域名有七个,即:com(公司企业)、net(网络服务机构)、org(非营利性组织)、int(国际组织)、edu(美国教育机构)、gov(国家或政府部门)、mil(美国军事部门)。
    • 反向域arpa
      用于反向域名解析,即IP地址反向解析为域名。
  • 国家顶级域名下注册的二级域名均由该国家自行确定

    • 例如,顶级域名为jp的日本,将其教育和企业机构的二级域名定为ac和co,而不用edu和com。
    • 我国则将二级域名划分为以下两类:
      • 类别域名
        共七个:ac(科研机构)、com(工、商、金融等企业)、edu(教育机构)、gov(政府部门)、net(提供网络服务的机构)、mil(军事机构)和org(非营利性组织)。
      • 行政区域名
        共34个,适用于我国的各省、自治区、直辖市。例如:bj为北京市、sh为上海市、js为江苏省,等等。

注意:在通用顶级域名gTLD 中的com与我国二级域名中的类别域名中的com有所区别,注意区分。

因特网的域名空间
image-20260504160331357
这种按等级管理的命名方法便于维护名字的唯一性,并且也容易设计出一种高效的域名查询机制。需要注意的是,域名只是个逻辑概念,并不代表计算机所在的物理地点。

3. 域名服务器

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

域名服务器分类

  • 根域名服务器

    • 根域名服务器是最高层次的域名服务器。
    • 每个根域名服务器都知道所有的顶级域名服务器的域名及其IP地址。
    • 尽管我们将这13个根域名服务器中的每一个都视为单个的服务器,但“每台服务器”实际上是由许多分布在世界各地的计算机构成的服务器群集
      • 当本地域名服务器向根域名服务器发出查询请求时,路由器就把查询请求报文转发到离这个DNS客户最近的一个根域名服务器。
      • 这就加快了DNS的查询过程,同时也更合理地利用了因特网的资源。根域名服务器通常并不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的IP地址
  • 顶级域名服务器

    • 顶级域名服务器负责管理在该顶级域名服务器注册的所有二级域名
    • 当收到DNS查询请求时就给出相应的回答,可能是最后的结果,也可能是下一级权限域名服务器的IP地址。
  • 权限域名服务器

    • 权限域名服务器负责管理某个区的域名
    • 每一个主机的域名都必须在某个权限域名服务器处注册登记。因此权限域名服务器知道其管辖的域名与IP地址的映射关系。
    • 另外,权限域名服务器还知道其下级域名服务器的地址。
  • 本地域名服务器

    • 本地域名服务器不属于上述的域名服务器的等级结构。
    • 当一个主机发出DNS请求报文时,这个报文就首先被送往该主机的本地域名服务器
    • 本地域名服务器起着代理的作用,会将该报文转发到上述的域名服务器的等级结构中
    • 每一个因特网服务提供者ISP,一个大学,甚至一个大学里的学院,都可以拥有一个本地域名服务器,它有时也称为默认域名服务器
    • 本地域名服务器离用户较近,一般不超过几个路由器的距离,也有可能就在同一个局域网中。
    • 本地域名服务器的IP地址需要直接配置在需要域名解析的主机中
      • 当主机需要将域名(如www.example.com)转换为IP地址时,必须向一个已知的DNS服务器发起查询。本地DNS服务器的IP地址是这一过程的起点。如果主机没有配置该地址,它将无法定位任何DNS服务器,导致域名解析失败。

4. 域名解析过程

(1) 域名解析的两种方式
① 递归查询
image-20260504160342076

② 迭代查询
由于递归查询对于被查询的域名服务器负担太大,通常采用以下模式:递归+迭代
image-20260504160347056

由上述两种方式可知,客户机只需把域名解析请求发往本地域名服务器,其他事情都由本地域名服务器完成,并把最后结果返回给客户机。所以主机只需要知道本地域名服务器的IP

(2) 域名解析过程
下面举例说明域名解析的过程。假定某客户机想获知域名为y.abc.com主机的IP地址,域名解析的过程(最多需要使用8个UDP报文:4个查询报文和4个回答报文)如下:
image-20260504160352235

① 客户机向其本地域名服务器发出DNS请求报文(递归查询)。

② 本地域名服务器收到请求后,查询本地缓存,若没有该记录,则以DNS客户的身份向根域名服务器发出解析请求报文(迭代查询)。

③ 根域名服务器收到请求后,判断该域名属于.com域,将对应的顶级域名服务器dns.com的IP地址返回给本地域名服务器。

④ 本地域名服务器向顶级域名服务器dns.com发出解析请求报文(迭代查询)。

⑤ 顶级域名服务器dns.com收到请求后,判断该域名属于abc.com域,因此将对应的权限域名服务器dns.abc.com的IP地址返回给本地域名服务器。

⑥本地域名服务器向权限域名服务器dns.abc.com发起解析请求报文(迭代查询)。

⑦ 权限域名服务器dns.abc.com收到请求后,将查询结果返回给本地域名服务器。

⑧本地域名服务器将查询结果保存到本地缓存,同时返回给客户机。

5. 域名系统高速缓存

为了提高DNS的查询效率,并减轻根域名服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存。高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
image-20260504160358013
由于域名到IP地址的映射关系并不是永久不变,为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器并删除超过合理时间的项(例如,每个项目只存放两天)。

不但在本地域名服务器中需要高速缓存,在用户主机中也很需要。许多用户主机在启动时从本地域名服务器下载域名和IP地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到域名时才向域名服务器查询。同理,主机也需要保持高速缓存中内容的正确性。

【2016年 题40】假设所有域名服务器均采用迭代查询方式进行域名解析,当H4访问规范域名为www.abc.xyz.com的网站时,域名服务器201.1.1.1在完成该域名解析过程中,可能发出DNS查询的最少和最多次数分别是( )。
A. 0、3   B. 1、3   C. 0、4   D. 1、4

解析:
image-20260504160403667

  • 若主机中已有缓存,则无需向本地域名服务器查询(共0次)。
  • 若主机中没有缓存,则需要向本地域名服务器递归查询。
    • 若本地域名服务器中已有缓存,则无需向其他域名服务器查询(共0次)。
    • 若本地域名服务器中没有缓存,则需要进行一系列选代查询(共4次)。

三、文件传输协议FTP

1. 文件传输协议FTP的作用

(1) FTP的核心作用
因特网使用的最广泛文件传输协议,它屏蔽了各计算机系统的细节,适合于在异构网络中任意计算机之间传送文件。功能形式类似于我们现在使用的共享网盘。

特点:

  • FTP提供交互式访问,允许客户指明文件的类型与格式,并允许文件具有存取权限
  • FTP屏蔽了各计算机系统的细节,适合在异构网络中的任意计算机之间传送文件。
  • FTP使用客户-服务器方式。一个FTP服务器进程可同时为多个客户进程提供服务。FTP的服务器进程由两大部分组成:
    • 一个主进程,负责接收新的请求;
    • 另外有若干个从属进程,每个从属进程负责为一个客户进行FTP服务。
  • FTP基于TCP的协议

(2) 工作流程

服务器端打开熟知端口21(控制端口),使客户进程能够连接上。
② 等待客户进程发连接请求。
③ 启动从属进程来处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。
④ 回到等待状态,继续接收其他客户进程的请求。主进程与从属进程是并发执行的。

(3) 常见应用场景

  • 🖥️ 网站维护:上传HTML/CSS/JS文件到Web服务器
  • 🏢 企业文件共享:团队协作访问集中存储的文档
  • 📦 远程备份:将本地数据备份至FTP服务器
  • 🔄 跨系统传输:Windows与Linux/MacOS间互传文件,如Xftp就支持FTP协议。

2. FTP的基本工作原理

FTP 在工作过程中使用两个连接,一个是数据连接,一个是控制连接。

2.1 控制连接

服务器监听21号端口,等待客户连接,建立在这个端口上的连接称为控制连接,用来传输控制信息(如连接请求、传送请求等)。FTP客户发出的传送请求,通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件。在传输文件时还可以使用控制连接(如客户在传输中途发一个中止传输的命令),因此控制连接在整个会话期间一直保持打开状态,即持久连接

2.2 数据连接

服务器端的控制进程在接收到FTP客户发送来的文件传输请求后,就创建“数据传送进程”和“数据连接”。数据连接用来连接客户端和服务器端的数据传送进程,数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行,即非持久连接

数据连接有两种传输模式:主动模式PORT和被动模式PASV。

  • PORT模式的工作原理:客户端连接到服务器的21端口,登录成功后要读取数据时,客户端随机开放一个端口,并发送命令告知服务器,服务器收到PORT命令和端口号后,通过20端口和客户端开放的端口连接,发送数据
    image-20260504160415610

  • PASV模式的不同点是,客户端要读取数据时,发送PASV命令到服务器,服务器在本地随机开放一个端口,并告知客户端,客户端再连接到服务器开放的端口进行数据传输。
    image-20260504160420989

可见,是用PORT模式还是PASV模式,选择权在客户端。简单概括为,主动模式传送数据是“服务器”连接到“客户端”的端口;被动模式传送数据是“客户端”连接到“服务器”的端口。

四、电子邮件

电子邮件与邮政系统的寄信相似。
① 发件人将邮件发送到自己使用的邮件服务器(邮政站点);
② 发件人的邮件服务器(邮政站点)将收到的邮件按其目的地址转发到收件人邮件服务器(邮政站点)中的收件人邮箱;
③ 收件人在方便的时候访问收件人邮件服务器(邮政站点)中自己的邮箱,获取收到的电子邮件。

1. 电子邮件系统的组成

电子邮件系统采用客户/服务器方式。电子邮件系统的三个主要组成构件:用户代理,邮件服务器,以及电子邮件所需的协议。
image-20260504160427174

  • 用户代理(UA)用户与电子邮件系统的接口。用户代理向用户 提供一个很友好的接口 来发送和接收邮件,用户代理至少应当具有撰写、显示和邮件处理的功能。通常情况下,用户代理就是一个运行在PC上的程序(电子邮件客户端软件),常见的有Outlook和Foxmail等。

  • 邮件服务器:它的功能是发送和接收邮件,同时还要向发件人报告邮件传送的情况(已交付、被拒绝、丢失等)。邮件服务器以客户/服务器模式工作,但它必须能够同时充当客户和服务器。例如,当邮件服务器A向邮件服务器B发送邮件时,A就作为SMTP客户,而B是SMTP服务器;反之,当B向A发送邮件时,B就是SMTP客户,而A就是SMTP服务器。

  • 邮件发送协议和读取协议邮件发送协议用于用户代理向邮件服务器发送邮件或在邮件服务器之间发送邮件,如SMTP邮件读取协议用于用户代理从邮件服务器读取邮件,如POP3。注意,SMTP用的是(Push)的通信方式,即用户代理向邮件服务器发送邮件及在邮件服务器之间发送邮件时,SMTP客户将邮件推送到SMTP服务器。而POP3用的是(Pull)的通信方式,即用户读取邮件时,用户代理向邮件服务器发出请求,拉取用户邮箱中的邮件。

2. 电子邮件的收发过程

① 发件人调用用户代理(电子邮件客户端软件)来撰写和编辑要发送的邮件。
② 邮件撰写完后,发件人点击“发送邮件”按钮,把发送邮件的工作全都交给用户代理来完成,就什么都不用管了。用户代理用SMTP把邮件传送给发送端邮件服务器。
③ 发送端邮件服务器将邮件放入邮件缓存队列中,等待发送。
④ 发送端邮件服务器的SMTP客户与接收端邮件服务器的SMTP服务器建立TCP连接,然后就把邮件缓存队列中的邮件依次发送出去。注意,邮件是直接传送给接收端邮件服务器的,而不会在互联网的某个中间邮件服务器落地
⑤ 运行在接收端邮件服务器中的SMTP服务器进程收到邮件后,将邮件放入收件人的用户邮箱,等待收件人在方便时进行读取。
⑥ 收件人打算收信时,调用用户代理,使用POP3(或IMAP)协议将自己的邮件从接收端邮件服务器的用户邮箱中取回(如果邮箱中有来信的话)。

3. 电子邮件格式与MIME

(1) 电子邮件格式
一个电子邮件分为信封和内容两大部分,邮件内容又分为首部主体两部分。RFC822规定了邮件的首部格式,而邮件的主体部分则让用户自由撰写。用户写好首部后,邮件系统自动地将信封所需的信息提取出来并写在信封上,用户不需要亲自填写信封上的信息。邮件内容的首部包含一些首部行,每个首部行由一个关键字后跟冒号和值组成。有些关键字是必需的,有些则是可选的。最重要的关键字是To和Subject。

  • To必填的关键字,后面填入一个或多个收件人的电子邮件地址。电子邮件地址的格式为:收件人邮箱名@邮件服务器的域名,如2548956382@qq.com,其中邮箱名2548956382在qq.com这个邮件服务器上必须是 唯一 的。这也就保证了该邮件地址在整个因特网上是唯一的。
  • Subject可选关键字,是邮件的主题,反映了邮件的主要内容
  • 当然,还有一个必填的关键字是From,但它通常由邮件系统自动填入

首部与主体之间用一个空行进行分割。典型的邮件内容如下:
image-20260504160437749

(2) 多用途因特网邮件扩展(MIME)
由于SMTP协议只能传送ASCII码文本数据,不能传送可执行文件或其他的二进制对象。SMTP不能满足传送多媒体邮件(例如带有图片、音频或视频数据)的需要。并且许多其他非英语国家的文字(例如中文、俄文、甚至带有重音符号的法文或德文)也无法用SMTP传送。为解决SMTP传送非ASCII码文本的问题,提出了多用途因特网邮件扩展 (Multipurpose Internet Mail Extensions,MIME)。
image-20260504160447170

  • 增加了5个新的邮件首部字段,这些字段提供了有关邮件主体的信息。
  • 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
  • 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。

实际上,MIME不仅仅用于SMTP,也用于后来的同样面向ASCII字符的HTTP。

4. SMTP

简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)是一种提供可靠且有效的电子邮件传输的协议,它控制两个相互通信的SMTP进程交换信息。因为SMTP采用客户/服务器模式工作,所以负责发送邮件的SMTP进程就是SMTP客户,而负责接收邮件的SMTP进程就是SMTP服务器。SMTP用的是TCP连接端口号为25。SMTP通信有以下三个阶段。
image-20260504160452812
① 连接建立
发件人的邮件发送到发送方邮件服务器的邮件缓存中后,SMTP客户就每隔一定时间对邮件缓存扫描一次。如发现有邮件,就与接收方邮件服务器的SMTP服务器建立TCP连接,SMTP服务器使用的熟知端口号为25。连接建立后,接收方SMTP服务器发出220 Service ready(服务就绪)。然后SMTP客户向SMTP服务器发送HELO命令,附上发送方的主机名。

SMTP不使用中间的邮件服务器。TCP连接总是在发送方和接收方这两个邮件服务器之间直接建立,而不管它们相隔多远,不管在传送过程中要经过多少个路由器。当接收方邮件服务器因故障暂时不能建立连接时,发送方的邮件服务器只能等待一段时间后再次尝试连接。

② 邮件传送
连接建立后,就可开始传送邮件。邮件的传送从MAIL命令开始,MAIL命令后面有发件人的地址。如MAIL FROM:<fh@hit.edu.cn>。若SMTP服务器已准备好接收邮件,则回答250 OK。
下面跟着一个或多个RCPT命令,格式为RCPT TO:<收件人地址>。每发送一个RCPT命令,都应有相应的信息从SMTP服务器返回,如250 OK或550 No such userhere(无此用户)。
RCPT命令的作用是,先弄清接收方系统是否已做好接收邮件的准备,然后才发送邮件,以便不至于发送了很长的邮件后才知道地址错误,进而避免浪费通信资源。获得OK的回答后,客户端就使用DATA命令,表示要开始传送邮件的内容。正常情况下,SMTP服务器返回的信息是354 Start mail input; end with.。表示回车换行。此时SMTP客户就可开始传送邮件内容,并用.表示邮件内容的结束。

③ 连接释放
邮件发送完毕后,SMTP客户应发送QUIT命令。SMTP服务器返回的信息是221(服务关闭),表示SMTP同意释放TCP连接。邮件传送的全部过程就此结束。

5. POP3和IMAP4

(1) 邮局协议(Post Office Protocol,POP)

  • POP3是其第三个版本,是因特网正式标准。
  • 非常简单、功能有限的邮件读取协议。
  • 用户只能以下载并删除方式下载并保留方式从邮件服务器下载邮件到用户方计算机。
  • 不允许用户在邮件服务器上管理自己的邮件。(例如创建文件夹,对邮件进行分类管理等)。

(2) 因特网邮件访问协议(Internet Message Access Protocol,IMAP)

  • IMAP4是其第四个版本,是因特网建议标准。
  • 功能比POP3强大的邮件读取协议。
  • 用户在自己的计算机上就可以操控邮件服务器中的邮箱,就像在本地操控一样,因此IMAP是一个联机协议。

注意:POP3和IMAP4都采用基于TCP连接的客户/服务器方式,端口号:

  • POP3:110
  • IMAP:143

6. 基于万维网的电子邮件

  • 通过浏览器登录(提供用户名和口令)邮件服务器万维网网站就可以撰写、收发、阅读和管理电子邮件。这种工作模式与IMAP很类似不同的是用户计算机无需安装专门的用户代理程序(客户端软件)只需要使用通用的万维网浏览器
  • 邮件服务器网站通常都提供非常强大和方便的邮件管理功能,用户可以在邮件服务器网站上管理和处理自己的邮件,而不需要将邮件下载到本地进行管理。
  • 两种发送邮件的情况:
    ① 发送方和接收方访问“同一个”服务器
    image-20260504160507861
    ② 发送方和接收方访问“不同”服务器
    image-20260504160514935

五、万维网WWW

1. 万维网概述

万维网(World Wide Web,简称WWW)是一个基于互联网的分布式信息存储空间,由全球范围内相互关联的网络站点和网页构成,其核心在于通过超文本(Hypertext)与统一资源定位符(URL)实现跨地域的信息共享与访问

  • 在这个空间中:一样有用的事物称为一样资源,并由一个全域 统一资源定位符(URL) 标识。
    image-20260504160520850
  • 客户端与服务器模型
    • 客户端(如浏览器)
      用户通过浏览器(Chrome、Firefox等)发起请求,输入URL点击超链接
      核心行为:

      • 将用户操作转化为HTTP/HTTPS请求(例如请求网页、图片)。
      • 接收服务器返回的响应(HTML、CSS、JS等),渲染并展示内容。
    • 服务器(硬件与软件的分工)

      • 服务器硬件: 存储网页、图片等资源的物理计算机(或云虚拟主机),提供计算、存储和网络能力。
      • WWW服务器软件: 运行在服务器硬件上的服务程序,专门处理HTTP/HTTPS协议请求(如Nginx、Apache HTTP Server、IIS)。 核心功能:
        • 监听客户端的请求(默认端口80/443)。
        • 根据请求路径定位资源(静态文件如HTML,或动态请求需转发至后端应用)。
        • 返回响应(成功时发送资源,错误时返回404/500等状态码)。
    • 注意:服务器硬件是物理载体,WWW服务器软件是功能实现。 类比:硬件是“餐厅的厨房”,软件是“厨师和服务流程”——没有厨师,厨房无法出餐。

  • 万维网使用超文本标记语言HTML,使得万维网页面设计者可以很方便地从一个界面的链接转到另一个界面,并能够在自己的屏幕上显示出来。

2. 万维网的组成

(1) 万维网的组成
万维网的组成可以概括为 三大核心标准支撑技术体系,它们共同构建了一个全球性的超文本信息网络。

1)三大核心标准
统一资源定位符(URL)

  • 作用:唯一标识和定位网络上的资源(如网页、图片、视频)。
  • 格式:
    image-20260504160530205
    • 协议(Protocol):指定使用的传输协议,如http、https、ftp等。这是URL的必选项
    • 主机(Host):这是存放资源的服务器的域名或IP地址。这也是URL的必选项
    • 端口(Port):端口号不是必须写的,如果省略,则使用默认端口号。例如,http的默认端口为80。
    • 路径(Path):指明服务器上某资源的位置,例如目录或文件名。路径并非总是需要的,一般默认为index.html。
    • 查询参数(Query):用于给动态网页传递参数,可以有多对参数,参数对用“&”符号隔开,每对参数的键和值用“=”符号隔开,查询参数也不是必须的
      以上各部分之间使用特定的字符(如“//”、“/”、“?”等)进行分隔,以符合URL的语法规则。

超文本传输协议(HTTP/HTTPS)

  • 作用:客户端(浏览器)与服务器之间的通信规则定义如何请求和传输数据
  • 核心方法:GET(获取资源)、POST(提交数据)、PUT(更新资源)等。
  • HTTPS:HTTP的安全版本,通过SSL/TLS加密保护数据传输。

超文本标记语言(HTML)

  • 作用:描述网页的结构和内容,通过标签(如 <p>, <a>, <img>)定义文本、链接、图像等。
  • 构成:
    • HTML:网页的结构和内容
      image-20260504160537167
    • CSS:网页的样式
      image-20260504160542360
    • JavaScript:网页的行为
      image-20260504160548040

2)支撑技术体系

客户端(浏览器)

  • 功能:
    • 解析URL,发起HTTP请求。
    • 接收服务器返回的HTML/CSS/JavaScript等资源,渲染成可视化页面。
  • 代表工具:Chrome、Firefox、Edge等。

服务器端

  • Web服务器(如Nginx、Apache): 处理HTTP请求,返回静态资源(HTML、图片)或转发动态请求至后端程序。
  • 应用服务器(如Tomcat、Node.js): 运行业务逻辑(如用户登录、数据库查询,即后端代码Java、Python等),生成动态内容。
  • 数据库(如MySQL、MongoDB): 存储网站数据(用户信息、商品信息等)。
  • 三类服务器配合:客户端 → Apache(静态文件、SSL、负载均衡) → Tomcat(处理Java业务逻辑) → MySQL数据库

超文本与超媒体

  • 超文本(Hypertext):通过超链接(<a>标签)将文档相互关联,形成非线性浏览结构。
  • 超媒体(Hypermedia):扩展至非文本资源(如图像、视频、API),支持多媒体交互。

(2) 工作流程

① Web用户使用浏览器(指定URL)与Web服务器建立连接,并发送浏览请求。
② Web服务器把URL转换为文件路径,并返回信息给Web浏览器。
③ 通信完成,关闭连接。

3. 超文本传输协议HTTP

超文本传输协议(HTTP)定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。从层次的角度看,HTTP是面向事务(Transaction-oriented)的应用层协议,它规定了在浏览器和服务器之间的请求和响应的格式与规则,是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。

3.1 HTTP的操作过程(重点)

从协议执行过程来说,浏览器要访问WWW服务器时,首先要完成对WWW服务器的域名解析。一旦获得了服务器的IP地址,浏览器就通过TCP向服务器发送连接建立请求。

⭐浏览器访问一个页面的过程:
image-20260504160559100
① 用户输入网址(URL),浏览器分析URL
② 浏览器通过DNS服务器查询域名对应的IP地址(浏览器会将查询结果“域名→IP”缓存在本地)
③ 浏览器与服务器(<Web服务器的IP地址:80端口>)建立TCP连接
④ 浏览器在握手③中携带HTTP请求报文(指明要访问那个HTML页面)
⑤ 服务器返回HTTP响应报文(携带HTML文件)
⑥ 如果html引用了其他n个元素(图片、视频等),还需要n组HTTP请求&响应(持续、非持续工作方式有所区别)
⑦ 释放TCP连接
⑧ 浏览器显示

注:

  • 浏览器可以只下载文本部分。
  • 网页 = 1个HTML文件 + n个网页元素(如图片、视频文件等),HTML文件和网页元素需要浏览器给服务器分别发送请求

⭐访问Web时可能用到的协议:
用户单击鼠标后所发生的事件顺序如下(以访问清华大学的网站为例):
1)浏览器分析链接指向页面的URL(http://www.tsinghua.edu.cn/chn/index.html)。
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页显示给用户。

上述过程只是一个简化过程,实际过程涉及TCP/IP体系结构中应用层的DHCP、DNS和HTTP,传输层的UDP和TCP,网际层的IP和ARP,数据链路层的CSMA/CD或PPP(若涉及ISP接入或广域网传输)。本节主要介绍HTTP。

3.2 HTTP的特点
  • HTTP协议是无状态的,即对于事物处理没有记忆能力。
  • HTTP采用TCP作为运输层协议,但HTTP协议本身是无连接的(通信双方在交换HTTP报文之前不需要先建立HTTP连接)。HTTP的连接方式:
    image-20260504160608664
    • 非持续连接(Close)
      • HTTP/1.0采用非持续连接方式。在该方式下,每次浏览器要请求一个文件都要与服务器建立TCP连接,当收到响应后就立即关闭连接
      • 每请求一个文档就要有两倍的RTT的开销。若一个网页上有很多引用对象(例如图片等),那么请求每一个对象都需要花费2RTT的时间。
      • 此外每次建立新的TCP连接都要分配缓存和变量,使万维网服务器的负担很重。为了减小时延,浏览器通常会建立多个并行的TCP连接以同时请求多个对象。
    • 持续连接(Keep-alive)
      • HTTP/1.1采用持续连接方式。在该方式下,万维网服务器在发送响应后仍然保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。这并不局限于传送同一个页面上引用的对象,而是只要这些文档都在同一个服务器上就行。
      • 持续连接又分为非流水线(no pipelining)和流水线(pipelining)两种工作方式:
        • 非流水线:客户在收到前一个响应后才能发出下一个请求,服务器在发送完一个对象后,其TCP连接就处于空闲状态,浪费了服务器资源。
        • 流水线:客户可以连续发出对各个对象的请求,服务器就可连续响应这些请求。

⭐注意:判断HTTP的连接方式:
① 先看HTTP请求报文的首部行中的Connection是Close(非持续连接)还是Keep-alive(持续连接);
② 若没有给Connection,则看HTTP的版本,HTTP/1.0:非持续连接,HTTP/1.1:持续连接。

【2011年 题47】假设HTTP1.1协议以持续的非流水线方式工作,一次请求-响应的时间为RTT,rfc.html页面引用了2个JPEG小图像,则浏览器从开始建立TCP连接到收到全部内容为止,需要多少个RTT?
image-20260504160651580

3.3 HTTP的报文格式

HTTP是面向文本的(Text-Oriented),因此报文中的每个字段都是一些ASCII码串,并且每个字段的长度都是不确定的。有两类HTTP报文:
image-20260504160656528

  • 请求报文:从客户向服务器发送的请求报文,如图(a)所示。
  • 响应报文:从服务器到客户的回答,如图(b)所示。

(1) HTTP请求报文格式
image-20260504160701468

  • 请求行:HTTP请求中的第一行数据,请求行包含三块内容,分别是请求方式 、请求URL路径、HTTP协议及版本。请求方式有七种:
请求方式 描述
GET 获取资源,无请求体,参数在URL中
POST 提交数据(创建资源),有请求体
PUT 更新整个资源(全量替换)
DELETE 删除指定资源
HEAD 类似GET,但仅返回响应头(无响应体,即不返回请求对象),用于测试资源状态
OPTIONS 查询服务器支持的HTTP方法,常用于跨域预检请求(CORS)
PATCH 更新资源的部分内容(局部更新),有请求体
  • 首部行:也叫请求头,第二行开始,格式为key:value形式,请求头中会包含若干个属性,常见的HTTP请求头有:
    • Host:表示请求的主机名
    • User-Agent:浏览器版本
    • Connection:HTTP的连接方式
      • 非持续连接(Close)
      • 持续连接(Keep-alive)
    • Accept:表示浏览器能接收的资源类型,如text/*image/* 或者 */*表示所有;
    • Accept-Language:表示浏览器偏好的语言,服务器可以据此返回不同语言的网页;
    • Accept-Encoding:表示浏览器可以支持的压缩类型,例如gzip, deflate等。
  • 实体主体:也叫请求体,POST请求的最后一部分,存储请求参数。

【举例】
image-20260504160710234

(2) HTTP响应报文格式
image-20260504160714686

  • 状态行:也叫响应行,响应报文的第一行,响应行包含三块内容,分别是 HTTP协议及版本、响应状态码、状态码的描述。常见状态码及其描述:
状态码分类 描述
1xx 响应中——临时状态码,表示请求已经接受,告诉客户端应该继续请求或者如果它已经完成则忽略它
2xx 成功——表示请求已经被成功接收,处理已完成
3xx 重定向——重定向到其它地方:它让客户端再发起一个请求以完成整个处理。
4xx 客户端错误——处理发生错误,责任在客户端,如:客户端的请求一个不存在的资源,客户端未被授权,禁止访问等
5xx 服务器端错误——处理发生错误,责任在服务端,如:服务端抛出异常,路由出错,HTTP版本不支持等
  • 首部行:又叫响应头,第二行开始,格式为key:value形式。响应头中会包含若干个属性,常见的HTTP响应头有:
    • Content-Type:表示该响应内容的类型,例如text/html,image/jpeg;
    • Content-Length:表示该响应内容的长度(字节数);
    • Content-Encoding:表示该响应压缩算法,例如gzip;
    • Cache-Control:指示客户端应如何缓存,例如max-age=300表示可以最多缓存300秒
  • 响应体: 最后一部分。存放响应数据。

4. Cookie与会话管理机制

请求之间无法共享数据会引发的问题,如:京东购物,加入购物车和去购物车结算是两次请求,HTTP协议的无状态特性,加入购物车请求响应结束后,并未记录加入购物车是何商品,发起去购物车结算的请求后,因为无法获取哪些商品加入了购物车,会导致此次请求无法正确展示数据。

4.1 Cookie核心机制
  • 定义:Cookie是服务器发送到客户端(浏览器)的小型文本数据,用于跟踪用户会话状态(如登录态、购物车)。也就是说,Cookie是一种对无状态的HTTP进行状态化的技术

  • 关键属性

    • Domain/Path:限制Cookie生效的域名和路径(默认仅当前域名有效)。
    • Expires/Max-Age:定义Cookie生命周期(会话期Cookie关闭浏览器失效)。
    • Secure:仅通过HTTPS传输,防止中间人窃取。
    • HttpOnly:禁止JavaScript访问,防范XSS攻击。
    • SameSite:限制跨站请求携带Cookie(Strict/Lax/None),防御CSRF攻击。
  • 工作流程
    image-20260504160724265
    ① 服务器通过Set-Cookie响应头下发Cookie。
    ② 客户端后续请求自动在Cookie请求头中携带相关Cookie。
    ③ 服务器解析Cookie验证用户身份并维持状态。

4.2 Session管理机制
  • 定义:Session是服务端存储的会话数据(如用户ID、权限),通过Session ID与客户端关联。
  • Session与Cookie的关系
    • Session ID通常通过Cookie传递(如JSESSIONID)。
    • 服务端需解决Session共享问题(如Redis集群存储)。
  • 安全性问题
    • 会话固定攻击:攻击者诱导用户使用已知Session ID登录。
    • 防御措施:登录后重置Session ID,绑定IP/User-Agent。

应用场景对比

技术 适用场景 局限性
Cookie 客户端状态管理(如主题设置) 大小限制(4KB)、易受XSS/CSRF攻击
Session 服务端敏感数据存储(如用户权限) 需分布式存储、增加服务器负载

5. 万维网缓存与代理服务器

  • 在万维网中还可以使用缓存机制以提高万维网的效率。
  • 万维网缓存又称为Web缓存(Web Cache),可位于客户机,也可位于中间系统上,位于中间系统上的Web缓存又称为代理服务器(Proxy Server)。
  • Web缓存把最近的一些请求和响应暂存在本地磁盘中。当新请求到达时,若发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按URL的地址再次去因特网访问该资源

【举例】
① 代理服务器存放有所请求的对象
image-20260504160732043
② 代理服务器没有所请求的对象
image-20260504160736441

③ 主机所请求的原始服务器中的文档与代理服务器中的同一文档不一致
a. 代理服务器中的文档未过期的情况
image-20260504160741538

b. 代理服务器中的文档已过期但原始服务器中的文档未更改的情况
image-20260504160747199
c. 代理服务器中的文档已过期并且原始服务器中的文档已更新的情况
image-20260504160754095

六、本章小结及疑难点

1. 常见应用层协议

应用程序 使用协议 熟知端口号
FTP 数据连接 TCP 20
FTP 控制连接 TCP 21
TELNET TCP 23
SMTP TCP 25
POP3 TCP 110
HTTP TCP 80
DNS UDP 53
TFTP UDP 69
SNMP UDP 161
DHCP UDP C:68,S:67
RIP UDP 520
BGP TCP 179

2. 如何理解客户进程端口号与服务器进程端口号?
通常我们所说的熟知端口号是指应用层协议在服务器端的默认端口号,而客户端进程的端口号是由客户端进程任意指定的(临时的)。
当客户进程向服务器进程发出建立连接请求时,要寻找连接服务器进程的熟知端口号,同时还要告诉服务器进程自己的临时端口号。接着,服务器进程就用自己的熟知端口号与客户进程所提供的端口号建立连接。

3. 因特网和万维网的区别是什么?
因特网(Intemet)是指在ARPA网基础上发展而来的世界上最大的全球性互连网络,它采用TCP/IP族作为通信规则。
万维网(WWW)是无数个网络站点和网页的集合,它们一起构成了因特网最主要的部分(因特网也包括电子邮件、Usenet和新闻组)。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐