2应用层

2017-11-02  本文已影响0人  龟龟51

2.1应用层协议原理

2.1.1网络应用的体系结构

客户机/服务器结构

■服务器

§7*24小时提供服务

§ 永久性访问地址/域名

§ 利用大量服务器实现可扩展性(实现大规模的并发请求)

■客户机

§ 与服务器通信,使用服务器提供的服务

§ 间歇性接入网络

§ 可能使用动态IP地址

§ 不会与其他客户机直接通信

纯P2P结构

v■没有永远在线的服务器

v■任意端系统/节点之间可以直接通讯

v■节点间歇性接入网络

v■节点可能改变IP地址

v■优点: 高度可伸缩

v■缺点: 难于管理

混合结构

2.1.2进程通信

网络应用的基础:进程间通信

v■进程:

§ 主机上运行的程序

v■同一主机上运行的进程之间如何通信?

§ 进程间通信机制

§ 操作系统提供

v■不同主机上运行的进程间如何通信?

§ 消息交换(报文交换)

客户机进程:发起通信的进程

服务器进程:等待通信请求的进程

套接字: Socket

■v进程间通信利用socket发送/接收消息实现

■v类似于寄信

§ 发送方将消息送到门外邮箱

§ 发送方依赖(门外的)传输基础设施将消息传到接收方所在主机,并送到接方的门外

§ 接收方从门外获取消息

■v传输基础设施向进程提供API

§ 传输协议的选择

§ 参数的设置

如何寻址进程?

■不同主机上的进程间通信,那么每个进程必须拥有标识符

■如何寻址主机? ——IP地址

■端口号/Port number

§为主机上每个需要通信的进程分配一个端口号

§HTTP Server: 80

§Mail Server:25

■进程的标识符

§IP地址+端口号

应用层协议

v■网络应用需遵循应用层协议

v■公开协议

§ 由RFC(Request For Comments)定义

§ 允许互操作

§HTTP, SMTP,……

v■私有协议

§ 多数P2P文件共享应用

应用层协议的内容

v■消息的类型(type)

§ 请求消息

§ 响应消息

v■消息的语法(syntax)/格式

§ 消息中有哪些字段(field)?

§ 每个字段如何描述

v■字段的语义(semantics)

§ 字段中信息的含义

■v规则(rules)

§ 进程何时发送/响应消息

§ 进程如何发送/响应消息

2.1.3网络应用的需求与传输层服务

网络应用对传输服务的需求

v■数据丢失(data loss)/可靠性(reliability)

§ 某些网络应用能够容忍一定的数据丢失:网络电话

§ 某些网络应用要求100%可靠的数据传输:文件传输,telnet

v■时间(timing)/延迟(delay)

§ 有些应用只有在延迟足够低时才“有效”

§ 网络电话/网络游戏

v■带宽(bandwidth)

§ 某些应用只有在带宽达到最低要求时才“有效”:网络视频

§ 某些应用能够适应任何带宽——弹性应用:email

Internet提供的传输服务

v■TCP服务

§ 面向连接:客户机/服务器进程间需要建立连接(全双工)

§ 可靠的传输(将底层的不可靠转变为可靠)

§ 流量控制:发送方不会发送速度过快,超过接收方的处理能力

§ 拥塞控制:当网络负载过重时能够限制发送方的发送速度

§ 不提供时间/延迟保障

§ 不提供最小带宽保障

■vUDP服务

§ 无连接

§ 不可靠的数据传输

§ 不提供:

• 可靠性保障

• 流量控制

• 拥塞控制

• 延迟保障

• 带宽保障

2.2Web和HTTP

2.2.1Web应用

Web与HTTP

v■World Wide Web: Tim Berners-Lee

§ 网页

§ 网页互相链接

v■网页(Web Page)包含多个对象(objects)

§ 对象:HTML文件、JPEG图片、视频文件、动态脚本等

§ 基本HTML文件:包含对其他对象引用的链接

v■对象的寻址(addressing)

§URL(Uniform Resoure Locator):统一资源定位器 (RFC1738)

§Scheme(协议)://host(主机域名或ip):port/path端口号

HTTP协议概述

v■万维网应用遵循什么协议? 超文本传输协议(HTTP)

v■超文本传输协议

§HyperText Transfer Protocol

v■C/S结构

§ 客户—Browser:请求、接收、展示Web对象

§ 服务器—Web Server:响应客户的请求,发送对象

v■HTTP版本:

§1.0:RFC 1945

§1.1:RFC 2068

v■使用TCP传输服务

§ 服务器在80端口等待客户的请求

§ 浏览器发起到服务器的TCP连接(创建套接字Socket)

§ 服务器接受来自浏览器的TCP连接

§ 浏览器(HTTP客户端)与Web服务器(HTTP服务器)交换HTTP消息

§ 关闭TCP连接

v■无状态(stateless)

§ 服务器不维护任何有关客户端过去所发请求的信息

注:有状态的协议更复杂:

Ø 需维护状态(历史信息)

Ø 如果客户或服务器失效,会产生状态的不一致,解决这种不一致代价高

2.2.2HTTP连接

HTTP连接的两种类型

v■非持久性连接(Nonpersistent HTTP)

§ 每个TCP连接最多允许传输一个对象

§HTTP 1.0版本使用非持久性连接

v■持久性连接(Persistent HTTP)

§ 每个TCP连接允许传输多个对象

§HTTP 1.1版本默认使用持久性连接

响应时间分析与建模

v■RTT(Round Trip Time)

§ 从客户端发送一个很小的数据包到服务器并返回所经历的时间

v■响应时间(Response time)

§ 发起、建立TCP连接:1个RTT

§ 发送HTTP请求消息到HTTP响应消息的前几个字节到达:1个RTT

§ 响应消息中所含的文件/对象传输时间

§Total=2RTT +文件发送时间

持久性HTTP

v■非持久性连接的问题

§ 每个对象需要2个RTT

§ 操作系统需要为每个TCP连接开销资源(overhead)

§ 浏览器会怎么做?

• 打开多个并行的TCP连接以获取网页所需对象

• 给服务器端造成什么影响?

v■持久性连接

§ 发送响应后,服务器保持TCP连接的打开

§ 后续的HTTP消息可以通过这个连接发送

v■无流水(pipelining)的持久性连接 §

客户端只有收到前一个响应后才发送新的请求

§ 每个被引用的对象耗时1个RTT

v■带有流水机制的持久性连接

§HTTP 1.1的默认选项

§ 客户端只要遇到一个引用对象就尽快发出请求(有引用对象就发出请求)

§ 理想情况下,收到所有的引用对象只需耗时约1个RTT

2.2.3HTTP消息格式

HTTP请求消息

v■HTTP协议有两类消息

§ 请求消息(request)

§ 响应消息(response)

v■请求消息

§ASCII:人直接可读

上传输入的方法

v■POST方法

§ 网页经常需要填写表格(form)

§ 在请求消息的消息体(entity body)中上传客户端的输入

v■URL方法

§ 使用GET方法

§ 输入信息通过request行的URL字段上传

方法的类型

v■HTTP/1.0

§GET§POST§HEAD请Server不要将所请求的对象放入响应消息中

v■HTTP/1.1

§GET, POST, HEAD§PUT将消息体中的文件上传到URL字段所指定的路径

§DELETE删除URL字段所指定的文件

HTTP响应消息

HTTP响应状态代码

v■响应消息的第一行

v■示例

§200 OK请求成功,信息在返回的响应报文中。

§301 Moved Permanently请求的对象已经被永久转移了,新的URL定义在应报文Location:首部行中。客户软件将自动获取新的URL。

§400 Bad Request一个通用差错代码,指示该请求不能被服务器理解。

§404 Not Found被请求的文档不在服务器上。

§505 HTTP Version Not Supported服务器不支持请求报文使用的HTTP协议版本

2.2.4Cookie技术

为什么需要Cookie?

因为HTTP协议是无状态的,很很多应用需要服务器掌握客户端的

状态,如网上购物。

v■Cookie技术

§ 某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。

§RFC6265

v■Cookie的组件

§HTTP响应消息的cookie头部行

§HTTP请求消息的cookie头部行

§ 保存在客户端主机上的cookie文件,由浏览器管理

§Web服务器端的后台数据库

Cookie的作用

v■Cookie能够用于:

§ 身份认证

§ 购物车

§ 推荐

§Web e-mail

§ …….

v■隐私问题

2.2.5Web缓存/代理服务器技术

v■功能

§ 在不访问服务器的前提下满足客户端的HTTP请求。

v■为什么要发明这种技术?

§ 缩短客户请求的响应时间

§ 减少机构/组织的流量

§ 在大范围内(Internet)实现有效的内容分发

v■Web缓存/代理服务器

§ ·用户设定浏览器通过缓存进行Web访问

§ ·浏览器向缓存/代理服务器发送所有的HTTP请求

如果所请求对象在缓存中,缓存返回对象

否则,缓存服务器向原始服务器发送HTTP请求,获取对象,然后返回给客户端并保存该对象

v■缓存既充当客户端,也充当服务器

v■一般由ISP(Internet服务提供商)架设

2.2.6条件性GET方法

v■目标:

§ 如果缓存有最新的版本,则不需要发送请求对象

v■缓存:

§ 在HTTP请求消息中声明所持有版本的日期

§If-modified-since:

v■服务器:

§ 如果缓存的版本是最新的,则响应消息中不包含对象

§HTTP/1.0 304 Not Modified

2.3文本传输协议FTP

FTP使用了两个并行的TCP连接来传输文件,一个是控制连接(control connection ),一个是数据连接(data connection )。控制连接用于在两主机之间传输控制信自、如用户标识、口令、改变远程目录的命令以及“存放(put)”和“获取(get)”文件的命令。数据连接用于实际发送一个文件。因为FTP协议使用一个独立的控制连接,所以我们也称FTP的控制信息是带外( out-of-band)传送的。HTTP协议是在传输文件的同一个TCP连接中发送请求,所以称带内传输。

FTP是以7比特ASCLL格式在控制连接上传送的。常见的命令如下:

USER username:用于向服务器传送用户标识。

PASS paswnrd:用于向服务器发送用户口令

LIST:用于请求服务器回送当前远程目录中的所有文件列表该文件列表。该文件列表是经一个(新建且非持续连接)数据连接传送的,而不是在控制TCP连接上传送。

RETR filename:用于从远程主机当前目录检索(即get)文件。该命令引起远程主

机发起一个数据连接,并经该数据连接发送所请求的文件

STOR filename:月J于在远程主机的当前目录_存放(即put )文件

响应回答如下:

331 Username OK,  Password required(用户名OK,需要口令)

125Data connection already open;  transfer starting(数据连接已经打开,开始传送)

425 Can' t open data connection(无法打开数据连接)。

452 Error writing file(写文件差错)。

2.4Email应用

Email应用的构成

v■Email应用的构成组件

§ 邮件客户端(user agent)

§ 邮件服务器

§SMTP协议(Simple Mail TransferProtocol)

v■邮件客户端

§ 读、写Email消息

§ 与服务器交互,收、发Email消息

§Outlook, Foxmail, Thunderbird

§Web客户端

v■邮件服务器(Mail Server)

§ 邮箱:存储发给该用户的Email

§ 消息队列(message queue):存储等待发送的Email

v■SMTP协议

§ 邮件服务器之间传递消息所使用的协议

§ 客户端:发送消息的服务器

§ 服务器:接收消息的服务器

SMTP协议: RFC 2821

v■使用TCP进行email消息的可靠传输

v■端口25

v■传输过程的三个阶段

§ 握手

§ 消息的传输

§ 关闭

v■命令/响应交互模式

§ 命令(command): ASCII文本

§ 响应(response):状态代码和语句

v■Email消息只能包含7位ASCII码

SMTP协议

v■使用持久性连接

v■要求消息必须由7位ASCII码构成

v■SMTP服务器利用CRLF.CRLF确定消息的结束。

与HTTP对比:

v ■HTTP:拉式(pull)

用户使用HTTP从已装载的Web服务器上拉取这些信息。

v ■SMTP:推式(push)

发送邮件服务器把文件推向接收邮件服务器。

v ■都使用命令/响应交互模式

v ■命令和状态代码都是ASCII码

v ■HTTP:每个对象封装在独立的响应消息中

v ■SMTP:多个对象在由多个部分构成的消息中发送

2.4.2Email消息格式与POP3协议

Email消息格式

v■SMTP:email消息的传输/交换协议

v■RFC 822:文本消息格式标准

§`头部行(header)

To

From

Subject

§`消息体(body)

消息本身

只能是ASCII字符

Email消息格式:多媒体扩展

v■MIME:多媒体邮件扩展RFC 2045, 2056

§ 通过在邮件头部增加额外的行以声明MIME的内容类型

邮件访问协议

v■邮件访问协议:从服务器获取邮件

§`POP: Post Office Protocol [RFC 1939]

认证/授权(客户端ßà服务器)和下载

§` IMAP: Internet Mail Access Protocol [RFC 1730]

更多功能

更加复杂

能够操纵服务器上存储的消息

§` HTTP:163, QQ Mail等。

POP协议

■v“下载并删除”模式

§ 用户如果换了客户端软件,无法重读该邮件

■v“下载并保持”模式:不同客户端都可以保留消息的拷贝

v ■POP3是无状态的

IMAP协议

v■所有消息统一保存在一个地方:服务器

v■允许用户利用文件夹组织消息

v■IMAP支持跨会话(Session)的用户状态:

§ 文件夹的名字

§ 文件夹与消息ID之间的映射等

2.5DNS

2.5.1DNS概述

■DNS:Domain Name System

vInternet上主机/路由器的识别问题

§IP地址

§ 域名:www.hit.edu.cn

v■问题:域名和IP地址之间如何映射?

v■域名解析系统DNS(将域名翻译成IP地址)

§ • 多层命名服务器构成的分布式数据库

§ • 应用层协议:完成名字的解析

Internet核心功能,用应用层协议实现

网络边界复杂

v■DNS服务

§ 域名向IP地址的翻译

§ 主机别名

§ 邮件服务器别名

§ 负载均衡:Web服务器

v■问题:为什么不使用集中式的DNS?

§ 单点失败问题

§ 流量问题

§ 距离问题

§ 维护性问题

分布式层次式数据库

DNS根域名服务器

v■本地域名解析服务器无法解析域名时,访问根域名服务器

v■根域名服务器

§ 如果不知道映射,访问权威域名服务器

§ 获得映射

§ 向本地域名服务器返回映射

TLD和权威域名解析服务器

v■顶级域名服务器(TLD, top-level domain):负责com, org, net,edu等顶级域名和国家顶级域名,例如cn, uk, fr等

§Network Solutions维护com顶级域名服务器

§Educause维护edu顶级域名服务器

v■权威(Authoritative)域名服务器:组织的域名解析服务器,提供组织内部服务器的解析服务

§ 组织负责维护

§ 服务提供商负责维护

本地域名解析服务器

v ■不严格属于层级体系

v ■每个ISP有一个本地域名服务器

§ 默认域名解析服务器

v■当主机进行DNS查询时,查询被发送到本地域名服务器

§ 作为代理(proxy),将查询转发给(层级式)域名解析服务器系统

DNS记录缓存和更新

v■只要域名解析服务器获得域名—IP映射,即缓存这一映射

§ 一段时间过后,缓存条目失效(删除)

§ 本地域名服务器一般会缓存顶级域名服务器的映射

• 因此根域名服务器不经常被访问

v ■记录的更新/通知机制

§RFC 2136

§Dynamic Updates in the Domain Name System (DNS UPDATE)

2.5.2DNS记录和消息格式

DNS记录

v资源记录(RR, resource records)

RR format: (name, value, type, ttl)

v■Type=A

§Name:主机域名

§Value: IP地址

v■Type=NS

§Name:域(edu.cn)

§Value:该域权威域名解析服务器的主机域名

v■Type=CNAME

§Name:某一真实域名的别名

•www.ibm.com–servereast.backup2.ibm.com

§Value:真实域名

v■Type=MX

§Value是与name相对应的邮件服务器

DNS协议与消息

v■DNS协议:

§ 查询(query)和回复(reply消息)

§ 消息格式相同

v■消息头部

§Identification: 16位查询编号,回复使用相同的编号

§flags

• 查询或回复

• 期望递归

• 递归可用

• 权威回答

2.6P2P应用

2.6.1P2P应用:原理与文件分发

纯P2P架构

v■Peer-to-peer

v■没有服务器

v■任意端系统之间直接通信

v■节点阶段性接入Internet

v■节点可能更换IP地址

文件分发:BitTorrent

v■文件划分为256KB的chunk

v■节点加入torrent

§ 没有chunk,但是会逐渐积累

§ 向tracker注册以获得节点清单,与某些节点(“邻居”)建立连接

v■下载的同时,节点需要向其他节点上传chunk

v ■节点可能加入或离开

v■一旦节点获得完整的文件,它可能(自私地)离开或(无私地)留下

v ■获取chunk

§ • 给定任一时刻,不同的节点持有文件的不同chunk集合

§ • 节点(Alice)定期查询每个邻居所持有的chunk列表

§ • 节点发送请求,请求获取缺失的chunk

稀缺优先

v ■发送chunk: tit-for-tat

§ •Alice向4个邻居发送chunk:正在向其发送Chunk,速率最快的4个

每10秒重新评估top 4

§ • 每30秒随机选择一个其他节点,向其发送chunk

新选择节点可能加入top 4

“optimistically unchoke”

上传速率高,则能够找到更好的交易伙伴,从而更快地获取文件。

2.6.2P2P应用:索引技术

P2P:搜索信息

v■P2P系统的索引:信息到节点位置(IP地址+端口号)的映射

v■文件共享(电驴)

§ 利用索引动态跟踪节点所共享的文件的位置

§ 节点需要告诉索引它拥有哪些文件

§ 节点搜索索引,从而获知能够得到哪些文件

v■即时消息(QQ)

§ 索引负责将用户名映射到位置

§ 当用户开启IM应用时,需要通知索引它的位置

§ 节点检索索引,确定用户的IP地址

集中式索引

vNapster最早采用这种设计

§1)节点加入时,通知中央服务器:

IP地址

内容

§2) Alice查找“Hey Jude”

§3) Alice从Bob处请求文件

内容和文件传输是分布式的,但是内容定位是高度集中式的

集中式索引的问题

v单点失效问题

v性能瓶颈

v版权问题

洪泛式查询: Query flooding

v■完全分布式架构

v■Gnutella采用这种架构

v■每个节点对它共享的文件进行索引,且只对它共享的文

件进行索引

覆盖网络(overlay network): Graph

v■节点X与Y之间如果有TCP连接,那么构成一个边

v■所有的活动节点和边构成覆盖网络

v■边:虚拟链路

v■节点一般邻居数少于10个

过程

■ 查询消息通过已有的TCP连接发送

v■节点转发查询消息

v■如果查询命中,则利用反向路径发回查询节点

层次式覆盖网络

v■介于集中式索引和洪泛查询之间的方法

v■每个节点或者是一个超级节点,或者被分配一个超级节点

§ 节点和超级节点间维持TCP连接

§ 某些超级节点对之间维持TCP连接

v■超级节点负责跟踪子节点的内容

nَ_���/

上一篇下一篇

猜你喜欢

热点阅读