网络应用体系结构
我们每天都会使用各种各样的网络应用,比如 QQ、email、百度、迅雷、支付宝、微信等等
网络应用的特点——与单机应用有何不同——这些不同造成网络应用应该有怎样的结构?
1 需要网络的连接,并且无法用一台主机完成
2.在端系统主机上有程序运行,在互联网上也会有数据和程序运行并且会涉及数据传输和交换
- 网络应用的体系结构:
-
客户机/服务器结构(Client-Server, C/S)
-
服务器:
- 7*24小时提供服务、
- 永久性访问地址/域名、
- 利用大量服务器实现可扩展性
-
客户机:
- 与服务器通信, 使用服务器提供的服务
- 间歇性接入网络
- 可能使用动态IP地址
- 不会与其他客户机直接通信
-
服务器:
-
点对点结构(Peer-to-peer, P2P)
- 没有永远在线的服务器
- 任意端系统/节点之间可以直接通讯
- 节点间歇性接入网络
- 节点可能改变IP地址
- 优点:高度可伸缩;缺点:难于管理
-
混合结构(Hybrid)
- 例子:Napster
- 文件传输使用P2P结构
- 文件的搜索采用C/S结构——集中式
- 例子:Napster
-
客户机/服务器结构(Client-Server, C/S)
进程通信、Socket编程
网络应用的基础:进程 间通信
进程:主机上运行的程序
同一主机上运行的进程之间如何通信?——进程间通信机制、操作系统提供
不同主机上运行的进程间如何通信?——消息交换
- 客户机进程:发起通信的进程
- 服务器进程:等待通信请求的进程
进程间通信利用 socket发送/接收消息 实现
消息交换何如寻址?
不同主机上的进程间通信,那么每个进程必须拥有标识符(IP+端口号)
- 如何寻址主机?——IP地址
- 主机上的不同进程?——端口号/Port number
具体消息交换如何实现?——应用层协议
- 网络应用需遵循应用层协议(公开协议——HTTP、SMTP;私有协议——多数P2P文件共享)
- 应用层协议的内容:
- 消息的类型(type)
-
消息的语法(syntax)/格式
- 消息中有哪些字段(field)?
- 每个字段如何描述
- 字段的语义(semantics)
-
规则(rules)
- 进程何时发送/响应消息
- 进程如何发送/响应消息
网络应用服务需求与Internet传输层服务模型
- 网络应用对传输服务的要求:
-
数据丢失(data loss)/可靠性(reliability)
- 某些网络应用能够容忍一定的数据丢失:网络电话
- 某些网络应用要求100%可靠的数据传输:文件传输,telnet
-
时间(timing)/延迟(delay)
- 有些应用只有在延迟足够低时才“有效
- 网络电话/网络游戏
-
带宽(bandwidth)
- 某些应用只有在带宽达到最低要求时才“有效”:网络视频
- 某些应用能够适应任何带宽——弹性应用:email
-
数据丢失(data loss)/可靠性(reliability)
-
Internet提供的传输服务
-
TCP服务 与 UDP服务
典型网络应用所使用的传输层服务: 应用层和传输层
-
TCP服务 与 UDP服务
思考题:
- 盘点你计算机上的所有网络应用,制作一个清单,包括网络应用的名字、功能、协议等
- 基于上述清单,制作表格,分析这些网络应用对传输服务的需求
- 分析这些网络应用所使用的传输服务是TCP还是UDP
—————————————————————————————————————————————
由于本人水平有限及时间仓促或疏忽大意以及其他的一些原因,文中难免会存在一些错误,如若有发现不正确的地方,还请大佬们评论或私信告之于我,以便及时纠错