学习目标:
1.网络应用及应用层协议的概念、实现。
2.通过对主流应用层协议分析来掌握应用层协议。
2.1 应用层协议原理:
1.研发网络应用程序
核心:写出能够运行在不同的端系统并通过网络彼此通信的程序。
没有应用程序软件运行在网络核心设备上。
2.网络应用程序体系结构
- 客户机/服务器(Client/Server,C/S)体系结构
- 对等(Peer to Peer,P2P)体系结构
- 客户机/服务器和P2P混合的体系结构
2.1 客户机/服务器体系结构
(1)服务器:
- 总是打开的主机,等待客户的请求。
- 具有固定的、众所周知的地址。
- 主机集群,常创建强大的虚拟服务器。
注:
虚拟主机是使用特殊的软硬件技术,把一台真实的物理服务器主机分割成多个逻辑存储单元。
每个逻辑单元都没有物理实体,但是每一个逻辑单元都能像真实的物理主机一样在网络上工作,具有单独的IP地址(或共享的IP地址)、独立的域名以及完整的Internet服务器(支持WWW、FTP、E-mail等)功能。
虚拟主机数据中心虚拟主机的关键技术在于,即使在同一台硬件、同一个操作系统上,运行着为多个用户打开的不同的服务器程式,也互不干扰。而各个用户拥有自己的一部分系统资源(IP地址、文档存储空间、内存、CPU等)。各个虚拟主机之间完全独立,在外界看来,每一台虚拟主机和一台单独的主机的表现完全相同。所以这种被虚拟化的逻辑主机被形象地称为“虚拟主机”。
(2)客户机:
- 同服务器端通信。
- 可以间断的同服务器连接。
- 可以拥有动态的IP地址。
- 客户机之间不直接通信。
2.2 纯P2P体系结构
特点:
- 没有总是打开的服务器。
- 任意一对主机之间直接相互通信。
- 对等方间歇连接并且可以改变IP地址。
优点:自拓展性。
2.3 客户机/服务器和P2P混合的体系结构
Napster:
这是一款可以在网络中下载自己想要的MP3文件的软件。它同时能够让自己的机器也成为一台服务器,为其它用户提供下载。在这个网络中,Napster本身并不提供MP3文件的下载,它实际上提供的是整个Napster网络的MP3文件“目录”,而MP3文件分布在网络中的每一台机器中,随时供你选择取用,下载都是直接连到另外一台机器。
特点:
- 文件直接在对等方之间交换。
- 文件搜索通过服务器。
1)中心服务器记录对等方内容。
2)对等方查询中心服务器来查找要求的文件位置。
即时讯息:
- 两个聊天用户之间是P2P。
- 注册、查询通过服务器。
3.进程通信
(1)进程:运行在端系统中的程序。
- 同一主机上的两个进程通过内部进程通信机制进行通信。
- 不同主机上的进程通过交换报文相互通信。
- 客户机进程:发起通信的进程。
- 服务器进程:等待联系的进程。
注:具有P2P体系结构的应用进程有客户机进程和服务器进程。
(2)套接字:
- 进程通过它的套接字在网络上发送和接收报文。
- 套接字又叫做应用程序编程接口API。
- 用户通过API对传输层的控制仅限于:选择传输协议,能设定几个参数。
(3)进程寻址:
- 主机上的进程标识包括:IP地址和端口号。
- 进程标识的目的:为了一个进程能接收报文。
- 主机有唯一的32位IP地址,但是由于一台主机上能够运行许多进程,所以还需要端口号进行标明进程。
- 常用应用程序的端口号为:Web服务80;邮件服务25。
4.应用层可以使用的服务
(1)可靠数据传输
- 一些应用(实时音频)能容忍一定程度的数据丢失。
- 另一些应用(文件传输)需要100%可靠的数据传输。
(2)定时
一些应用(游戏)要求低时延。
(3)吞吐量
- 一些应用(多媒体)必须要求达到所需带宽。
- 另一些应用根据需要充分利用可供使用的带宽。
注:
媒体是传播信息的媒介。它是指人借助用来传递信息与获取信息的工具、渠道、载体、中介物或技术手段,也指传送文字、声音等信息的工具和手段。也可以把媒体看作为实现信息从信息源传递到受信者(信息接收方)的一切技术手段。
多媒体(Multimedia)是多种媒体的综合,一般包括文本,声音和图像等多种媒体形式。
(4)安全
加密解密;机密性;完整性。
5.因特网提供的运输服务
(1)TCP服务
- 面向连接的服务:在客户机程序和服务器程序之间必须建立连接。
- 可靠的传输服务
- 流量控制:发送方不会淹没接收方。
- 拥塞控制:网络出现拥塞时抑制发送进程。
- 没有提供:时延保证,最小带宽保证。
- SSL
注:
SSL(Secure Socket Layer)安全套接层是Netscape公司率先采用的网络安全协议。它是在传输通信协议(TCP/IP)上实现的一种安全协议,采用公开密钥技术。SSL广泛支持各种类型的网络,同时提供三种基本的安全服务,它们都使用公开密钥技术。
(2)UDP服务
不可靠数据传输
没有提供:建立连接,可靠性,流量控制,拥塞控制,时延和带宽保证。
因特网应用:应用层协议和传输协议。
应用 | 应用层协议 | 传输协议 |
电子邮件 | SMTP | TCP |
远程终端访问 | Telnet | TCP |
Web | HTTP | TCP |
文件传输 | FTP | TCP |
流媒体 | 通常专用 | TCP/UDP |
因特网电话 | 通常专用 | UDP |
注:
流媒体(streaming media),多媒体数据不断由流媒体提供商发送到客户端,而客户不需要将整个多媒体数据下载到本地,就可以开始播放的多媒体。
6.应用层协议
定义不同网络端系统的进程如何传递报文。
具体内容包括:
- 交换的报文类型,如请求报文和应答报文。
- 报文类型的语法:报文中的各个字段及其详细描述。
- 字段的语义,即包含在字段中的信息的含义。
- 进程何时、如何发送报文及对报文进行响应。
分为:公共领域协议和专用协议。
2.2 Web应用和HTTP协议
Web是一种应用,HTTP是支持Web应用的协议。
1.Web
- 网页(Web页,或称文档)由许多对象组成。
- 对象就是文件,可以是HTML文件,JPEG图像,Java applet,音频文件等。
- 多数网页由单个基本HTML文件和若干个所引用的对象构成,HTML文件嵌入了对象的链接。
- 每个对象被一个URL寻址(唯一标识)。
注:
1.标记语言:
是一种将文本以及文本相关的其他信息结合起来,展现出关于文档结构 和 数据处理细节 的电脑文字编码。
与文本相关的其他信息(包括文本的结构和表示信息等)与原来的文本结合在一起,但是使用标记进行标识。
2.HTML:
HTML的全称为超文本标记语言,是一种标记语言。
它包括一系列标签,通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等。
3.URL:
统一资源定位符是,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。
互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
URL格式:协议://(用户名,口令)可省略 主机名 路径名 端口 (默认)
4.万维网:
万维网WWW是World Wide Web的简称,也称为Web、3W等。WWW是基于客户机/服务器方式的信息发现技术和超文本技术的综合。WWW服务器通过超文本标记语言(HTML)把信息组织成为图文并茂的超文本,利用链接从一个站点跳到另个站点。这样一来彻底摆脱了以前查询工具只能按特定路径一步步地查找信息的限制。
5.URL的语法:
基本URL包含:模式(或称协议)、服务器名称(或IP地址)、路径和文件名。
2.HTTP
HTTP(hypertext transfer protocol):超文本传输协议
- 是Web的应用层协议。
- 采用c/s模式。浏览器请求接收Web对象,Web服务器响应请求,发送Web对象。
- 客户初始化一个与HTTP服务器80端口的TCP连接(创建套接字,socket)。(解释如下:套接字又叫做应用程序编程接口API,主机上的进程标识包括:IP地址和端口号)
- 浏览器和Web服务器交换HTTP消息(应用层协议消息),包括HTTP请求和响应消息。
- 最后结束TCP连接。
- HTTP是无状态协议。HTTP不维护客户之前的状态信息。
3.HTTP连接
分为:非持久HTTP连接和持久HTTP连接。
注:
响应时间模型:
(1)往返时间RTT(round-trip time):
1个小分组从客户主机到服务器再到客户主机所花费的时间。
(2)响应时间:
- 1个RTT用于建立TCP连接。
- 1个RTT用于HTTP请求/响应消息的交互
- HTML文件传输时间=2RTT+transmit time
非持久HTTP连接:
- 每个TCP连接上只传送一个对象。
- HTTP/1.0使用非持久连接。
举例:
网页由一个HTML文件和10个jpeg图像构成。
用户输入URL http://www.someschool.edu/someDepartment/home.index
1)HTTP客户初始化一个与服务器主机www.someschool.edu中HTTP服务器的TCP连接。
2)www.someschool.edu服务器主机中的HTTP服务器在80端口监听来自HTTP客户的TCP连接请求,接收,建立连接,告知客户。
3)HTTP客户发送一个HTTP请求消息,包含URL到TCP连接套接字,消息指出客户要Web对象1。
4)HTTP服务器接收请求消息,产生一个响应消息,包含被请求对象,并发送这个消息到自身TCP连接套接字。
5)HTTP服务器结束TCP连接。
6)HTTP客户接收包含HTML文件的响应消息,显示HTML,解析HTML文件,找出10个引用jpeg对象。
7)对10个引用对象的每一个重复上述操作。
共需要22个RTT。
非持久HTTP连接的问题:
- 每个对象需要2个RTT。
- 操作系统必须为每个TCP连接分配主机资源。
- 大量客户的并发TCP连接形成服务器的严重负担。
持久HTTP连接:
- 一个TCP连接上可以传送多个对象。
- HTTP/1.1默认使用持久HTTP连接。
- 服务器发送响应消息后保持连接。
-
同一TCP连接上会话的后续 HTTP。
持久HTTP连接分为:不带流水线和带流水线。
不带流水线的持久HTTP连接:
- 客户先前响应消息收到才发出新的请求消息。
- 每个引用对象经历1个RTT。
- 上述例子中共需要12个RTT。
带流水线的持久HTTP连接:
- 客户遇到一个引用对象就发送请求消息。
- 所有引用对象只经历1个RTT。
- HTTP/1.1 默认使用。
- 上述例子中共需要3个RTT。
4.HTTP报文格式
HTTP报文分为:请求报文request和响应报文response。
(1)HTTP请求报文: 文本(易于人读)
(2)命令:
1)get:获取内容(包括head和body)
2)post:上传
3)head:获取头部,一般用于建立索引。
4)put:文件在实体主体中被上载到URL指定的路径。
5)delete:删除URL字段规定的文件。
代理类型的对象版本:浏览器的版本。
(3)通用格式:
(4)提交(上载)表单输入
post方法:
- 网页通常包含表单输入
- 输入值在请求报文的实体主体中被上载到服务器
URL方法:
- 使用get方法
- 输入通过请求行的URL上载
(5)HTTP响应报文
TCP向上层提供的服务是不包含边界的,所以需要指出length,需要由应用程序自己维护边界。
(6)HTTP响应的状态码
位于服务器响应客户消息的第一行。
- 200 OK(请求成功,所请求消息在响应消息中返回)
- 301 Moved Permanently(所请求的对象已经永久迁移,新的URL在本响应消息的头部指出)
- 400 Bad Request(该请求不能被服务器解读)
- 404 Not Found(服务器上不存在所请求文档)
- 505 HTTP Version Not Supported
(7)维护客户状态cookies
HTTP是无状态协议。HTTP不维护客户之前的状态信息。
用户最初发出 HTTP 请求访问该站点时,该Web站点创建一个唯一的 ID,并由此作为索引,在它的后端数据库中产生一个项。
- 在HTTP响应报文中有一个cookie的首部行。
- 在HTTP请求报文中有一个cookie的首部行。
- 在用户端系统中保留有一个cookie文件,由用户的浏览器管理。
- 在Web站点有一个后端数据库。
(8)Web缓存(代理服务器)
- 不访问原始服务器,就满足客户的请求。
- 用户设置浏览器,通过缓存访问Web。
- 缓存既是客户端又是服务端。向用户提供服务,又从原始服务处接收服务。
- 通常缓存是由ISP安装(大学、公司、居民区ISP)
- 浏览器将所有的HTTP请求发给缓存。
1)在缓存中的对象,缓存直接返回对象。
2)如对象不在缓存,缓存请求原始服务器,然后再将对象返回给客户端。
Web缓存的优点:
- 降低客户端的请求响应时间。
- 可以大大减少一个机构内部网络与Internet接入链路上的流量。
- 互联网大量采用了缓存,可以使较弱的ICP也能够有效提供内容。因特网内容提供商(Internet Content Provider)
排队时延:
(9)条件GET方法
目的:证实缓存器中的对象是否为最新。
缓存器:在请求报文中包含对象最后修改时间:If-modified-since:<date>
服务器:如果对象是最新的则响应报文中不包含对象:HTTP/1.0 304 Not Modified
2.3 文件传输协议FTP
早期:采用分享文件ftp
作用:向远程主机上传输文件或从远程主机接收文件
- 采用c/s模式
- ftp服务器:端口号21
- 控制连接
控制连接与数据连接分开:
- FTP客户端与FTP服务器通过端口21连接,并使用TCP为其传输协议
- 客户在建立的控制连接上获得身份认证
- 客户端通过控制连接发送命令,浏览远程目录
- 收到一个文件传输命令时,服务器打开第二个TCP数据连接用来传输文件(20号端口)
- 一个文件传输完成后,服务器关闭连接
- FTP维护客户状态
- 控制连接:带外 “out of band”
FTP命令和应答:
命令:
- 在控制连接上发送ASCII文本
- USER username
- PASS password
- LIST:返回当前远程目录的文件列表
- RETR filename:获取远程主机当前目录下的1个文件(get) retrieve
- STOR filename:存放1个文件到远程主机当前目录下(put)
应答:
- 状态码及其相应短语 (同 HTTP)
- 331 Username OK, password required
- 125 data connection already open; transfer starting
- 425 Can’t open data connection
- 452 Error writing file
2.4因特网中的电子邮件
三个主要组成部分:
- 用户代理(user agents)
- 邮件服务器(mail servers)
- 简单邮件传输协议:SMTP(simple mail transfer protocol)
用户代理:
- 允许用户阅读,回复,转发,保存,编辑邮件消息
- 例如:Outlook, foxmail等
- 发送邮件消息到服务器/从服务器接收邮件消息
邮件服务器:
- 存放用户接收的邮件消息
- 外出报文队列outgoing message queue
- SMTP协议在邮件服务器间发送邮件消息
- client: 运行在发送邮件消息的服务器上
- server:运行在接收邮件消息的服务器上
SMTP:
- 端口号25
- 直接传送:从发送服务器到接收服务器
- SMTP: 递送/存储邮件消息到接收者邮件服务器
- 传输的3个阶段:握手 (问候) ,邮件消息的传输, 结束。
- 命令: ASCII文本格式 应答: 状态码及其短语
- 邮件消息必须是7-bit ASCII
- SMTP使用持久连接
- SMTP服务器使用CRLF.CRLF 来判断邮件消息的结束
与HTTP的比较:
- HTTP: 拉协议
- SMTP: 推协议
- 都有ASCII 命令/应答交互, 状态码
- HTTP: 每个对象封装在它各自的HTTP响应消息中发送
- SMTP: 一个邮件内各个对象置于同一个邮件消息的多目部分发送
邮件消息的格式:
- 信头-头部行。如: To: From: Subject: (这些头部不同于SMTP命令)
- 信体 邮件消息也必须是ASCII字符
SMTP协议具有以下缺点:
- SMTP不能传送可执行该文件或其他的二进制对象。
- SMTP限于传送7位的ASCII码。
- SMTP服务器会拒绝超过一定长度的邮件。
针对于上述缺点,进行了改进
多媒体扩展(MIME: Multipurpose Internet mail Extensions):
- MIME并没有改动或取代SMTP。
- MIME的意图是继续使用目前的RFC 822格式,但增加了邮件主体的结构,并定义了传送非ASCII码的编码规则。
- MIME邮件可在现有的电子邮件程序和协议下传送。
- 5个新邮件首部字段,它们可包含在RFC 822首部中。这些字段提供了有关邮件主体的信息。MIME Version,Content Type,Content-transfer-encoding 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
- 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。
接收协议:
- POP3
- IMAP
- HTTP
(1)POP3:
POP3的会话是无状态的
(2)IMAP:
IMAP允许用户像对待本地邮箱那样操纵远程邮箱的邮件
IMAP的会话是有状态的
(3)基于Web的电子邮件:
用户代理是浏览器,通过HTTP和邮件服务器通信。
2.5 DNS:因特网的目录服务
DNS: 域名系统Domain Name System
Internet主机, 路由器:
- IP address (32 bit) – 用于分组寻址
- “主机名”, e.g., gaia.cs.umass.edu – 用于人记忆识别
DNS的目的:在IP地址和主机名之间建立映射。