美文网首页
2应用层

2应用层

作者: 龟龟51 | 来源:发表于2017-11-02 14:47 被阅读0次

    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َ_���/

    相关文章

      网友评论

          本文标题:2应用层

          本文链接:https://www.haomeiwen.com/subject/gtgopxtx.html