文章目录
1 网络应用体系结构
- 网络应用有哪些特点?
(1)与单机应用有哪些本质性的不同?
(2)网络应用应采取什么样的体系结构? - 网络应用的体系结构
(1)客户机/服务器结构(Client-Server,C/S)
(2)点对点结构(Peer-to-peer,P2P)
(3)混合结构(Hybrid) - 客户机/服务器结构
(1)服务器
|——7*24小时不间断提供服务
|——永久性访问地址/域名
|——利用大量服务器实现可拓展性
(2)客户机
|——与服务器通信,使用服务器提供的服务
|——间歇性接入网络
|——可能使用动态的IP地址
|——不会与其他客户机直接通信
(3)例子:Web
- 纯P2P结构
(1)没有永远在线的服务器
(2)任意端系统/节点之间可以直接通讯
(3)节点间歇性接入网络
(4)节点可能改变IP地址
(5)优点:高度可伸缩
(6)缺点:难于管理 - 混合结构
(1)能否将两种结构混合在一起使用?
(2)混合能够利用两者的优点同时规避两者的缺点吗?
(3)Napster
|——文件传输使用P2P结构
|——文件的搜索采用C/S结构——集中式
|————每个节点向中央服务器登记自己的内容
|————每个节点向中央服务器提交查询请求,查找感兴趣的内容 - 思考题
(1)为每种体系结构找出5种以上的网络应用。
(2)从多个方面/角度对比三种体系结构的优缺点。
2 网络应用进程通信
- 网络应用的基础:进程间通信
(1)进程:主机上运行的程序。
(2)同一主机上运行的进程之间如何通信?
|——进程间通信机制
|——操作系统提供
(3)不同主机上运行的进程间如何通信?
|——消息交换
(4)客户机进程:发起通信的进程
(5)服务器进程:等待通信请求的进程
(6)采用P2P架构的应用是否存在客户机进程/服务器进程之分?存在,当一台主机作为接收方时,它就运行着客户机进程,而作为发送方的主机就运行着服务器进程。 - 套接字:Socket
(1)进程间通信利用socket发送/接收消息实现
(2)类似于寄信
|——发送方将消息送到门外邮箱
|——发送方依赖(门外的)传输基础设施将消息传到接收方所在主机,并送到接收方的门外
|——接收方从门外获取消息
(3)传输基础设施向进程提供API
|——传输协议的选择
|——参数的设置 - 如何寻址进程?
(1)不同主机上的进程间通信,那么每个进程必须拥有标识符
(2)如何寻址主机?——IP地址
|——Q:主机有了IP地址后,是否足以定位进程?
|——A:否。同一主机上可能同时有多个进程需要通信。
(3)端口号/Port number
|——为主机上每个需要通信的进程分配一个端口号
|——HTTP Server:80
|——Mail Server:25
(4)进程的标识符
|——IP+端口号 - 应用层协议
(1)网络应用需要遵循应用层协议
(2)公开协议
|——由RFC(Request For Comments)定义
|——允许互操作
|——HTTP,SMTP,……
(3)私有协议
|——多数P2P文件共享应用 - 应用层协议的内容
(1)消息的类型(type)
|——请求消息
|——响应消息
(2)消息的语法(synatx)/格式
|——消息中有哪些字段(field)?
|——每个字段如何描述
(3)字段的语义(semantics)
|——字段中信息的含义
(4)规则(rules)
|——进程何时发送/响应消息
|——进程如何发送/响应消息
3 网络应用需求
- 网络应用对传输服务的需求
(1)数据丢失(data loss)/可靠性(reliability)
|——某些网络应用能够容忍一定的数据丢失:网络电话
|——某些网络应用要求100%可靠的数据传输:文件传输,telnet
(2)时间(timing)/延迟(delay)
|——有些应用只有在延迟足够低时才“有效”
|——网络电话/网络游戏
(3)带宽(bandwidth)
|——某些应用只有在带宽达到最低要求时才“有效”:网络视频
|——某些应用能够适应任何带宽——弹性应用:email - 典型网络应用对传输服务的需求
- Internet提供的传输服务
(1)TCP服务
|——面向连接:客户机/服务器进程间需要建立连接
|——可靠的传输
|——流量控制:发送方不会发送速度过快,超过接收方的处理能力
|——拥塞控制:当网络负载过重时能够限制发送方的发送速度
|——不提供时间/延迟保障
|——不提供最小带宽保障
(2)UDP服务
|——无连接
|——不可靠数据传输
|——不提供:可靠性保障、流量控制、拥塞控制、延迟保障、带宽保障 - 典型网络应用所使用的传输层服务
- 课后练习
(1)盘点你计算机上的所有网络应用,制作一个清单,包括网络应用的名字、功能、协议等。
(2)基于上述清单,制作表格,分析这些网络应用对传输服务的需求。
(3)分析这些网络应用所使用的传输服务是TCP还是UDP。