1、应用层

Q:网络应用与单机应用有哪些本质上的不同
A:主要有以下几点

Q:网络应用应该采取什么样的体系结构
A:

Q:对比优缺点
A:

服务器/客户机(C/S)

服务器

  • 7*24小时提供服务
  • 永久性访问地址/域名
  • 利用大量服务器实现可扩展性

    客户机

  • 与服务器通信,使用服务器提供的服务

  • 间歇性接入网络
  • 可能使用动态IP地址
  • 不会与其他客户机直接通信

    P2P

    例如:文件共享

  • 没有永远在线的服务器

  • 任意端系统之间可以直接通讯
  • 节点间歇性接入网络
  • 节点可能改变IP

相对于C/S架构,是高度可伸缩的,但是难于管理

混合结构

将两种结构混合在一起使用

2、网络应用进程通信

Q:同一主机上运行的进程如何进行通讯
A:

  • 进程间通信机制
  • 操作系统提供通讯

Q:不同主机上的进程如何进行通信
A:

  • 消息交换

套接字:Socket

进程间的通信就是使用套接字(Socket)发送/接收消息进行实现

如何寻址进程

不同主机上的进程间通信,必须让每一个进程拥有标识符
Q:主机有了IP后,是否可以定位进程
A:否,同一台主机上肯呢个同时有多个进程需要通信

为了解决寻址,为每一个进程分配端口号

IP地址加上端口号标识唯一进程
image.png
**

应用层协议

网络应用需要遵循应用层协议
公开协议

  • 有RFC(Request For Comments)定义(RFC
  • 允许互操作
  • HTTP SMTP ……

私有协议

  • 多数P2P文件共享应用

应用层协议内容

  • 消息类型
    • 请求消息
    • 响应消息
  • 消息语法(Syntax)/格式
    • 消息中有哪些字段
    • 每个字段如何进行描述
  • 字段的语义(Semantics)
    • 字段中信息的含义
  • 规则(Rule)
    • 进程何时发送/响应 消息

3、网络应用的需求与传输层服务

网络应用对传输服务的需求

数据丢失(Data Lose)/可靠性

  • 某些应用可以允许(网络电话)
  • 某些应用不能容忍(文件传输 telnet)

时间/延迟(Time Sensitive)

  • 有些应用只有在延迟足够低的情况下才能“有效”
    • 网络电话,网络游戏

带宽(BandWidth)

  • 某些应用只有在贷款达到最低要求时才“有效”:网络视频
  • 某些应用能够适应任何带宽——弹性应用:电子邮件

Internet 提供的传输服务

TCP服务

  • 面向连接
  • 可靠的传输
  • 流量控制
  • 拥塞控制
  • 不提供:

    • 时间/延迟保障
    • 最小带宽保障

      UDP服务

  • 无连接

  • 不可靠的数据传输
  • 不提供:
    • 可靠性保障
    • 流量控制
    • 拥塞控制
    • 延迟保障
    • 带宽保障

4、web应用与HTTP

www:world wide web
网页
网页互联
URL: Schema://host:port/path

Q:HTTP使用TCP传输服务
A:image.png

HTTP连接

非持久性连接

  • 每个TCP连接最多运行传输一个对象
  • HTTP1.0版本开始使用
  • 实际过程:
  • image.png

响应时间

RTT:从客户端发送一个很小的数据包到服务器并返回所经历的时间

问题

  • 每个对象需要2个RTT
  • 操作系统需要为每一个TCP连接开销资源
  • 浏览器会打开多个并行的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:

  • 缩短客户请求的响应时间
  • 减少机构的流量
  • 在大范围内实现内容分发

image.png

如果所请求的对象存在于缓存服务器中,则直接返回对象,否则请求原始服务器
缓存即充当客户端,也充当服务器,一般由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:

  • 单点失败问题
  • 流量问题
  • 距离问题
  • 维护性问题