0%

计算机网络第二章-应用层

介绍

  • 应用层为用户提供服务
  • 通信由逻辑连接提供

    提供服务

  • 如果将一个协议增加到一层中,那么这个协议应当被设计成使用底层协议提供的服务;如果从一层中取出一个协议,那么应该注意去改写它的上一层协议,高层协议可能使用了它提供的服务。
  • 由于应用层是协议簇的最高层,它与其他层有些不同。这层中的协议不为任何其他协议提 供服务,它们只接收来自传输层协议的服务。这意味着,可以从这层中轻易地去除协议。只要新的 协议可以使用传输层协议提供的服务,那么就可以把它加入到这一层。

应用层模式

传统模式:客户-服务器模式

服务提供者是一 个称为服务进程的应用程序,它不断地运行着,等待另一个称为客户进程的应用程序通过因特网建 立连接并请求服务。通常有一些服务进程可以提供特定类型的服务,但是有很多客户向这些服务进 程请求服务。服务进程必须一直运行,当需要接受服务时客户进程就被打开。

  • 通信符合集中在服务器上
  • 必须存在服务提供商
    新模式:对等模式(P2P)
    不需要一个不断运行且等待客户进程连接的服务器进程。责任在对等结点(peer)之 间分担。连接到因特网的计算机可以在这一次提供服务却在下一次接受服务。一台计算机甚至可以 同时接受和提供服务。
  • 无需一直运行和维护服务器,经济划算
  • 安全问题和适用性存在争议
    混合模式
    比如轻量级的客户-服务器通 信可以用来寻找可以提供服务的对等结点(peer)的地址。当找到这个地址时,实际服务可以通过 使用对等模式从对等结点中获得。

客户-服务器模式

  • 应用层的通信在两个运行的应用程序之间进行,这两个应用程序被称为进程:客户和服务器。
  • 服务器进程要在客户端程序运行前开启。

应用程序接口

  • 指令集:告诉计算机要做什么,我们需要一个新的指令集告知 TCP/IP 协议簇的低四层打开连接,发送数据,从另一个终端接收数据, 以及关闭连接。这样的指令集通常称为应用程序接口(API)
  • 常见通信API:套接字接口,传输层接口以及STREAM。
    套接字
  • 套接字是供应用程序创建和使用的数据结构
    套接字地址
  • 由于客户-服务器模式的通信是在套接字之间的,我们需要一对套接字地址:一个本地,一个远程
  • 套接字地址是一个IP地址和一个端口号组合(IP地址32位,端口号16位)
    寻找套接字地址
  • 服务器站点:需要一个本地(服务器)和一个远程(客户)套接字地址来通信
    • 本地套接字地址:本地(服务器)套接字地址由操作系统提供
    • 远程套接字地址:客户套接字地址包含在发送给服务器的请求报文中,它成为远程套接字地 址来给客户提供响应。
  • 客户站点:同样需要一个本地(客户)和一个远程(服务器)套接字地址来通信
    • 本地套接字地址:本地(客户)套接字地址由操作系统提供
    • 远程套接字地址:两种情况:
      1. 开启客户进程的用户知道运行着服务器进程的计算机端口号和IP地址。
      2. 不知道IP地址,通过DNS解析获得IP,端口号是熟知端口号,客户进程通常知道。

使用传输层的服务

UDP协议
  • 提供无连接的,不可靠的数据包服务。
  • 无连接服务意味着两个交换报文的终端你之间没有逻辑连接,每个报文都是独立的实体,被封装在一个称为数据报的分组中,UDP看不到来自同一个源端并去往同一个目的短的数据报之间的关系(连接)。
  • 不可靠意味着尽管它可能在传输中检查数据是否被破坏,但是它并不要求发送端重传 被破坏的或丢失的数据。它保留报文边界
    TCP协议
  • 提供面向连接的可靠的字节流传输
  • 不面向报文,不保留报文边界
    SCTP协议
  • 提供前面两个协议组合的功能
  • 可以通过提供多媒体网络层连接提供多媒体流服务

标准客户-服务器应用

万维网和HTTP

万维网
  • 网络客户(浏览器):控制程序(接收老子键盘和鼠标的输入并使用客户端程序范文文档),解释程序(显示文档,如HTML,JS,Java),客户协议

  • 网络服务器:发送被请求的文档

  • 同一定位符(URL)
    为了定义一个网页,我们需要3个标识符:主机,端口,路径,在定义网页前我们需要告知浏览器我们要获取那个客户-服务器应用,这称为协议,所以我们需要四个标识符定义网页,第一个获取网页的运载工具形式,后三项定义了网页。

    • 协议:访问网页的客户-服务器程序的缩写,大多数是HTTP,也有其他的,比如:FTP
    • 主机:服务器的IP地址或主机被给予的唯一名称
    • 端口:通常为协议预定义。如HTTP熟知端口号是80,如果使用不同的端口号,这个号码会给出
    • 路径:定义下层的操作系统中文件的位置和名称
      网上文档
  • 静态文档:在服务器中创建和储存的固定内容的文档,客户得到的只是一个文档副本。(HTML,XML,XSL,XHTML)

  • 动态文档:当浏览器请求文档时动态文档被网页服务器创建。(CGI,JSP,ASP,SQL)

  • 活动文档:在客户站点运行一个程序或脚本。(Java applets,JS)

    超文本传输协议
  • 是一种用来定义客户服务器程序如何编 写和如何从万维网获取网页的协议。

  • 客户发送请求,服务器返回相应,服务器使用80端口号,客户使用一个临时端口号,HTTP使用TCP服务。

  • 请求在一个服务器中的对象有两种选择:

    1. 每次使用一个新的TCP连接获取一个对象,被称为非持续连接
    2. 创建一个TCP连接获取全部对象,被称为持续连接
      在HTTP1.1之前指定的是非持续连接,1.1版中默认的事持续连接,可以被用户改变
    • 非持续连接步骤:
      1. 客户开启一个TCP连接并发送请求
      2. 服务器发送相应并关闭连接
      3. 客户读取数据知道它遇到了文件结束标记,然后关闭连接
    • 持续连接
      • 服务器可以在客户请求下或者在超时情况下将连接关闭
      • 发送方通常在每次相应中发送数据长度,偶尔发送方不知道数据的长度,在这种情况下,服务器通知客户长度未知并在发送数据后关闭连接,因此客户知道数据已接收完毕。
  • 报文格式

    • 请求报文

      1. 请求行

        • 方法
        • URL
        • 版本
      2. 首部行
        在请求行之后我们可以有一个或多个请求头部(request header)行。每一个头部行都从客户端 向服务器 发送额外的信息。例如,客户可以请求以某种特定格式发送文档。每个头部行有头部名字、 一个冒号、一个 空格和一个头部值(见图 2-12)。表 2-2 列出了一些请求中常用的头部名字。值字 段定义了与每个头部名字相 关的值。值列表可以在相应的 RFC 中查找到。

      3. 主体
        主体可以出现在请求报文中。通常,当使用POST或PUT方法时,它包含要发送的评论或要发布到网站 上的文档。

    • 响应报文

      1. 状态行
        • 版本
        • 状态码
          在 100 范围内的代码只代表一个报告,在 200 范围内的代码表示这是一个成功的请求。 在 300 内的
          代码表示把客户端重定向到另一个 URL,在 400 范围内的代码表示在客户端发生错误。最后,在 500 范围 内的代码表示错误发生在服务器端。
        • 短语
          状态短语以文本格式解释了状态码。
      2. 头部行
      3. 主体
        主体包含了从服务器发送给客户的文档。除非响应是一个错误报文,否则主体是存在的。
  • 条件请求
    客户可以在请求中加入条件。在这种情况下,如果条件满足,服务器将会发送被请求的网页或 者通知用户。客户加入的最常见的一种条件是网页被修改的时间和日期。客户可以在发送请求时附 带头部行 If-Modified-Since,这样来告知服务器客户只需要在指定日期之后更新的页面。

  • Cookie

    • 创建和储存Cookie
      1. 当服务器从客户端接收到请求后,它将客户端的信息存储在文件或字符串中。这些信息可
        能包含客户端的域名、cookie 内容(服务器收集到的关于客户端的信息,如主机名、注册号等)、 时间戳, 以及与实现有关的其他信息。
      2. 服务器在响应中包含了它发送给客户端的 cookie。
      3. 当客户端接收到响应后,浏览器在 cookie 目录中存储 cookie,并根据服务器域名进行分类。
    • 使用Cookie
      当客户向服务器发送请求时,浏览器在 cookie 目录中查询是否有从那个服务器≤发送过来的 cookie。如果有, 则在请求中包含这个 cookie。当服务器接收到这个请求后,它就知道 了这是一个老客户,而不是新的。注
      意,cookie 的内容从来不让浏览器读取或者透露给用户,只由 服务器创建并回收 cookie。现在让我们分析如 何使用 cookie 来实现上面提到的四个功能。
      万维网高速缓存:代理服务器
  • 代理服务器是一台计算机,能够保存最近请求的响应 的副本。HTTP 客户端向代理服务器发送请求。代理服务器检查本地高速缓存。如果高速缓存中不 存在响应报文,代理服务器就向相应的服务器发送请求。返回的响应会发送到代理服务器中,并且 进行存储,以用于其他客户端将来的请求。

  • 优点:代理服务器降低了原服务器负载,减少通信量并且降低了延迟

  • 为了使用代理服务器,必须配置客户端访问代理服务器而不是目标服务器。

  • 代理服务器位置:

    1. 客户计算机也可以用作小容量代理服务器,它存储着与客户经常调用的请求相对应的响应。
    2. 在一个公司,一个代理服务器可能安装在计算机 LAN 中来减少进出 LAN 的负载。
    3. 带有很多客户的 ISP 可以安装一台代理服务器来减少进出 ISP 网络的负载。
      HTTP安全
  • HTTP本质上不提供安全,然而HTTP可以在安全套接层(SSL)上运行,在这种情况下,HTTP称为HTTPS

  • HTTPS提供保密性、客户和服务器鉴别,以及数据完整性。

FTP

  • 文件传输协议是TCP/IP提供的标准机制,用于将文件从一个主机复制到另一个主机。

  • 客户有三个组件:用户接口、客户控制进程和客户数据传输进程。

  • 服务器有两个组件:服务器控制进程和服务器数据传输进程。

  • 将命令和数据传输分开使得FTP效率更高,因为控制进程比较简单,而传输进程比较复杂。

    两种连接的寿命

    在整个交互的FTP会话期间

  • 控制连接始终处于连接状态

  • 数据连接则在每次传输文件时开启然后关闭

  • FTP端口:端口21用于控制连接,端口20用于数据连接。

    控制连接
  • 对于控制通信,FTP使用与TELNET相同的方法。它与TELNET一样使用NVT ASCII字符集。通信是通过命令和相应来完成的。

  • 每一条命令或相应都是一个短行,因此不比担心他的文件格式或文件结构,每一行结束处是两个字符(回车和换行)的行结束标记。
    ![](http://image.zhchy.info
    /计算机网络章2-6.png)

  • 每个FTP命令至少产生一个响应。一个响应有两个部分:跟随在文本后的一个三位数字,数字部分定义了编码;文本部分定义了需要的参数或进一步的结束。

    数据连接
  • 步骤:

    1. 客户,不是服务器,使用临时端口发起一个被动打开。这必须由客户完成,因为正是客户 发出命令要求传输文件的。
    2. 客户使用 PORT 命令发送这个端口号到服务器。
    3. 服务器接收到端口号,使用熟知端口 20 发出主动打开并且接收临时端口号。
  • 通过数据连接的通信:
    数据连接的目的和实现与控制连接是不同的。我们通过数据连接来传输文件。客户必须定义传输文件的类型、数据结构以及传输模式。在通过数据连接发送文件之前,我们通过控制连接进行准备。异构性问题可以通过定义三个通信属性来解决:文件类型、数据结构和传输方式。

    • 数据结构:文件结构、记录结构和页面结构
      • 文件结构没有结构,是连续的字节流
      • 记录结构把文件划分成一些记录,这只能用于文本文件。
      • 页面结构吧文件划分成页面,每一个页面有一个页面号和页面头部,页面可以随机地或顺序地存储访问。
    • 文件类型
      ASCII文件、EBCDIC文件和图像文件
    • 传输方式:流方式、块方式和压缩方式
      • 流方式:默认方式,数据作为连续的字节流从FTP传递给TCP
      • 块方式:数据可以按块从FTP传递给TCP
  • 文件传输

    • FTP的文件传输表示三件事情之一:读取文件(服务器到客户)、存储文件(客户到服务器)和目录列表(服务器到客户)。
      FTP安全
  • 密码明文

  • 数据连接明文

  • 为了安全可以把安全套接层加入到FTP应用层和TCP层之间,这种情况下FTP称为SSL-FTP

电子邮件

#各种原理/计算机网络