阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Web服务(一)HTTP基础详解

197次阅读
没有评论

共计 5576 个字符,预计需要花费 14 分钟才能阅读完成。

一、HTTP 基本定义

超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法。通过 HTTP 或者 HTTPS 协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。目前有三个版本:http/0.9;http/1.0;/http/1.1。目前 http/1.0 和 1.1 被广泛应用。

http/0.9:仅用于传输 HTML 文档;

http/1.0:支持多媒体数据的处理;支持 keep-live(持久连接);有缓存功能;

http/1.1:支持更多的请求方法和更精细的缓存控制;持久连接;

二、HTTP 请求的过程

http 事务的过程为:一次请求和与其对应的响应。

http 请求:request

格式

<method> <request-URL> <version>

<headers>

<entity-body>

http 响应:response

格式

<version> <status> <reason-phrase>

<headers> 

<entity-body> 

method请求方法;希望服务器端执行的动作;如 GET、POST、HEAD 等
request-URL请求的资源;可以是相对路径(相对主机位置);也可以是完整的 URL
version协议版本;格式:http/<major>.<minor>
headershttp 首部信息
status状态码
reason-phrase原因短语;数字状态易读信息
entity-body主体部分

一次完整的请求过程:

Web 服务(一)HTTP 基础详解 

由于 http 是一种无状态 (stateless) 协议;所以无法记录每一次请求者的身份;并且每一次请求结束后立即断开。所以每一次请求都要先经过 DNS 解析、三次握手和四次断开;所以相当耗费 CPU 的时钟周期,浪费资源。通用提供效率有两种方法:

1、并行请求:同时发起多个请求和返回多个响应(第一次请求只能是一个资源);

2、持久连接:三次握手请求后不断开;客户端可以继续请求;缺陷是持久连接会导致占用资源;

    断开方式:两种方式无论哪个先达到上限都执行断开

        超时:在连接后规定一个持久连接的时间限定

        请求资源最大数:允许连接后最多请求多少个资源

三、HTTP 请求方法和响应状态码等信息

http 请求的方法有:GET、HEAD、POST、DELETE、PUT、OPTIONS、TRACE…; 前五种方法较为常用。

GET请求获取一个资源;而需要服务器发送
HEAD请求一个资源,但是不需要服务器发送资源而仅传回响应的首部信息
POST提交表单;支持 HTML 表单提交;表单中有用户填入的数据;这些数据会发送到服务器端;由服务器存储至某位置
PUT向服务器写入文档;例如发布系统
DELETE请求删除 URL 指向的资源
OPTIONS探测服务器端对某资源所支持的请求方法
TRACE跟踪请求资源传输所经过防火墙、代理或网关等
CONNECTHTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器
扩展方法LOCK、MKCOL、COPY、MOVE…

http 响应中的 status 状态码分为五种:

1xx:信息性状态码

2xx:成功状态码

    200:OK

    201:created

3xx:重定向状态码

    301:Moved Permanentl; 在响应报文中使用首部 ”Location:URL”; 指定资源现在所在的位置

    302:Fonud(临时重定向); 在响应报文中使用首部 ”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; 服务器此时无法提供服务; 但是将来可能可用

web 服务的输入 / 输出结构:

1、单线程 I / O 结构:单个线程响应单个请求

2、多线程 I / O 结构:多个线程响应各对应的请求

3、复用的 I / O 结构:单个线程响应多个请求

4、复用的多线程 I / O 结构:多个线程;单个线程响应多个请求

四、web 服务 httpd 软件介绍

linux 下 http 的软件有很多;例如 apache:httpd 和 nginx,这里以 httpd 为介绍

httpd 属性:高度模块化;可以动态装卸载模块。主要是 core 和 modules 组合模式的。还支持 MPM(Multipath Processing Module): 多道处理模块。它不是一个模块;而是对一种特性的称谓。

MPM 对应 web 服务并行结构的模块:

prefock:预 fock;一个进程一个请求。

在请求时 web 服务本身不响应该请求;而是自身 fock 一个子进程来响应进程;而 fock 是需要时间来生成子进程的;因此在请求来时,预先 fock 一些进程来等待请求予以响应;并保持一定的空闲子进程等待其他请求。

worker:一个进程多个线程;一个线程一个请求。

由多个进程生成多个线程;每个线程对应一个请求;如果多个请求在一个进程下请求同一个资源;可以进行资源共享。但是是由于单个线程进行响应请求;需要被调度切换;切换过程还是比较浪费资源。在性能上与 prefock 是差不多的。

event:一个进程响应对个请求

基于 event-driven(事件驱动);单线程响应多个请求。对应 web 并行结构中的复用的多线程 I / O 结构。

httpd 版本:

httpd-1.3; httpd-2.0; httpd-2.2; httpd-2.4; 四个版本。目前官网上 2.0-2.4 都处于维护状态。

httpd 的部分重要功能特性:

路径别名:alias

用户认证:authentication

虚拟主机:virtual host

反向代理:

负载均衡:

用户站点:

CGI:Common Gateway Interface

五、安装 httpd

可以先查看下系统内是否安装

[Linux]#rpm -qa httpd

httpd-2.2.15-29.el6.CentOS.x86_64

# 显示已安装 2.2.15 版本

如系统内没有安装可以配置好 yum 源后安装

[Linux]#yum -y install httpd

# 安装完成后可以查看下安装详情和具体的目录

[Linux]#rpm -ql httpd

/etc/httpd

/etc/httpd/conf

/etc/httpd/conf.d

/etc/httpd/conf.d/README

/etc/httpd/conf.d/welcome.conf

/etc/httpd/conf/httpd.conf

/etc/httpd/conf/magic

/etc/httpd/logs

/etc/httpd/modules

/etc/httpd/run

/etc/logrotate.d/httpd

/etc/rc.d/init.d/htcacheclean

/etc/rc.d/init.d/httpd

/etc/sysconfig/htcacheclean

/etc/sysconfig/httpd

/usr/lib64/httpd

 

# 安装完成后即可启动

[Linux]#service httpd start

Starting httpd: [OK]

[Linux]#ps aux | grep httpd

root 3422 0.0 0.7 184284 3844 ? Ss 16:20 0:00 /usr/sbin/httpd

apache 3425 0.0 0.6 184420 3052 ? S 16:20 0:00 /usr/sbin/httpd

apache 3426 0.0 0.6 184420 3144 ? S 16:20 0:00 /usr/sbin/httpd

apache 3427 0.0 0.6 184420 3052 ? S 16:20 0:00 /usr/sbin/httpd

apache 3428 0.0 0.6 184420 3068 ? S 16:20 0:00 /usr/sbin/httpd

apache 3429 0.0 0.6 184420 3068 ? S 16:20 0:00 /usr/sbin/httpd

apache 3430 0.0 0.4 184284 2440 ? S 16:20 0:00 /usr/sbin/httpd

apache 3431 0.0 0.4 184284 2440 ? S 16:20 0:00 /usr/sbin/httpd

apache 3432 0.0 0.4 184284 2440 ? S 16:20 0:00 /usr/sbin/httpd

启动成功后在浏览器输入对应的 IP 地址

Web 服务(一)HTTP 基础详解

显示如上界面说明已安装且启动成功。到此基本介绍和安装已完成,下一篇 Web 服务(二)httpd 配置参数详细介绍将详细介绍 httpd 的配置参数与编译安装 2.4 版本。http://www.linuxidc.com/Linux/2014-03/98953.htm

一、HTTP 基本定义

超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法。通过 HTTP 或者 HTTPS 协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。目前有三个版本:http/0.9;http/1.0;/http/1.1。目前 http/1.0 和 1.1 被广泛应用。

http/0.9:仅用于传输 HTML 文档;

http/1.0:支持多媒体数据的处理;支持 keep-live(持久连接);有缓存功能;

http/1.1:支持更多的请求方法和更精细的缓存控制;持久连接;

二、HTTP 请求的过程

http 事务的过程为:一次请求和与其对应的响应。

http 请求:request

格式

<method> <request-URL> <version>

<headers>

<entity-body>

http 响应:response

格式

<version> <status> <reason-phrase>

<headers> 

<entity-body> 

method请求方法;希望服务器端执行的动作;如 GET、POST、HEAD 等
request-URL请求的资源;可以是相对路径(相对主机位置);也可以是完整的 URL
version协议版本;格式:http/<major>.<minor>
headershttp 首部信息
status状态码
reason-phrase原因短语;数字状态易读信息
entity-body主体部分

一次完整的请求过程:

Web 服务(一)HTTP 基础详解 

由于 http 是一种无状态 (stateless) 协议;所以无法记录每一次请求者的身份;并且每一次请求结束后立即断开。所以每一次请求都要先经过 DNS 解析、三次握手和四次断开;所以相当耗费 CPU 的时钟周期,浪费资源。通用提供效率有两种方法:

1、并行请求:同时发起多个请求和返回多个响应(第一次请求只能是一个资源);

2、持久连接:三次握手请求后不断开;客户端可以继续请求;缺陷是持久连接会导致占用资源;

    断开方式:两种方式无论哪个先达到上限都执行断开

        超时:在连接后规定一个持久连接的时间限定

        请求资源最大数:允许连接后最多请求多少个资源

三、HTTP 请求方法和响应状态码等信息

http 请求的方法有:GET、HEAD、POST、DELETE、PUT、OPTIONS、TRACE…; 前五种方法较为常用。

GET请求获取一个资源;而需要服务器发送
HEAD请求一个资源,但是不需要服务器发送资源而仅传回响应的首部信息
POST提交表单;支持 HTML 表单提交;表单中有用户填入的数据;这些数据会发送到服务器端;由服务器存储至某位置
PUT向服务器写入文档;例如发布系统
DELETE请求删除 URL 指向的资源
OPTIONS探测服务器端对某资源所支持的请求方法
TRACE跟踪请求资源传输所经过防火墙、代理或网关等
CONNECTHTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器
扩展方法LOCK、MKCOL、COPY、MOVE…

http 响应中的 status 状态码分为五种:

1xx:信息性状态码

2xx:成功状态码

    200:OK

    201:created

3xx:重定向状态码

    301:Moved Permanentl; 在响应报文中使用首部 ”Location:URL”; 指定资源现在所在的位置

    302:Fonud(临时重定向); 在响应报文中使用首部 ”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; 服务器此时无法提供服务; 但是将来可能可用

web 服务的输入 / 输出结构:

1、单线程 I / O 结构:单个线程响应单个请求

2、多线程 I / O 结构:多个线程响应各对应的请求

3、复用的 I / O 结构:单个线程响应多个请求

4、复用的多线程 I / O 结构:多个线程;单个线程响应多个请求

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计5576字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中