http协议及httpd特性详解

简介:

前言

随着互联网的迅猛发展和网络的普及,各类网站层出不穷,网站也成为企业宣传和实力展现的主要途径之一,说到网站就不得不说一下web服务了,现在比较流行的web服务还是当属Apache即httpd。本文将详解http协议及httpd的特性。

http协议详解

http协议

http: Hyper Text Transfer Protocol 超文本传输协议

传输文本:HTML

html: Hyper Text Mark Language 超文本标记语言

html文档的生成方式

静态:纯html格式文档

动态:编程语言编写的程序可输出html格式的结果

http协议版本

http 0.9: 仅用于传输html文档

http 1.0:引入MIME机制,从而支持多媒体数据;引入keep-alive(持久连接);缓存

http 1.1:更多请求方法,更精细缓存控制;持久连接(persistent)

注意:http协议是无状态的

http事务:一次请求及对应的响应

CGI:Common Gateway Interface 通用网关接口

http协议报文

请求报文

wKioL1UqYgDza24OAADWNY9iJ3M805.jpg

报文详解

请求报文主要由请求行、请求头部和请求数据(实体)组成

①请求行

请求行由请求方法字段、请求资源字段(URL)和协议版本字段组成

http方法:

1
2
3
4
5
6
7
8
GET:请求获取一个资源,需要服务器发送
HEAD:跟GET近似,但其不需要服务响应请求的资源,而返回响应首部
POST:基于HTML表单向服务器提交数据,服务器通常需要存储此数据(位置:通常为关系型数据库)
PUT:与GET相反,向服务器发送资源;服务器通常需要存储此资源(位置:通常为文件系统)
DELETE:删除URL指向的资源
OPTIONS:探测服务器端对请求的URL所支持使用的请求方法
TRACE:跟一次请求中间所经过的代理服务器、防火墙或网关等
#注意:方法严格区分大小写

资源名称:URI (Uniform Resource Idnentifier)

URL :描述一个特定服务器上某资源的特定位置

1
2
3
4
5
可以是相对路径,也可以绝对路径
例如:http: //www .scholar.com /download/index .html 
       分为三部分:
       scheme(方案):http: //
       服务器:www.scholar.com      特定服务器上的资源: /download/index .html

协议版本:例如HTTP/1.0, HTTP/1.1

②请求头部

http协议首部:

通用首部

1
2
3
4
Connection: 定义C /S 之间关于请求、响应的有关选项
Connection: keep-alive
Cache-Control: 缓存控制
Via: 显示了报文经过的中间节点

请求首部

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Client-IP:客户端IP
Host: 请求的主机
Referer: 指明了请求当前资源原始资源的URL
User-Agent: 用户代理
Accept首部:
Accept: 指明服务器能发送的媒体类型
Accept-Charset: 支持使用的字符集
Accept-Encoding: 支持使用的编码方式
Accept-Language: 支持使用语言
条件式请求:
Expect: 告诉服务器能够发送哪些媒体类型
If-Modified-Since: 是否在指定时间内修改过此资源
If-None-Match:如果提供的实体标记与当前文档的实体标记不符,就获取此文档
跟安全相关请求:
Authorization: 客户端提交给服务器的认证数据,如帐号和密码
Cookie: 客户端发送给服务器身份标识

实体首部

1
2
3
4
5
6
7
8
9
10
11
12
13
Location: 资源的新位置
Allow: 允许对此资源使用的请求方法
内容相关的首部:
Content-Encoding: 支持编码
Content-Language:支持语言
Content-Length:文本长度
Content-Location:资源所在位置
Content-Type:主体对象类型
Content-Range:在整个资源中此实体表示的字节范围
缓存相关:
ETag: 实体标签
Expires: 过期期限
Last-Modified: 上次修改时间

③实体

实体内包含客户端请求服务器的数据

响应报文

wKiom1UqYM3BhcK7AADUQD-8OyA244.jpg

报文详解

响应报文主要由状态行、响应头部和响应数据(实体)组成

①状态行

状态行由协议版本字段、状态码字段和原因短语字段组成

状态码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1XX:信息性状态码
2XX:成功状态码
      200:OK,客户端请求成功
      201:CREATED,请求已被实现
3XX: 重定向类的状态码
      301: Moved Permanently, 永久重定向
      302: Found, 临时重定向,会在响应报文中使用“Location: 新位置”
      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,网关超时
      505:HTTP Version Not Supported,服务器不支持

②响应头部

响应首部

1
2
3
4
5
6
7
8
9
10
11
12
13
Date:消息产生的时间
Age: 响应持续时间
Server: 向客户端说明自己的程序名称和版本
ETage:不透明验证者
Location:URL备用的位置
Content-Length:实体的长度
Content-Tyep:实体的媒体类型
协商首部:
ary: 首部列表,服务器会根据列表中的内容挑一个最适用的版本发送给客户端
Accept-Ranges: 对当前资源来讲,服务器所能够接受的范围类型
跟安全相关:
WWW-Authentication:质询,即要求客户提供帐号和密码
Set-Cookie:服务器端在某客户端第一次请求时发送令牌

③实体

实体内包含客户端请求的数据,根据解析请求报文内的请求数据,将客户端请求的数据打包,通过响应报文发送给客户端,如果请求出现错误,则显示报文内的错误代码及原因。

资源请求过程及服务器结构

一次Web资源请求的具体过程(服务器的角度):

1
2
3
4
5
6
7
建立连接
接收请求
处理请求
访问资源
构建响应
发送响应
记录日志

wKiom1UqYPOyraEQAAFDumCoUBw407.jpg

web服务器的I/O结构:

单进程模型:串行

多进程模型:每个进程响应一个用户请求实现并发的效果

复用的I/O机制:一个进程生成多个线程,每个线程响应一个用户请求

复用的I/O机制:多个线程,每个线程响应多个用户请求;

httpd特性详解

httpd特性

高度模块化:core + modules

DSO: Dynamic Shared Object

MPM:Multipath Processing Module

1
2
3
4
MPM包含:
prefork: 每个进程响应一个用户请求,预先生成多个空闲进程;
worker: 启动多个进程,每个进程生成多个线程,每个线程响应一个用户请求;
event: 启动多个线程,每个线程响应N个请求;

httpd功能特性

丰富用户认证:基本认证和摘要认证

CGI:原生支持perl CGI

虚拟主机:基于端口、IP、主机名

反向代理:负载均衡

用户站点:用户可在家目录创建站点

路径别名:alias

支持第三方模块

The end

好了,http协议及httpd特性就说到这里了。下文将讲解虚拟主机和基于用户访问控制及SSL实现https等配置,有兴趣可以继续关注呦。以上仅为个人学习整理,如有错漏,大神勿喷~~~



本文转自 北城书生  51CTO博客,原文链接:http://blog.51cto.com/scholar/1631602

相关文章
|
7月前
|
缓存 负载均衡 网络协议
HTTP 与 SOCKS5 代理协议:企业级选型指南与工程化实践
面向企业网络与数据团队的代理协议选型与治理指南,基于流量特征选择HTTP或SOCKS5协议,通过多协议网关统一出站,结合托管网络降低复杂度,实现稳定吞吐、可预测时延与合规落地。
|
9月前
HTTP协议中请求方式GET 与 POST 什么区别 ?
GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
817 2
|
9月前
|
应用服务中间件
HTTP协议中常见的状态码
HTTP协议状态码分为1xx、2xx、3xx、4xx、5xx五类,常见状态码包括:101(请求已接受)、200(请求成功)、302(重定向)、400(请求错误)、401(未认证)、403(无权限)、404(资源不存在),以及500(服务器错误)、502(网关错误)、503(服务不可用)、504(网关超时)等。
590 0
|
9月前
|
网络协议 安全 网络安全
什么是HTTP协议
HTTP协议是超文本传输协议,基于TCP,规定了客户端与服务器端通信规则,但数据以明文传输,安全性低。HTTPS则通过SSL加密保障数据安全。两者默认端口不同,HTTP为80,HTTPS为443。HTTPS安全性更高,但消耗更多服务器资源。
404 0
|
9月前
|
数据采集 Web App开发 JSON
Python爬虫基本原理与HTTP协议详解:从入门到实践
本文介绍了Python爬虫的核心知识,涵盖HTTP协议基础、请求与响应流程、常用库(如requests、BeautifulSoup)、反爬应对策略及实战案例(如爬取豆瓣电影Top250),帮助读者系统掌握数据采集技能。
742 0
|
9月前
|
缓存 网络协议 UED
深度解析HTTP协议从版本0.9至3.0的演进和特性。
总的来说,HTTP的演进是互联网技术不断发展和需求日益增长的结果。每一次重要更新都旨在优化性能,增进用户体验,适应新的应用场景,而且保证了向后兼容,让互联网的基础架构得以稳定发展。随着网络技术继续进步,我们可以预期HTTP协议在未来还会继续演化。
1023 0
|
12月前
|
安全 网络协议 Linux
Linux网络应用层协议展示:HTTP与HTTPS
此外,必须注意,从HTTP迁移到HTTPS是一项重要且必要的任务,因为这不仅关乎用户信息的安全,也有利于你的网站评级和粉丝的信心。在网络世界中,信息的安全就是一切,选择HTTPS,让您的网站更加安全,使您的用户满意,也使您感到满意。
354 18
|
网络安全 开发者
如何解决HTTPS协议在WordPress升级后对网站不兼容的问题
以上就是解决WordPress升级后HTTPS协议对网站的不兼容问题的方法。希望能把这个棘手的问题看成是学校的管理问题一样来应对,将复杂的技术问题变得更加有趣和形象,并寻觅出解决问题的方式。希望你的网站能在新的学期得到更好的发展!
309 19
|
JSON 安全 网络协议
HTTP/HTTPS协议(请求响应模型、状态码)
本文简要介绍了HTTP与HTTPS协议的基础知识。HTTP是一种无状态的超文本传输协议,基于TCP/IP,常用80端口,通过请求-响应模型实现客户端与服务器间的通信;HTTPS为HTTP的安全版本,基于SSL/TLS加密技术,使用443端口,确保数据传输的安全性。文中还详细描述了HTTP请求方法(如GET、POST)、请求与响应头字段、状态码分类及意义,并对比了两者在请求-响应模型中的安全性差异。
1070 20