应用层协议笔记(1)

应用层协议原理

  研发网络应用程序的核心是写出能够运行在不同的端系统和通过网络彼此通信的程序.
  应用层设计者无需关心下层的实现,只需使用 socket 即可使用来自下层的可靠的信息传输服务.

网络应用程序体系结构

  应用层体系结构由应用程序研发者设计,规定了如何在各种端系统上组织该应用程序.
  现在有两种主流体系结构:

  1. 客户/服务器(C/S)体系结构.
  2. 对等(P2P)体系结构.

  在 C/S 体系结构中,有一个总是打开的主机称为服务器,它服务与来自许多其他称为客户的主机的请求.
  客户之间不能直接通信.服务器具有一个固定的 IP(这表示该服务器通常不能使用 DHCP 服务).

  C/S 体系结构中非常著名的应用程序包括 Web , FTP, Telnet 和电子邮件.

  P2P 体系结构中,对位于数据中心的专用服务器有最小的依赖(或者没有).
  应用程序在间断连接的主机对之间使用直接通信,这些主机对称为对等方.
  P2P 体系结构的明显优势在于其自扩展性,在一个 P2P 文件共享应用中,尽管每个对等方都由于请求文件产生工作量,但每个对等方通过向其他对等方分发文件也为系统增加服务能力.

进程通信

  两个不同的端系统上的进程,通过跨越计算机网络交换报文.

客户与服务器进程

  网络应用程序由成对的进程组成,这些进程通过网络相互发送报文.
  无论在 C/S 还是在 P2P 中,我们都可以区分客户进程和服务器进程,定义如下

  在给定的一对进程之间的通信会话场景中,发起通信的进程标识为客户,在会话开始时等待联系的进程是服务器.

进程与计算机网络之间的接口

  进程通过一个称为 socket(套接字)的软件接口向网络发送报文和从网络接受报文.
  socket 是同一台主机内应用层与运输层之间的接口.

socket

  在应用层对传输层的控制仅限于:
  1. 选择运输层协议.
  2. 设定几个运输层参数(最大缓存和最大报文长度等)

进程寻址

  为了向另一台主机上的运行的进程发送分组,接受进程需要有一个地址.
  为了标识该进程,需要定义两种信息:
  1. 主机的地址.
  2. 定义在目的主机中的接受进程的标识符

  在 Internet 中,主机由其 IP address 标识,IP 是在网络层中实现的.
  目的地端口号(port number)用于区分同一主机上不同应用.

传输服务

  不同的运输层服务提供了不同的服务,从应用程序服务要求可以大致分为 4 类

  1. 可靠数据传输.
  2. 吞吐量.
  3. 定时.
  4. 安全性.

Internet 提供的传输服务

  1. TCP 服务
  2. UDP 服务

常见应用层协议及其依靠的运输层协议

  1. SMTP, 电子邮件, TCP
  2. Telnet, 远程终端访问, TCP
  3. HTTP, Web, TCP
  4. FTP, 文件传输, TCP
  5. HTTP, 流式多媒体, TCP
  6. SIP, RTP, 专用(Skype), 因特网电话, UDP 或 TCP

应用层协议

  应用层协议(application-layer protocol) 定义了运行在不同端系统上的应用程序如何相互传递报文.

  1. 交换的报文类型,例如请求报文和响应报文.
  2. 各种报文类型的语法,如报文中的各个字段及这些字段是如何描述的.
  3. 字段的予以,即这些字段中包含的信息的含义.
  4. 一个进程何时以及如何发送报文,对报文相应的规则.