网络应用的体系结构:
问:网络应用有哪些特点?与单机应用有哪些本质的不同?
答:
问:网络应用应采取什么样的体系结构?
答: (1)客户机/服务器结构(Client-Server,C/S);
(2)点对点结构(Peer-to-Peer,P2P);
(3)混合结构;
客户机/服务器结构:
服务器特点:
- 7*24小时提供服务;
- 永久性访问地址/域名;
- 利用大量服务器实现可扩展性;
客户端特点:
- 与服务器通信,使用服务器提供的服务;
- 间歇性的接入网络;
- 可能使用动态IP地址;
- 不会与其他客户机直接通信
典型例子:Web应用
客户机:运行浏览器软件。服务器:运行web服务器软件。(如图2-2-1)
纯P2P结构:
- 没有永远在线的服务器;
- 任意端系统/节点之间可以直接通讯;
- 节点间歇性接入网络;
- 节点可能改变IP地址;
“P2P结构”相比于“客服机/服务器”结构,优点是:高度可伸缩,缺点是:实现比较复杂,难于管理。
混合结构
能否将两种结构混合在一起使用?混合能够利用两者的优点同时规避两者的缺点吗?
典型例子:Napster(如图2-2-2)
-
文件传输使用P2P结构;
-
文件的搜索使用C/S结构:
* 每个节点向中央服务器登记自己的内容;
* 每个节点向中央服务器提交查询请求,查找感兴趣的内容。
思考题: -
为每种体系结构找出五种以上的网络应用
CS:手机应用商店,云服务/云存储,微信读书,美团,QQ音乐,在线词典
P2P:email,
混合:微信,QQ,迅雷,钉钉,大力搜索,网络游戏比如王者荣耀等; -
从多个方面/角度对比三种体系结构的优缺点
网络应用进程通信:
引言
进程是什么?
- 主机上运行的程序
同一主机上运行的进程之间如何通信?
- 进程间通信机制
- 操作系统提供
不同主机上运行的进程间如何通信?
- 消息交换/报文交换
问:客户机进程:发起通信的进程;服务器进程:等待通信请求的进程。采用P2P架构的应用是否存在客户机进程/服务器进程之分?
Socket:套接字
不同主机进程之间相互通信,实际上依靠的是一个叫做套接字(socket)的机制,这是操作系统提供的一种抽象,它把网络的硬件基础设施和网络协议栈(比如链路层、网络层、传输层)给抽象了。socket使用下层网络硬件基础设施和协议栈提供的服务,对其进行抽象封装,并提供一套API,供进程通信使用。
- 进程间通信利用socket发送/接收消息
- 类似于寄信:
* 发送方将消息送到门外邮箱;
* 发送方依赖(门外的)传输基础设施将消息传到接收方所在主机,并送到接收方的门外(接收方主机的socket);
* 接收方从门(socket)外获取消息; - 传输基础设施向进程提供API(关于网络编程的API)
* 传输协议的选择;
* 参数的设置;
如何寻址进程?
不同主机上的进程间通信,每个进程必须有标识符。
IP地址可以寻址主机,Port(端口号)可以在主机上寻址进程。
进程标识符 = IP+Port。
应用层协议
具体的消息交换怎么做?消息是什么样的格式?应该用什么样的顺序来交换?这些需要依靠应用层协议,进行通信的进程需要遵循相同的应用层协议。
- 网络应用需遵循应用层协议。
- 公开协议
* 由RFC(Request For Comments)定义
* 允许互操作
* 例如:HTTP,SMTP,… - 私有协议
* 多数P2P文件共享应用,考虑到商业竞争,使用自己设计的私有协议。
应用层协议的内容
消息的类型(type)
- 请求消息
- 响应消息
消息的语法(syntax)/格式
- 消息中有哪些字段?
- 每个字段如何描述?
字段的语义(semantics)
- 字段中信息的含义
规则(rules)
- 进程何时发送/响应消息
网络应用的需求与传输层服务
网络应用对传输服务的需求
1、数据丢失(data loss)/可靠性(reliability)
* 某些网络应用能够容忍一定的数据丢失:网络电话
* 某些网络应用要求100%可靠的数据传输:文件传输等
2、时间(timing)/延迟(delay)
* 有些应用只有在延迟足够低时才“有效” ,例如网络电话/网络游戏等
3、带宽(bandwidth)
* 某些应用只有在带宽达到最低要求时才有效,例如网络电视
* 某些应用能够适应任何带宽—弹性应用,例如email
Internet提供的传输服务
TCP服务 | UDP服务 |
---|---|
面向连接:客服机/服务器进程间需要建立连接 | 无连接 |
可靠的传输:把底层的不可靠变为可靠,不丢包、不乱序 | 不提供可靠的传输 |
流量控制: 发送方不会发送速度过快,超过接收方的处理能力 | 不提供流量控制 |
拥塞控制:当网络负载过重时能够限制发送方的发送速度 | 不提供拥塞控制 |
不提供时间/延迟保障 | 不提供延迟保障 |
不提供最小带宽保障 | 不提供最小带宽保障 |