1 网络应用的体系结构

1.1 客户机/服务器结构(Client-Server   CS)

1.1.1 特点

  服务器:

    不间断提供服务

    永久性访问地址/域名

    利用大量的服务器实现可扩展性

  客户机:

    和服务器进行通信

    间歇性接入网络

    可以使用动态ip地址

    不会和其它客户机直接通信

 

1.1.2 实例

  最常见的就是Web

 

1.2 点对点结构(Peer-to-peer   P2P)

1.2.1 特点

    没有永远在线的服务器

    任意端系统/节点之间可以直接通信

    节点间歇性接入网络

    节点可以改变ip地址

    高度可伸缩

    难以管理

 

1.2.2 实例

  百度贴吧

  迅雷

 

1.3 混合结构

1.3.1 特点

  将两者模式混合起来使用

 

1.3.2 实例

  Napster:

    文件传输采用P2P结构

    文件搜索采用C/S结构

      每个节点向中央服务器登记自己的内容

      每个节点向中央服务器提交查询请求查找

  

 

2 网络应用的基础:进程间通信

2.1 进程

  主机上运行的程序

 

2.2 同一主机上运行的进程通信

  进程间的通信机制,由操作系统提供

 

2.3 不同主机上进程通信依靠socket(套接字)

  进程间的通信通过socket发送/接收消息。

  所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议栈进行交互的接口

 

2.4 怎么能够找到目标进程(寻址)

  不同主机上的进程进行通信,每个进程必须拥有标识符:IP+端口

  寻找主机:IP地址

  寻找主机上进程:端口

 

3 应用层协议

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

 

3.1 公开协议

  由RFC(Request For Comments)定义

  

  大家共同遵循这些协议,那么大家可以互通

 

3.2  私有协议

  很多应用由于各种原因,需要自己的私有协议,如某些P2P文件共享应用

 

3.3 应用层协议的内容

3.3.1 消息的类型

  请求消息

  响应消息

 

3.3.2 消息的语法格式

3.3.3 消息的语义

3.3.4 规则

  进程何时、如何发送和响应。下面是http协议的图示。

 

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

4.1 数据可靠性

  某些网络应用能够容忍一定的数据丢失,比如视频

  某些网络应用要求100%的数据正确,比如文件传输

 

4.2 实时性(延迟)

  有些应用只有在延迟足够低才好用,比如网络电话,网络游戏

 

4.3 带宽

  有些应用只有在带宽足够时才好用,比如视频

  某些应用能够适应任何带宽-------弹性应用,如email

 

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

 

5 Internet提供的传输服务

  Internet提供了TCP服务和UDP服务

 

 

6 典型网络应用使用的应用层协议