第2章:应用层
1.应用层协议原理
网络应用程序体系结构
客户-服务器体系结构(client-server architecture)
- server
- always-on host
- 固定IP
- clients
- 动态IP
- 互相之间不直接通信
- 和server通信
P2P体系结构
- 主机对之间直接通信
- 自扩展性
进程通信
多个进程运行在相同端系统上,进程间相互通信
两个不同端系统上的进程,通过跨越计算机网络交换报文而相互通信
客户和服务器进程
对每对通信进程,将两个进程之一标识为客户(client),另一个标识为服务器(server):
- Web:浏览器是client,Web服务器是server
- P2P:下载文件是client,上载文件是server
- 通信会话场景:发起通信是client,会话开始时等待联系的是server
进程与计算机网络之间的接口
socket(套接字):应用程序和网络之间的API

进程寻址
标识接受进程需要两种信息
- 主机地址(IP地址)
- 在目的主机中指定接收进程的标识符(端口号)
可供应用程序使用的传输服务
- 可靠数据传输
- 吞吐量
- 定时
- 安全性
因特网提供的运输服务
- TCP服务
- 面向连接服务
- 可靠数据传输服务
- UDP服务
- 轻量级运输协议,提供最小服务
- 无连接
- 不可靠数据传输服务

应用层协议
- Web应用层协议是HTTP(超文本传输协议)
- 电子邮件应用层协议是SMTP(简单邮件传输协议)
2.Web和HTTP
HTTP概况
- Web页面由对象组成(对象object是一个文件 e.g. HTML文件、JPEG图形、Java小程序)
- 多数Web页面含有一个HTML基本文件及几个引用对象(URL是存放对象的服务器主机名和对象的路径名)
- HTTP使用TCP作为支撑运输协议
- HTTP是无状态协议(stateless protocol):不保存关于用户的任何信息
非持续连接和持续连接
- 非持续:每个TCP连接在服务器发送一个对象后关闭,只传输一个请求报文和响应报文
- 持续:服务器发送响应后保持TCP连接打开,经过一定时间间隔未被使用才关闭连接
HTTP报文格式
请求报文
1 | GET /somedir/page.html |
- 第一行:请求行(require line)
- 方法字段(GET、POST、HEAD、PUT、DELETE)
- URL字段
- HTTP版本字段
- 首部行(header line)
- Host:对象所在主机
- Connection:close 表示不要麻烦地使用持续连接
- User-agent:指明用户代理,即浏览器类型
- Accept-language:想得到的语言版本
- 实体体(entity body)
- GET时为空
- POST时是在表单字段中的输入值

响应报文
1 | 200 OK |
- 初始状态行(status line)
- 6个首部行(header line)
- Connection:close表示发送完后关闭TCP连接
- Date:指示服务器产生并发送该报文的日期和时间
- Server:类似于请求报文中的User-agent
- Last-Modified:对象创建或者最后修改的日期和时间
- Content-Length:被发送对象的字节数
- Content-Type:实体体中的对象类型
- 实体体(entity body)
用户与服务器的交互:cookie
- 响应报文中的一个cookie首部行
- 请求报文中的一个cookie首部行
- 用户端系统中保留有一个cookie文件,由用户的浏览器管理
- 位于Web站点的一个后端数据库
用户首次访问一个站点时,可能需要提供一个用户标识。后继会话中,浏览器向服务器传递一个cookie首部,从而向该服务器标识了用户。
Web缓存
Web缓存器也叫代理服务器
浏览器正在请求对象,会发生如下情况:
- 浏览器创建一个到Web缓存器的TCP连接,并向Web缓存器中的对象发送一个HTTP请求
- Web缓存器查看是否存储该对象副本,如果由就用HTTP相应报文返回该对象
- 如果Web缓存器中没有该对象,它就打开一个与该对象的初始服务器的TCP连接
- Web缓存器接收到该对象时,在本地存储一份副本,并向客户的浏览器用HTTP响应报文发送该副本
Web缓存器既是服务器又是客户
条件GET方法
- 请求报文使用GET方法
- 请求报文中包含一个”
If-Modified-Since:“
则这个HTTP请求报文是一个条件GET请求报文,常见场景是缓存器用于缓存验证
3.因特网中的电子邮件
3个主要组成部分:
- 用户代理(user agent)
- 邮件服务器(mail server)
- 简单邮件传输协议(Simple Mail Transfer Protocol, SMTP)
SMTP
用简单的7bit ASSCII码表示,在使用SMTP发送邮件之前,需要将二进制多媒体数据编码为ASCII码
与HTTP的对比
共同点:
- 持续的HTTP和SMTP都是用持续连接
- 都用于一台主机向另一台主机传文件
区别:
- HTTP主要是拉协议(pull protocol), SMTP基本上是一个推协议(push protocol)
- SMTP要求报文采用7bit ASCII码格式,HTTP不受这种限制
- 处理既包含文本又包含图形的文档时:HTTP把每个对象封装到自己的HTTP响应报文中,SMTP把所有报文对象放在一个报文中
邮件报文格式
典型报文首部:
1 | From: alice@crepes.fr |
报文首部之后,紧接着一个空白行,然后是以ACSII格式表示的报文体
邮件访问协议
将邮件服务器的上的报文传送给本地PC
- 第三版的邮局协议(Post Office Protocol—Version 3,POP3)
- 因特网邮件访问协议 (Internet Mail Access Protocol, IMAP)
- HTTP
4.DNS:因特网的目录服务
主机可以通过主机名(hostname)和IP地址(IP address)进行标识
DNS提供的服务
DNS(Domain Name System,DNS)是:
- 一个由分层的DNS服务器实现的分布式数据库
- 一个使得主机能够 查询分布式数据库的应用层协议
DNS提供的服务:
- 主机名到IP地址的转换
- 主机别名:调用DNS来获得主机别名对应的规范主机名以及主机IP地址
- 邮件服务器别名
- 负载分配:用于在冗余的服务器之间进行负载分配
DNS工作机理概述
分布式、层次数据库
- 根DNS服务器
- 顶级域(DNS)服务器:com、org、net、edu、uk、fr、cn
- 权威DNS服务器
上述三者处在DNS服务器的层次结构中,除此之外,还有本地DNS服务器,不属于层次结构。每个ISP都有一台本地DNS服务器:主机发出DNS请求时,该请求被发往本地DNS服务器,它起着代理的作用,并将该请求转发到DNS服务器层次结构中
DNS查询分为:
- 递归查询
- 迭代查询


实践中:从请求主机到本地DNS服务器的查询是递归的,其余的查询是迭代的
DNS缓存
在一个请求链中,当某DNS服务器接收一个DNS回答时,它能将映射缓存在本地存储器中
DNS记录和报文
共同实现DNS分布式数据库的所有DNS服务器存储了资源记录
资源记录是一个 包含了下列字段的4元组:
(Name, Value, Type, TTL)
- TTL是该记录的生存时间,决定了资源记录应当从缓存中删除的时间
- Name和Value的值取决于Type:
Type=A,则Name是主机名,Value是主机名对应的IP地址。因此 ,一条类型为A的资源记录提供了标准的主机名到IP地址的映射Type=NS,则Name是个域(如foo.com),而Value是个知道如何获得该域中主机IP地址的权威DNS服务器的主机名,这个记录用于沿着查询链来路由DNS查询Type=CNAME,则Value是个别名为Name的主机对应的规范主机名Type=MX,则Value是个别名为Name的邮件服务器的规范主机名
P2P文件分发
P2P体系自扩展性
视频流和内容分发网
HTTP流和DASH
HTTP流中 ,视频只是存储在HTTP服务器中作为一个普通的文件
经HTTP的动态适应性流(Dynamic Adaptive Streaming over HTTP,DASH):视频编码为几个不同的版本,其中每个版本具有不同的比特率,对应于不同的质量水平。
内容分发网
Content Distribution Network, CDN
- 专用CDN
- 第三方CDN

- Title: 第2章:应用层
- Author: SyEic_L
- Created at : 2026-03-19 21:16:16
- Updated at : 2026-03-19 21:16:16
- Link: https://blog.syeicl.vip/2026/03/19/第2章:应用层/
- License: This work is licensed under CC BY-NC-SA 4.0.