六、WEB服务基础

6.1、HTTP介绍

Web、服务器和相关的Web应用程序都是通过HTTP相互通信的。HTTP(HyperText Transfer Protocol,超文本传输协议)是现代全球因特网中使用的公共语言。Web内容都是存储在Web服务器上的,Web服务器所使用的是HTTP协议,因此经常会被称为HTTP服务器。这些HTTP服务器存储了因特网中的数据,如果HTTP客户端发出请求,它们会提供数据。客户端向服务器发送HTTP请求,服务器会在HTTP响应中回送所请求的数据。

  • 资源与资源的类型

Web服务器就是Web资源的宿主,Web资源就是Web内容的源头。最简单的Web资源就是Web服务器文件系统中的静态文件。这些文件可以包含任意内容:文本文件、HTML文件、word文件、AVI电影文件等。但是资源并不一定是静态文件,资源还可以是根据需要生成内容的软件程序,这些程序可以根据用户身份、所请求的信息来产生不同的内容。

因特网上有数千种不同类型的数据类型,HTTP给每种要通过Web传输的对象都打上了MIME类型的数据格式标签。Web服务器会为所有的HTTP对象数据附加MIME(Multipurpose Internet Mail Extension,多用途因特网邮件扩展)类型。当Web浏览器从服务器中取回一个对象时,会查看相关的MIME类型,看看能否知道该如何处理该对象,大多数浏览器都可以处理数百种常见的对象类型。

MIME类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间用斜杠分隔。


HTML格式的文本文档由text/html类型来标记

普通ASCII文本文档由text/plain类型来标记

JPEG版本图片为image/jpeg类型

GIF版本图片为image/gif类型

...

  • URI与URL

每个Web服务器资源都有一个名字,这样客户端可以通过该名字找到所需要的资源。服务器资源名被称为统一资源标识符(Uniform Resource Indentifier,URI)。URI就像英特网上的邮政地址一样,在世界范围内唯一标示并定位信息资源。

例如:  http://www.joes-hardware.com/specials/saw-blade.gif

统一资源定位符(Uniform Resource Locator,URL)是资源标识符最常见的形式,URL描述了一台特定服务器上某资源的特定位置。它们可以明确说明如何从哟个精确、固定的位置获取资源。如图显示了URL如何精确的说明某自愿的位置以及如何访问。

  • 事务

下图展示了客户端如何通过HTTP与Web服务器及其资源进行事务处理。一个HTTP事务由一条(客户端发往服务器端)请求和一个响应(服务器端发回客户端)组成。这种通信通过HTTP报文的格式画数据块进行。

HTTP支持几种不同的请求命令,这些命令被称为HTTP方法(HTTP mothod)。每种HTTP请求报文都包含一个方法。这些方法告诉服务器要执行什么动作,常见的HTTP方法有:

GET 请求获取一个资源,需要服务器发送
HEAD 跟GET相似,但其不需要服务发送资源而仅传回响应首部
PUT 与GET相反,向服务端写入文档;例如发布系统
DELETE 请求删除URL指向的资源
OPTIONS 探测服务器端对某资源所支持的请求方法
TRACE 跟踪请求要经过的防火墙、代理或网关等
POS 支持HTML表单提交,表单中有用户填入的数据,这些数据会发送到服务器端,由服务器存储至某位置(例如发送处理程序)

每条HTTP响应报文返回时都会携带一个状态码。状态码是一个三位数字的代码,告知客户端请求是否成功,或者是否需要采取其他动作,常见的状态码有:

1xx 纯信息性状态码
2xx “成功”类的信息 (200, 201, 202)
3xx
重定向状态码

301:Moved Permanently, 在响应报文中用首部“Location: URL”指定资源现在所处位置

302:Found, 在响应报文中使用首部“Location: URL”指定临时资源位置;

304:Not Modified, 条件式请求中使用;(缓存中使用)

4xx
客户端错误类的信息

403:Forbidden,请求被服务器拒绝

404:Not Found,服务器无法找到请求的URL

405:Method Not Allowed,不允许使用此方法请求相应的URL

5xx
服务器端错误类的信息

500:Internal Server Error,服务器内部错误;

502:Bad Gateway,代理服务器从上游收到了一条伪响应;

503:Service Unavailable,服务器此时无法提供服务,但将来可能可用;

504:Gateway Timeout,网关代理请求后端服务时,后端服务没有及时响应。

  • 报文

HTTP报文是由一行一行的简单字符串组成.HTTP报文都是纯文本,而不是二进制代码,所以可以方便地对其进行读写。下图展示了一个简单事务所使用的HTTP报文。

HTTTP报文主要分为三个部分:起始行、首部字段、主体。


请求报文语法:

<method> <request-URL> <version>

<headers>(name:value)

(必须空一行)

<entity-body> 报文主体

响应报文语法:

<version> <status> <reason-phrase>

<headers>

(必须空一行)

<entity-body>

<method>: 请求方法, 希望服务器端执行的动作,如GET、HEAD、POST等

<request-url>: 请求的资源,可以是相对路径,也是完整的URL

<version>:协议版本,格式HTTP/<major>.<minor>,如http/1.0

<headers>:HTTP首部

<status>: 状态码

<reason-phrase>:原因短语,数字状态码易读信息

<entity-body>: 主体部分

  • HTTTP协议版本

http/0.9:仅纯文本(超链接), ASCII

http/1.0:支持多媒体数据的处理。支持保持连接。

http/1.1:支持持久连接。更精细的缓存控制

HTTP-NG(又称HTTP/2.0),重点是性能的大幅优化,以及更强大的服务逻辑远程执行框架,但没有要取代http/1.1的计划。

  • HTTP首部

HTTP首部和方法配合工作,共同决定了客户端和服务器能做什么。首部通常可以分为五种类型:

通用首部:请求报文和响应报文都可以使用的

HTTP/1.0引入允许HTTP应用程序缓存对象本地副本的首部,这样就不需要总是直接从服务器段获取。

请求首部:只在请求报文中有意义

请求的信息性首部:

Accept首部:

条件请求首部:

安全请求首部:

代理请求首部:

响应首部:只在请求报文中有意义

响应的信息性首部

协商首部

安全响应首部

实体首部:用于指定实体属性

实体的信息性首部

内容首部

实体缓存首部

扩展首部:非标准首部,可能是由程序开发者创建的,例如X-Forward-For

  • HTTTP的实现软件

客户端:

GUI:IE、Firefox、Safari、chrome、Opera

CLI:elinks, curl

服务端:

Server: httpd(ASF基金会)、nginx、lighttpd

App Server: IIS、tomcat、jetty、resin

6.2、Web服务器处理连接请求的架构方式

1、单线程web服务器(Single-threaded web servers)

此种架构方式中,web服务器一次处理一个请求,结束后读取并处理下一个请求。在某请求处理过程中,其它所有的请求将被忽略,因此,在并发请求较多的场景中将会出现严重的必能问题。

2、多进程/多线程web服务器

此种架构方式中,web服务器生成多个进程或线程并行处理多个用户请求,进程或线程可以按需或事先生成。有的web服务器应用程序为每个用户请求生成一个单独的进程或线程来进行响应,不过,一旦并发请求数量达到成千上万时,多个同时运行的进程或线程将会消耗大量的系统资源。

3、I/O多路复用web服务器

为了能够支持更多的并发用户请求,越来越多的web服务器正在采用多种复用的架构——同步监控所有的连接请求的活动状态,当一个连接的状态发生改变时(如数据准备完毕或发生某错误),将为其执行一系列特定操作;在操作完成后,此连接将重新变回暂时的稳定态并返回至打开的连接列表中,直到下一次的状态改变。由于其多路复用的特性,进程或线程不会被空闲的连接所占用,因而可以提供高效的工作模式。

4、多路复用多线程web服务器

将多进程和多路复用的功能结合起来形成的web服务器架构,其避免了让一个进程服务于过多的用户请求,并能充分利用多CPU主机所提供的计算能力。

  • 一次web请求响应的过程

1、建立连接——接受或拒绝客户端连接请求;

2、接收请求——通过网络读取HTTP请求报文;

3、处理请求——解析请求报文并做出相应的动作;

4、访问资源——访问请求报文中相关的资源;

5、构建响应——使用正确的首部生成HTTP响应报文;

6、发送响应——向客户端发送生成的响应报文;

7、记录日志——当已经完成的HTTP事务记录进日志文件;

时间: 2024-11-21 05:58:05

六、WEB服务基础的相关文章

linux web服务基础知识,dns

Web服务基础 用户访问网站的基本流程 我们每天都会用web客户端上网,浏览器就是一个web客户端,例如谷歌浏览器,以及火狐浏览器等. 当我们输入www.oldboyedu.com/时候,很快就能看到老男孩教育的官网了,这一切看起来很平淡无奇,背后又是什么道理呢?普通人可以不知道,但是咱们作为it开发人员,必须得掌握清楚背后的技术. 下面超哥为你揭晓用户访问网站的基本流程 老男孩教育某python总监,讲了一天课感觉很累,下了班躺床上打开他的macbook pro,双击浏览器,输入www.por

Web服务基础

1.查看Windows客户端本地缓存的DNS解析记录的命令如下: C:\>ipconfig  /displaydns Windows IP Configuration m1612.oadz.com ---------------------------------------- Record Name . . . . . : m1612.oadz.com Record Type . . . . . : 1 Time To Live  . . . . : 5365 Data Length . .

TCP协议与Web服务基础

TCP协议工作在OSI模型的传输层,提供一个可靠的面向连接的服务,其可靠性在于,通信的双方要建立一个端到端的虚电路,通过三次握手建立通信,断开通信需要四次握手.其连接模型如下: 1.建立连接协议(三次握手) (1)客户端发送一个带SYN标志的TCP报文到服务器.(报文1) (2) 服务器端回应客户端的一个同时带ACK标志和SYN标志的TCP报文.(报文2).表示对刚才客户端SYN报文的回应:同时又标志SYN给客户端,询问客户端是否准备好进行数据通讯. (3) 客户再次回应服务器端一个带ACK标志

web服务的一些基础笔记

1. MIME(Multipurpose Internet Mail Extension,多用途互联网邮件扩展) 它是SMTP能够传输非文本格式文件的根源,将他引入到HTTP,那么HTTP也可以传输图片声音等非文本格式的文件,所以他也是HTTP可以传输非文本格式文件的根源. 将非文本数据在传输数据前重新编码为文本格式,接收方能够用相反的方式将其重新还原为原来的格式,还能够用相应的程序来打开. 2.flash,Applet(Java中), Flash也是一种变成语言.可以有动态网页. 3.动态网页

J2EE基础之Web服务简介

J2EE基础之Web服务简介 1.什么是Web服务? 在人们的日常生活中,经常会查询网页上某城市的天气信息,这些信息都是动态的.实时的,它是专业的气象站提供的一种服务.例如,在网上购物时,通常采用网上支付的方式,这是通过使用第三方提供的支付工具来实现的.在网络上提供这样的服务,我们称之为Web服务. 从软件开发者的角度来看,Web服务是一组规范的集合.这种规范用来定义不同应用系统之间是如何交互的,包括信息传递的内容.格式,信息的传递协议,以及相关的安全.策略和互操作等关键特性. 从编程使用者的角

基于 REST 的 Web 服务:基础

基础 REST 定义了一组体系架构原则,您可以根据这些原则设计以系统资源为中心的 Web 服务,包括使用不同语言编写的客户端如何通过 HTTP 处理和传输资源状态. 如果考虑使用它的 Web 服务的数量,REST 近年来已经成为最主要的 Web 服务设计模型. 事实上,REST 对 Web 的影响非常大,由于其使用相当方便,已经普遍地取代了基于 SOAP 和 WSDL 的接口设计. REST 这个概念于 2000 年由 Roy Fielding 在就读加州大学欧文分校期间在学术论文“Archit

linux学习笔记-工程师技术:HTTP服务基础(Web服务基本搭建)、网页内容访问、安全Web服务、动态网站的部署

两台虚拟机,均要检测 1.IP地址     ifconfig 2.是否可以解析,nslookup server0.example.com 3.Yum是否可用   yum repolist 4.防火墙默认区域修改为trusted ------------------------------------------------------------------------------------------- HTTP服务基础 Web通信基本概念 基于 B/S (Browser/Server)架构

Linux运维之道之ENGINEER1.2(HTTP服务基础,网页内容访问,安全web)

ENGINEER1.2 HTTP服务基础 基于B/S架构的网页服务 ----服务端提供页面: ----浏览器下载并显示页面: ---------------------------------------------------------------------------------------------------------------------------------------------- 独立wab主机的快速部署 安装httpd #yum  -y  install  http

HTTP协议基础与web服务的重定向,跳转以及请求转发

JavaWeb中,HttpServletRequest与HttpServletResponse几乎是处理各种请求与操作必备的参数,与原始的ServletRequest/ServletResponse相比,它们符合HTTP协议,所以首先从http协议入手,回顾一些基本的内容,而后根据协议来总结常用的知识点. 首先来介绍一下dos环境下简单的http发送报文,接收报文的方法.运行输入cmd,打开命令提示符输入telnet 127.0.0.1 8080,回车后会出现一个输入界面,但此时输入的字符都无法