应用层
应用层协议原理
络应用程序体系结构
规定如何在各种端系统上组织应用程序,由研发者设计
客户机/服务器
服务器:对外提供服务的一系列硬件和软件
客户机:使用服务器提供的服务
服务器
- 7*24小时提供服务
- 永久性访问地址/域名
- 利用大量服务器实现可扩展性
客户机
- 与服务器通信,使用服务器提供的服务
- 间歇性接入 络
- 可能使用动态IP地址
- 不会与其他客户机直接通信
-
优点:高度可伸缩
-
缺点:难于管理
混合结构
Napster
-
文件传输使用P2P结构
-
文件的搜索采用C/S结构——集中式
-
每个节点向中央服务器登记自己的内容
-
每个节点向中央服务器提交查询请求,
查找感兴趣的内容
传输基础设施向进程提供API
- 传输协议的选择
- 参数的设置
进程寻址
根据进程识别信息找到对应进程
不同主机上的进程间通信,每个进程必须拥有标识符
-
使用IP地址寻址主机
-
使用端口 Port
为每个主机上需要通信的进程分配一个端口
HTTP Server:80
Mail Server:25
-
进程的标识符
IP地址+端口 用于唯一标识一个 络上的进程
络应用的需求与传输层服务
要求
- 数据丢失(data loss)/可靠(relibility)
-
某些 络应用能够容忍一定的数据丢失: 络电话
-
某些 络应用要求100%可靠的数据传输:文件传输,telnet
- 时间(timing)/延迟(delay)
- 有些应用只有在延迟足够低时才“有效”
- 络电话/ 络游戏
- 带宽(bandwidth)
- 某些应用只有在带宽达到最低要求时才“有效”: 络视频
- 某些应用能够适应任何带宽——弹性应用:email
- 定时(数据传输的时间限制)
- 安全性
Web和HTTP
World Wide Web:Tim Berners – Lee
页且 页相互连接
Web Page 包含多个对象(objects)
- 对象:HTML文件,JPEG图片,视频文件,动态脚本
- 基本HTML文件:包含对其他对象引用的连接
对象的寻址(addressing)
-
URL(Uniform Resoure Locator):统一资源定位器
-
Scheme://host:port/path
格式记牢
有状态协议更复杂:
- 需维护状态(历史信息)
- 如果客户或服务器失效,会产生状态的不一致,解决不一致的代价高
传输层协议
使用TCP传输服务
- 服务器在80端口等待客户的请求
- 浏览器发起到服务器的TCP连接(创建套接字Socket)
- 服务器接受来自浏览器的TCP连接
- 浏览器(HTTP客户端)与Web服务器(HTTP服务器)交换HTTP消息
- 关闭TCP连接
HTTP连接
类型
- 非持久性连接(Nonpersisitent HTTP)
- 每个TCP连接最多允许传输一个对象
- HTTP 1.0版本使用非持久性连接
- 持久性连接(Persisitent HTTP)
- 每个TCP连接允许传输多个对象
- HTTP 1.1版本默认使用持久性连接
非持久性连接工作过程
非持久性连接问题
非持久性连接的问题 | 持久性连接 | 带有流水机制的持久性连接 |
---|---|---|
*每一个对象的传输时延长:*每个对象需要2个RTT | 发送响应后,服务器保持TCP连接的打开 | HTTP 1.1的默认选项 |
*服务器负担重:*操作系统需要为每个TCP连接开销资源(overhead) | 后续的HTTP消息可以通过这个连接发送 | 客户端只要遇到一个引用对象就尽快发出请求 |
理想情况下,收到所有的引用对象只需耗时约1个RTT | ||
浏览器做法 | 无流水(pipelining)的持久性连接 | |
打开多个并行的TCP连接以获取 页所需对象 | 客户端只有收到前一个响应后才发送新的请求 | |
每个被引用的对象耗时1个RTT |
HTTP消息格式
HTTP中的方法
HTTP/1.0 | HTTP/1.1 | ||
---|---|---|---|
GET | 请求一个对象。实体主体为空。 | GET,POST,HEAD | |
POST | 将实体信息交给服务器,用于提交表单 | PUT | 向服务器URL指定的路径上载实体中的文件。 |
HEAD | 请Server不要将所有请求的对象放入响应消息中 | DELETE | 删除服务器URL指定的文件。 |
请求消息(request)
ASCII:人直接可读
要考
-
200 OK
-
301 Moved Permanently
-
400 Bad Request
-
404 Not Found
-
505 HTTP Version Not Supported
Cookie技术
HTTP协议无状态
很多应用需要服务器掌握客户端的状态
某些 站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。
Cookie组件
- HTTP响应消息的cookie头部行
- HTTP请求消息的cookie头部行
- 保存在客户端主机的cookie文件,由浏览器管理
- Web服务器的后台数据库
Cookie原理
优缺点
- 减少客户机请求的响应时间:
文件传输过程
-
建立TCP连接:用户提供远程主机的主机名或者IP地址。在FTP客户机进程与FTP服务器进程之间建立。
-
身份认证:输入用户名和口令。向FTP服务器传送。
-
服务器验证成功:进行文件传送(双向)
将本地文件系统中的文件传送到远程文件系统(上传)
或从远程文件系统中得到文件(下载)
控制连接与数据连接
控制连接
作用:用于在两主机间传输控制信息。如用户名、口令;上载或下载文件命令等。
控制连接由客户先发起,建立后一直保持:
-
FTP会话开始前,FTP的客户机与服务器在21 端口上建立。
-
FTP的客户机通过该连接发送用户名和口令,或改变远程目录命令、上载或下载文件命令。
用户代理(user agent)
邮件阅读器。允许用户阅读、回复、发送、保存和撰写 文。
- 发邮件:邮件代理向其邮件服务器发送邮件,并存放在发送队列中。
- 收邮件:邮件代理从其邮件服务器的邮箱中获取该 文。
邮件服务器(mail server)
邮箱:发送给用户的 文。
文队列:用户要发出的邮件 文。
邮件发送主要过程:
-
邮件保存到发送方输出 文队列
-
通过SMTP协议转发到接收方邮件服务器,保存到相应邮箱中
若投递失败仍保存,以后每30分钟发送一次,若几天后仍未成功,将该 文删除,并通知发送方。
用户访问自己邮箱时,邮件服务器对其身份进行验证(用户名和口令)
SMTP
简单邮件传送协议
从发送方的邮件服务器向接收方的邮件服务器发送邮件。
每个邮件服务器上都有SMTP的客户机端和服务器端。
应用层协议。
使用TCP可靠数据传输服务。
包括两部分:
客户机端:在发送方邮件服务器上运行;
服务器端:在接收方邮件服务器上运行。
SMTP
SMTP过程
MIME
多用途因特 邮件扩展
用于非ASCII数据传输
STMP:
- 只传送7位的ASCII码文件
- 不能直接传送可执行文件或其他的二进制对象
MIME:
- 定义了传送非ASCII文件(如声音,图片)的编码规则,将非ASCII文件作为附件发送。
- 将非ASCII数据编码后传输,接收方再解码还原
附加MIME邮件首部
说明采用何种编码
MIME是SMTP的一个扩展,不能替代SMTP
MIME首部
Content-Transfer-Encoding:告诉接收用户代理,该 文主体采用了ASCII码及相应编码类型,并以此还原成非ASCII码。
常用编码:
- base64编码:将二进制文件转换为ASCII码格式。
- 可打印内容转换编码:将一个8位ASCII 文转换为7位ASCII码格式。
Content-Type:告诉接收用户代理 文类型及应采取的动作。
如jpeg:要对jpeg文件解压缩。
POP3
第三版邮局协议
简单,功能有限
读取邮件过程:
-
建立TCP连接:服务器通过110端口侦听TCP请求,与客户机建立TCP连接。
-
开始POP3会话读取邮件,分为3个步骤。
*特许阶段:*用户代理发送用户名和口令获得下载邮件的特许。(身份认证)
*事务处理阶段:*用户代理取回 文,可对邮件进行某些操作。
? 如:下载并保留,下载并删除等。
更新阶段:邮件服务器删除带有删除标记的 文,结束POP会话。
IMAP
因特 邮件访问协议
功能强
-
在用户机上运行IMAP客户程序,并与邮件服务器上的IMAP服务器程序建立TCP连接。
-
用户在自己的PC机上就可以操作邮件服务器的邮箱,就如同本地操纵一样,是一个联机协议。
如:建立文件夹,查询,移动邮件等。
-
未发出删除命令前,一直保存在邮件服务器。
-
实现复杂
基于Web的电子邮件
用户使用浏览器收发电子邮件。
1995年12月Hotmail 引入该技术。
-
用户代理是普通的浏览器,用户和其远程邮箱之间的通信通过HTTP进行:
发件人使用HTTP 将电子邮件 文从其浏览器发送到其邮件服务器上。
收件人使用HTTP从其邮箱中取一个 文到浏览器。
-
邮件服务之间发送和接收邮件时,使用SMTP
-
用户可以再远程服务器上以层次目录方式组织 文。
DNS
域名系统(Domain Name System):进程主机名到IP地址的转换。
DNS
- 一个分层的DNS服务器实现的分布式数据库
- 允许主机查询分布式数据库的应用层协议
- 采用C/S方式
名词
DNS服务器 | 是运行BIND软件的UNIX机器 |
---|---|
DNS协议 | 运行在UDP之上,使用53 端口 |
DNS | 直接由其他的应用层协议 (包括HTTP、SMTP 和FTP)使用,以将用户提供的主机名解析为IP地址。 |
用户只是间接使用 |
标识主机方式
标识主机的两种方式:
文在 络中传输,使用IP地址。
主机名 | IP地址 |
---|---|
由不定长的字母和数字组成。 | 由4个字节组成,有严格的层次结构 |
便于记忆。路由器处理困难。 | 路由器容易处理。 |
域名解析过程
-
用户主机上运行DNS客户机端。
-
浏览器从URL中解析出主机地址,传给DNS客户机端
-
DNS客户机向DNS服务器发送一个包含主机名的请求
-
DNS客户机收到含有对应主机名的IP地址的回答 文
-
浏览器向该IP地址指定的HTTP服务器发起一个TCP连接。
1234称为域名解析
增加一定时延
DNS服务
-
主机名到IP地址的转换
-
主机别名和规范名的转换:通过DNS可以得到主机别名对应的规范主机名和IP地址
规范名:主机真正的名字。如host1.njust.edu.cn
别名:主机上运行的某种应用服务。如 www.njust.edu.cn 表示Web服务器 -
同一台主机可运行多个应用,多个别名与一台主机联系。如 ftp.njust.edu.cn 表示FTP服务器
-
邮件服务器别名和规范名转换
-
负载均衡:Web服务器
DNS查询方式
迭代查询
被查询服务器返回域名解析服务器的名字,逐个查找。
请求主机向本地DNS服务器发送请求,向连接的DNS服务器查找所需要的IP地址,没有则返回本地域名服务器,再向其他DNS服务器发出请求
P2P应用
位于 络边缘的PC机(对等方peer)互相之间可以直接获取对象
P2P文件分发
从单个源向大量对等方分发文件
C/S与P2P对比
Client-Server | P2P文件分发 |
---|---|
服务器向每个对等方发送该文件的副本,负担重。 | 每个对等方都能够重新分发其所有文件的任何部分,协助服务器分发。 |
当一个对等方收到文件数据时,用其上载能力重新将数据分发给其他对等方。下载同时上载 |
BT协议
BitTorrent协议
Torrent:洪流。参与一个特定文件分发的所有对等方的集合。
- 一个洪流中,对等方彼此下载等长度的文件块。
- 一个对等方最初加入到洪流时,没有文件块,之后累积越来越多。
- 下载文件块同时,也为其他Torrent上载文件块。
- 对等方可以在获得整个文件后离开,也可以留下,继续提供上载。
- 对等方可以任何时候加入到洪流或离开。
tracker追踪器
跟踪洪流中的对等方
- 每个洪流有一个追踪器
- 一个对等方加入洪流时,在追踪器中注册,并周期性地通知洪流,其仍在洪流中。
交换原理
-
一个新对等方加入洪流时,追踪器从中随机选择一些对等方,并发送含有IP地址的对等方列表给新加入的对等方。
-
新对等方依次与列表中的对等方建立TCP连接,连接成功即获取相关文件块;
-
可以从多个对等方获取文件的各个块;
-
下载完成后,组装还原为一个完整的文件。
P2P文件共享
对等方之间共享文件
每个参与的对等方既是内容的消费者也是内容的发布者(下载同时也向其他用户上载)
集中式目录(索引)
源于Napster公司(第一家世界范围内从事MP3对等应用程序)设计。
目录服务器(大型服务器或服务器场):提供目录服务。
收集可共享的对象,建立集中式的动态数据库(对象名称到IP地址的映射)。
属于客户机/服务器与P2P的混合结构。
工作
- 通知:对等方启动时,将其IP地址及可共享内容通知目录服务器。
- 查询内容:用户查询需要共享的对象,获得列表。
如 Alice 查询某首歌。 - 获取内容:来自Bob。
- 更新:当对等方获得新对象或删除对象时,通知目录服务器更新。
实现
对等方先形成一个抽象的逻辑 络(覆盖 络)
通过洪泛查询,找到所需对象:
如,某个对等方Alice想得到一个对象。
特点
- 设计简单。
- 扩展性差。
- “查询 文”在 络中产生很大的流量。
限范围的洪泛查询:
-
在“查询 文”中设置一个对等方计数字段,并给定一个特定值。
-
可能减少对等方数量。
层次覆盖
与Gnutella类似,*无专用服务器,但对等方地位不平等。*如KaZaA。
实现
- 对等方先形成一个层次的覆盖 络
- 通过查询,找到所需对象。
对等方根据通信关系划分若干组,组成层次结构。
文章知识点与官方知识档案匹配,可进一步学习相关知识 络技能树支撑应用程序的协议DNS协议22516 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!