开发者社区> 科技小先锋> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Web服务(一)http基础详解

简介:
+关注继续查看

一、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

1
2
3
4
5
格式
<method> <request-URL> <version>
<headers>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
<entity-body>

http响应:response

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

一次完整的请求过程:

wKiom1MpBFzQGFLtAAEKfjWGkUY756.jpg

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

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

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

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

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

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


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

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

GET
请求获取一个资源;而需要服务器发送
HEAD
请求一个资源,但是不需要服务器发送资源而仅传回响应的首部信息
POST
提交表单;支持HTML表单提交;表单中有用户填入的数据;这些数据会发送到服务器端;由服务器存储至某位置
PUT
向服务器写入文档;例如发布系统
DELETE
请求删除URL指向的资源
OPTIONS
探测服务器端对某资源所支持的请求方法
TRACE
跟踪请求资源传输所经过防火墙、代理或网关等
CONNECT
HTTP/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

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

1
2
3
[Linux]#rpm -qa httpd
httpd-2.2.15-29.el6.centos.x86_64
#显示已安装2.2.15版本

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[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  ]
1
2
3
4
5
6
7
8
9
10
[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地址

wKioL1MpVpWT2K-7AAE-7aByyP0561.jpg


本文转自Mr_陈 51CTO博客,原文链接:http://blog.51cto.com/chenpipi/1379763,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿萨聊测试 ZAP3:如何测试HTTPS的Web网站?
大家好,我是阿萨。上一次我们介绍了主动扫描以及使用爬虫去做好主动扫描的教程。有些同学就说了, 现在大部分网站都开始使用HTTPS了,如何使用ZAP 来测试HTTPS的网站呢?今天我们就来介绍下HTTPS的扫描。
0 0
nginx 80 映射web服务,并安装使用https ssl证书
本文档指导您如何在 Nginx 服务器中安装 SSL 证书。 nginx version: nginx/1.18.0 SSL TrustAsia TLS RSA CA RSA 2048
0 0
Go Web编程实战(8)----创建HTTP与HTTPS服务器端
Go Web编程实战(8)----创建HTTP与HTTPS服务器端
0 0
为GrayLog Web接口配置nginx HTTPS/SSL反向代理
为GrayLog Web接口配置nginx HTTPS/SSL反向代理
0 0
Java Web学习----http详解(响应)
Java Web学习----http详解(响应)
0 0
Go HTTP 编程 | 01 - 使用 http 包创建 Web 服务器
Go HTTP 编程 | 01 - 使用 http 包创建 Web 服务器
0 0
《图解HTTP》-WEB及网络基础学习笔记
简单来说,客户端就是个人使用的电脑,而服务端就是服务器。通过电脑访问服务器上的资源,用的就是HTTP协议。
0 0
Web基础与HTTP协议
域名概念回顾: IP地址不易记忆,域名用于代替IP地址,方便记忆。 两台主机通信,是通过IP地址访问,所以需要将域名解析成IP地址。 早期使用Hosts文件解析域名,但随着域名的增多,工作量巨大,维护困难。 之后使用DNS (Domain Name Server,域名服务器) 进行域名解析。
0 0
Go Web 编程入门:HTTP 自定义路由
Go 语言提供功能丰富的 net/http,实现了基础的 HTTP 中的 client 和 server 功能。在这一篇文章也有介绍一个基础的 HelloWorld 应用。
0 0
[ web基础篇 ] HTTP状态码表
[ web基础篇 ] HTTP状态码表
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
CDN助力企业网站进入HTTPS时代
立即下载
WEB浏览器中即将发生的安全变化
立即下载
艺龙Web服务性能优化分享
立即下载