网络应用的体系结构
1、客户机/服务器(Client-Server, C/S)
服务器:
- 7*24小时提供服务
- 永久访问地址/域名
- 利用大量服务器实现可拓展性
客户机:
- 与服务器通信,使用服务器提供的服务
- 间歇性接入网络
- 可能使用动态IP地址
- 不会与其他客户机直接通信
例如:Web服务
2、点对点结构(Peer-to-peer,P2P)
- 没有永远在线的服务器
- 任意端系统/节点之间可以直接通信
- 节点间歇性接入网络
- 节点可能改变IP地址
- 缺点:难于管理
- 优点:高度可伸缩
3、混合结构(Hybrid)
Napster
- 文件传输使用P2P结构
- 文件的搜索采用C/S结构——集中式
每个节点向中央服务器登记自己的内容
每个节点向中央服务器提交查询请求,查找感兴趣的内容
网络应用的进程间通信
进程:
主机上运行的程序
客户机进程:
发起通信的进程
服务器进程:
等待通信请求的进程
注意:采用P2P架构的应用同样存在客户机进程/服务器进程之分
同一主机上运行的进程:
- 进程间通信机制
- 操作系统提供
不同主机上运行的进程:
- 消息交换
套接字:Socket
- 进程间通信利用scoket发送/接收消息实现
- 类似于寄信
- 发送方将消息送到门外邮箱
- 发送方依赖(门外的)传输基础设施将消息传到接收方所在主机,并送到接收方的门外
- 接收方从门外获取消息
传输基础设施向进程提供API
- 传输协议的选择
- 参数的设置
如何寻址进程?
- 不同主机上的进程间通信,那么每个进程必须拥有标识符
- 如何寻址主机?——IP地址
- 主机有了IP地址之后,并不足以定位进程,因为同一主机上可能同时有多个进程需要通信
端口号
- 为主机上每个需要通信的进程分配一个端口号
- HTTP Server:80
- Mail Server:25
进程的标识符
IP地址+端口号
应用层协议
- 网络应用需遵循应用层协议
- 公开协议
由RFC(Request For Comments)定义
允许互操作
HTTP,SMTP,…… - 私有协议
多数P2P文件共享应用
应用层协议的内容
- 消息的类型(type)
请求消息
响应消息 - 消息的语法(syntax)格式
消息中有哪些字段?
每个字段如何描述 - 字段的语义(semantics)
字段中信息的含义 - 规则(rules)
进程何时发送/响应消息
网络应用对传输服务的需求
- 数据丢失/可靠性
某些网络应用能容忍一定的数据丢失:网络电话
某些网络应用要求100%可靠的数据传输:文件传输,telnet - 时间延迟
有些应用在延迟足够低时才“有效”
网络电话/网络游戏 - 带宽(bandwidth)
某些应用只有在带宽达到最低要求时才“有效”:网络视频
某些应用能够适应任何带宽——弹性应用:email
Internet提供的传输服务