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协议报文

请求报文

报文详解

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

①请求行

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

http方法:

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

资源名称:URI (Uniform Resource Idnentifier)

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

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

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

②请求头部

http协议首部:

通用首部

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

请求首部

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: 客户端发送给服务器身份标识

实体首部

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

③实体

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

响应报文

报文详解

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

①状态行

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

状态码:

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, 服务暂时不可用
     505:HTTP Version Not Supported,服务器不支持

②响应头部

响应首部

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

③实体

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

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

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

建立连接
接收请求
处理请求
访问资源
构建响应
发送响应
记录日志

web服务器的I/O结构:

单进程模型:串行

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

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

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

httpd特性详解

httpd特性

高度模块化:core + modules

DSO: Dynamic Shared Object

MPM:Multipath Processing Module

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

httpd功能特性

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

CGI:原生支持perl CGI

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

反向代理:负载均衡

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

路径别名:alias

支持第三方模块

The end

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

时间: 2024-10-15 14:18:45

http协议及httpd特性详解的相关文章

http协议介绍及httpd特性详解

http: Hyper Text Transfer Protocol 传输文本:HTML 设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法 html: Hyper Text Mark Language html文本框架: <html> <head> <title>TITLE</title> </head> <body> <h1>H1</h1> <p></p> <h2

HTTPD服务详解

HTTPD服务详解 目录 一.httpd的程序版本 二.httpd的特性 三.httpd的功能特性 四.httpd使用 1.httpd的安装 2.程序环境 Httpd-2.2 (Centos6) http-2.4 (Centos7) 五.http配置相关说明 1.修改监听的ip和port 2.持久连接 3.MPM 4.DSO配置指令模块加载 5.定义Main'server文档页面路径 6.站点访问控制 文件系统路径 URL路径 7.<Directory> 中基于源地址实现访问控制 Option

iOS开发——高级特性&amp;Runtime运行时特性详解

Runtime运行时特性详解 本文详细整理了 Cocoa 的 Runtime 系统的知识,它使得 Objective-C 如虎添翼,具备了灵活的动态特性,使这门古老的语言焕发生机.主要内容如下: 引言 简介 与Runtime交互 Runtime术语 消息 动态方法解析 消息转发 健壮的实例变量(Non Fragile ivars) Objective-C Associated Objects Method Swizzling 总结 引言 曾经觉得Objc特别方便上手,面对着 Cocoa 中大量

Httpd.conf详解

Apache 的 httpd.conf 详解 ## Apache服务器主配置文件. 包括服务器指令的目录设置.# 详见 <URL:http://www.apache.org/docs/> ## 请在理解用途的基础上阅读各指令.## 再读取此文档后,服务器将继续搜索运行# E:/Program Files/Apache Group/Apache/conf/srm.conf # E:/Program Files/Apache Group/Apache/conf/access.conf# 除非用Re

httpd 安装详解(待更新)

httpd 安装详解 安装httpd: rpm包:CentOS发行版中直接提供 编译安装:定制新功能,或其它原因 安装方式: yum install httpd CentOS 6:httpd-2.2 程序环境: 配置文件: /etc/httpd/conf/httpd.conf/httpd /etc/httpd/conf.d/*.conf 服务脚本: /etc/rc.d/init.d/httpd 脚本配置文件:/etc/sysconfig/httpd 主程序文件: /usr/sbin/httpd

Servlet 3.0 新特性详解

转自:https://www.ibm.com/developerworks/cn/java/j-lo-servlet30/ Servlet 3.0 新特性详解 张 建平2010 年 4 月 23 日发布 WeiboGoogle+用电子邮件发送本页面 6 Servlet 3.0 新特性概述 Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布.该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化 Web 应用的开发和部署.其

ARP协议及ARP欺骗详解

ARP协议及ARP欺骗详解 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议.主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址:收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源.ARP缓存是个用来储存IP地址和MAC地址的缓冲区,其本质就是一个IP地址-->MAC地址的对应表,表中每一个条目分别记

Atitit.jdk&#160;java8的语法特性详解&#160;attilax&#160;总结

Atitit.jdk java8的语法特性详解 attilax 总结 1.1. 类型推断这个特别有趣的.鲜为人知的特性1 2. Lambda1 2.1. 内部迭代意味着改由Java类库来进行迭代,而不是客户代码.例如:1 2.2. Stream 流失接口 管道(pipelines)模式2 2.3. 方法引用(Method reference)2 2.4.  默认方法(Default method)2 2.5. 生成器函数(Generator function)2 2.6. 新加入的Nashorn

HTTP协议Get和Post详解(附图说明)

说明: 最近项目中遇到遇到了些问题,需要重写网络请求方面的模块,所以查询了资料,摘抄出比较实用的在此记录下,方便以后查阅,也方便后来人. 目录: 1   HTTP请求报文格式 1.1   GET请求报文例子 1.2   POST请求报文例子 2   HTTP响应报文格式 2.1   GET响应报文例子 2.2   POST响应报文例子 详情如下: 1   HTTP请求报文格式 1.1   GET请求报文格式 1.2   POST请求报文例子 2   HTTP响应报文格式 2.1   GET响应报