自学 Linux 18—Linux 应用层网络服务程序简介—HTTP 协议和服务

  操作系统中有很多默认的网络服务或者客户端程序,例如 Web 服务器和浏览器、FTP 服务器和客户端、Telnet 服务器和客户端等,在 Linux 环境下有 ApacheMozillaVSFtp 等。接下来对这些程序的协议和使用进行介绍,主要包括以下内容:

  █ HTTP 协议及服务,主要介绍 HTTP 协议的标准和应用;
  █ 介绍 FTP 协议标准,并介绍 FTP 客户端的使用;
  █ 对 TELNET 的协议标准进行简介;
  █ 介绍 Linux 下网络服务的配置方法。

HTTP协议和服务

  HTTP 协议是目前应用最广泛的应用层网络协议,它是目前互联网繁荣的基础。

1. HTTP 协议概述

  应用层协议 HTTPWeb 的核心。HTTP 协议在 Web 的客户端程序和服务器程序中得以实现,运行在不同系统上的客户端程序和服务器程序,通过交换 HTTP 消息彼此交流。HTTP 协议定义数据格式,使得服务器和客户端通过协议进行数据交流。

  Web 页面(webpage,也称为文档)是客户端和服务器交流的基本内容,它由多个对象构成。对象(object)是可由 URL 进行寻址的文件,例如 HTML 文件、JPG 图像、GIF 图像、Java 小应用程序、语音片段等。

  Web 页面大多数由一个基本 HTML 文件和很多 HTML 文件中所引用的对象构成。例如,如果某个 Web 页面包含 1HTML 文本文件和 5PNG 图像,这个 Web 页面就由 6 个对象构成,即基本 HTML 文件加 5 个图像。这个基本的 HTML 文件使用文件中的内置 URL 来引用本页面中所使用的其他对象,例如上述的 5PNG 图像需要在基本 HTML 文件中进行 URL 的引用定义。

  一个 URL 由两部分构成:存放该对象的服务器主机名和该对象的路径名。例如,在如下的 URL 中:

roll.mil.news.sina.com.cn/phototj_slide/146/index.shtml

  roll.mil.news.sina.com.cn 是一个主机名,/phototj_slide/146/index.shtml 是一个路径名。

  浏览器是 Web 的用户代理,它显示所请求的 Web 页面,并提供大量的导航与配置特性。Web 浏览器还实现 HTTP 的客户端,因此在 Web 上下文中,可以从进程意义上互换使用 “ 浏览器 ” 和 “ 客户 ” 两词。

  流行的 Web 浏览器有 Google ChromeFirefox 和微软的 IE 等。Web 服务器存放可由 URL 寻址的 Web 对象。Web 服务器还实现 HTTP 的服务器端。流行的 Web 服务器有 Apache、 微软的 IIS 以及 IBM WebSphere

2. HTTP 协议的基本过程

  HTTP 协议是基于客户端 / 服务器之间的请求响应进行交互的。

1. HTTP 协议的宏观过程

  一个客户端与服务器建立连接后,发送一个请求给服务器,请求方式的格式为:统一资源标识符、协议版本号,后边是 MIME 信息包括请求修饰符、客户端信息和可能的内容。

  服务器接到客户端的请求后,向客户端发送相应的响应信息,其格式为:一个状态行包括信息的协议版本号、一个成功或错误的代码,后边是 MIME 信息包括服务器信息、实体信息和可能的内容。

  如下图(客户端和服务器之间的 HTTP 协议基本框架)所示,为一个客户端和服务器之间的 HTTP 协议访问基本过程。

客户端和服务器之间的 HTTP 协议基本框架

  在 Internet 上,HTTP 通信通常发生在 TCP/IP 连接之上。默认端口是 TCP 协议的 80 端口,其他端口也是可用的。但这并不是说 HTTP 协议在 Internet 或其他网络的其他协议之上可以完成,HTTP 只能在 TCP 协议的基础之上进行传输。

  在 WWW 中,“ 客户 ” 与 “ 服务器 ” 是一个相对的概念,这个概念只在某个连接中有效,某个连接中的客户在另一个场景中可能是服务器。WWW 服务器运行时,一直在 TCP80 端口(WWW 的默认端口)监听,等待连接请求的出现。

2. HTTP协议的内部过程

  以上简要介绍了 HTTP 协议的概要运作方式,下面对 HTTP 协议的内部操作过程进行详细介绍。

  首先,简单介绍基于 HTTP 协议的客户 / 服务器模式的信息交换过程,如下图(客户端和服务器之间的 HTTP 请求响应的过程)所示, 它分 4 个过程:建立连接发送请求信息发送响应信息关闭连接

客户端和服务器之间的 HTTP 请求响应的过程

  (1)建立连接。连接的建立是通过申请套接字(Socket)实现的。客户打开一个套接字并把它绑定在一个端口上,如果成功,就相当于建立了一个虚拟文件。

  (2)发送请求。打开一个连接后,客户端把请求消息送到服务器的监听端口上,完成提出请求动作。

  HTTP/1.0请求消息的格式为:

请求消息	= 请求行(通用信息丨请求头丨实体头) CRLF[实体内容]
请求行	= 方法请求 URL HTTP 版本号 CRLF
方法		= GET|HEAD|POST|扩展方法
URL		= 协议名称 + 宿主名 + 目录与文件名

  请求行中的方法用于 HTTP 的动作方式,常用的方法有 GETHEADPOST。不同的请求对象对应 GET 的结果是不同的,对应关系如下:

对象			GET 的结果
文件			文件的内容
程序			该程序的执行结果
数据库查询	查询结果  

  HEAD 方法要求服务器查找某对象的元信息,而不是对象本身。

  POST 方法从客户端向服务器传送数据,POST 发送的数据被服务器接收后进行处理。一个请求的例子如下:

GEThttp://networking.zju.edu.cn/zju/index.htmHTTP/1.0

  头信息又称为元信息,即信息的信息,利用元信息可以实现有条件的请求或应答。

  请求头——告诉服务器怎样解释本次请求,主要包括用户可以接受的数据类型、压缩方法和语言等。
  实体头——实体信息类型、长度、压缩方法、最后一次修改时间、数据有效期等。
  实体——请求或应答对象本身。

  (3)发送响应。服务器在处理完客户的请求之后,要向客户端发送响应消息。

  HTTP/1.0 的响应消息格式如下:

响应消息 = 状态行(通用信息头|响应头|实体头) CRLF (实体内容)
状态行 = HTTP 版本号  状态码  原因叙述
状态码表示响应类型
1XX		保留
2XX		表示请求成功地接收
3XX		为完成请求客户需进一步细化请求
4XX		客户错误
5XX		服务器错误

  响应头的信息包括:服务程序名、通知客户清求的 URL 需要认证、请求的资源何时能使用。

  (4)关闭连接。客户和服务器双方都可以通过关闭套接字来结束 TCP/IP 对话。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章