Chapter6 应用层

应用层对应用程序的通信提供服务。

  • 应用层的功能:
    • 文件传输、访问和管理
    • 电子邮件
    • 虚拟终端
    • 查询服务和远程作业登录
  • 应用层的重要协议
    • FTP
    • SMTP、POP3
    • HTTP
    • DNS

网络应用模型

客户/服务器模型

  • 工作流程:
    • 服务器处于接收请求状态
    • 客户机发出服务请求,并等待接收结果
    • 服务器收到请求,分析请求,进行处理,得到结果并发送给客户机
  • 特征:
    • 客户是 服务请求方 ,服务器是 服务提供方 。一般协同工作的进程是 两个
    • 整个网络中只需要少数服务器就可以管理客户机,使得网络管理集中方便
    • 客户机之间不直接通信
    • 可拓展性不强,服务器支持客户机数量有限
    • 服务器的性能决定了整个系统的性能
  • 举例:Web,FTP,远程登陆,电子邮件。

P2P模式

  • 概述:
    • 典型的分布式计算模型
    • 网络中每个结点都具有上传,下载功能
    • 不设中心服务器,没有固定客户和服务器划分,每个结点权力和义务对等。
    • 任意一对计算机称为 对等方 ,可以 直接互相通信
  • 优点:
    • 减轻服务器计算压力,可以将任务分配到各个节点,提高系统效率和资源利用率
    • 客户机之间可以直接共享文档。
    • 可拓展性好,不受传统服务器的响应和带宽限制。
    • 网络健壮性强,单个结点失效不影响其他部分结点。
  • 类型:集中目录式/全分布式/混合式等

套接字编程接口

API:Application Programming Interface

网络子系统以应用编程接口AP的形式向应用程序提供调用接口

套接字(socket)是最常用的应用层编程接口

经典的socket编程接口采用同步调用方式(又称阻塞式)

  • 例:调用recv()时,调用进程将被阻塞,直到收到数据为止

Windows中程序的执行由事件驱动,需要异步事件驱动方式的套接字编程接口

  • WinSock编程接口,在阻塞式调用基础上,增加了异步调用方式

image-20250601154411581

image-20250601154556728

image-20250601154536629

image-20250601154814668

域名系统DNS

Domain Name System

  • 作用:把具有特定含义的主机名转换为IP地址,使用户可以通过主机名访问网络上的主机
  • DNS系统采用 C/S模型 ,协议运行于 UDP 上,使用53号端口
    • 应用进程需要进行域名解析时,就调用域名解析程序(resolver),它成为DNS的一个客户
    • 向本地域名服务器发送域名解析请求(UDP报文),其中包含待解析的域名
    • 本地域名服务器在查找域名后,返回应答报文,其中包含对应的IP地址

层次域名空间

  • 因特网采用 层次树状结构 的命名方法

    • … . 三级域名 . 二级域名 . 顶级域名
  • 域名:任何一个连接到因特网的主机/路由器都有一个唯一层次结构名称

    域名不和IP、主机、MAC一一对应

    若一台主机通过两块网卡连接到两个网络(如服务器双线接入),则就具有两个IP地址,每 个网卡对应一个 MAC 地址,显然这两个IP地址可以映射到同一个域名上。

    此外,多台主机也可以映射到同一个域名上(如负载均衡)

    一台主机也可以映射到多个域名上(如虚拟主机)

    Internet上提供客户访问的主机不一定要域名

    IP地址很难记忆,引入域名是为了便于人们记忆和识别

  • 是名字空间中一个可被管理的部分。域可划分为 子域 ,子域可划分为更小的子域。每个域名之间用 . 分隔。

  • 注意事项:

    • 标号英文不区分大小写
    • 标号中除连字符 - 外不能使用其他标点符号。
    • 每个标号不超过63个字符,多标号组成完整域名最长不超过255个字符。
    • 级别最低的域名写在最左边,级别最高的顶级域名写在最右边。
  • 顶级域名分为三大类:

    • 国家顶级域名(nTLD):国家和某些地区的域名,如.cn,.us,.uk等。

    • 通用顶级域名(gTLD):常见的有.com,.net,.org,.edu,.gov等。

    • 赞助顶级域名(sTLD):有说法是例如.edu,.org等属于赞助顶级域名,但书上把它们都归入通用顶级域名内。

    • 基础结构域名(sTLD),反向域名解析,又称反向域名,仅包含一个,地址和路由参数区,.arpa

域名服务器

IP 子网中的主机可以由不同的域名服务器来维护其映射

  • 域名服务器 :负责把域名解析成为IP地址,管辖范围称为 。每个区所有节点相通
  • 因特网上所有主机的映射分布在所有DNS上
  • DNS域名服务器都把数据复制到几个域名服务器来保存,其中的一个是主域名服务器,其他的是辅助域名服务器
  • 当主域名服务器出故障时,辅助域名服务器可以保证 DNS 的查询工作不会中断,提高域名服务器的可靠性

分类:

  • 根域名服务器

    • 负责管理顶级域名服务器,是最高层次的域名服务器
    • 所有根域名服务器都知道所有顶级域名服务器的域名和IP地址
    • 无法解析的域名,首先向根域名服务器查询,返回顶级域名服务器的IP地址。
    • IPv4根域名服务器全球一共 13 个:一个主根服务器(美国),12个辅助根服务器(美国9个,瑞典斯德哥尔摩1个,英国伦敦1个,日本东京1个)
  • 顶级域名服务器

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

    • 负责一个区(zone)的域名服务器
    • 每台主机都必须在权限域名服务器上登记
    • 权限服务器可以将它所管辖的主机名转化为主机的IP地址
    • 一台主机最好有两个授权域名服务器。
  • 本地域名服务器/默认域名服务器

    • 一台主机发送DNS请求时,查询请求就发送给主机的本地域名服务器

image-20250531221717356

域名解析过程

  • 域名解析:把域名映射称为IP地址 (正向解析) 或把IP映射成域名 (反向解析) 的过程
  • 递归查询:本地域名服务器向根域名服务器查询一次,其余查询递归地在其他几个域名服务器之间进行。
  • 根域名服务器负载过大,实际几乎不适用,大多使用递归与迭代结合的查询方式
  • 例:查询www.super2021.com

  • 主机本地域名服务器查询: 递归查询,与之前相同

  • 本地域名服务器向根域名服务器查询:

    迭代查询

    • 客户机本地域名服务器发送DNS请求报文 (递归查询)
    • 本地域名服务器查询 本地缓存,如果没有记录,则以DNS客户机的身份向根域名服务器发送解析请求报文 (迭代查询)
    • 根域名服务器收到请求后,判断域名属于.com顶级域,返回com顶级域名服务器的IP地址。
    • 本地域名服务器com顶级域名服务器发送解析请求报文 (迭代查询)
    • 顶级域名服务器收到请求后,判断域名属于super2021.com二级域名,返回super2021.com授权域名服务器的IP地址。
    • 本地域名服务器super2021.com授权域名服务器发送解析请求报文 (迭代查询)
    • 授权域名服务器收到请求后,判断域名属于 www.super2021.com 主机,返回 www.super2021.com主机 的IP地址。
    • 本地域名服务器将结果保存到 本地缓存,同时返回给客户机
  • 高速缓存:==加快域名解析的响应速度,提高查询效率,减少因特网上DNS查询报文数量==

    DNS服务器在一段时间后会丢弃高速缓存中的信息。

image-20250531222156972

DNS 使用传输层的UDP, 因为它不需要使用 TCP的自动重传功能

对于 DNS 服务器的访问,多次 DNS 请求都返回相同的结果

因此DNS 操作可以重复执行。当一个进程做一次 DNS 请求时,它启动一个定时器。若定时器计满而未收到回复,则它就再请求一次,这样做不会有害处。

image-20250531224750694

文件传送协议 FTP

File Transfer Protocol

  • 提供不同种类主机系统(硬、软件体系等都可以不同)之间的文件传输能力
  • 以用户权限管理的方式提供用户对远程FTP 服务器上的文件管理能力
  • 以匿名 FTP 的方式提供公用文件共享的能力
  • 允许客户指明文件的类型与格式

FTP使用客户/服务器方式

  • 一个FTP服务器进程可同时为多个客户进程提供服务
  • FTP的服务器进程由两大部分组成
    • 一个主进程,负责接受新的请求
    • 若干个从属进程,负责处理单个请求
  • 主进程的工作步骤
    • 打开熟知端口(端口号为21),使客户进程能够连接上
    • 等待客户进程发出连接请求
    • 启动从属进程处理客户进程发来的请求
      • 从属进程对客户进程的请求处理完毕后即终止
      • 从属进程在运行期间根据需要还可能创建其他一些子进程
      • 回到等待状态,继续接受其他客户进程发来的请求
    • 主进程与从属进程的处理是并发地进行

FTP使用2个TCP连接:控制连接和数据连接

  • 控制连接
    • 控制信息带外传送
    • 在整个会话期间一直保持打开
    • FTP客户发出的传送请求通过控制连接发送给服务器端的控制进程,但控制连接不用来传送文件
  • 数据连接
    • 收到FTP客户发送来的文件传输请求后,服务器端的控制进程创建“数据传送进程”和“ 数据连接”
    • 数据传送进程实际完成文件的传送,传送完毕后关闭“数据传送连接”并结束运行

image-20250531230632069

万维网

万维网的概念与组成结构

  • 万维网WWW:是一个分布式的、联机式的信息存储空间
    • 一样有用的事物称为一样资源,并由一个全域统一资源定位符URL 标识
    • 这些资源通过超文本传输协议HTTP 传送给使用者,而后者通过单机链接获取资源
  • 万维网使用链接的方法从因特网上的一个站点访问另一个站点
  • 超文本标记语言HTML 能很方便地用一个超链接从页面链接到因特网上任何一个万维网页面
  • 万维网内核部分组成:
    • 统一资源定位符URL:标识万维网上各种文档
    • 超文本传输协议HTTP:应用层协议,使用TCP连接进行可靠传输。是万维网客户程序和服务器程序之间交互必须遵守地协议
    • 超文本标记语言HTML:一种文档结构的标记语言。
  • URL格式:<协议>://<主机>:<端口>/<路径>

    • 协议:ftp/http/news
    • 主机:为存放资源的主机在Internet中的域名
    • 使用http协议时,如省略<端口>,则使用熟 知端口号80;如省略<路径>,则指主页(home page)
  • 万维网以c/s方式工作,浏览器是用户主机上万维网客户程序,万维网文档驻留的主机是万维网服务器。

    • Web用户用浏览器与服务器建立连接,发送浏览请求
    • 服务器把URL转换为文件路径并返回给Web浏览器。
    • 通信完成,关闭连接。

超文本传输协议HTTP

Hypertext Transfer Protocol

HTTP是面向事务的应用层协议,规定了浏览器和服务器之间的请求和相应的格式和规则,是万维网上能够可靠地交换文件的重要基础。

==HTTP的操作过程==

image-20250601121906900

  • 浏览器和服务器之间的请求和响应的交互,必须遵循HTTP

  • 例:访问

    www.super2021.com

    • 浏览器分析链接指向页面 URLwww.super2021.com
    • 浏览器向DNS请求解析 www.super2021.com 的IP地址
    • 域名系统DNS解析出IP地址
    • 浏览器与该服务器建立TCP连接(默认端口80)
    • 浏览器发出HTTP请求:GET /index.htm
    • 服务器通过响应把文件index.htm发送给浏览器
    • 释放TCP连接
    • 浏览器释放文件index.htm,并将Web页显示给用户

请求一个万维网文档所需的时间

文档传输时间 + 2倍RTT时间

请求1个页面的7张图片: 4个RTT 因为7张图片的TCP可以并行

HTTP/1.0的主要缺点

  • 每请求一个文档都需要建立一次 TCP连接
  • 一个Web页面常常包含数量众多的文件

HTTP的特点

  • HTTP使用 TCP作为传输层协议,保证了数据的可靠性

    • HTTP本身是无连接
  • HTTP是无状态的,同一个客户第二次访问同一个服务器上的页面时,服务器响应与第一次被访问是一样的

  • HTTP的无状态特性简化了服务器的设计,使服务器更容易支持大量并发的HTTP请求

    实际应用中,通常使用 Cookie加数据库 的方式跟踪用户的活动。

  • Cookie 工作原理:

    • 当某个用户浏览某个使用Cookie的网站时,该网站的服务器就为用户产生一个唯一识别码,并在用户的响应报文中添加一个Set-cookie的首部行
    • 用户继续浏览这个网站时,会取出这个网站的识别码,并放入请求报文的首部行。
    • 服务器根据请求报文中的 Cookie识别码 就能从数据库中查询到该用户的活动记录,执行一些个性化操作。
  • HTTP既可以使用非持久性连接,也可以使用持久连接

  • 非持久性连接(HTTP/1.0)

    每个网页元素对象的传输都要单独建立TCP连接

    每个对象的引入都要导致 2×RTT 的开销,一次用于建立TCP连接,另一次用于请求和接收文档

    这使得万维网服务器的负担很重。

  • 持久连接(HTTP/1.1)

    指的是服务器在发送响应后仍然保持这条连接

    使同一个客户和服务器可以继续在这条连接上传送后续的HTTP请求和响应报文

    这并不局限于传送同一个页面上链接的文档,而是只要这些文档都在同一个服务器上就行

HTTP报文

  • HTTP是面向文本的,因此报文中每个字段都是一些ASCII码串,且每个字段长度都是不确定的

  • 分为请求报文响应报文,两者都由三部分组成,区别在于开始行不同

    image-20250601130914879

    • 开始行:用于区别报文是请求报文还是响应报文

      • 请求报文中称为请求行,响应报文中称为状态行
    • 开始行三个字段之间以空格分隔,最后的 CRLF 分别表示 回车换行

    • 请求报文的请求行包含三个字段:

      • 方法:表示请求的类型,如 GETPOSTHEAD

        image-20250601131232605

      • URL:表示请求的资源的位置

      • HTTP版本:表示请求报文的HTTP版本

    • 响应报文的状态行包含三个字段:

      • HTTP版本:表示响应报文的HTTP版
      • 状态码:表示服务器对请求的处理结果
        • 1xx:表示通知信息的,如请求收 到了或正在进行处理
        • 2xx:表示成功,如接受或知道了
        • 3xx:表示重定向,表示要完成请求还必须采取进一步的行动
        • 4xx:表示客户的差错,如请求中有错误的语法或不能完成
        • 5xx:表示服务器的差错,如服务器失效无法完成请求
      • 状态码的原因短语:表示状态码的含义
    • 首部行:用来说明浏览器,服务器或报文主体的一些信息。每个首部行都有首部字段名和它的。每一行结束都要有回车和换行(CRLF) 。首部行结束时,还要有一个空行把首部行和后面的实体主体分开。

    • 实体主体:请求报文一般不用,响应报文很少用。

安全的HTPP协议HTTPS

HTTPS:安全的HTTP协议,建立在SSL基础上

  • SSL/TLS已被浏览器广泛支持,很多Web应用利用HTTPS协议实现安全传输
  • HTTPS的熟知端口号为443,而不是80

image-20250601131451491

超文本标记语言 HTML

HyperText Markup Language

  • HTML定义了许多用于排版的命令,即标签(tag)
    • 如:<I>表示后面开始用斜体排版,</I>表示斜体结束
  • HTML把各种标签嵌入到万维网的页面中,构成HTML文档
    • HTML文档为文本格式
  • 浏览器从服务器读取 HTML文档后,按照其中嵌入的各种标签, 根据显示器尺寸和分辨率显示页面
    • 仅当 HTML 文档是以.html 或 .htm 为后缀时,浏览器才对此文档的各种标签进行解释

简单邮件传输协议 SMTP

Simple Mail Transfer Protocol

读取邮件的协议:POP3和IMAP

  • POP3:Post Office Protocol
  • IMAP:Internet Message Access Protocol

电子邮件系统的组成结构

电子邮件是一种异步通信方式,通信时不需要双方在场

image-20250601150147558

组成构件:

  • 用户代理UA
    • 用户与电子邮件系统的接口,电子邮件客户端软件
    • 用户代理的功能:撰写、显示、处理和通信
    • 通常情况下,用户代理就是一个运行在PC上的程序
  • 邮件服务器
    • 发送和接收邮件,同时向发信人报告邮件传送情况
    • 采用 C/S 方式工作,但要同时充当客户和服务器
  • 协议:规定了电子邮件系统的工作方式
    • SMTP邮件发送协议(推)、POP3邮件接收协议(拉)

电子邮件发送过程:

  • 发信人写邮件,用户代理SMTP 把邮件发送给发送端邮件服务器
  • 发送端邮件服务器将邮件放入缓存队列,等待发送
  • 发送端SMTP客户进程发现缓存中有待发送邮件,向接收端SMTP服务器发起TCP连接的建立。
  • TCP连接建立后,发送端SMTP客户进程开始向接收端SMTP服务器发送邮件,发送完毕后关闭TCP连接。
  • 接收端SMTP进程收到邮件,把邮件放入收信用户邮箱,等待用户读取。
  • 收件人收信时,调用用户代理,使用 POP3/IMAP 协议将邮件从接收端邮件服务器中取回。

电子邮件格式与MIME

电子邮件格式:

  • 电子邮件由信封和内容组成,内容又分为首部和主体。
  • 首部包含首部行,首部行由关键字 + : + 值组成。最重要的关键字是 ToSubject
    • To:必须的关键字,后面填入一个或多个收件人的电子邮箱地址。
      • 格式规定为:收件人邮箱名 @ 邮箱所在主机域名
      • 例如3239695085@qq.com,邮件地址在整个因特网上唯一
    • Subject:可选关键字,邮件的主题,反应邮件的主要内容
    • Cc:抄送(Carbon copy),表示给某人发送一个邮件副本
    • From:发信人的电子邮件地址
    • Date:发信日期
    • Reply-to:对方回信地址
1
2
3
4
5
From:3239695085@qq.com     ┐
To:20373614@buaa.edu.cn ├─首部
Subject:Computer Network ┘

Hello World! 主体

MIME:

  • SMTP只能传送7位的ASCII码邮件,很多语言无法传送
  • MIME在SMTP协议的基础上
    • 邮件首部中增加字段,定义数据类型和编码规则
    • 对二进制数据进行编码,将其转换为7位ASCII码
  • 内容:
    • 5个新的首部字段:MIME版本,内容描述,内容标识,传送编码和内容类型
    • 定义众多邮件内容格式,对多媒体电子邮件的表示方法进行标准化
    • 定义传送编码,可对任何内容格式进行转化

SMTP和POP3

SMTP

  • 简单邮件传输协议SMTP:使用C/S方式,发送邮件的SMTP就是客户,接收邮件的就是服务器。

  • SMTP只支持传输7比特的ASCII码内容。

  • 连接建立:

    • 发送方使用端口号25与接收方建立TCP连接。接收方发出220 Service ready的响应,发送方发出HELO命令,并附上发送方主机名
    • 不使用中间的邮件服务器,发送方直接和接收方建立连接。
  • 邮件传送:

    • 客户端从 MAIL 命令开始,后跟From首部行。
    • 服务器若准备好接收邮件,回答 250 OK550 No such user here
    • 客户端发送一个或多个 RCPT 命令,后跟To首部行。
    • 每发送一个RCPT命令,都有相应信息从服务器返回。
    • 获得回答后,即确认接收方系统已做好接收邮件准备,客户端发送 DATA 命令,告诉服务器开始传送邮件。
    • 服务器回答 354 Start mail input; end with <CRLF>.<CRLF>,之后客户端发送邮件内容,以 <CRLF>.<CRLF> 结束。
  • 连接释放:

    • 客户端发送QUIT命令,服务器回答221 Service closing transmission channel,表示SMTP同意释放TCP连接,至此邮件传送过程结束。

POP3和IMAP

  • 邮局协议POP:十分简单但功能有限的邮件读取协议。
    • POP采用 C/S工作方式,传输层使用TCP,端口号110。
    • 两种工作方式:下载并保留下载并删除(用户是否可以再次从服务器上读取)
    • 第3个版本 POP3采用拉的通信方式,即用户读取邮件时,用户代理向邮件服务器发出请求,拉取用户邮箱中的邮件。
  • 因特网报文存取协议IMAP:相比POP复杂许多
    • 为用户提供创建文件夹,移动邮件等功能,为此IMAP维护了会话用户的状态信息。
    • IMAP允许用户代理只获取报文的某些部分,例如可以只读取一个报文的首部,或多部份MIME报文的一部分。

常用的邮件读取协议:POP3、IMAP、HTTP