《计算机网络原理》第二章

本章重点:

  • 理解网络应用体系结构、特点及其通信基本原理
  • 掌握 DNS 域名解析过程、HTTP 、SMTP、POP、FTP、P2P应用
  • 了解 Socket 编程基础
  • 难点是 网络应用通信基本原理、典型应用层协议、P2P文件分发以及 Socket 编程基础。

第一节 计算机网络应用体系结构

  • 计算机网络应用 是运行在计算机网络环境下的分布式软件系统。
  • 计算机网络应用分类:
    • 从体系结构角度可分为:
      • 客户/服务器(C/S)结构
      • 纯P2P(Peer to Peer)结构
      • 混合结构

一、客户/服务器(C/S)结构网络应用

  • 客户/服务器(C/S)结构的网络应用是最典型、最基本的网络应用。
  • C/S网络应用中,服务器通常运行在高性能的服务器计算机上。
  • 客户软件通常运行在普通用户的计算机或其他计算设备上,可能使用动态的网络地址,是通信的主动发起方
  • C/S网络应用 最主要的特征是:通信只在客户与服务器之间进行,客户与客户之间不进行直接通信。
  • 在C/S通信过程中,主动发起通信的一方就是客户,被动接受通信的一方就是服务器。
  • 服务器为了能够被动接受通信,必须先运行,做好通信准备。

二、纯P2P结构网络应用

  • 在纯P2P网络应用中,没有一直在运行的传统服务器,所有通信都是在对等的通信方之间直接进行,通信双方没有传统意义上的客户与服务器之分,“地位”对等。
  • 对等端软件通常运行在普通用户的计算设备上,可以动态的直接与其他对等端进行通信。
  • 任何一个对等端既可以主动发起请求另一个对等端的服务,也可以被动地为其他对等端提供服务。
  • P2P应用中的每个对等端都同时具备C/S应用的客户与服务器的特征,是一个服务器与客户的结合体。
  • P2P应用中的对等端软件包括服务器与客户端软件。

三、混合结构网络应用

  • 混合结构网络应用将C/S应用与P2P应用相结合,即有中心服务器的存在,又有对等端(客户)间的直接通信。

第二节 网络应用通信基本原理

  • 网络应用的本质是运行在不同主机上(当然也可以运行在同一主机上)的应用进程之间的通信。
  • 无论哪种类型的网络应用,基本通信方式都是C/S通信。
  • 网络应用基本通信过程就是运行在不同主机上的应用进程间以 C/S方式 进行的通信。
  • 网络应用中,服务器端运行的是服务器进程,被动地等待客户请求服务;客户端运行的是客户进程,主动发起通信,请求服务器进程提供服务。
  • 应用进程间遵循应用层协议交换应用层报文。
  • 应用层协议定义了应用进程间交换的报文类型、报文构成部分具体含义以及交换时序等内容,即语法、语义和时序等协议三要素内容。
  • 无论是服务器进程还是客户进程,当其遵循应用层协议组织好应用层报文后,需要通过层间接口(如应用编程接口API)将报文传递给相邻的传输层,请求传输层协议提供的端到端传输服务。
  • 典型的网络应用编程接口是套接字(Socket)
  • 应用进程可以通过创建套接字实现与底层协议接口,并可以进一步通过套接字实现应用进程与底层协议之间的报文交换。
  • 套接字是每个应用进程与其他应用进程进行网络通信时,真正收发报文的通道。
  • 一个应用进程可以创建多个套接字与同一个或不同的传输层协议进行接口。
  • 对于一个传输层协议,需要为与其接口的每个套接字分配一个编号,标识该该套接字,该编号称为端口号(port number)。
    • 通常服务器进程套接字会分配特定的端口号
    • 客户进程的套接字会绑定一个随机的唯一端口号。
    • web服务器的默认端口号是80,这部分端口号称为熟知端口号
  • 通过进程运行的主机IP地址以及其套接字所绑定的端口号可以标识应用进程。
  • Internet传输层能提供的服务只有两类:
    • 面向连接的可靠字节流传输服务
    • 无连接的不可靠数据报传输服务,分别对应传输层的 TCP 和 UDP。
    • 这两类服务都不能提供时延保障或带宽保障服务。
  • TCP 服务模型包括面向连接服务和可靠数据传输服务。
    • 面向连接的服务:在应用层报文开始传送之前,TCP 客户和服务器互相交换传输层控制信息,完成握手,在客户进程与服务器进程的套接字之间建立一条逻辑的 TCP连接。这条连接是全双工的,即连接双方的进程可以在此连接上同时进行报文收发。当应用程序结束报文发送时,必须拆除该连接。
    • 可靠的数据传送服务:应用进程能够依靠TCP,实现端到端的无差错、按顺序交换所有发送数据的服务。当应用程序的一端将字节流通过本地套接字传送时,它能够依靠TCP将相同的字节流交付给接收方的套接字,而没有字节的丢失和冗余。
  • UDP 是一种不提供传输服务保障的轻量级传输层协议,仅提供最小的“尽力”服务。UDP是无连接的,因此在两个进程通信前没有握手过程。
    • UDP提供一种不可靠数据传送服务,当进程将一个报文通过UDP套接字传送时,UDP 并不保证该报文将到达接收进程。而且到达接收进程的报文还可能是乱序到达的。
  • 特别注意:Internet传输层的 TCP 和 UDP 均不能提供端到端吞吐量以及实验保障服务。

第三节 域名系统(DNS)

  • 客户端软件称为用户代理(user agent)
  • 为服务器主机起的一个容易读懂、有一定自然语言含义的名字,这个名字就是主机域名(domain name)。
  • 将域名映射为协议使用的IP地址,这就是域名系统(Domain Name System,DNS)的任务。
  • DNS是一个重要的基础应用,因为任何一个需要使用域名进行通信的网络应用,在应用通信之前首先需要请求 DNS 应用,将域名映射为IP 地址。实现将域名映射为 IP 地址的过程,称为域名解析
  • DNS 为了实现域名解析,需要建立分布式数据库,存储网络中域名与IP地址的映射关系数据,这些数据库存储在域名服务器上,域名服务器根据用户的请求提供域名解析服务。
  • 为了完成域名解析,通常需要在多个域名服务器之间进行查询,因此 DNS 也必须定义相应的应用层协议

一、层次化域名空间

  • DNS 为了实现域名的有效管理与高效查询,DNS 服务器按层次结构进行组织,并且该层次结构与域名的结构相对应。
  • 因特网采用了层次树状结构的命名方法。任何一个连接在因特网上的主机或路由器,都可以有一个唯一的层次结构的域名(也可以不命名)。
  • 域名的结构由标号序列组成,各标号之间用点隔开,例如,“···.三级域名.二级域名.顶级域名”,各标号分别代表不同级别的域名。
    • 1)国际顶级域名nTLD:如 cn 表示中国,us 表示美国,uk 表示英国等。
    • 2)通用顶级域名gTLD:最早的顶级域名是 com (公司和企业)、net (网络服务机构)、org(非盈利性组织)、edu(专用的教育机构)、gov(专用的政府部门)、mil(专用的军事部门)、int(国际组织)。
    • 3)基础结构域名(infrastructure domain):这种顶级域名只有一个,即arpa,用于反向域名解析,因此又称为反向域名。

二、域名服务器

  • 一个服务器所负责管辖的(或有权限的)范围叫做区(zone)。
  • DNS服务器的管辖范围不是以“域”为单位,而是以“区”为单位。
  • 域名服务器根据其主要保存的域名信息以及在域名解析过程中的作用等,可以分为:
    • 根域名服务器:
      • 是最重要的域名服务器
      • 全球互联网中部署了有限的几个根域名服务器,每个域名服务器都知道所有的顶级域名服务器的域名和IP地址。
      • 任何本地域名服务器若要对因特网上的任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器
      • 在因特网上共有13个不同IP地址的根域名服务器,他们的名字是用一个英文字母命名,从a一直到m(前13个字母),如a.rootservers.net、b.rootservers.net、···、m.rootservers.net
    • 顶级域名服务器:
      • TLD 服务器,负责管理在该顶级域名服务器注册的所有二级域名。
      • 顶级域名服务器的名称对应一个域名的最后一个名字,是对一个行业的命名,如 com、org等,或对一个区域的命名,如cn、us等。
    • 权威域名服务器:
      • 负责一个区的域名服务器,保存该区中的所有主机的域名到IP地址的映射。
      • 任何一个拥有域名的主机,其域名与IP地址的映射关系等信息都存储在所有网络的权威域名服务器上。
      • 在进行域名解析时,只要查询到被查询域名主机注册的权威域名服务器,就可以获得该域名对应的IP地址信息。
    • 中间域名服务器:
      • 在层次域名结构中,有时还存在一些既不是根域名服务器,又不是顶级域名服务器,也不是权威域名服务器的域名服务器,这些域名服务器通常称为中间域名服务器
  • 任何一台主机在网络地址配置时,都会配置一个域名服务器作为默认域名服务器
  • 这个默认域名服务器通常称为本地域名服务器,是主机进行域名查询过程中首先被查询的域名服务器。

三、域名解析过程

  • 域名解析分为:
    • 递归解析:提供递归查询服务的域名服务器,可以代替查询主机或其他域名服务器,进行进一步的域名查询,并将最终解析结果发送给查询主机或服务器
      • 通常本地域名服务器都提供递归查询服务。
    • 迭代解析:提供迭代查询的服务器,不会代替查询主机或其他域名服务器,进行进一步的查询,只是将下一步要查询的服务器告知查询主机或服务器(如果该主机服务器拥有最终解析结果,则直接响应解析结果)。
      • 仅提供迭代查询服务的域名服务器不会代理客户的查询请求,而是将最终结果或者下一步要查询的域名服务器直接响应给查询客户。
      • 根域名服务器通常只提供迭代查询服务,当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出要查询的IP地址(这种情况不多见),要么在响应报文中告诉本地域名服务器下一步应当查询哪一个域名服务器,本地域名服务器则继续查询下一个域名服务器,直到查询到被查询域名主机的权威域名服务器。
  • 无论是递归解析还是迭代解析,在查询的过程中,只要本地域名服务器不能直接响应解析结果,则都需要从根域名服务器开始查询
  • 降低根域名服务器的压力并提高查询响应时间和查询效率的策略:
    • 典型策略之一是域名服务器增加缓存机制,即在为客户做出响应的同时,每个域名服务器会将在域名解析过程中解析到的结果存储到域名数据库中。
    • 还可以通过本地域名服务器中存储顶级域名服务器信息,使得在域名解析过程中跳过根域名服务器的查询,直接查询顶级域名服务器。

第四节 万维网应用

一、万维网应用结构

  • 20世纪90年代初,诞生了万维网(World Wide Web,WWW)应用,也成为Web应用。
  • Web 应用主要包括 Web 服务器浏览器超文本传输协议(HTTP)等部分。
    • 浏览器就是Web应用的客户端软件,即应用的客户代理,运行在用户的计算机上。
    • Web服务器是Web应用的服务器软件,存储并管理供用户请求浏览的Web页面(Web page)或称为Web文档。
  • Web应用是典型的客户/服务器网络应用,客户与服务器之间的交互基于应用层协议HTTP
  • Web页面是由对象组成的。
  • 多数Web页含有一个基本的HTML页面,基本页中再引用若干其他对象。
  • 在Web应用中,通过一个URL(Universal Resource Locator)地址来寻址一个Web页或Web对象,HTML基本Web页也是通过URL地址引用页面中的对象。
  • 每个URL地址主要由两部分组成:
    • 存放对象的服务器主机域名(或IP地址)
    • 对象的路径名
    • 例如某大学计算机系的主页的URL地址为 http://www.abc.edu.cn/cs/index.html,其中的www.abc.edu.cn是Web服务器主机名,/cs/index.html就是路径名。
  • URL寻址方式确保万维网上的每个Web页或对象都有一个唯一的标识符。

二、HTTP

1、HTTP 概述

  • HTTP 是 Web 应用的应用层协议,定义浏览器如何向Web服务器发送请求以及 Web 服务器如何向浏览器进行响应。
    • 目前主要使用的是 HTTP/1.0 和 HTTP/1.1 两个版本,尤其以 HTTP/1.1为主流
  • HTTP 在 1991 年发布的原型版本成为 HTTP/0.9。
    • 该版本 HTTP 的设计初衷是为了获取简单的 HTML 对象,只支持 GET 方法,没有定义任何首部,不支持多媒体内容的 MIME 类型和协议版本号
  • HTTP/1.0 是第一个得到广泛应用的 HTTP 版本。
    • HTTP/1.0 增加了协议版本号、各种首部行、额外的方法以及对多媒体对象的支持
    • HTTP/1.0 使 Web 页面增添了生动的多媒体内容以及表单,增加了交互能力。
      -在20世纪90年代中期,很多流行的 Web 客户端和服务器都在向 HTTP 中添加新的特性,例如持久的 keep-alive 链接、虚拟主机支持以及代理连接支持等,并成为非官方的实施标准。这种非正式的 HTTP/1.0 扩展板本通常被成为 HTTP/1.0+。
  • HTTP/1.0的新版本是 HTTP/1.1,是目前 Web 应用最广泛的 HTTP版本。
    • HTTP/1.1与HTTP/1.0相比,支持更多的请求方法、扩展了一些首部、增加了响应状态码、改进了对缓存的支持等
    • HTTP/1.1 的重点是校正了 HTTP 设计中的结构缺陷,明确了语义,引入了重要的性能优化措施,并删除了一些不良特性。
    • HTTP/1.1 还包含了 20世纪90年代末正在发展中的更复杂的Web应用程序部署方式的支持(如 WebDAV),是目前使用的最主要版本。
  • 最新版本的 HTTP 是 HTTP/2.0,但是该协议目前尚未得到广泛应用
    • HTTP/2.0最初成为HTTP-NG,是HTTP/1.1 后续结构的原型建议,重点关注性能优化以及强大的服务逻辑远程执行框架
    • HTTP-NG 的研究工作终止于 1998年。
    • SPDY(SPDY是Speedy的昵音,意为更快) 是Google 开发的基于 TCP 的应用层协议
      • SPDY 协议的目标是优化 HTTP 的性能, 通过压缩、多路复用和优先级等技术,缩短网页的加载时间并提高安全性
      • ==SPDY 协议的核心思想是尽量减少TCP连接数,而对于HTTP的语义未做太大修改(例如,HTTP 的 GET 和 POST 消息格式保持不变),基本上兼容HTTP。
      • SPDY 正是 Google 在HTTP即将从1.1 向 2.0 过渡之际退出的协议,长期以来一直被认为是HTTP/2.0的可行选择。

2、HTTP链接

  • HTTP 基于传输层的 TCP 传输报文。浏览器在向服务器发送请求之前,首先需要建立 TCP 链接,然后才能发送HTTP 请求报文,并接收 HTTP 响应报文。
  • 根据 HTTP 在使用 TCP 链接的策略不同,可以分为 非持久连接的HTTP持久连接的HTTP
    • 非持久连接的 HTTP
      • 非持久连接是指 HTTP 客户与 HTTP 服务器建立 TCP 连接后,通过该连接发送 HTTP 请求报文,接收 HTTP 响应报文,然后断开连接。
      • HTTP/1.0 默认使用非持久连接,每次请求传输一个对象都需要新建立一个 TCP 连接。
      • 非持久连接的HTTP/1.0协议每请求传输一个对象(web页或图像文件),都需要新建立一条TCP连接,对象传输结束,马上断开连接。
      • 如果忽略HTTP请求报文和响应报文的传输延时(即忽略报文长度),则HTTP/1.0使用非持久连接请求传输web页以及3个JPEG小图像,共需要约8个RTT(往返时间)。
      • 这种串行方式请求每个对象时,每次都要新建立TCP连接,因此都要经历TCP拥塞控制的慢启动阶段,使得TCP连接工作在较低的吞吐量状态,延迟会更加明显。
      • 为了提高或改善HTTP的性能,需要对HTTP/1.0的这种默认的非持久连接使用方式进行优化,典型的优化技术包括以下两种:
        • 并行连接,通过建立多条并行的TCP连接,并行发送HTTP请求和并行接收HTTP响应。
        • 持久连接,重用已建立的TCP连接发送新的HTTP请求和接收HTTP响应,从而消除新建TCP连接的时间开销。
    • 并行连接
      • 通过并行连接加速或优化HTTP是比较典型的技术手段,目前几乎所有的浏览器都支持并行连接,但是支持的并行连接数是有限制的。
      • 在忽略请求报文和响应报文长度的情况下,获取web以及3个JPEG小图像的总时间延迟约为4个RTT
      • 通常情况下,并行连接可以有效提高HTTP性能,减少web页加载时间。
      • 并行连接并不一定总能减小延迟,加快网页加载速度。
      • 并行连接会增加客户端主机的资源开销,如内存开销,因此系统通常对同时建立的并行TCP连接数有限制。
      • 服务器通常也会对来自同一客户的并行TCP连接数有所限制。
    • 持久连接的 HTTP
      • 客户端请求了web页后,继续传输引用的图像文件,这些图像文件多数情况下位于与Web页所在的服务器相同的服务器,即具有站点局部性特点。 这种情况下,可以不断开已建立的TCP连接,而是利用该连接继续请求传输后续的JPEG小图像,这种TCP连接称为持久连接
      • 持久连接又分为两种工作方式:
        • 非流水方式持久连接
          • 也称为非管道方式持久连接,客户端在通过持久连接收到前一个响应报文后,才能发出对下一个对象的请求报文。与非持久连接相比,连续请求多个对象时(例如,Web页内引用多个图像),只需要建立一次TCP连接,这样,没获取一个对象只需1个RTT时间。
        • 流水方式持久连接
          • 也称为管道方式持久连接,客户端在通过持久连接收到前一个对象的响应报文之前,连续依次发送对后续对象的请求报文,然后再通过该连接依次接收服务器发回的响应报文。
          • 使用流水方式持久连接时,获取一个对象平均时间远小于1个RTT时间,如果忽略对象传输时间,连续请求的多个对象只需1个RTT时间。
          • HTTP/1.1默认情况下使用流水方式持久连接。HTTP/1.1 的持久连接默认是激活的,除非特别声明,否则HTTP/1.1假定所有连接均是持久的。如果希望结束持久连接,可以在报文中显示的添加 connection: close 首部行。
          • HTTP/1.1 使用持久连接的主要约束与规则如下:
            • 如果客户端不期望在连接上发送其他请求,则应该在最后一条请求报文中包含 connection:colse 首部行。
            • 如果客户端在收到的响应报文中包含 connection:close 首部行,则客户端不能再在这条连接上发送更多的请求。
            • 每个持久连接只适用于一跳传输,HTTP/1.1 代理必须能够分别管理与客户端和服务器的持久连接。
            • HTTP/1.1代理服务器不应该与HTTP/1.0客户端建立持久连接。
    • 使用非流水方式持久连接请求传输引用3个JPEG小图像的Web页过程,传输所有对象需要的总时间约为 5个 RTT。
    • HTTP/1.1使用流水方式持久连接请求传输应用3个JPEG小图像的Web页的传输总时间需要约3个RTT。

3、HTTP报文

  • HTTP报文由 4 部分组成:起始行首部行空白行实体主体
    • 起始行首部是行分隔的ASCII文本,每行由CRLF(回车换行)终止,空白行中只有CRLF,主体(或称报文主体)可以是文本或二进制数据。
    • HTTP报文起始行空白行不可缺少,首部行可以是零行或多行,实体主体则根据报文类型、功能等可有可无。
  • HTTP 报文可以分为两类: 请求报文响应报文
    • 请求报文由浏览器(客户端)发送给Web服务器,
    • 响应报文由Web服务器发送给浏览器。
    • 请求报文响应报文最主要的区别是 起始行 不同,
      • 请求报文起始行为
        • <方法> <协议版本>
      • 响应报文起始行为
        • <协议版本> <状态码> <短语>
      • 每部分之间由空格分隔,起始行最后是CRLF。
    • HTTP 请求报文的起始行也叫请求行
      • 请求行中的“方法”实际上就是命令,表示客户端希望服务器对URL指定的资源执行的操作(或动作),即表示希望服务器做什么;
      • URL定位所请求的资源;
      • 协议版本用于通告服务器客户端所使用的HTTP版本号,格式为:
        • HTTP/<主版本号>.<次版本号>
        • 目前典型的版本是HTTP/1.0 和 HTTP/1.1
    • HTTP典型的请求方法有 GET、HEAD、POST、OPTION、PUT 等。
      • GET:请求读取由URL所标识的信息,是最常见的方法
      • HEAD:请求读取由URL所标识的信息的首部,即无须在响应报文中包含对象。
      • POST:给服务器添加信息(例如,注释)
      • OPTION:请求一些选项的信息。
      • PUT:在指明的URL下存储一个文档。
    • HTTP 报文的首部行用于携带附加信息,可以是零行、一行或者多行。每个首部行包括一个首部行字段名,后面跟一个冒号(:),然后是一个可选的空格,紧接着是对应的值,最后是CRLF。
    • 不同首部行携带不同类别的信息,用于不同的目的。
      • 有些首部行只能用于请求报文,称为请求首部
      • 有些首部行只能用于响应报文,称为响应首部
      • 有些首部行即可用于请求报文又可以用于响应报文,称为通用首部
      • 有些首部专门用于描述实体相关属性信息,例如实体长度,则称为实体首部
      • 还有一些由应用程序开发人员创建,尚未添加到HTTP规范中的非标准专用首部,称为扩展首部
    • 首部行结束后,必须有一个空白行,用于分隔 首部行(或请求行)实体主体
    • 实体主体也称为报文主体或称为主体,是请求报文的负荷,可以是文本、图片、视频、HTML文档、应用程序、电子邮件等。
      • 有些请求报文会带主体,有些不带主体(可能很多请求报文不带主体)。
    • HTTP 响应报文中的起始行也称为状态行
      • 其中的协议版本请求报文中的协议版本意义与格式相同,用于声明服务器所用的HTTP版本号;
      • 状态码是用于通告客户端对请求的响应情况,由3位十进制数组成,并利用第一位十进制数字区分为5类状态码,不同状态码具有不同含义
      • 响应报文中首部行、实体等格式作用于请求报文相同。
      • 响应报文也不一定都携带实体。
      • HTTP 状态码分类
状态码类别取值范围作用说明
1xx100~199信息提示通告信息,可能还需要进一步交互
2xx200~299成功成功完成客户请求的操作,并进行响应
3xx300~399重定向表示资源已移走,需要向新URL发请求
4xx400~499客户端错误由于客户端请求错误,无法成功响应
5xx500~599服务器端错误由于服务器端错误,无法成功响应
	- 常见的HTTP状态码
状态码短语含义
100Continue表示已成功收到了请求的初始部分,请客户端继续
200OK成功, 所请求信息在响应报文中
301Moved Permanently重定向, 所请求对象被永久移走,在响应报文的首部行Location:中会给出新的URL,通常浏览器会自动再想新URL发送请求
400Bad Request客户端请求错误,即服务器不能正确理解客户请求
401Unauthorized未授权,需要输入用户名和密码
404Not Found客户端请求的对象,在服务器上不存在
451Unsupported Media Type不支持的媒体类型,可能被服务器拒绝请求,或者是请求方法或参数与服务器要求不匹配
505HTTP Version Not Supported请求使用的HTTP版本, 服务器不支持

三、Cookie

  • 因为HTTP服务器并不保存关于客户的任何信息,所以HTTP被称为无状态协议(stateless protocol)
  • Cookie 中文名称为小型文本文件,指某些网站为了辨别用户身份、进行会话跟踪而储存在用户本地终端上的数据。
  • Cookie 是网景公司 前员工 LouMontulli 在1993年3月发明的。
  • Cookie 是由服务器端生成,发送给 User-Agent (一般是浏览器),浏览器会将Cookie的 key/value 保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie 给服务器(前提是浏览器设置为启用Cookie)。
  • Cookie技术主要包含4部分内容:
    • 1)HTTP响应报文中的Cookie头行:Set-Cookie。使用 Cookie 技术的网站,再给用户发送的HTTP响应报文中,通过 Set-Cookie头行,发送大小通常不超过4KB的Cookie信息,包括为其用户分配的 ID、用户对网站的访问偏好等。
    • 2)用户浏览器在本地存储、维护和管理的Cookie文件。浏览器每当获得新的Cookie信息,便会在 Cookie 文件中追加一行Cookie信息,包括网站的域、路径、内容(如用户ID、访问偏好、商品选择等)、有效期和安全5个字段。
    • 3)HTTP请求报文中的Cookie头行:Cookie。当用户向已经访问过且已经获得 Cookie信息的网站发送HTTP请求报文时,浏览器会自动检索本地的Cookie文件,并在每个请求报文中通过Cookie头行,携带上网站为该用户分配的Cookie信息。网站可以基于用户请求报文中的Cookie值,实现对用户的跟踪、偏好统计、会话关联等功能。
    • 4)网站在后台数据库中存储、维护Cookie信息,包括已分配给用户ID、每个ID用户在本网站的访问特征等。
  • Cookie 可以实现在无状态的HTTP之上建立用户会话。
  • Cookie 文件可以保存在客户端计算机的硬盘中,也可以保存在客户端计算机的内存中。
    • 保存在硬盘中的Cookie通常被称为永久Cookie,Cookie的有效周期可以进行设置,关闭浏览器不影响Cookie的有效周期。
    • 保存在内存中的Cookie被称为会话Cookie,表示这个Cookie的有效周期是浏览器的会话期间,只要关闭浏览器窗口,Cookie就消失。
  • Web网站利用Cookie技术进行用户跟踪,最常见的用途包括以下几点:
    • 1)网站可以利用Cookie的ID来准确统计网站的实际访问人数、新访问者和重复访问者的人数对比、访问者的访问频率等数据。
    • 2)网站可以利用 Cookie 限制某些特定用户的访问。
    • 3)网站可以存储用户访问过程中的操作习惯和偏好,对不同用户呈现不同的显示内容、颜色、布局等界面元素,有针对性的为用户提供服务,提升用户体验。
    • 4)记录用户登录网站使用的用户名、密码等信息,当用户多次登录时,无须每次都从键盘输入这些烦琐的字符和数字。
    • 5)电子商务网站利用 Cookie 可实现“购物车”功能,对同一个ID的用户,网站可以跟踪其向“购物车”中添加的不同商品,每个商品都会和ID一起存储在网站数据库中。当用户选择结算时,网站通过对数据库中该ID的检索,找到用户购买的所有商品,一起实现结账功能。

第五节、Internet电子邮件

一、电子邮件系统结构

  • 电子邮件系统主要包括邮件服务器简单邮件传输协议(SMTP)用户代理邮件读取协议等。
  • 邮件服务器的功能是发送和接收邮件,同时还要向发言人报告邮件传送的情况(已交付、被拒绝、丢失等),是电子邮件体系结构的 核心
    • 邮件服务器维护管理一个外出邮件队列,队列中暂存注册用户等待向外发送的邮件。
  • 每个用户的邮箱都有一个唯一的电子邮件地址,格式为:收件人邮箱名@邮箱所在主机的域名(或 IP地址),其中“@”表示“在”的意思。
  • 用户代理 是电子邮件应用的客户端软件,为用户提供使用电子邮件的接口。
    • 用户代理的主要功能是支持用户撰写、显示、处理和收发邮件,为用户阅读、回复、转发、保存和撰写邮件等提供编辑与操作环境。
  • 邮件服务器之间发送和接收邮件时按照客户/服务器方式工作。
  • 实现邮件服务器间发送邮件的应用层协议是SMTP,
  • 用户代理向注册邮件服务器发送邮件时,通常也是基于SMTP。
  • 一个邮件服务器通常至少包含两个进程(或线程):邮件发送进程(mail sender)邮件接收进程(mail receiver)
    • 邮件接收进程实现 SMTP 的服务器端,通常绑定默认熟知端口号 25,等待其他邮件服务器(邮件发送进程)或用户代理主动请求向其发送邮件;
    • 邮件发送进程实现 SMTP 的客户端,实时监测外出邮件队列,只要队列不空,就依次从队列中取出一个邮件,向接收方的邮件服务器的25号端口(即邮件接收进程)发送。
  • 邮件读取协议不是 SMTP,而是支持接收邮件的用户主动连接服务器,对其邮箱中的邮件进行操作或申请向本地传输的应用层协议
    • 邮件读取协议通常也是客户/服务器通信方式,用户代理运行邮件读取协议的客户端,邮件服务器运行邮件读取协议的服务器端。
    • 邮件服务器出了运行SMTP服务器之外,还会运行一个或多个邮件读取服务器,以便支持用户访问邮箱和下载邮件等操作。典型的邮件读取协议POP、IMAP 等。

二、SMTP

  • SMTP 是Internet电子邮件中核心应用层协议,实现邮件服务器之间或用户代理到邮件服务器之间的邮件传输。
    • SMTP使用传输层 TCP实现 可靠数据传输,从发送方(客户端)向接收方(服务器端)发送邮件。
    • 在发送邮件时,SMTP客户端首先请求与服务器端的25号端口建立 TCP 连接,连接一旦建立,便开始进行SMTP 应用层交互,实现邮件的发送。
    • 当TCP连接建立成功后,SMTP通过3个阶段的应用层交互完成邮件的传输,分别是握手阶段邮件传输阶段关闭阶段
  • SMTP 作为电子邮件系统的核心应用层协议,具有如下特点:
    • 1)SMTP只能传送7位ASCII码文本内容,包括 SMTP 命令、应答消息以及邮件内容。因此,SMTP不能直接传送可执行文件或其他的二进制对象(例如,图像、声音、视频等),包括许多其他非英语国家的文字都无法通过SMTP直接传送。在通过SMTP传送这类内容时,必须将这些内容转换为7位ASCII码文本形式,接收邮件一方再将这些内容还原。
    • 2)SMTP传送的邮件内容中不能包含“CRLF.CRLF”,因为该信息用于标识邮件内容的结束。如果在邮件内容中包含该内容,则SMTP在传输时,需要进行转义。
    • 3)SMTP是“推动”协议。客户端有邮件发送给服务器时,客户主动与服务器(25号端口)请求建立TCP连接,然后将邮件“推送”给服务器。这与HTTP的“拉动”协议有很大区别。
    • 4)SMTP使用TCP连接是持久的。在SMTP的邮件传输阶段,在客户完成一封邮件传输后,并不要求必须进入关闭阶段。如果客户还有邮件需要继续向同一服务器发送,则可以利用已建立的TCP连接继续发送后续的邮件,直到没有邮件需要发送为止。

三、电子邮件格式与MIME

  • RFC822 标准就规定了邮件内容的基本格式,一份邮件包括首部空白行主体 3部分。
    • 邮件内容首部包括一条或多条首部行,每条首部行包括一个关键字,后面机上冒号,冒号后面是首部值。邮件中常见的首部行包括以下内容:
      • “To:” 后面填入一个或多个收件人的电子邮件。用户只需打开地址簿,点击收件人名字,收件人的电子邮件地址就会自动地填入到合适的位置上。(“To:” 首部行必须填写
      • “Subject:” 是邮件的主题。他反应了邮件的主要内容,便于用户查找邮件。
      • “Cc:” 表示应给某某人发送一个邮件副本。
      • “From:” 表示发信人的电子邮件地址。
      • “Date:” 为发信日期。
      • “Reply-To” 是对方回信所用的地址。如果要求对方回复信件时使用不同于发信人邮件的地址,就需要填写该首部行。
  • MIME(多用途互联网邮件扩展):解决邮件传输中非7位ASCII码文本内容转换为7位ASCII码的问题。
    • MIME 的基本思想不是改动或取代SMTP,而是继续使用RFC822 定义的邮件格式标准。
    • MIME 定义了将非7位 ASCII 码内容转换为7位ASCII码的编码规则,并在邮件首部增加MIME 首部行,说明主体内容原本的数据类型以及采用的编码标准等。
    • MIME 主要包括 3 个部分:
      • 1) 5个 MIME 邮件首部字段,可包含在邮件首部中。这些字段提供了有关邮件主体的信息。
        • MIME-Version: 标识MIME的版本。
        • Content-Description: 这是可读字符串,用于对邮件内容的概括性描述,以便收件人对邮件内容的初步判断。
        • Content-Id: 邮件的唯一标识符。
        • Content-Transfer-Enconding:说明在传送时邮件主体是如何编码的。
        • Content-Type:说明邮件主体内容的类型和格式。
      • 2)定义了多种邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
      • 3)定义了邮件传送编码,可对任何内容格式进行转换,从而适合通过SMTP进行传送。

四、邮件读取协议

  • 由于SMTP 是“推动”协议,所以不能用于用户从自己邮箱中读取邮件的操作。
  • 当用户需要访问自己的邮箱,读取其中的邮件时,所使用的的应用层协议邮件读取协议
  • 邮件读取服务器的主要作用是用户身份鉴别(需要登录用户名和密码)、访问用户邮箱、根据用户请求对邮箱中的邮件进行操作等。
  • 目前Internet邮件系统中比较流行的邮件读取协议有 第三版的邮件协议(POP3)互联网邮件访问协议(IMAP)HTTP,其中HTTP被用作Web Mail系统中的邮件读取协议。

1、POP3

  • POP3 是一个简单的邮件读取协议,因此其功能很有限。
    • 为了保证读取邮件过程的可靠性,POP3协议使用传输层 TCP。
    • POP3 客户端运行在用户代理中,POP3服务器运行在邮件服务器上,默认熟知端口号为110
    • POP3协议交互过程可以分为 3个阶段:授权事务处理更新
  • POP3 协议不具备支持用户创建远程文件夹并为邮件指派文件夹的功能。

2、IMAP

  • 互联网邮件访问协议(IMAP)支持用户创建远程文件夹并为邮件指派文件夹的功能。
  • IMAP比POP3具有更多特性,比POP3更复杂。
  • IMAP 服务器将每个邮件与一个文件夹进行关联,当邮件第一次到达服务器时,与收件人的INBOX 文件夹相关联。
  • 通过IMAP,收件人可以在服务器上创建新的文件夹,并可以对邮件进行移动、查询、阅读、删除等操作。
  • IMAP 服务器维护了IMAP会话的用户状态信息。
  • IMAP的另一个重要特性是允许用户代理只读取邮件的的部分内容。

3、HTTP

  • HTTP是Web应用的应用层协议。
  • 当使用基于Web的邮件时,HTTP便被用于邮件的读取,此时HTTP也作为邮件读取协议使用。
  • 基于 Web 的电子邮件简称 Web 邮件(Web Mail)
  • 当发件人要发送一封电子邮件时,在电子邮件报文从浏览器发送到邮件服务器的过程中,使用的也是HTTP,而不是SMTP。
  • Web邮件与普通电子邮件系统的主要区别在于用户代理与邮件服务器之间的邮件收发不同。

第六节 FTP

  • 文件传送协议(FTP)是在互联网的两个主机间实现文件互传的网络应用,其应用层协议也称为FTP。
  • FTP 是典型的客户/服务器网络应用,采用C/S方式实现客户与服务器之间的双向文件传输。
  • FTP的客户与服务器之间的交互以及文件传输过程均使用TCP的可靠传输服务
  • FTP服务器运行在FTP服务器主机上,通常管理一定量的共享文件,FTP的服务器进程由两大部分组成:
    • 一部分为主进程,负责接受新的客户请求;
    • 另一部分为若干个从属进程,负责处理单个客户请求,与具体客户进行交互。
    • 这样,FTP服务器便可以同事为多个客户进程提供服务。
  • 用户在使用FTP服务时,首先客户进程需要请求与FTP服务器的21号端口建立一条TCP连接,称为控制连接,然后开始FTP会话。
  • FTP的一个显著特点是在传输文件内容时,需要新建一个数据连接,专门用于文件传输,文件传输结束后,数据连接即关闭。
    • FTP应用使用两个“并行”的TCP连接:控制连接和数据连接。
      • 控制连接在整个会话期间一直保持打开,是持久的,FTP客户发出的传送请求通过控制连接发送给服务端的控制进程的熟知端口(21),但控制连接不用来传送文件,实际用于传输文件的是数据连接
      • 服务器端的控制进程在接收到FTP客户发送来的文件传输请求后就创建数据传送进程和数据连接,用来连接客户端和服务器端的数据传送进程。数据传送进程实际完成文件的传送,在传送完毕后关闭数据传送连接,数据连接是临时的,非持久的
      • 服务器进程用自己传送数据的熟知端口(20)与客户进程所提供的的端口号建立数据连接。
      • 数据连接用于实际传送文件内容。
      • 由于FTP专门使用一个独立的控制连接传输控制信息,与传输文件信息进行分离,所以将FTP这种控制信息的传送方式称为带外控制
      • 那些命令、数据都是通过一个TCP连接传输的应用层协议称为带内控制协议,例如:HTTP。
    • 服务器必须将特定用户账户与控制连接关联起来,随着用户在远程目录树上的切换,服务器必须追踪用户在远程目录树上的当前位置,对每个进行中的用户会话的状态信息进行追踪,因此,FTP服务器器必须在整个会话期间保留用户的状态,即FTP是有状态的(stateful)协议
  • FTP的命令与应答都是可读的。
  • 每个FTP命令由4个大写字母ASCII字符组成,有些命令还带有可选参数。一些较为常见的命令举例如下:
    • USER usename,用于向服务器传送用户标识。
    • PASS password,用于向服务器发送用户口令。
    • LIST,用于请求服务器回送当前远程目录中的所有文件列表。该文件列表是经一个数据连接传送的,而不是在控制TCP连接上传送。
    • RETR filename,用于从FTP服务器的当前目录下载文件。该命令将使服务器发起一个数据连接,并经该数据连接向客户发送所请求的文件。
    • STOR filename,用于向FTP服务器的当前目录上传文件。
  • 每个FTP命令都对应一个从服务器发向客户的应答。每条应答由一个3位数字的状态码,后跟一个可选的短语信息构成。

第七节 P2P应用

  • 网络应用体系结构:
    • 前面介绍的网络应用都是典型的客户/服务器体系结构应用。
    • 本节对P2P体系结构的网络应用加以分析。
  • 客户/服务器体系结构应用的关键在于服务器,所有的客户都只与服务器通信,服务器必须一直处于运行状态,一旦服务器出现故障,则整个应用即瘫痪,这就是所谓的单点故障。
    • 客户/服务器体系结构应用中的服务器性能、服务器接入网络带宽等,在很大程度上决定了应用性能、应用规模以及用户体验。
  • P2P体系结构的网络应用则不同,对服务器的依赖很小,甚至对于纯P2P来说,整个应用几乎不依赖某个集中服务器,应用都是动态地在对等方之间进行。
  • 在P2P应用中,对等方随时可能加入应用,也随时可能离开应用,具有很强的应用规模伸缩性。
  • P2P应用的对等方通常并不属于服务供应商,而是用户控制的桌面计算机或笔记本电脑等。
  • P2P应用举例:BitTorrent、PPLive、PPstream等。
  • 在实现文件分发这一应用中,P2P体系结构应用远远优于客户/服务器体系结构应用。
  • P2P应用中,每个对等方既是数据的获取者(消费者)又是数据的提供者(服务器)。

第八节 Socket 编程基础

  • 开发者创建一个网络应用时,其最主要任务就是编写客户程序和服务器程序的代码。
  • 网络应用程序有两类:实现标准协议的网络应用专用网络应用
  • 目前在 Internet 中应用最广泛的网络应用编程接口就是Socket API
  • 网络应用进程可以创建3中类型的 Socket:数据报类型套接字 SOCK_DGRAM流式套接字 SOCK_STREAM原始套接字 SOCK_RAW
    • SOCK_DGRAM面向传输层 UDP接口;
    • SOCK_STREAM 面向传输层 TCP接口;
    • SOCK_RAW 面向网络层协议(如IP、ICMP(互联网控制报文协议)等)接口。
  • 数据报类型套接字 SOCK_DGRAM流式套接字 SOCK_STREAM 这两类套接字均是面向应用层相邻的传输层接口
  • 原始套接字SOCK_RAW比较特殊,“绕过”了传输层,面向网络层接口
    • 原始套接字SOCK_RAW的创建有特殊权限,例如,在Linux系统中,需要有root权限的用户才能创建原始套接字。
    • 通过原始套接字,应用进程可以实现一些特殊的功能,如收发 ICMP (互联网控制报文协议)报文等。
    • 在这里插入图片描述

习题

1、计算机网络应用可以分为哪几种体系结构的应用类型?各种应用类型的特点是什么?

  • (1)计算机网络应用可分为:客户/服务器网结构网络应用纯P2P结构网络应用混合体系网络结构应用
  • (2)
    • 客户/服务器结构网络应用特点:通信只在客户与服务器之间进行,客户与客户之间不进行直接通信。
    • 纯P2P结构网络应用特点:没有一直在运行的传统服务器,所有通信都是在对等的通信方之间进行,通信双方没有传统意义上的客户与服务器之分,“地位”对等。
    • 混合结构网络应用特点:混合结构网络应用将C/S应用与P2P应用相结合,既有中心服务器的存在,又有对等端(客户)间的直接通信。

2、为什么说客户/服务器通信方式是网络应用通信的基本方式?

  • 网络应用的本质是运行在不同主机上(也可以运行在同一主机上)的应用进程之间的通信,无论哪种类型的网络应用,基本通信方式都是客户/服务器方式通信。

3、网络应用通信过程中,需要用哪些信息标识一个应用进程?

  • 通过进程运行的主机IP地址以及其套接字所绑定的端口号可以标识应用进程。

4、简述域名系统的层次结构

  • 因特网采用了树状结构的命名方法,任何一个连接在因特网上的主机或路由器,都可以有一个唯一的层次结构的域名。
  • 域名的结构由标号序列组成,各标号之间用点隔开,例如,“···.三级域名.二级域名.顶级域名”,各标号分别代表不同级别的域名。

5、请举例说明,什么是DNS递归解析过程?什么是DNS迭代解析过程?

  • DNS递归解析过程:提供递归查询服务的域名服务器,可以代替查询主机或其他域名服务器,进行进一步的域名查询,并将最终解析结果发送给查询主机或服务器。
  • DNS迭代解析过程:提供迭代查询的服务器,不会代替查询主机或其他域名服务器,进行进一步的查询,只是将下一步要查询的服务器告知查询主机或服务器(如果该主机服务器拥有最终解析结果,则直接响应解析结果)。

6、什么是本地域名服务器?主机是如何确定本地域名服务器的?

  • 任何一台主机在网络地址配置时,都会配置一个域名服务器作为默认域名服务器。这种默认域名服务器通常称为本地域名服务器,是主机进行域名查询过程中首先查询的域名服务器。

7、简述HTTP1.0获取一引用10个小JPEG图片网页的通信过程。

  • 1)HTTP客户进程向服务器的80号端口,请求建立TCP连接。
  • 2)HTTP客户进程基于已建立的TCP连接向服务器发送一个HTTP请求报文。
  • 3)HTTP服务器进程接收该请求报文,从指定的路径中检索出html文件,并封装到一个HTTP响应报文中,发送给客户进程。
  • 4)HTTP服务器进程通知TCP断开该TCP连接。
  • 5)HTTP客户接收响应报文,断开TCP连接。浏览器从响应报文中提取出HTML文件,进行解析显示,并获知还有10个JPEG图片的引用。
  • 6)对每个引用的JPEG图片,重复前4个步骤。

8、什么是非持久的HTTP?什么是非流水方式的持久HTTP?什么是流水方式的持久HTTP?简述交互过程。

  • 非持久的HTTP:是指HTTP客户与HTTP服务器建立 TCP 连接后,通过该连接发送HTTP请求报文,接收 HTTP 响应报文, 然后断开连接。
  • 非流水方式的持久HTTP:也称为非管道方式持久连接,客户端在通过持久连接收到前一个响应报文后,才能发出对下一个对象的请求报文。
  • 流水式的持久HTTP:也称为管道方式持久连接,客户端在通过持久连接收到前一个对象的响应报文之前,连续依次发送对后续对象的请求报文,然后再通过该连接依次接收服务器发回的响应报文。

9、假设在浏览某网页时单击了一个超链接,URL 为 “http://www.kicker.com.cn/index.html”,且该URL对应的IP地址在你的计算机上没有缓存;文件index.html引用了8个小图像。域名解析过程中,无等待的一次DNS解析请求与响应时间记为RTTd,HTTP请求传输Web对象过程的一次往返时间记为RTTh。请回答下列问题:

  • 1) 浏览器解析到URL对应的IP地址的最短时间是多少?最长时间是多少?
  • 2) 若浏览器没有配置并行TCP连接,则基于HTTP1.0获取URL链接Web页完整内容(包括引用的图像)需要多长时间(不包括域名解析时间)?
  • 3) 若浏览器配置5个并行TCP连接,则基于HTTP1.0获取URL链接Web页完整内容需要多长时间?
  • 4) 若浏览器没有配置并行TCP连接,则基于非流水方式的HTTP1.1获取URL链接Web页完整内容需要多长时间?基于流水方式的HTTP1.1获取URL链接Web页完整内容需要多长时间?

10、电子邮件主要由哪几部分构成?

  • 电子邮件系统主要包括邮件服务器简单邮件传输协议(SMTP)用户代理邮件读取协议等。

11、简述SMTP发送邮件过程。

  • 在发送邮件时,SMTP客户端首先请求与服务器端的25号端口建立TCP连接,连接一旦建立,便开始进行SMTP应用层交互,实现邮件的发送。
  • 当TCP连接建立成功后,SMTP通过3个阶段的应用层交互完成邮件的传输,分别是握手阶段邮件传输阶段关闭阶段

12、FTP的“带外控制”特性是什么含义?控制链接和数据连接各有什么特点?用途分别是什么?

  • 由于FTP专门使用一个独立的控制连接传输控制信息,与传输文件信息进行分离,所以将FTP这种控制信息的传输方式称为带外控制
  • 控制连接:在整个会话期间一直保持打开,是持久的,FTP客户发出的传送请求通过控制连接发送给服务端的控制进程的熟知端口(21),但控制连接不用来传送文件。
  • 数据连接:用来连接客户端和服务器端的数据传送进程。数据传送进程实际完成文件的传送,在传送完毕后关闭数据传送连接,数据连接是临时的,非持久的

13、考虑向 N 个对等方(用户)分发 F = 15Gb 的一个文件。该服务器具有 us=500 kbit/s、1Mbit/s 和 2 Mbit/s 的每种组合,绘制最小分发时间图表 (注 k=103 、 M=106 、 G=109)。


14、简述TCP客户程序与TCP服务器程序的 Socket API 基本函数调用过程。


15、简述UDP客户程序与UDP服务器程序的Socket API 基本函数调用过程。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值