网络应用的体系结构
一些常用的网络应用:百度搜索,QQ,email,迅雷,支付宝,微信,百度云,淘宝网,网易
网络应用的特点
网络应用与单机应用的本质区别:网络应用需要网络的基础环境,有一部分软件运行在自己的计算机上(如游览器),还有一部分软件以及数据信息等等运行在互联网的某些硬件服务器上,这两部分软件会相互交互,才构成一个网络应用
网络应用的体系结构
客户机/服务器结构(Client-Sever,C-S)
点对点结构(Peer-to-peer,P2P)
混合结构(Hybrid)
客户机/服务器结构
服务器的特点
- 7*24小时提供服务
- 永久性访问地址/域名
- 利用大量服务器实现可扩展性(处理大量用户的并发请求)
客户机的特点
- 与服务器通信,使用服务器提供的服务
- 间歇性接入网络
- 可能使用动态IP地址
- 不会与其他用户直接通信
例子:Web
纯P2P结构
特点:
- 没有永远在线的服务器
- 在任意端系统/节点之间可以直接通讯
- 节点间歇性接入网络
- 结点可能改变IP地址
优点:高度可伸缩(?)
缺点:难于管理
混合结构
将两种结构混合在一起使用,在利用两者的优点的同时规避两者的缺点
Napster
1.文件传输使用P2P结构
2.文件搜索采用C/S结构——集中式
- 每个节点向中央服务器登记自己的内容
- 每个节点向中央服务器提交查询请求,查找感兴趣的内容
思考题:
- 为每种体系结构找出5种以上的网络应用
- 客户端/服务器:酒店的客房登记系统;超市的POS系统;搜索引擎(百度);网络商务(淘宝);百度云;web;电子邮件;telnet
- P2P:文件分发;因特网电话;文件搜索;BT种子分享
- 混合:文件传输使用P2P;文件搜索使用C/S
- 从多方面/角度对比三种体系结构的优缺点
- 客户机/服务器
- 优点:便于管理
- 缺点:处理海量客户机需求时,一台服务机很快就会不堪重负;基础设施密集;通常要为服务器的购买,安装和维护投入大量费用
- P2P
- 优点:客户机间的直接通信使P2P有了强大的自扩展性;对基础设施服务器的依赖最小,投入建设的成本大大减小
- 缺点:难于管理
- 混合
- 优点:
- 缺点:
网络应用进程通信
进程间通信
1.进程:主机上运行的程序
2.同一主机上运行的进程进行通信的方式:操作系统提供进程间的通信机制
3.不同主机上运行的进程进行通信的方式:消息交换(或者说是报文交换)
- 客户端进程:发起通信的进程
- 服务器进程:等待通信请求的进程
4.在P2P架构的应用中,是否存在客户机进程/服务器进程之分?
a;存在,在p2p应用中,它也需要通过消息交换,所以也会有发起通信的进程和等待通信请求的进程
套接字:Scoket
不同主机间进程通信,依靠套接字的机制(这是操作系统提供的一种抽象),它把网络硬件基础设施以及网络协议栈(把链路层,网络层以及传输层抽象为一个Socket)
进程通过套接字这个抽象来使用下层网络协议栈所提供的服务。
1.进程间通信通过Scoket发送接收消息实现
2.类似于寄信
- 发送方将消息送到门外信箱
- 发送方依赖(门外的)传输基础设施将消息传到接收方所在的主机上,并送到接收方的门外
- 接收方从门外获取信息
3.传输基础设施向进程提供API(网络API:Scoket)
- 传输协议的选择
- 参数的设置
寻址进程
消息交换时,消息发出后,底层的传输基础设施如何能正确的把消息送到它想要送到的进程?
1.不同主机上的进程间的通信,那么每个进程必须拥有标识符
2.通过IP地址寻址主机
- Q:主机有了IP地址后,是否足以定位进程?
- A:否。同一主机上可能同时有多个进程需要通信——那么如何区分一台主机上运行的不同进程呢?.
3.端口号/Port number
- 为主机上每个需要通信的进程分配一个端口号
- HTTP Server:80
- Mail Server:25
4.进程的标识符:IP地址+端口号
应用层协议
1.网路应用须遵循应用层协议(但不限于)
2.公开协议()
- 由RFC(Request For Comments)定义
- 目的:允许互操作
- 例子,如:http;smap,……
- RFC文档可供详细了解协议
3.私有协议(为商业应用考虑)
- 多数P2P文件共享应用
4.开发一个新的新的应用时,遵循公开协议或者写一个新的协议都可以。原则上来说:应该尽可能地遵循某种公开协议,因为这样可以获得更多的资源,比如很多的web应用,互联网应用都是构建在http公开协议上的,这是一种好的思路。但如果你发现说现存的协议无法很好地解决你的问题,并且你的需求是切实存在的,那么就可以大胆的设计新协议。
5:应用层协议的内容
- 消息的类型(type):请求消息;相应消息
- 消息的语法(syntax)/格式:消息中字段的种类及描述
- 字段的语义(semantics):字段中信息的含义
- 规则(rules):进程何时发送/响应消息
网络应用的需求与传输层服务
本节问题:
1:不同的应用对消息传输的需求不同,如何衡量、描述这些差异
2:传输层到底为应用层提供什么样的服务?
网络应用对传输服务的主要需求
1.数据丢失(data loss)/可靠性(reliability)
- 某些网络应用能够容忍一定的数据丢失:网络电话,在线看视频
- 某些网络应用要求100%可靠的数据传输:文件传输,telnet,网上银行
2.时间(timing)/延迟(delay)
- 有些应用只有在延迟足够低时才“有效”:如网络电话,网络游戏
3.带宽(bandwidth)
某些应用只有在带宽达到最低要求时才"有效",如网络视频
某些应用能够适应任何带宽——弹性应用:email,文件下载等
4.一些典型网络应用对传输服务的要求
Internet提供的传输服务
1.TCP服务
- 面向连接:客户机/服务器进程间需要建立连接
- 可靠的传输
- 流量控制:发送方不会发送速度过快,超过接收方的处理能力
- 拥塞控制:当网络负载过重时能够限制发送方的发送速度
- 不提供时间/延迟保障
- 不提供最小带宽保障
2.UDP服务
- 无连接
- 不可靠的数据传输
- 不提供可靠性保障;流量控制;拥塞控制延迟保障;带宽保障
- 它什么服务都不提供为何还要使用?它做了一个任何传输层协议都要做的事情,除此之外,它不做任何事情。
- 提供服务如此低级,为何还要使用?它给我们提供了自由,它把网络层的基本服务穿透过来提供给应用层,就给应用层留下了极大的发挥空间,给了我们掌控这个数据传输的能力。
3.一些典型的网络应用所使用的传输层协议
课后练习
- 盘点你计算机上的所有网络应用,制作一个清单,包括网络应用的名字、功能、协议等。
- 基于上述清单,制作表格,分析这些网络应用对传输服务的要求。
- 分析这些网络应用所使用的传输服务是TCP还是UDP.