1、应用层
Q:网络应用与单机应用有哪些本质上的不同
A:主要有以下几点
Q:网络应用应该采取什么样的体系结构
A:
服务器/客户机(C/S)
服务器
- 7*24小时提供服务
- 永久性访问地址/域名
-
客户机
与服务器通信,使用服务器提供的服务
- 间歇性接入网络
- 可能使用动态IP地址
-
P2P
例如:文件共享
没有永远在线的服务器
- 任意端系统之间可以直接通讯
- 节点间歇性接入网络
- 节点可能改变IP
相对于C/S架构,是高度可伸缩的,但是难于管理
混合结构
将两种结构混合在一起使用
2、网络应用进程通信
Q:同一主机上运行的进程如何进行通讯
A:
- 进程间通信机制
- 操作系统提供通讯
Q:不同主机上的进程如何进行通信
A:
- 消息交换
套接字:Socket
进程间的通信就是使用套接字(Socket)发送/接收消息进行实现
如何寻址进程
不同主机上的进程间通信,必须让每一个进程拥有标识符
Q:主机有了IP后,是否可以定位进程
A:否,同一台主机上肯呢个同时有多个进程需要通信
为了解决寻址,为每一个进程分配端口号
应用层协议
网络应用需要遵循应用层协议
公开协议
- 有RFC(Request For Comments)定义(RFC)
- 允许互操作
- HTTP SMTP ……
私有协议
- 多数P2P文件共享应用
应用层协议内容
- 消息类型
- 请求消息
- 响应消息
- 消息语法(Syntax)/格式
- 消息中有哪些字段
- 每个字段如何进行描述
- 字段的语义(Semantics)
- 字段中信息的含义
- 规则(Rule)
- 进程何时发送/响应 消息
3、网络应用的需求与传输层服务
网络应用对传输服务的需求
数据丢失(Data Lose)/可靠性
- 某些应用可以允许(网络电话)
- 某些应用不能容忍(文件传输 telnet)
时间/延迟(Time Sensitive)
- 有些应用只有在延迟足够低的情况下才能“有效”
- 网络电话,网络游戏
带宽(BandWidth)
- 某些应用只有在贷款达到最低要求时才“有效”:网络视频
- 某些应用能够适应任何带宽——弹性应用:电子邮件
Internet 提供的传输服务
TCP服务
4、web应用与HTTP
www:world wide web
网页
网页互联
URL: Schema://host:port/path
Q:HTTP使用TCP传输服务
A:
HTTP连接
非持久性连接
- 每个TCP连接最多运行传输一个对象
- HTTP1.0版本开始使用
- 实际过程:

响应时间
RTT:从客户端发送一个很小的数据包到服务器并返回所经历的时间
问题
- 每个对象需要2个RTT
- 操作系统需要为每一个TCP连接开销资源
-
持久性链接
每个TCP连接运行传输多个对象
- HTTP1.1版本默认使用持久性连接
- 发送响应后,服务器保持TCP连接的打开
- 后续的HTTP消息可以通过该连接继续发送
无流水的持久性连接
客户端只有是个厚道前一个响应后才会发送新的请求
每个被引用的对象耗时1个RTT
有流水的持久性连接
HTTP1.1的默认选型
客户端只要遇到一个引用对象就尽快发出请求
理想情况下,收到所有的引用对象只需要消耗约1个RTT
HTTP请求消息
请求消息
- 请求行(GET/POST)
- 头部行(Host/User-agent/connection/Accept-language)
HTTP响应消息
响应消息
Cookie技术
Q:为什么需要Cookie
A:很多应用需要服务器掌握客户端的状态,某些网站为了辨别用户身份,进行session跟踪而存储在客户端上的数据(加密存储)
Cookie组件
- HTTP响应消息的cookie头部行
- HTTP请求消息的cookie头部行
- 保存在客户端的cookie文件
- web服务器端的数据库
Cookie作用
- 身份认证
- 购物车
- 推荐
- web email
cookie会造成隐私问题
web缓存/代理服务器技术
在不访问服务器的前提下满足客户端的HTTP请求
Q:为什么使用这种技术
A:
- 缩短客户请求的响应时间
- 减少机构的流量
- 在大范围内实现内容分发

如果所请求的对象存在于缓存服务器中,则直接返回对象,否则请求原始服务器
缓存即充当客户端,也充当服务器,一般由ISP进行架设(例如CDN加速)
Email应用
email应用
构成
- 邮件客服端
- 读/写邮件
- 邮件服务端
- 存储邮件
- 消息队列:存储等待发送的Email
- SMTP协议
- 邮件应用之间的协议
- POP3协议
- IMAP协议
DNS应用
DNS Domain Name System
Internet上主机/路由器的识别问题
- IP地址
- 域名:www.baidu.com
Q:域名和IP如何映射
A:
DNS服务
- 域名向P地址的翻译
- 主机别名
- 邮件服务器别买
- 负载均衡:Web服务器
Q:为什么不使用集中式的DNS
A:
- 单点失败问题
- 流量问题
- 距离问题
- 维护性问题

