第2章:应用层

SyEic_L Lv4

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

socket

进程寻址

标识接受进程需要两种信息

  1. 主机地址(IP地址)
  2. 在目的主机中指定接收进程的标识符(端口号)

可供应用程序使用的传输服务

  1. 可靠数据传输
  2. 吞吐量
  3. 定时
  4. 安全性

因特网提供的运输服务

  • 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
2
3
4
5
GET /somedir/page.html HTTP/1.1
Host: www.someschool.edu
Connection: close
User-agent: Mozilla/5.0
Accept-language: fr
  • 第一行:请求行(require line)
    • 方法字段(GET、POST、HEAD、PUT、DELETE)
    • URL字段
    • HTTP版本字段
  • 首部行(header line)
    • Host:对象所在主机
    • Connection:close 表示不要麻烦地使用持续连接
    • User-agent:指明用户代理,即浏览器类型
    • Accept-language:想得到的语言版本
  • 实体体(entity body)
    • GET时为空
    • POST时是在表单字段中的输入值

HTTP请求报文通用格式

响应报文

1
2
3
4
5
6
7
8
9
HTTP/1.1 200 OK
Connection: close
Date: Tue, 18 Aug 2015 15:44:04 GMT
Server: Apache/2.2.3 (CentOS)
Last-Modified: Tue, 18 Aug 2015 15:11:03 GMT
Content-Length: 6821
Content-Type: text/html

(data data data data data ...)
  • 初始状态行(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缓存器也叫代理服务器

浏览器正在请求对象,会发生如下情况:

  1. 浏览器创建一个到Web缓存器的TCP连接,并向Web缓存器中的对象发送一个HTTP请求
  2. Web缓存器查看是否存储该对象副本,如果由就用HTTP相应报文返回该对象
  3. 如果Web缓存器中没有该对象,它就打开一个与该对象的初始服务器的TCP连接
  4. Web缓存器接收到该对象时,在本地存储一份副本,并向客户的浏览器用HTTP响应报文发送该副本

Web缓存器既是服务器又是客户

条件GET方法

  • 请求报文使用GET方法
  • 请求报文中包含一个”If-Modified-Since:

则这个HTTP请求报文是一个条件GET请求报文,常见场景是缓存器用于缓存验证

3.因特网中的电子邮件

3个主要组成部分:

  1. 用户代理(user agent)
  2. 邮件服务器(mail server)
  3. 简单邮件传输协议(Simple Mail Transfer Protocol, SMTP)

SMTP

用简单的7bit ASSCII码表示,在使用SMTP发送邮件之前,需要将二进制多媒体数据编码为ASCII码

与HTTP的对比

共同点:

  1. 持续的HTTP和SMTP都是用持续连接
  2. 都用于一台主机向另一台主机传文件

区别:

  1. HTTP主要是拉协议(pull protocol), SMTP基本上是一个推协议(push protocol)
  2. SMTP要求报文采用7bit ASCII码格式,HTTP不受这种限制
  3. 处理既包含文本又包含图形的文档时:HTTP把每个对象封装到自己的HTTP响应报文中,SMTP把所有报文对象放在一个报文中

邮件报文格式

典型报文首部:

1
2
3
From: alice@crepes.fr
To: bob@hamburger.edu
Subject: Searching for the meaning of life.

报文首部之后,紧接着一个空白行,然后是以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)是:

  1. 一个由分层的DNS服务器实现的分布式数据库
  2. 一个使得主机能够 查询分布式数据库的应用层协议

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记录和报文

共同实现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

重定向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.
Comments