应用层

网络应用体系结构

客户机/服务器

服务器

  • 7*24小时提供服务
  • 永久性访问地址/域名(即IP地址),因为服务器总是打开的,客户总是能够通过向该服务器的IP地址发送分组来与其联系
  • 利用大量服务器实现可扩展性(多用于数据中心)

客户机

  • 与服务器通信,使用服务器提供的服务
  • 间歇性接入网络
  • 可能使用动态IP地址
  • 不会与其他客户机直接进行通信

应用层

P2P

  • 没有永远在线的服务器
  • 任意端系统/节点之间可以直接通讯
  • 节点间歇性接入网络
  • 节点可能改变IP地址

优点:高度可伸缩
缺点:难于管理
应用层

混合结构

结合了客户/服务器模型和P2P模型,如Napster

  • 文件传输使用P2P结构
  • 文件的搜索采用C/S结构——集中式
    每个节点向中央服务器登记自己的内容;
    每个节点向中央服务器提交查询请求,查找感兴趣的内容

应用层

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

进程间通信

进程:主机上运行的程序

  • 客户机进程:发起通信的进程
  • 服务器进程:等待通信请求的进程

同一主机上运行的进程之间通信:进程间通信机制、操作系统提供
不同主机上运行的进程间通信:消息交换

套接字:socket

进程通过一个称为套接字的软件接口向网络发送报文和从网络接收报文。
传输基础设施向进程提供API,包括:传输协议的选择、参数的设置等。

如何寻址进程

通过IP地址对主机进行寻址,通过端口号标识每个需要通信的进程。
进程的标识符:IP地址+端口号。
不同主机上的进程间通信,每个进程必须拥有标识符

应用层协议

网络应用需遵循应用层协议,应用层协议分为公开协议和私有协议。
公开协议:由RFC定义,允许互操作,有HTTP、SMTP等
私有协议:多数P2P文件共享应用

应用层协议的内容

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

网络应用的服务需求

可靠性

分组能够使路由器中的缓存溢出,或者当分组中的某些比特损坏后可能被丢弃

  • 某些网络应用能够容忍一定的数据丢失:网络电话
  • 某些网络应用要求100%可靠的数据传输:文件传输、telnet、电子邮件、远程主机访问、Web文档传输以及金融应用

带宽

具有吞吐量要求的应用程序被称为带宽敏感的应用,如网络视频只有在带宽达到最低要求时才“有效”
弹性应用能够根据情况或多或少地利用可供使用的吞吐量。电子邮件、文件传输以及Web传送都属于弹性应用

时延

  • 有些应用只有在延迟足够低时才“有效”,如因特网电话、虚拟环境、电话会议和多方游戏

安全性

运输协议能够为应用程序提供一种或多种安全性服务。如,在发送主机中,运输协议能够加密由发送进程传输的所有数据,在接收主机中,运输层协议能够在数据交付给接收进程之前解密这些数据。

Internet传输层服务模型

TCP服务

  • 面向连接:客户机/服务器进程间需要建立连接
  • 可靠的传输
  • 流量控制:发送方不会发送速度过快,超过接收方的处理能力
  • 拥塞控制:当网络负载过重时能够限制发送方的发送速度
  • 不提供时间/延迟保障
  • 不提供最小带宽保障

UDP服务

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

应用层

TCP

UDP

特定网络应用及协议

HTTP

SMTP、POP、IMAP

DNS

P2P应用

Socket编程

TCP

UDP