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