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,如需转载请自行联系原作者


相关文章
|
2月前
|
开发框架 监控 安全
Windows Defender 导致 Web IIS 服务异常停止排查
某日凌晨IIS服务异常停止,经查为Windows Defender安全补丁KB2267602触发引擎更新,导致系统资源波动,进而引发应用池回收。确认非人为操作,系统无重启。通过分析日志与监控,定位原因为Defender更新后扫描加重负载。解决方案:将IIS及.NET相关路径添加至Defender排除列表,避免业务影响。
341 116
|
6月前
|
JSON 中间件 Go
Go 网络编程:HTTP服务与客户端开发
Go 语言的 `net/http` 包功能强大,可快速构建高并发 HTTP 服务。本文从创建简单 HTTP 服务入手,逐步讲解请求与响应对象、URL 参数处理、自定义路由、JSON 接口、静态文件服务、中间件编写及 HTTPS 配置等内容。通过示例代码展示如何使用 `http.HandleFunc`、`http.ServeMux`、`http.Client` 等工具实现常见功能,帮助开发者掌握构建高效 Web 应用的核心技能。
340 61
|
6月前
|
应用服务中间件 网络安全 数据安全/隐私保护
网关服务器配置指南:实现自动DHCP地址分配、HTTP服务和SSH无密码登录。
哇哈哈,道具都准备好了,咱们的魔术秀就要开始了。现在,你的网关服务器已经魔法满满,自动分配IP,提供网页服务,SSH登录如入无人之境。而整个世界,只会知道效果,不会知道是你在幕后操控一切。这就是真正的数字世界魔法师,随手拈来,手到擒来。
324 14
|
6月前
|
开发框架 安全 前端开发
Go Web开发框架实践:模板渲染与静态资源服务
Gin 是一个功能强大的 Go Web 框架,不仅适用于构建 API 服务,还支持 HTML 模板渲染和静态资源托管。它可以帮助开发者快速搭建中小型网站,并提供灵活的模板语法、自定义函数、静态文件映射等功能,同时兼容 Go 的 html/template 引擎,具备高效且安全的页面渲染能力。
|
6月前
|
开发框架 JSON 中间件
Go语言Web开发框架实践:使用 Gin 快速构建 Web 服务
Gin 是一个高效、轻量级的 Go 语言 Web 框架,支持中间件机制,非常适合开发 RESTful API。本文从安装到进阶技巧全面解析 Gin 的使用:快速入门示例(Hello Gin)、定义 RESTful 用户服务(增删改查接口实现),以及推荐实践如参数校验、中间件和路由分组等。通过对比标准库 `net/http`,Gin 提供更简洁灵活的开发体验。此外,还推荐了 GORM、Viper、Zap 等配合使用的工具库,助力高效开发。
|
8月前
|
中间件 Go
Golang | Gin:net/http与Gin启动web服务的简单比较
总的来说,`net/http`和 `Gin`都是优秀的库,它们各有优缺点。你应该根据你的需求和经验来选择最适合你的工具。希望这个比较可以帮助你做出决策。
339 35
|
9月前
|
关系型数据库 MySQL PHP
源码编译安装LAMP(HTTP服务,MYSQL ,PHP,以及bbs论坛)
通过以上步骤,你可以成功地在一台Linux服务器上从源码编译并安装LAMP环境,并配置一个BBS论坛(Discuz!)。这些步骤涵盖了从安装依赖、下载源代码、配置编译到安装完成的所有细节。每个命令的解释确保了过程的透明度,使即使是非专业人士也能够理解整个流程。
241 18
|
10月前
|
数据采集 Web App开发 API
FastAPI与Selenium:打造高效的Web数据抓取服务 —— 采集Pixabay中的图片及相关信息
本文介绍了如何使用FastAPI和Selenium搭建RESTful接口,访问免版权图片网站Pixabay并采集图片及其描述信息。通过配置代理IP、User-Agent和Cookie,提高爬虫的稳定性和防封禁能力。环境依赖包括FastAPI、Uvicorn和Selenium等库。代码示例展示了完整的实现过程,涵盖代理设置、浏览器模拟及数据提取,并提供了详细的中文注释。适用于需要高效、稳定的Web数据抓取服务的开发者。
551 15
FastAPI与Selenium:打造高效的Web数据抓取服务 —— 采集Pixabay中的图片及相关信息
|
10月前
|
网络协议 Java Shell
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
635 7
|
2月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
228 4

热门文章

最新文章