版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tryandfight/article/details/82384743
这段时间开学浪费了不少时间,现在继续更新!!!
网络应用的体系结构
- 客户机/服务器结构(Client-Server,C/S),如浏览器
- 点对点结构(Peer-to-peer,P2P),如文件共享
- 混合结构(Hybrid)
客户机/服务器结构
服 务器
- 7*24小时提供服务
- 永久性访问地址/域名
- 利用大量服务器实现可扩展性
客户机
- 与服务器通信,使用服务器提供的服务
- 间歇性接入网络
- 可能使用动态IP地址
- 不会与其他客户机直接通信
例子
Web
纯P2P结构
没有永远在线的服务器
任意端系统/节点之间可以直接通讯
节点间歇性接入网络
节点可能改变IP地址
扫描二维码关注公众号,回复: 3365368 查看本文章
优点:高度可伸缩
缺点:难于管理,实现复杂
混合结构
Q:能否混合使用?能否取优且去缺?
A:Napster。
- 文件传输使用P2P结构
- 文件的搜索采用C/S结构——集中式
- 每个节点向中央服务器登记自己的内容
- 每个节点向中央服务器提交查询请求,查找兴趣内容
提供者对中央服务器进行报告,利用者对中央服务器进行查询,然后两者之间使用P2P传输文件
思考
Q:每种体系结构找出5种以上的网络应用
A:
P2P
C/S结构
- 网络游戏
- 淘宝
Q:三种体系结构的优缺点
A:C/S在安全性能上好,实现多层认证也不难,只有一层交互响应速度也快,不过维护成本比较高。
P2P传输过程不需要经过中转或代理,传输速度快,但是安全性不能得到保障。
网络应用进程通信
所谓进程就是主机上运行的程序,同一主机
上运行的进程之间的通信是使用操作系统提供的进程间通信机制
,而不同主机
上的进程通信是使用消息交换
,会有客户机进程和服务器进程
,P2P也是有客户机进程和服务器进程之分(P2P也需要消息交换)
Socket
进程间通信利用socket发送/接收消息实现
类似于寄信
- 发送方将消息送到门外邮箱
- 发送方依赖(门外的)传输基础设备间消息传到接收方所在的主机,并送到接收方的门外
- 接收方从门外获取消息
传输基础设施向进程提供API(操作系统提供的用于网络编程的API)
- 传输协议的选择
- 参数的设置
寻址进程
不同主机上的进程间通信,那么每个进程必须拥有标识符
通过IP地址
寻址主机,再通过端口号
寻址进程,进程的标识符就是IP地址+端口号
应用层协议
网络应用需遵循应用层协议
公开协议
- 由RFC(Requets For Comments)定义
- 允许互操作(遵循同一协议之间可以互相操作)
私有协议
- 多数P2P文件共享应用
应用层协议的内容
- 消息的类型
- 请求消息
- 响应消息
- 消息的语法/格式
- 字段
- 字段的描述
- 字段的语义
- 字段中消息的含义
- 规则
- 进程何时和如何发送/响应消息
网络应用对传输服务的需求
数据丢失/可靠性
- 某些网络应用能够容忍一定的数据丢失:网络电话
- 某些网络应用要求100%可靠的数据传输:文件传输、telnet
时间/延迟
- 有些应用只有在延迟足够低时才“有效”
- 网络电话/网络游戏
带宽
- 某些应用只有在带宽达到最低要求时才“有效”:网络视频
- 某些应用能够适应任何带宽——弹性应用:email
Internet提供的传输服务
TCP服务
- 面向连接:客户机/服务器进程间需要建立连接
- 可靠的连接
- 流量控制:发送方不会发送速度过快,超过接收方的处理能力
- 拥塞控制:当网络负载过重时能够限制发送方的发送速度
- 不提供时间/延迟保障
- 不提供最小带宽保障
UDP服务
- 无连接
- 不可靠的数据传输
- 不提供:
- 可靠性保障
- 流量控制
- 拥塞控制
- 延迟保障
- 带宽保障
Q:为什么需要UDP?
A:因为UDP把网络层的基本服务给穿透过来了,提供给了应用层很多发挥空间,给了掌控数据传输的能力
对电脑上一些网络应用的协议功能总结
网络应用 | 功能 | 协议 |
---|---|---|
TIM(QQ) | 聊天消息通信 | UDP为主、TCP为辅 |
迅雷 | 下载 | TCP |
微信 | 聊天功能 | 参考微软的 ActiveSync 协议,分为长连接和短连接,TCP |