网络应用和单机应用的区别:单机应用是自治自理的,而网络应用则是多点组成:自己主机上的应用和其他机器(服务器或主机)上的应用一起构成
网络应用体系结构 Client/Server CS结构服务器:长期提供服务,永久性访问地址/域名,利用大量服务器实现可扩展性
客户机:与服务器通信,使用服务器提供的服务器,间歇性接入网络,可能使用动态IP地址,不会与其他客户机直接通信
典型的例子:Web
一个运行与PC上的IE浏览器和一个运行在Mac上的Safari浏览器,都可以向服务器发送HTTP请求
没有永远在线的服务器
任意端点系统/结点之间可以直接通信
结点间歇性接入网络
结点可能改变IP地址
C/S结构与P2P结构相比:
P2P高度可伸缩但是却难以管理
- 文件传输用P2P结构
- 文件搜索才用C/S结构—集中式:每个结点向服务器登记自己的内容每个结点向服务器提交查询请求,查找感兴趣的内容
进程:主机上运行的程序
同一主机上运行的进程之间如何通信?
进程间通信机制,由操作系统提供。
不同主机上运行的进程间如何通信?
报文交换
客户机进程和服务器进程之分:客户机进程是请求数据的进程而服务局进程是返回数据的进程。
Socket进程之间通信实际上是依赖于socket套接字,操作系统提供的一种对协议栈的抽象。
类似于寄信:
发送方将信息送到门外的邮箱
发送方依赖(门外)传输基础设施将消息传到接收方所在主机,并送到接收方门外
接收方从门外获取消息
传输基础设施向进程提供API
传输协议的选择
参数的设置
不同主机上的进程要通信必须拥有自己特定的标识符
如何寻址主机?-----IP地址
如何寻址目标主机上的进程?----IP地址+端口号 (定位范围更精确了)
具体的消息交换怎么做?网络应用需要遵循应用层协议!
应用层协议常见的有HTTP,FTP,SMTP等,他们都由一个公开协议的标准来严格定义:RFC(Request For Comments)
如果要了解一个协议的详细信息,可以去读他的RFC文档。
当然还有一些私有协议:多数P2P文件共享协议
消息的类型:请求消息,响应消息。
消息的语法格式:消息中有哪些字段,每个字段又是如何描述的
字段的语义:字段中信息的含义
规则:进程何时发送/响应消息,如何发送/响应消息
网络应用对传输服务的需求:
数据丢失和可靠性:
- 某些应用可以容忍一定的数据丢失:网络电话
- 某些应用要求百分百可靠的数据传输:文件传输,telnet
时间和延迟
- 有些应用只有在延时够低的时候才有时效
- 网络电话/网络游戏
带宽
- 某些应用只有在带宽达到最低要求时才有效:网络视频
- 某些应用则可以适应任何带宽—弹性应用:email
传输层到底为应用层提供了哪些服务?在Internet中
Internet提供的传输服务:TCP服务,UDP服务基于TCP的应用层协议有:HTTP、FTP、SMTP、TELNET、SSH
基于UDP的应用层协议:DNS、TFTP(简单文件传输协议)、SNMP:简单网络管理协议



